From d5a3e8b26b0b987d18c5cb252dd249afc492cbe2 Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 13 Nov 2023 15:17:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E8=B0=83=E6=9F=A5=E8=AF=A2=EF=BC=9B?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8D=8F=E8=AE=AE=E7=B1=BB=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=A0=B8=E9=94=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serve/modules/tbs/entity/TbsActivity.java | 1 + .../modules/third/PortalOfCostController.java | 32 +++++ .../entity/ProcessCreateContractCheckBo.java | 32 +++++ .../service/PortalOfCostApplication.java | 120 ++++++++++++++++++ .../controller/VtbVerificationController.java | 3 + .../modules/vtb/entity/VtbVerification.java | 4 +- .../vtb/entity/so/VtbVerificationSo.java | 3 + 7 files changed, 194 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/qs/serve/modules/third/entity/ProcessCreateContractCheckBo.java diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java index 831e0b28..4c23fede 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java @@ -207,6 +207,7 @@ public class TbsActivity implements Serializable { /** 模板id */ private Long templateId; + @TableField(condition = SqlCondition.LIKE) private String templateTitle; private String templateBudgetIds; diff --git a/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java b/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java index 78caf4ac..5531faea 100644 --- a/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java +++ b/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java @@ -8,6 +8,7 @@ import com.qs.serve.common.util.JsonUtil; import com.qs.serve.modules.sys.entity.SysSyncLog; import com.qs.serve.modules.sys.service.SysSyncLogService; import com.qs.serve.modules.third.consts.ThirtyConst; +import com.qs.serve.modules.third.entity.ProcessCreateContractCheckBo; import com.qs.serve.modules.third.entity.ProcessCreateCostApplyBo; import com.qs.serve.modules.third.entity.ProcessCreatePolicyCostBo; import com.qs.serve.modules.third.service.PortalOfCostApplication; @@ -66,6 +67,37 @@ public class PortalOfCostController { return R.error("支付异常"); } + + /** + * 协议类费用 核销支付记录;添加释放接口,释放合同不再支付的金额; + * @param createBo + * @return + */ + @PostMapping("createByContractCheck") + public R createByContractCheck(@Valid @RequestBody ProcessCreateContractCheckBo createBo, HttpServletRequest request){ + SysSyncLog syncLog = new SysSyncLog(); + syncLog.setFromPlat("协议类核销支付"); + syncLog.setUrl(request.getRequestURI()); + syncLog.setRequestJson(JsonUtil.objectToJson(createBo)); + syncLog.setEntityClass(ProcessCreateCostApplyBo.class.getName()); + try { + ThirdTokenUtil.checkToken(request); + portalOfCostApplication.createByContractCheck(createBo); + syncLog.setSuccessStatus(1); + } catch (Exception e) { + log.error("协议类核销支付(费用申请)===>{}", JsonUtil.objectToJson(createBo)); + syncLog.setFailReason(e.getMessage()); + return R.error(e.getMessage()); + } + sysSyncLogService.save(syncLog); + if(syncLog.getSuccessStatus()!=null&&syncLog.getSuccessStatus().equals(1)){ + return R.ok(); + } + return R.error("支付异常"); + } + + + /** * 一站式创建费用(政策) * @param createBo diff --git a/src/main/java/com/qs/serve/modules/third/entity/ProcessCreateContractCheckBo.java b/src/main/java/com/qs/serve/modules/third/entity/ProcessCreateContractCheckBo.java new file mode 100644 index 00000000..586ff930 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/third/entity/ProcessCreateContractCheckBo.java @@ -0,0 +1,32 @@ +package com.qs.serve.modules.third.entity; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author YenHex + * @since 2023/11/13 + */ +@Data +public class ProcessCreateContractCheckBo { + + /** 费用编码 */ + private String costCode; + + /** 核销与支付金额 */ + private BigDecimal amount; + + /** 发票号 */ + private String billNumber; + + /** 发货单号 */ + private String dispatchCode; + + /** 业务人员编码 */ + private String userCode; + + /** 核销与支付备注 */ + private String remark; + +} diff --git a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java b/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java index adb5008e..92f5022a 100644 --- a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java +++ b/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java @@ -940,8 +940,128 @@ public class PortalOfCostApplication { } + @Transactional(rollbackFor = Exception.class) + public void createByContractCheck(ProcessCreateContractCheckBo createBo){ + TbsCostApply costApply = costApplyService.getByCode(createBo.getCostCode()); + TbsActivity activity = activityService.listByCostApplyId(costApply.getId()).get(0); + List subjectList = activitySubjectService.listByActivityId(activity.getId()); + BmsSupplier supplier = supplierService.getById(costApply.getSupplierId()); + BigDecimal totalAmount = createBo.getAmount(); + SysUser user = userService.getByAccount(createBo.getUserCode()); + LocalDateTime nowTime = LocalDateTime.now(); + //保存核销申请 + VtbVerification verification = new VtbVerification(); + verification.setDisCode(createBo.getDispatchCode()); + verification.setBillNumber(createBo.getBillNumber()); + verification.setVerificationCode("HXC"+ CodeGenUtil.generate(CodeGenUtil.SourceKey.Verification)); + verification.setVerificationMainCode(verification.getVerificationCode()); + verification.setCostApplyId(costApply.getId()); + verification.setFinishedTime(nowTime); + verification.setVerificationState(VtbVerificationState.Finished.getCode()); + verification.setActivityId(activity.getId()); + verification.setSupplierId(activity.getSupplierId()); + verification.setSupplierCode(activity.getSupplierCode()); + verification.setSupplierName(activity.getSupplierName()); + verification.setUserId(user.getId()); + verification.setUserCode(user.getCode()); + verification.setUserName(user.getName()); + verification.setAmount(totalAmount); + verification.setAmountRecord(totalAmount); + verification.setPaymentState(ResultFlag.OK); + verificationService.save(verification); + + //协议类的要直接支付 + PayPayment payPayment = new PayPayment(); + payPayment.setPayType(PaymentType.PAYMENT); + payPayment.setPayCode("PM" + StringUtils.genShortId()); + payPayment.setSupplierId(Long.parseLong(supplier.getId())); + payPayment.setSupplierCode(supplier.getCode()); + payPayment.setSupplierName(supplier.getName()); + payPayment.setPayAmount(totalAmount); + payPayment.setCostApplyId(costApply.getId()); + payPayment.setUserId(user.getId()); + payPayment.setUserCode(user.getCode()); + payPayment.setUserName(user.getName()); + payPayment.setPayTime(nowTime); + payPayment.setErpCode(createBo.getDispatchCode()); + payPayment.setBillNumber(createBo.getBillNumber()); + payPayment.setCreateBy(user.getName()); + payPayment.setCreateTime(LocalDateTime.now()); + paymentService.save(payPayment); + //保存核销费用结果 + BigDecimal subjectSurplus = createBo.getAmount(); + for (TbsActivitySubject subject : subjectList) { + if(subjectSurplus.compareTo(BigDecimal.ZERO)==0){ + break; + } + //当前项支付多少 + BigDecimal currItemAmount; + //科目还有多少金额未支付 + BigDecimal totalUnPay = subject.getUsedAmount()==null?subject.getAmount():subject.getAmount().subtract(subject.getUsedAmount()); + //节点金额>科目的剩余金额 + if(totalUnPay.compareTo(subjectSurplus)>=0){ + currItemAmount = subjectSurplus; + subjectSurplus = BigDecimal.ZERO; + }else { + subjectSurplus = subjectSurplus.subtract(totalUnPay); + currItemAmount = totalUnPay; + } + //科目总支付 + BigDecimal totalPay = subject.getUsedAmount().add(currItemAmount); + + VtbVerificationSubject verificationSubject = new VtbVerificationSubject(); + verificationSubject.setVerificationId(verification.getId()); + verificationSubject.setVerificationSubCode(verification.getVerificationCode()+"_1"); + verificationSubject.setCostApplyId(costApply.getId()); + verificationSubject.setActivityId(activity.getId()); + verificationSubject.setSubjectId(subject.getId()); + verificationSubject.setSubjectCode(subject.getSubjectCode()); + verificationSubject.setSubjectName(subject.getSubjectName()); + verificationSubject.setSupplierId(Long.parseLong(supplier.getId())); + verificationSubject.setSupplierCode(supplier.getCode()); + verificationSubject.setSupplierName(supplier.getName()); + verificationSubject.setPayFinishedFlag(ResultFlag.OK); + verificationSubject.setUsedAmount(currItemAmount); + verificationSubject.setUsedAmountRecord(currItemAmount); + verificationSubject.setCountPerson(0); + verificationSubject.setCountSession(0); + + PayPaymentItem paymentItem = new PayPaymentItem(); + paymentItem.setPaymentId(payPayment.getId()); + paymentItem.setPayType(PaymentType.PAYMENT); + paymentItem.setSupplierId(Long.parseLong(supplier.getId())); + paymentItem.setItemPayAmount(totalAmount); + paymentItem.setVerificationId(verification.getId()); + paymentItem.setVerificationCode(verification.getVerificationCode()); + paymentItem.setVerificationMainCode(verification.getVerificationCode()); + paymentItem.setVerificationSubjectId(verificationSubject.getId()); + paymentItem.setCostApplyId(costApply.getId()); + paymentItem.setActivityId(activity.getId()); + paymentItem.setActivityCode(activity.getActivityCode()); + paymentItem.setSubjectId(subject.getId()); + paymentItem.setSubjectCode(subject.getSubjectCode()); + paymentItem.setSubjectName(subject.getSubjectName()); + paymentItem.setCreateBy(user.getName()); + paymentItem.setCreateTime(LocalDateTime.now()); + + //保存和更新项 + TbsActivitySubject activitySubject = new TbsActivitySubject(); + activitySubject.setId(subject.getId()); + activitySubject.setUsedAmount(totalPay); + activitySubjectService.updateById(subject); + paymentItemService.save(paymentItem); + verificationSubjectService.save(verificationSubject); + + } + + + + + + } + /** * 创建流程中,初始化SKU列表 * @param invCodes diff --git a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java index b9a8fc53..9216c8ca 100644 --- a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java +++ b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java @@ -137,6 +137,9 @@ public class VtbVerificationController { }else if(loadMy!=null&&loadMy.equals(1)){ lqw.eq(VtbVerification::getUserId,AuthContextUtils.getSysUserId()); } + if(StringUtils.hasText(param.getTemplateTitle())){ + lqw.like(VtbVerification::getTemplateTitle,param.getTemplateTitle()); + } lqw.orderByDesc(VtbVerification::getId); PageUtil.startPage(); List listObjectIds = vtbVerificationService.list(lqw); diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java index e812632b..25965e5b 100644 --- a/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java +++ b/src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java @@ -183,6 +183,9 @@ public class VtbVerification implements Serializable { @TableField(condition = SqlCondition.LIKE) private String userName; + @TableField(condition = SqlCondition.LIKE) + private String templateTitle; + /** * 业务继承人 */ @@ -214,6 +217,5 @@ public class VtbVerification implements Serializable { @TableField(exist = false) private Object costApplyInfo; - } diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/so/VtbVerificationSo.java b/src/main/java/com/qs/serve/modules/vtb/entity/so/VtbVerificationSo.java index eecb9fd8..6cbb908b 100644 --- a/src/main/java/com/qs/serve/modules/vtb/entity/so/VtbVerificationSo.java +++ b/src/main/java/com/qs/serve/modules/vtb/entity/so/VtbVerificationSo.java @@ -71,5 +71,8 @@ public class VtbVerificationSo implements Serializable { @TableField(condition = SqlCondition.LIKE) private String supplierBizRegionThirdName; + /** 模板名称 */ + private String templateTitle; + }