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

master
jyx 7 years ago
parent 94bd4de5ca
commit ebf4ba56d3

@ -12,7 +12,7 @@ import java.util.List;
@Mapper
public interface auditMapper {
@Select("select * from audit where checkNum = #{checkNum}")
public Audit selectAudioByCheckNum(int checkNum);
public Audit selectAudioByCheckNum(long checkNum);
@Select("select * from audit")
public List<Audit> select();
@ -31,5 +31,5 @@ public interface auditMapper {
public void updateAudit(Audit audits);
@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
public interface productHistroyMapper {
@Select("select * from producthistroy where productNum = #{productNum}")
public ProductHistroy selectAudioByCheckNum(int productNum);
public ProductHistroy selectAudioByCheckNum(long productNum);
@Select("select * from producthistroy")
public List<ProductHistroy> select();

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

@ -9,7 +9,7 @@ import java.util.List;
@Mapper
public interface usageDateMapper {
@Select("select * from usagedate where transactionNum = #{transactionNum}")
public UsageDate selectUsageDateByCheckNum(int checkNum);
public UsageDate selectUsageDateByCheckNum(long checkNum);
@Select("select * from usagedate")
public List<UsageDate> select();
@ -26,5 +26,5 @@ public interface usageDateMapper {
public void updateUsageDate(UsageDate usageDate);
@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
public interface userMapper {
@Select("select * from user where userNum = #{userNum}")
public User selectUserByuserNum(int userNum);
public User selectUserByuserNum(long userNum);
@Select("select * from user")
public List<User> select();
@ -26,5 +26,5 @@ public interface userMapper {
public void updateUser(User users);
@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 {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int checkNum;
private int userNum;
private long checkNum;
private long userNum;
private double amount;
private String applyTime;
private String bankAccount;
private int checkState;
private int contractNum;
private long checkState;
private long contractNum;
private short isSignContract;
private int productNum;
private long productNum;
private int year;
private int equation;

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

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

@ -15,9 +15,9 @@ import javax.persistence.Id;
public class ProductHistroy {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int productNum;
private long productNum;
private int bankNum;
private int managerNum;
private long managerNum;
private String productName;
private String category;
private float intrate;
@ -28,19 +28,19 @@ public class ProductHistroy {
public ProductHistroy(){};
public int getManagerNum() {
public long getManagerNum() {
return managerNum;
}
public void setManagerNum(int managerNum) {
public void setManagerNum(long managerNum) {
this.managerNum = managerNum;
}
public int getProductNum() {
public long getProductNum() {
return productNum;
}
public void setProductNum(int productNum) {
public void setProductNum(long 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 {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int transactionNum;
private String payer;
private String payee;
private long transactionNum;
private long payer;
private long payee;
private float transactionTime;
private float transactionAmount;
private String note;
private long checkNum;
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;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
@Getter
@Setter
@Entity
public class UsageDate {
private long checkNum;

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

@ -16,25 +16,42 @@ public class EPAIR_CirService extends CirService{
@Transactional //数据库与事物的一致性
public double NextCirculator(long checkNum){
UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
int year = usageDate.getYear();
double amount = usageDate.getAmount();
long productNum = usageDate.getProductNum();
Product product = productMapper.selectProductByProductNum(productNum);
float intrate = product.getIntrate();
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;
try{
UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
int year = usageDate.getYear();
double amount = usageDate.getAmount();
long productNum = usageDate.getProductNum();
Product product = productMapper.selectProductByProductNum(productNum);
float intrate = product.getIntrate();
double rep_amount = 0;
double not_rep_amount = amount - rep_amount;
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){
Product product = productMapper.selectProductByProductNum(productNum);
float intrate = product.getIntrate();
double rep = Math.pow((1+intrate),year)/(Math.pow((1+intrate),year)-1);
double principal_and_interest = rep * intrate * amount * year;
return principal_and_interest;
try{
Product product = productMapper.selectProductByProductNum(productNum);
float intrate = product.getIntrate();
double rep = Math.pow((1+intrate),year)/(Math.pow((1+intrate),year)-1);
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;
import com.example.demo.Dao.paymentMapper;
import com.example.demo.Dao.productMapper;
import com.example.demo.Dao.usageDateMapper;
import com.example.demo.bean.Product;
import com.example.demo.bean.Repayment;
import com.example.demo.bean.UsageDate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@ -12,32 +14,48 @@ import javax.annotation.PostConstruct;
public class EPR_CirService extends CirService{
@Autowired
private usageDateMapper usageDateMapper;
private paymentMapper paymentMapper;
private productMapper productMapper;
@Transactional //数据库与事物的一致性
public double NextCirculator(long checkNum){
UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
int year = usageDate.getYear();
double amount = usageDate.getAmount();
long productNum = usageDate.getProductNum();
Product product = productMapper.selectProductByProductNum(productNum);
float intrate = product.getIntrate();
double rep_amount = 0;
intrate /= 12;
int month = year*12;
double next_principal_and_interest = amount/month + (amount - rep_amount) * intrate;
return next_principal_and_interest;
try{
UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
Repayment repayment = paymentMapper.selectPepaymentBycheckNum(checkNum);
int year = usageDate.getYear();
double amount = usageDate.getAmount();
long productNum = usageDate.getProductNum();
Product product = productMapper.selectProductByProductNum(productNum);
float intrate = product.getIntrate();
double rep_amount = repayment.getRepAmount();
intrate /= 12;
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){
Product product = productMapper.selectProductByProductNum(productNum);
float intrate = product.getIntrate();
intrate /= 12;
int month = year * 12;
double first_principal_and_interest = amount/month + amount*intrate;
double last_principal_and_interest = amount/month + amount*(1-(month-1)/month)*intrate;
double principal_and_interest = (first_principal_and_interest + last_principal_and_interest)*month/2;
return principal_and_interest;
try{
Product product = productMapper.selectProductByProductNum(productNum);
float intrate = product.getIntrate();
intrate /= 12;
int month = year * 12;
double first_principal_and_interest = amount/month + amount*intrate;
double last_principal_and_interest = amount/month + amount*(1-(month-1)/month)*intrate;
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;
}
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";
}
}

@ -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;
}
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";
}
}

Loading…
Cancel
Save