From 71202c898fa524deecbd6e8c7704530365723cf1 Mon Sep 17 00:00:00 2001 From: jyx <1584081113@qq.com> Date: Wed, 9 Jan 2019 15:06:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9circulator=E5=8C=85=E5=86=85?= =?UTF-8?q?=E7=9A=84sum=E7=B1=BB=EF=BC=8C=E4=BB=A5=E5=8F=8A=E4=BC=A0?= =?UTF-8?q?=E9=80=92=E6=B6=88=E6=81=AF=E9=AA=8C=E8=AF=81=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=BF=98=E6=AC=BE=E7=B1=BB=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E5=88=A4=E6=96=AD=EF=BC=8C=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=BC=A0=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/Dao/paymentMapper.java | 2 +- .../com/example/demo/Dao/usageDateMapper.java | 2 +- .../controller/NextCirController.java | 17 ++-- .../controller/PayCirController.java | 7 +- .../controller/SumCirController.java | 18 +++- .../demo/circulator/service/CirService.java | 9 +- .../circulator/service/EPAIR_CirService.java | 7 +- .../circulator/service/EPR_CirService.java | 10 +- .../circulator/service/PayCirService.java | 95 +++++++++++++++++-- 9 files changed, 140 insertions(+), 27 deletions(-) diff --git a/demo/src/main/java/com/example/demo/Dao/paymentMapper.java b/demo/src/main/java/com/example/demo/Dao/paymentMapper.java index 1ee768d..285910b 100644 --- a/demo/src/main/java/com/example/demo/Dao/paymentMapper.java +++ b/demo/src/main/java/com/example/demo/Dao/paymentMapper.java @@ -8,7 +8,7 @@ import org.apache.ibatis.annotations.Update; @Mapper public interface paymentMapper { - @Select("select * from repayment where checkNum =#{checkNum}") + @Select("select * from repayment where checkNum = #{checkNum}") public Repayment selectPepaymentBycheckNum(long checkNum); @Update("update repayment set repAmount = {#repAmount} ,repSum = #{repSum} where checkNum = #{checkNum}") diff --git a/demo/src/main/java/com/example/demo/Dao/usageDateMapper.java b/demo/src/main/java/com/example/demo/Dao/usageDateMapper.java index 0e24a13..7bc503e 100644 --- a/demo/src/main/java/com/example/demo/Dao/usageDateMapper.java +++ b/demo/src/main/java/com/example/demo/Dao/usageDateMapper.java @@ -8,7 +8,7 @@ import java.util.List; @Mapper public interface usageDateMapper { - @Select("select * from usagedate where transactionNum = #{transactionNum}") + @Select("select * from usagedate where checkNum = #{checkNum}") public UsageDate selectUsageDateByCheckNum(long checkNum); @Select("select * from usagedate") diff --git a/demo/src/main/java/com/example/demo/circulator/controller/NextCirController.java b/demo/src/main/java/com/example/demo/circulator/controller/NextCirController.java index 6cf0f36..baa4965 100644 --- a/demo/src/main/java/com/example/demo/circulator/controller/NextCirController.java +++ b/demo/src/main/java/com/example/demo/circulator/controller/NextCirController.java @@ -1,9 +1,9 @@ package com.example.demo.circulator.controller; -import com.example.demo.circulator.service.CirService; import com.example.demo.circulator.service.EPAIR_CirService; import com.example.demo.circulator.service.EPR_CirService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @@ -12,25 +12,30 @@ import javax.servlet.http.HttpServletResponse; @Controller public class NextCirController { - //@Autowired - private CirService cirService; + @Autowired + private EPAIR_CirService epair_cirService; + @Autowired + private EPR_CirService epr_cirService; @GetMapping("/cir/next") public String nextCirculator(HttpServletRequest request,HttpServletResponse response){ long checkNum = (Long)request.getAttribute("checkNum"); int equation = (Integer)request.getAttribute("equation"); + double next_principal_and_intrate = 0; switch (equation){ case 1: - cirService = new EPAIR_CirService(); + //cirService = new EPAIR_CirService(); + next_principal_and_intrate = epair_cirService.NextCirculator(checkNum); break; case 2: - cirService = new EPR_CirService(); + //cirService = new EPR_CirService(); + next_principal_and_intrate = epr_cirService.NextCirculator(checkNum); break; default: System.out.println("not exit!!"); break; } - double next_principal_and_intrate = cirService.NextCirculator(checkNum); + //double next_principal_and_intrate = cirService.NextCirculator(checkNum); if(next_principal_and_intrate>=0){ request.setAttribute("next",next_principal_and_intrate); }else if(next_principal_and_intrate==-1){ diff --git a/demo/src/main/java/com/example/demo/circulator/controller/PayCirController.java b/demo/src/main/java/com/example/demo/circulator/controller/PayCirController.java index be5f051..1a9ec2a 100644 --- a/demo/src/main/java/com/example/demo/circulator/controller/PayCirController.java +++ b/demo/src/main/java/com/example/demo/circulator/controller/PayCirController.java @@ -1,12 +1,13 @@ package com.example.demo.circulator.controller; import com.example.demo.circulator.service.PayCirService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; @Controller public class PayCirController { - //@Autowired + @Autowired PayCirService payCirService; @PostMapping("/pay") @@ -16,7 +17,9 @@ public class PayCirController { return "/还款成功!"; }else if(result==-2){ return"/未贷款该业务!"; - }else + }else if(result==-3){ + return "/无此业务"; + } return "/还款失败"; } diff --git a/demo/src/main/java/com/example/demo/circulator/controller/SumCirController.java b/demo/src/main/java/com/example/demo/circulator/controller/SumCirController.java index 8d4d72e..3e5d042 100644 --- a/demo/src/main/java/com/example/demo/circulator/controller/SumCirController.java +++ b/demo/src/main/java/com/example/demo/circulator/controller/SumCirController.java @@ -3,16 +3,21 @@ package com.example.demo.circulator.controller; import com.example.demo.circulator.service.CirService; import com.example.demo.circulator.service.EPAIR_CirService; import com.example.demo.circulator.service.EPR_CirService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Controller public class SumCirController { - //@Autowired - private CirService cirService; + @Autowired + //private CirService cirService; + private EPR_CirService epr_cirService; + @Autowired + private EPAIR_CirService epair_cirService; @GetMapping("/cir/sum") public String SumCirculator(HttpServletRequest request, HttpServletResponse response){ @@ -21,18 +26,21 @@ public class SumCirController { int year = Integer.parseInt(request.getParameter("year")); int equation = Integer.parseInt(request.getParameter("equation")); + double sum_principal_and_intrate = 0; switch (equation){ case 1: - cirService = new EPAIR_CirService(); + //cirService = new EPAIR_CirService(); + sum_principal_and_intrate = epair_cirService.SumCirculator(productNum,amount,year); break; case 2: - cirService = new EPR_CirService(); + //cirService = new EPR_CirService(); + sum_principal_and_intrate = epr_cirService.SumCirculator(productNum,amount,year); break; default: System.out.println("not exit!!"); break; } - double sum_principal_and_intrate = cirService.SumCirculator(productNum,amount,year); + //double sum_principal_and_intrate = cirService.SumCirculator(productNum,amount,year); if(sum_principal_and_intrate>=0){ request.setAttribute("sum",sum_principal_and_intrate); }else if(sum_principal_and_intrate==-3){ diff --git a/demo/src/main/java/com/example/demo/circulator/service/CirService.java b/demo/src/main/java/com/example/demo/circulator/service/CirService.java index c84f43b..88c38bf 100644 --- a/demo/src/main/java/com/example/demo/circulator/service/CirService.java +++ b/demo/src/main/java/com/example/demo/circulator/service/CirService.java @@ -1,10 +1,17 @@ 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 org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; -public abstract class CirService { +@Service +public class CirService { + @PostConstruct public void init(){} diff --git a/demo/src/main/java/com/example/demo/circulator/service/EPAIR_CirService.java b/demo/src/main/java/com/example/demo/circulator/service/EPAIR_CirService.java index 6666230..cb8fed3 100644 --- a/demo/src/main/java/com/example/demo/circulator/service/EPAIR_CirService.java +++ b/demo/src/main/java/com/example/demo/circulator/service/EPAIR_CirService.java @@ -1,16 +1,21 @@ 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.UsageDate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -public class EPAIR_CirService extends CirService { +@Service +public class EPAIR_CirService extends CirService{ @Autowired private usageDateMapper usageDateMapper; @Autowired + private paymentMapper paymentMapper; + @Autowired private productMapper productMapper; @Transactional //数据库与事物的一致性 diff --git a/demo/src/main/java/com/example/demo/circulator/service/EPR_CirService.java b/demo/src/main/java/com/example/demo/circulator/service/EPR_CirService.java index bd258bc..39f5a1b 100644 --- a/demo/src/main/java/com/example/demo/circulator/service/EPR_CirService.java +++ b/demo/src/main/java/com/example/demo/circulator/service/EPR_CirService.java @@ -7,12 +7,17 @@ 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.stereotype.Service; import org.springframework.transaction.annotation.Transactional; + +@Service public class EPR_CirService extends CirService { @Autowired private usageDateMapper usageDateMapper; + @Autowired private paymentMapper paymentMapper; + @Autowired private productMapper productMapper; @Transactional //数据库与事物的一致性 @@ -44,9 +49,12 @@ public class EPR_CirService extends CirService { return -1; } + @Transactional public double SumCirculator(long productNum,double amount,int year){ + Product product = null; try{ - Product product = productMapper.selectProductByProductNum(productNum); + product = productMapper.selectProductByProductNum(productNum); + if(product==null)return -3; float intrate = product.getIntrate(); intrate /= 12; int month = year * 12; diff --git a/demo/src/main/java/com/example/demo/circulator/service/PayCirService.java b/demo/src/main/java/com/example/demo/circulator/service/PayCirService.java index d617bc5..524da9a 100644 --- a/demo/src/main/java/com/example/demo/circulator/service/PayCirService.java +++ b/demo/src/main/java/com/example/demo/circulator/service/PayCirService.java @@ -1,35 +1,94 @@ package com.example.demo.circulator.service; import com.example.demo.Dao.paymentMapper; +import com.example.demo.Dao.productMapper; import com.example.demo.Dao.transMapper; import com.example.demo.Dao.usageDateMapper; +import com.example.demo.bean.Product; import com.example.demo.bean.Repayment; import com.example.demo.bean.Transaction; import com.example.demo.bean.UsageDate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +@Service public class PayCirService { + @Autowired private usageDateMapper usageDateMapper; + @Autowired private paymentMapper paymentMapper; + @Autowired private transMapper transMapper; + @Autowired + private productMapper productMapper; - public int payAmountCirculator(long checkNum,double pay){ - try{ + + public int pay_EPR_AmountCirculator(long checkNum,double pay) { + try { Repayment repayment = paymentMapper.selectPepaymentBycheckNum(checkNum); - UsageDate usageDate= usageDateMapper.selectUsageDateByCheckNum(checkNum); - if(usageDate==null)return -2; - double repamount = repayment.getRepAmount(); + UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum); + double repamount = 0; + long productNum = usageDate.getProductNum(); long userNum = usageDate.getUserNum(); int bankNum = usageDate.getBankNum(); double amount = usageDate.getAmount(); - int year = usageDate.getYear(); - Transaction transaction = new Transaction(checkNum,userNum,bankNum,pay); + if (repayment != null) + repamount = repayment.getRepAmount(); + Product product = productMapper.selectProductByProductNum(productNum); + if (product == null) + return -3; + + Transaction transaction = new Transaction(checkNum, userNum, bankNum, pay); transMapper.addTransaction(transaction); - repamount = pay - amount/(year*12); + double intrate = product.getIntrate(); + double rep_amount = repayment.getRepSum(); + repamount = pay - (amount - repamount) * intrate; repayment.setRepAmount(repamount); - repayment.setRepSum(pay); + repayment.setRepSum(pay + rep_amount); + if (repayment != null) { + paymentMapper.updateRepayment(repayment); + } else { + paymentMapper.addRepayment(repayment); + } + return 1; + } catch (Exception e) { + e.printStackTrace(); + } finally { + } + return 0; + } + + public int pay_EPAIR_AmountCirculator(long checkNum,double pay){ + try{ + UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum); + int year = usageDate.getYear(); + double amount = usageDate.getAmount(); + long productNum = usageDate.getProductNum(); + + Product product = productMapper.selectProductByProductNum(productNum); + if(product==null)return -3; + 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; + + long userNum = usageDate.getUserNum(); + long bankNum = usageDate.getBankNum(); + + Transaction transaction = new Transaction(checkNum,userNum,bankNum,next_principal_and_interest); + transMapper.addTransaction(transaction); + + Repayment repayment = paymentMapper.selectPepaymentBycheckNum(checkNum); + double repSum = next_principal_and_interest; if(repayment!=null){ + repSum += repayment.getRepSum(); + repayment.setRepSum(repSum); paymentMapper.updateRepayment(repayment); }else{ paymentMapper.addRepayment(repayment); @@ -38,9 +97,27 @@ public class PayCirService { }catch(Exception e){ e.printStackTrace(); }finally { + } + return 0; + } + public int payAmountCirculator(long checkNum,double pay){ + try{ + UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum); + if(usageDate==null){return -2;} + int equation = usageDate.getEquation(); + if(equation == 1){ + return pay_EPAIR_AmountCirculator(checkNum,pay); + }else if(equation == 2){ + return pay_EPR_AmountCirculator(checkNum,pay); + } + }catch (Exception e){ + e.printStackTrace(); + }finally { + } return 0; } + }