添加一个bean和dao类,添加了每月还款并存储信息,保证数据库的及时更新,包括等额本金的提前还款

master
jyx 7 years ago
parent 94bd4de5ca
commit ebf4ba56d3

@ -12,7 +12,7 @@ import java.util.List;
@Mapper @Mapper
public interface auditMapper { public interface auditMapper {
@Select("select * from audit where checkNum = #{checkNum}") @Select("select * from audit where checkNum = #{checkNum}")
public Audit selectAudioByCheckNum(int checkNum); public Audit selectAudioByCheckNum(long checkNum);
@Select("select * from audit") @Select("select * from audit")
public List<Audit> select(); public List<Audit> select();
@ -31,5 +31,5 @@ public interface auditMapper {
public void updateAudit(Audit audits); public void updateAudit(Audit audits);
@Delete("delete from audit where checkNum=#{checkNum}") @Delete("delete from audit where checkNum=#{checkNum}")
public void deleteAudit(int checkNum); public void deleteAudit(long checkNum);
} }

@ -0,0 +1,16 @@
package com.example.demo.Dao;
import com.example.demo.bean.Repayment;
import com.example.demo.bean.Transaction;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
@Mapper
public interface paymentMapper {
@Select("select * from repayment where checkNum ={#checkNum}")
public Repayment selectPepaymentBycheckNum(long checkNum);
@Update("update repayment set repAmount = {#repAmount} ,repSum = {#repSum} where checkNum = {#checkNum}")
public void updateRepayment(Repayment repayment);
}

@ -9,7 +9,7 @@ import java.util.List;
@Mapper @Mapper
public interface productHistroyMapper { public interface productHistroyMapper {
@Select("select * from producthistroy where productNum = #{productNum}") @Select("select * from producthistroy where productNum = #{productNum}")
public ProductHistroy selectAudioByCheckNum(int productNum); public ProductHistroy selectAudioByCheckNum(long productNum);
@Select("select * from producthistroy") @Select("select * from producthistroy")
public List<ProductHistroy> select(); public List<ProductHistroy> select();

@ -8,22 +8,22 @@ import java.util.List;
@Mapper @Mapper
public interface transMapper { public interface transMapper {
@Select("select * from transaction where transactionNum = #{transactionNum}") @Select("select * from transaction where transactionNum = #{transactionNum}")
public Transaction selectAudioByCheckNum(int transactionNum); public Transaction selectAudioByCheckNum(long transactionNum);
@Select("select * from transaction") @Select("select * from transaction")
public List<Transaction> select(); public List<Transaction> select();
@Insert("insert into transaction(transactionNum, payer, payee," + @Insert("insert into transaction(transactionNum, payer, payee," +
" transactionTime, transactionAmount, note)" + " transactionTime, transactionAmount, note,checkNum)" +
" values (#{transactionNum},#{payer},#{payee},#{transactionTime},#{transactionAmount}," + " values (#{transactionNum},#{payer},#{payee},#{transactionTime},#{transactionAmount}," +
"#{note})") "#{note},#{checkNum})")
public void addTransaction(Transaction transactions); public void addTransaction(Transaction transactions);
@Update("update audio set transactionNum=#{transactionNum},payer=#{payer}" + @Update("update audit set transactionNum=#{transactionNum},payer=#{payer}" +
",payee=#{payee},transactionTime=#{transactionTime},transactionAmount=#{transactionAmount}," + ",payee=#{payee},transactionTime=#{transactionTime},transactionAmount=#{transactionAmount}," +
"note=#{note}") "note=#{note}")
public void updateTransaction(Transaction transactions); public void updateTransaction(Transaction transactions);
@Delete("delete from audio where transactionNum=#{transactionNum}") @Delete("delete from audit where transactionNum=#{transactionNum}")
public void deleteTransaction(int transactionNum); public void deleteTransaction(long transactionNum);
} }

@ -9,7 +9,7 @@ import java.util.List;
@Mapper @Mapper
public interface usageDateMapper { public interface usageDateMapper {
@Select("select * from usagedate where transactionNum = #{transactionNum}") @Select("select * from usagedate where transactionNum = #{transactionNum}")
public UsageDate selectUsageDateByCheckNum(int checkNum); public UsageDate selectUsageDateByCheckNum(long checkNum);
@Select("select * from usagedate") @Select("select * from usagedate")
public List<UsageDate> select(); public List<UsageDate> select();
@ -26,5 +26,5 @@ public interface usageDateMapper {
public void updateUsageDate(UsageDate usageDate); public void updateUsageDate(UsageDate usageDate);
@Delete("delete from usagedate where checkNum=#{checkNum}") @Delete("delete from usagedate where checkNum=#{checkNum}")
public void deleteUsageDate(int checkNum); public void deleteUsageDate(long checkNum);
} }

@ -8,7 +8,7 @@ import java.util.List;
@Mapper @Mapper
public interface userMapper { public interface userMapper {
@Select("select * from user where userNum = #{userNum}") @Select("select * from user where userNum = #{userNum}")
public User selectUserByuserNum(int userNum); public User selectUserByuserNum(long userNum);
@Select("select * from user") @Select("select * from user")
public List<User> select(); public List<User> select();
@ -26,5 +26,5 @@ public interface userMapper {
public void updateUser(User users); public void updateUser(User users);
@Delete("delete from user where userNum=#{userNum}") @Delete("delete from user where userNum=#{userNum}")
public void deleteUser(int userNum); public void deleteUser(long userNum);
} }

@ -12,15 +12,15 @@ import javax.persistence.*;
public class Audit { public class Audit {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int checkNum; private long checkNum;
private int userNum; private long userNum;
private double amount; private double amount;
private String applyTime; private String applyTime;
private String bankAccount; private String bankAccount;
private int checkState; private long checkState;
private int contractNum; private long contractNum;
private short isSignContract; private short isSignContract;
private int productNum; private long productNum;
private int year; private int year;
private int equation; private int equation;

@ -14,7 +14,7 @@ import javax.persistence.Id;
public class Manager { public class Manager {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int managerNum; private long managerNum;
private String managerName; private String managerName;
private String managerPwd; private String managerPwd;
private String managerRight; private String managerRight;
@ -22,7 +22,7 @@ public class Manager {
public Manager(){}; public Manager(){};
public int getManagerNum() { public long getManagerNum() {
return managerNum; return managerNum;
} }

@ -14,7 +14,7 @@ import javax.persistence.Id;
public class Product { public class Product {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int productNum; private long productNum;
private String productName; private String productName;
private String category; private String category;
private float intrate; private float intrate;
@ -68,7 +68,7 @@ public class Product {
this.intrate = intrate; this.intrate = intrate;
} }
public int getProductNum() { public long getProductNum() {
return productNum; return productNum;
} }
@ -76,7 +76,7 @@ public class Product {
this.productName = productName; this.productName = productName;
} }
public void setProductNum(int productNum) { public void setProductNum(long productNum) {
this.productNum = productNum; this.productNum = productNum;
} }
} }

@ -15,9 +15,9 @@ import javax.persistence.Id;
public class ProductHistroy { public class ProductHistroy {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int productNum; private long productNum;
private int bankNum; private int bankNum;
private int managerNum; private long managerNum;
private String productName; private String productName;
private String category; private String category;
private float intrate; private float intrate;
@ -28,19 +28,19 @@ public class ProductHistroy {
public ProductHistroy(){}; public ProductHistroy(){};
public int getManagerNum() { public long getManagerNum() {
return managerNum; return managerNum;
} }
public void setManagerNum(int managerNum) { public void setManagerNum(long managerNum) {
this.managerNum = managerNum; this.managerNum = managerNum;
} }
public int getProductNum() { public long getProductNum() {
return productNum; return productNum;
} }
public void setProductNum(int productNum) { public void setProductNum(long productNum) {
this.productNum = productNum; this.productNum = productNum;
} }

@ -0,0 +1,15 @@
package com.example.demo.bean;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
@Getter
@Setter
@Entity
public class Repayment {
private long checkNum;
private double repAmount;
private double repSum;
}

@ -14,12 +14,19 @@ import javax.persistence.Id;
public class Transaction { public class Transaction {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int transactionNum; private long transactionNum;
private String payer; private long payer;
private String payee; private long payee;
private float transactionTime; private float transactionTime;
private float transactionAmount; private float transactionAmount;
private String note; private String note;
private long checkNum;
public Transaction(){}; public Transaction(){};
public Transaction(long checkNum,long payer,long payee,double transationAmount){
this.checkNum=checkNum;
this.payer = payer;
this.payee = payee;
this.transactionAmount=transactionNum;
}
} }

@ -1,10 +1,12 @@
package com.example.demo.bean; package com.example.demo.bean;
import lombok.Getter; import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity; import javax.persistence.Entity;
@Getter @Getter
@Setter
@Entity @Entity
public class UsageDate { public class UsageDate {
private long checkNum; private long checkNum;

@ -14,7 +14,7 @@ import javax.persistence.Id;
public class User { public class User {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int userNum; private long userNum;
private String userName; private String userName;
private String userPwd; private String userPwd;
private String userRight; private String userRight;
@ -22,7 +22,7 @@ public class User {
private String idNum; private String idNum;
private String telephoneNum; private String telephoneNum;
private String address; private String address;
private int isIdentify; private String isIdentify;
private String registerTime; private String registerTime;
public User(){}; public User(){};

@ -16,25 +16,42 @@ public class EPAIR_CirService extends CirService{
@Transactional //数据库与事物的一致性 @Transactional //数据库与事物的一致性
public double NextCirculator(long checkNum){ public double NextCirculator(long checkNum){
UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum); try{
int year = usageDate.getYear(); UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
double amount = usageDate.getAmount(); int year = usageDate.getYear();
long productNum = usageDate.getProductNum(); double amount = usageDate.getAmount();
long productNum = usageDate.getProductNum();
Product product = productMapper.selectProductByProductNum(productNum);
float intrate = product.getIntrate(); Product product = productMapper.selectProductByProductNum(productNum);
intrate /= 12; float intrate = product.getIntrate();
int month = year*12; double rep_amount = 0;
double rep = Math.pow((1+intrate),month)/(Math.pow((1+intrate),month)-1);
double next_principal_and_interest = rep * intrate * amount; double not_rep_amount = amount - rep_amount;
return next_principal_and_interest; intrate /= 12;
int month = year*12;
double rep = Math.pow((1+intrate),month)/(Math.pow((1+intrate),month)-1);
double next_principal_and_interest = rep * intrate * amount;
return next_principal_and_interest;
}catch(Exception e){
e.printStackTrace();
}finally {
}
return -1;
} }
public double SumCirculator(long productNum,double amount,int year){ public double SumCirculator(long productNum,double amount,int year){
Product product = productMapper.selectProductByProductNum(productNum); try{
float intrate = product.getIntrate(); Product product = productMapper.selectProductByProductNum(productNum);
double rep = Math.pow((1+intrate),year)/(Math.pow((1+intrate),year)-1); float intrate = product.getIntrate();
double principal_and_interest = rep * intrate * amount * year; double rep = Math.pow((1+intrate),year)/(Math.pow((1+intrate),year)-1);
return principal_and_interest; double principal_and_interest = rep * intrate * amount * year;
return principal_and_interest;
}catch(Exception e){
e.printStackTrace();
}finally {
}
return -1;
} }
} }

@ -1,8 +1,10 @@
package com.example.demo.circulator.service; package com.example.demo.circulator.service;
import com.example.demo.Dao.paymentMapper;
import com.example.demo.Dao.productMapper; import com.example.demo.Dao.productMapper;
import com.example.demo.Dao.usageDateMapper; import com.example.demo.Dao.usageDateMapper;
import com.example.demo.bean.Product; import com.example.demo.bean.Product;
import com.example.demo.bean.Repayment;
import com.example.demo.bean.UsageDate; import com.example.demo.bean.UsageDate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -12,32 +14,48 @@ import javax.annotation.PostConstruct;
public class EPR_CirService extends CirService{ public class EPR_CirService extends CirService{
@Autowired @Autowired
private usageDateMapper usageDateMapper; private usageDateMapper usageDateMapper;
private paymentMapper paymentMapper;
private productMapper productMapper; private productMapper productMapper;
@Transactional //数据库与事物的一致性 @Transactional //数据库与事物的一致性
public double NextCirculator(long checkNum){ public double NextCirculator(long checkNum){
UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum); try{
int year = usageDate.getYear(); UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
double amount = usageDate.getAmount(); Repayment repayment = paymentMapper.selectPepaymentBycheckNum(checkNum);
long productNum = usageDate.getProductNum(); int year = usageDate.getYear();
double amount = usageDate.getAmount();
Product product = productMapper.selectProductByProductNum(productNum); long productNum = usageDate.getProductNum();
float intrate = product.getIntrate();
double rep_amount = 0; Product product = productMapper.selectProductByProductNum(productNum);
intrate /= 12; float intrate = product.getIntrate();
int month = year*12; double rep_amount = repayment.getRepAmount();
double next_principal_and_interest = amount/month + (amount - rep_amount) * intrate; intrate /= 12;
return next_principal_and_interest; int month = year*12;
double next_principal_and_interest = amount/month + (amount - rep_amount) * intrate;
return next_principal_and_interest;
}catch(Exception e){
e.printStackTrace();
}finally {
}
return -1;
} }
public double SumCirculator(long productNum,double amount,int year){ public double SumCirculator(long productNum,double amount,int year){
Product product = productMapper.selectProductByProductNum(productNum); try{
float intrate = product.getIntrate(); Product product = productMapper.selectProductByProductNum(productNum);
intrate /= 12; float intrate = product.getIntrate();
int month = year * 12; intrate /= 12;
double first_principal_and_interest = amount/month + amount*intrate; int month = year * 12;
double last_principal_and_interest = amount/month + amount*(1-(month-1)/month)*intrate; double first_principal_and_interest = amount/month + amount*intrate;
double principal_and_interest = (first_principal_and_interest + last_principal_and_interest)*month/2; double last_principal_and_interest = amount/month + amount*(1-(month-1)/month)*intrate;
return principal_and_interest; double principal_and_interest = (first_principal_and_interest + last_principal_and_interest)*month/2;
return principal_and_interest;
}catch(Exception e){
e.printStackTrace();
}finally {
}
return -1;
} }
} }

@ -0,0 +1,40 @@
package com.example.demo.circulator.service;
import com.example.demo.Dao.paymentMapper;
import com.example.demo.Dao.transMapper;
import com.example.demo.Dao.usageDateMapper;
import com.example.demo.bean.Repayment;
import com.example.demo.bean.Transaction;
import com.example.demo.bean.UsageDate;
public class PayCirService {
private usageDateMapper usageDateMapper;
private paymentMapper paymentMapper;
private transMapper transMapper;
public int payAmountCirculator(long checkNum,double pay){
try{
Repayment repayment = paymentMapper.selectPepaymentBycheckNum(checkNum);
UsageDate usageDate= usageDateMapper.selectUsageDateByCheckNum(checkNum);
double rep_amount = repayment.getRepAmount();
long userNum = usageDate.getUserNum();
int bankNum = usageDate.getBankNum();
double amount = usageDate.getAmount();
int year = usageDate.getYear();
Transaction transaction = new Transaction(checkNum,userNum,bankNum,pay);
transMapper.addTransaction(transaction);
rep_amount = pay - amount/(year*12);
repayment.setRepAmount(rep_amount);
repayment.setRepSum(pay);
paymentMapper.updateRepayment(repayment);
return 1;
}catch(Exception e){
e.printStackTrace();
}finally {
}
return 0;
}
}

@ -30,7 +30,12 @@ public class NextCirController {
break; break;
} }
double next_principal_and_intrate = cirService.NextCirculator(checkNum); double next_principal_and_intrate = cirService.NextCirculator(checkNum);
request.setAttribute("next",next_principal_and_intrate); if(next_principal_and_intrate>=0){
request.setAttribute("next",next_principal_and_intrate);
}else{
return "/计算失败";
}
return "/next"; return "/next";
} }
} }

@ -0,0 +1,21 @@
package com.example.demo.circulator.service.controller;
import com.example.demo.circulator.service.PayCirService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
@Controller
public class PayCirController {
PayCirService payCirService;
@PostMapping("/pay")
public String payAmountCir(long checkNum,double pay){
int result = payCirService.payAmountCirculator(checkNum,pay);
if(result==1){
return "/还款成功";
}else{
return"/还款失败";
}
}
}

@ -33,7 +33,12 @@ public class SumCirController {
break; break;
} }
double sum_principal_and_intrate = cirService.SumCirculator(productNum,amount,year); double sum_principal_and_intrate = cirService.SumCirculator(productNum,amount,year);
request.setAttribute("sum",sum_principal_and_intrate); if(sum_principal_and_intrate>=0){
request.setAttribute("sum",sum_principal_and_intrate);
}else{
return "/计算失败";
}
return "/circulator"; return "/circulator";
} }
} }

Loading…
Cancel
Save