From 69f4b11aec1197189ce89732c483f441070649c8 Mon Sep 17 00:00:00 2001 From: "15989082884@163.com" <15989082884@163.com> Date: Mon, 18 Sep 2023 18:01:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8D=E5=86=8D=E6=94=AF=E4=BB=98=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pay/controller/PayPaymentController.java | 16 ++- .../pay/service/PayPaymentService.java | 2 + .../service/impl/PayPaymentServiceImpl.java | 112 ++++++++++++++++++ 3 files changed, 121 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/pay/controller/PayPaymentController.java b/src/main/java/com/qs/serve/modules/pay/controller/PayPaymentController.java index 52d4dde7..213f18ff 100644 --- a/src/main/java/com/qs/serve/modules/pay/controller/PayPaymentController.java +++ b/src/main/java/com/qs/serve/modules/pay/controller/PayPaymentController.java @@ -223,15 +223,13 @@ public class PayPaymentController { * @param param * @return */ -// @PostMapping("/unPayment") -// @SysLog(module = SystemModule.Payment, title = "支付", biz = BizType.INSERT) -// @PreAuthorize("hasRole('pay:payment:pay')") -// public R save(@RequestBody @Valid PayUnPaymentBo param){ -// PayPaymentBo paymentBo = CopierUtil.copy(param,new PayPaymentBo()); -// paymentBo.setPayType(PaymentType.UN_PAYMENT); -// PayPayment payPayment = payPaymentService.payment(paymentBo); -// return R.ok(payPayment); -// } + @PostMapping("/unPayment") + @SysLog(module = SystemModule.Payment, title = "支付", biz = BizType.INSERT) + @PreAuthorize("hasRole('pay:payment:pay')") + public R unPayment(@RequestBody @Valid PayPaymentBo param){ + PayPayment payPayment = payPaymentService.unpayment(param); + return R.ok(payPayment); + } /** * 新增支付 diff --git a/src/main/java/com/qs/serve/modules/pay/service/PayPaymentService.java b/src/main/java/com/qs/serve/modules/pay/service/PayPaymentService.java index 878045a1..d510dec7 100644 --- a/src/main/java/com/qs/serve/modules/pay/service/PayPaymentService.java +++ b/src/main/java/com/qs/serve/modules/pay/service/PayPaymentService.java @@ -19,6 +19,8 @@ public interface PayPaymentService extends IService { */ PayPayment payment(PayPaymentBo paymentBo); + PayPayment unpayment(PayPaymentBo paymentBo); + /** * 取消支付 * @param id diff --git a/src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentServiceImpl.java b/src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentServiceImpl.java index fdda6d98..da0b57ef 100644 --- a/src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentServiceImpl.java @@ -139,6 +139,118 @@ public class PayPaymentServiceImpl extends ServiceImpl0){ + VtbVerification vtbMain = verificationList.get(0); + payPaymentItem.setVerificationId(vtbMain.getId()); + payPaymentItem.setVerificationMainCode(vtbMain.getVerificationMainCode()); + payPaymentItem.setVerificationCode(vtbMain.getVerificationCode()); + } + + this.save(payPayment); + + payPaymentItem.setPaymentId(payPayment.getId()); + + paymentItemService.save(payPaymentItem); + + return payPayment; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public PayPayment unpayment(PayPaymentBo paymentBo) { + String payType = paymentBo.getPayType(); + if(!payType.equals(PaymentType.PAYMENT)&&!payType.equals(PaymentType.UN_PAYMENT)){ + Assert.throwEx("支付类型异常"); + } + + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(PayPayment::getErpId,paymentBo.getErpId()); + if(this.count(lqw)>0){ + Assert.throwEx("已存在ERPID"); + } + + SysUser sysUser = sysUserService.getByAccount(paymentBo.getUserCode()); + if(sysUser==null){ + Assert.throwEx("人员工号异常"); + } + + LambdaQueryWrapper vtbLqw = new LambdaQueryWrapper<>(); + vtbLqw.eq(VtbVerification::getVerificationMainCode,paymentBo.getVerificationSubCode()); + List verificationList = verificationService.list(vtbLqw); +// if(verificationList.size()==0){ +// Assert.throwEx("核销编码异常"); +// } + + VtbVerificationSubject vtbSub = verificationSubjectService.getByVerificationSubjectCode(paymentBo.getVerificationSubCode()); + if(vtbSub==null && verificationList.size()==0){ + Assert.throwEx("核销编码异常"); + } + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(PayPaymentItem::getVerificationMainCode,paymentBo.getVerificationSubCode()); + List payPaymentItemList = paymentItemService.list(lambdaQueryWrapper); + BigDecimal payedAmount = payPaymentItemList.stream().map(a->a.getItemPayAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); + BigDecimal verificationAmount = null; + if(vtbSub!=null){ + verificationAmount = vtbSub.getUsedAmount(); + }else if(verificationList.size()!=0) { + verificationAmount = verificationList.stream().map(a -> a.getAmount()).reduce(BigDecimal.ZERO, BigDecimal::add); + }else{ + Assert.throwEx("核销金额异常"); + } + BigDecimal notPayAmount = verificationAmount.subtract(payedAmount); + + if(paymentBo.getPayAmount().compareTo(notPayAmount)>0){ + Assert.throwEx("支付金额已超出可支付额"); + } + + + PayPayment payPayment = new PayPayment(); + payPayment.setPayType("unPay"); + payPayment.setPayCode(paymentBo.getErpId()); + payPayment.setPayAmount(paymentBo.getPayAmount()); + payPayment.setUserId(sysUser.getId()); + payPayment.setUserCode(sysUser.getCode()); + payPayment.setUserName(sysUser.getName()); + payPayment.setPayTime(paymentBo.getPayTime()); + payPayment.setPayDate(paymentBo.getPayDate()); + payPayment.setBillNumber(paymentBo.getBillNumber()); + payPayment.setRemark(paymentBo.getRemark()); + payPayment.setTenantId("001"); + payPayment.setErpId(paymentBo.getErpId()); + + if(vtbSub!=null) { + payPayment.setSupplierId(vtbSub.getSupplierId()); + payPayment.setSupplierCode(vtbSub.getSupplierCode()); + payPayment.setSupplierName(vtbSub.getSupplierName()); + payPayment.setCostApplyId(vtbSub.getCostApplyId()); + }else if(verificationList.size()>0) { + VtbVerification vtbMain = verificationList.get(0); + payPayment.setSupplierId(vtbMain.getSupplierId()); + payPayment.setSupplierCode(vtbMain.getSupplierCode()); + payPayment.setSupplierName(vtbMain.getSupplierName()); + payPayment.setCostApplyId(vtbMain.getCostApplyId()); + } + + PayPaymentItem payPaymentItem = new PayPaymentItem(); payPaymentItem = CopierUtil.copy(payPayment,payPaymentItem); payPaymentItem.setItemPayAmount(payPayment.getPayAmount());