diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeign.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeign.java index e3f771fcd7..00290a55da 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeign.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeign.java @@ -81,6 +81,11 @@ public interface FinKingDeeFeign { @ResponseBody ResultBean saveScheduleVoucher(@RequestBody @Valid GeneralVoucher voucher); + @ApiOperation("保存结清减免结转凭证接口") + @PostMapping("/saveSettleVoucher") + @ResponseBody + ResultBean saveSettleVoucher(@RequestBody @Valid GeneralVoucher voucher); + @ApiOperation("保存月还计提凭证接口") @PostMapping("/saveAccrualVoucher") @ResponseBody @@ -112,6 +117,13 @@ public interface FinKingDeeFeign { @ResponseBody ResultBean savePaymentVoucher(@RequestBody @Valid PaymentVoucher voucher); + + @ApiOperation("资方结清付款凭证") + @PostMapping("/saveSettleBankVoucher") + @ResponseBody + ResultBean saveSettleBankVoucher(@RequestBody @Valid PaymentVoucher voucher); + + @ApiOperation("保存垫款付款凭证接口") @PostMapping("/saveAdvancesVoucher") @ResponseBody diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeignFallBack.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeignFallBack.java index f4ac2d9897..a43d6937c4 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeignFallBack.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeignFallBack.java @@ -57,6 +57,11 @@ implements FinKingDeeFeign{ return null; } + @Override + public ResultBean saveSettleVoucher(GeneralVoucher voucher) { + return null; + } + @Override public ResultBean saveAccrualVoucher(GeneralVoucher voucher) { return null; @@ -87,6 +92,11 @@ implements FinKingDeeFeign{ return null; } + @Override + public ResultBean saveSettleBankVoucher(PaymentVoucher voucher) { + return null; + } + @Override public ResultBean saveAdvancesVoucher(PaymentVoucher voucher) { return null; diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/CollectionVoucher.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/CollectionVoucher.java index 0fabec535e..bc40b88e15 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/CollectionVoucher.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/CollectionVoucher.java @@ -46,7 +46,11 @@ public class CollectionVoucher { public BigDecimal amount; @ApiModelProperty("备注") public String remarks; + @ApiModelProperty("资方") + public String bankName; @ApiModelProperty("差额适用于结清时计算差额") public BigDecimal balance; + @ApiModelProperty("减数适用于结清时计算差额") + public BigDecimal subtrahend; } } diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/PaymentVoucher.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/PaymentVoucher.java index aaf94ed4d6..7b20c360e1 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/PaymentVoucher.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/PaymentVoucher.java @@ -44,6 +44,10 @@ public class PaymentVoucher { public String customerName; @ApiModelProperty("金额") public BigDecimal amount; + @ApiModelProperty("差额适用于结清时计算差额") + public BigDecimal balance; + @ApiModelProperty("减数适用于结清时计算差额") + public BigDecimal subtrahend; @ApiModelProperty("备注") public String remarks; @ApiModelProperty("借贷方类型") diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/SceneCodeEnum.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/SceneCodeEnum.java index 4172d91521..f8cba48ff7 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/SceneCodeEnum.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/SceneCodeEnum.java @@ -18,7 +18,9 @@ public enum SceneCodeEnum { PADSINCERE_VOUCHER1("垫款付款凭证", "出纳付款-资方本金(月还)", "08"), PADSINCERE_VOUCHER2("垫款付款凭证", "出纳付款-资方逾期利息", "09"), FUND_VOUCHER1("资金占用费收款凭证", "资金占用费出纳确认后", "10"), - FUND_VOUCHER2("资金占用费收款凭证", "资金占用费出纳确认后-确认收入", "11"); + FUND_VOUCHER2("资金占用费收款凭证", "资金占用费出纳确认后-确认收入", "11"), + settle_VOUCHER1("资方结清付款凭证", "资方结清款>0,财务给资方打款-保证金抵顶且保证金>0", "12"), + settle_VOUCHER2("资方结清付款凭证", "资方结清款>0,财务给资方打款-保证金不抵顶或保证金=0", "13"); /** * 适用凭证 diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java index 5ab41fe6f2..f0b647aacf 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java @@ -107,6 +107,8 @@ import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDe import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentSchedule; import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentScheduleFeign; import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApply; +import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApplyFeign; +import com.yxt.anrui.riskcenter.api.loansettleapply.SettleFinVo; import com.yxt.anrui.riskcenter.api.loansettlebankcost.LoanSettleBankCost; import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions; import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutionsFeign; @@ -215,7 +217,8 @@ public class FinCollectionConfirmationService extends MybatisBaseService createQueryWrapper(FinCollectionConfirmationQuery query) { // todo: 这里根据具体业务调整查询条件 // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); @@ -4089,8 +4092,8 @@ public class FinCollectionConfirmationService extends MybatisBaseService bdCustomers = new ArrayList<>(); -// BdCustomer bdCustomer = new BdCustomer(); -// bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo()); -// String salesOrderSid = planDetails.getSalesOrderSid(); -// BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(salesOrderSid).getData(); -// bdCustomer.setFShortName(salesOrder.getContractNo()); -// BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData(); -// bdCustomer.setTOrgIds(data.getOrgCode()); -// if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) { -// String vinNo = busSalesOrderVehicle.getLinkNo(); -// if (vinNo.length() > 8) { -// linkNo = vinNo.substring(vinNo.length() - 8); -// } else { -// linkNo = busSalesOrderVehicle.getLinkNo(); -// } -// if (null != borrowerDetailsVo) { -// bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + linkNo); -// customerName = borrowerDetailsVo.getBorrowerName() + linkNo; -// } -// } else { -// if (null != borrowerDetailsVo) { -// bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo()); -// customerName = borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo(); -// } -// } -// // bdCustomers.add(bdCustomer); -// ResultBean resultBean = finKingDeeFeignRest.draftBdCustomer(bdCustomer); -// if (resultBean.getSuccess()) { -// customerNumber = bdCustomer.getFNumber(); -// } -// } else { -// customerNumber = busSalesOrderVehicle.getTemporaryNo(); -// if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) { -// String vinNo = busSalesOrderVehicle.getLinkNo(); -// if (vinNo.length() > 8) { -// linkNo = vinNo.substring(vinNo.length() - 8); -// } else { -// linkNo = busSalesOrderVehicle.getLinkNo(); -// } -// if (null != borrowerDetailsVo) { -// customerName = borrowerDetailsVo.getBorrowerName() + linkNo; -// } -// } else { -// if (null != borrowerDetailsVo) { -// customerName = borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo(); -// } -// } -// } -// voucherDetail.setCustomerCode(customerNumber); -// voucherDetail.setCustomerName(customerName); -// } -// try { -// voucherDetail.setDataTime(sdf.parse(collectionDate)); -// } catch (ParseException e) { -// e.printStackTrace(); -// } -// voucherDetail.setAmount(new BigDecimal(v.getSubscriptionMoney())); -// } -// return voucherDetail;ssss - //} + private CollectionVoucher.CollectionVoucherDetail getBalanceMoneyVoucher(FinSelectedReceivablesDetailedVo v, String collectionDate) { + String planSid = ""; + CollectionVoucher.CollectionVoucherDetail voucherDetail = new CollectionVoucher.CollectionVoucherDetail(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + FinUncollectedReceivablesDetailedJR jr = finUncollectedReceivablesDetailedJRService.fetchBySid(v.getReceivablesSid()); + if (jr != null) { + planSid = jr.getBusSid(); + } + LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsFeign.fetchDetails(planSid).getData(); + if (null != planDetails) { + ResultBean finSettleVo = loanSettleApplyFeign.getFinSettleVo(planDetails.getBusVinSid(), v.getReceivablesName()); + if (finSettleVo.getSuccess()) { + SettleFinVo finVo = finSettleVo.getData(); + voucherDetail.setPayCostTitleValue(v.getReceivablesName()); + voucherDetail.setBankName(planDetails.getBankName()); + LoanRepaymentSchedule schedule = loanRepaymentScheduleFeign.fetchBySid(planDetails.getScheduleSid()).getData(); + if (null != schedule) { + if (StringUtils.isNotBlank(schedule.getCwDeptNo())) { + voucherDetail.setDeptCode(schedule.getCwDeptNo()); + } + } + String busVinSid = planDetails.getBusVinSid(); + BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData(); + if (null != busSalesOrderVehicle) { + String customerNumber = ""; + //判断财务系统是否有客户 + Boolean aBoolean = finKingDeeFeignRest.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData(); + String linkNo = ""; + String customerName = ""; + BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData(); + if (!aBoolean) { + // List bdCustomers = new ArrayList<>(); + BdCustomer bdCustomer = new BdCustomer(); + bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo()); + String salesOrderSid = planDetails.getSalesOrderSid(); + BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(salesOrderSid).getData(); + bdCustomer.setFShortName(salesOrder.getContractNo()); + BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData(); + bdCustomer.setTOrgIds(data.getOrgCode()); + if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) { + String vinNo = busSalesOrderVehicle.getLinkNo(); + if (vinNo.length() > 8) { + linkNo = vinNo.substring(vinNo.length() - 8); + } else { + linkNo = busSalesOrderVehicle.getLinkNo(); + } + if (null != borrowerDetailsVo) { + bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + linkNo); + customerName = borrowerDetailsVo.getBorrowerName() + linkNo; + } + } else { + if (null != borrowerDetailsVo) { + bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo()); + customerName = borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo(); + } + } + // bdCustomers.add(bdCustomer); + ResultBean resultBean = finKingDeeFeignRest.draftBdCustomer(bdCustomer); + if (resultBean.getSuccess()) { + customerNumber = bdCustomer.getFNumber(); + } + } else { + customerNumber = busSalesOrderVehicle.getTemporaryNo(); + if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) { + String vinNo = busSalesOrderVehicle.getLinkNo(); + if (vinNo.length() > 8) { + linkNo = vinNo.substring(vinNo.length() - 8); + } else { + linkNo = busSalesOrderVehicle.getLinkNo(); + } + if (null != borrowerDetailsVo) { + customerName = borrowerDetailsVo.getBorrowerName() + linkNo; + } + } else { + if (null != borrowerDetailsVo) { + customerName = borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo(); + } + } + } + voucherDetail.setCustomerCode(customerNumber); + voucherDetail.setCustomerName(customerName); + } + try { + voucherDetail.setDataTime(sdf.parse(collectionDate)); + } catch (ParseException e) { + e.printStackTrace(); + } + voucherDetail.setAmount(finVo.getAmount()); + voucherDetail.setBalance(finVo.getBalance()); + voucherDetail.setSubtrahend(finVo.getSubtrahend()); + } + } + return voucherDetail; + } private CollectionVoucher.CollectionVoucherDetail getReturnBackMoneyVoucher(FinSelectedReceivablesDetailedVo v, String collectionDate) { String planSid = ""; diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finmanufacturerbank/FinManufacturerBankService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finmanufacturerbank/FinManufacturerBankService.java index 082056866d..71bd227e6e 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finmanufacturerbank/FinManufacturerBankService.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finmanufacturerbank/FinManufacturerBankService.java @@ -273,9 +273,9 @@ public class FinManufacturerBankService extends MybatisBaseService selOneByBankNo(String bankAccount,String useOrgSid) { ResultBean rb = ResultBean.fireFail(); FinManufacturerBank finManufacturerBank = baseMapper.selOneByBankNo(bankAccount,useOrgSid); return rb.success().setData(finManufacturerBank); } -} \ No newline at end of file +} diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordService.java index 63a8ef598f..459538a0cf 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordService.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordService.java @@ -50,10 +50,12 @@ import com.yxt.anrui.base.api.commonappendix.CommonAppendixVo; import com.yxt.anrui.base.common.enums.DictCommonEnum; import com.yxt.anrui.buscenter.api.busdeliveredapplydetails.BusDeliveredApplyDetails; import com.yxt.anrui.buscenter.api.bussalesorder.app.order.AppOrderDetailsVo; +import com.yxt.anrui.fin.api.finmanufacturerbank.FinManufacturerBank; import com.yxt.anrui.fin.api.finpaymentapply.FinPaymentapply; import com.yxt.anrui.fin.api.finpaymentrecord.*; import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR; import com.yxt.anrui.fin.api.kingdee.appaybill.ApPayBill; +import com.yxt.anrui.fin.biz.finmanufacturerbank.FinManufacturerBankService; import com.yxt.anrui.fin.biz.finpaymentapply.FinPaymentapplyService; import com.yxt.anrui.fin.biz.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRService; import com.yxt.anrui.fin.biz.kingdee.appaybill.ApPayBillService; @@ -76,6 +78,7 @@ import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehFeign import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsFeign; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanMoneyVo; +import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApplyFeign; import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApplyFeign; import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.service.MybatisBaseService; @@ -169,6 +172,10 @@ public class FinPaymentrecordService extends MybatisBaseService listPageVo(PagerQuery pq) { FinPaymentrecordQuery query = pq.getParams(); @@ -530,6 +537,16 @@ public class FinPaymentrecordService extends MybatisBaseService { loanBePadsincereApplyFeign.pushAdvancesVoucher(finPaymentrecord.getBusSid(), finPaymentrecord.getSid()); }); + } else if ("008".equals(costTypeKey) || "资方结清款".equals(finPaymentrecord.getCostTypeValue())) { + if (StringUtils.isNotBlank(finPaymentrecord.getPayBankAccount())) { + String accountNumber = finPaymentrecord.getPayBankAccount(); + String payTypeCode = ""; + FinManufacturerBank manufacturerBank = finManufacturerBankService.selOneByBankNo(accountNumber, finPaymentrecord.getUseOrgSid()).getData(); + if (null != manufacturerBank) { + payTypeCode = manufacturerBank.getDueBankKey(); + } + loanSettleApplyFeign.pushBankVoucher(finPaymentrecord.getBusSid(),accountNumber,payTypeCode); + } } } catch (Exception e) { e.printStackTrace(); diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java index a522b02ba9..15eec3e7c3 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java @@ -235,6 +235,79 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign { return voucherService.saveVoucher(voucher); } + /** + * 结清申请减免结转凭证接口 + * + * @param voucher + * @return + */ + @Override + public ResultBean saveSettleVoucher(GeneralVoucher voucher) { + ResultBean rb = ResultBean.fireFail(); + Voucher newVoucher = new Voucher(); + List resultDetails = new ArrayList<>(); + if (StringUtils.isNotBlank(voucher.getUseOrgCode())) { + newVoucher.setAccountBook(voucher.getUseOrgCode()); + newVoucher.setVoucherNo(voucher.getUseOrgCode()); + } + List voucherDetails = voucher.getVoucherDetails(); + if (!voucherDetails.isEmpty()) { + for (GeneralVoucher.GeneralVoucherDetail voucherDetail : voucherDetails) { + Voucher.VoucherResultDetailDto dto1 = new Voucher.VoucherResultDetailDto(); //借方 + Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方 + String summary1 = ""; + String summary2 = ""; + String subjectNo1 = ""; + String subjectNo2 = ""; + if (voucherDetail.getSceneCode().equals("资金占用费减免")) { + summary1 = "公司逾期利息减免"; + summary2 = "公司逾期利息减免"; + subjectNo1 = "1201.02.02"; + subjectNo2 = "2191.05.00"; + dto1.setDebit("-" + voucherDetail.getAmount().toString()); + dto2.setDebit(voucherDetail.getAmount().toString()); + } else if (voucherDetail.getSceneCode().equals("剩余贷款保证金结转")) { + summary1 = "贷款保证金抵结清款"; + summary2 = "贷款保证金抵结清款"; + subjectNo1 = "2182.01.01"; + subjectNo2 = "1201.01.00"; + dto1.setDebit(voucherDetail.getAmount().toString()); + dto2.setCredit(voucherDetail.getAmount().toString()); + } else if (voucherDetail.getSceneCode().equals("贷款保证金扣罚")) { + summary1 = "贷款保证金扣罚金额"; + summary2 = "贷款保证金扣罚金额"; + subjectNo1 = "2182.01.01"; + subjectNo2 = "6002.01.21"; + dto1.setDebit(voucherDetail.getAmount().toString()); + dto2.setCredit(voucherDetail.getAmount().toString()); + } else if (voucherDetail.getSceneCode().equals("资方结清款付款")) { + summary1 = voucherDetail.getBankName() + "结清"; + summary2 = voucherDetail.getBankName() + "个贷保证金抵结清款"; + DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(voucherDetail.getBankName(), "investorsCode").getData(); + if (null != dictCommonVo) { + subjectNo1 = dictCommonVo.getDictValue(); + } + subjectNo2 = "1009.01.00"; + dto1.setDebit(voucherDetail.getAmount().toString()); + dto2.setCredit(voucherDetail.getAmount().toString()); + } + dto1.setSummary(summary1); + dto2.setSummary(summary2); + dto1.setSubjectNo(subjectNo1); + dto2.setSubjectNo(subjectNo2); + dto1.setDimensionDept(voucherDetail.getDeptCode()); + dto1.setDimensionCustom(voucherDetail.getCustomerCode()); + dto2.setDimensionDept(voucherDetail.getDeptCode()); + dto2.setDimensionCustom(voucherDetail.getCustomerCode()); + resultDetails.add(dto1); + resultDetails.add(dto2); + } + newVoucher.setResultDetails(resultDetails); + } + log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(newVoucher)); + return voucherService.saveVoucher(newVoucher); + } + /** * 保存还款计划表总凭证接口 * @@ -436,6 +509,7 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign { String remarks1 = ""; String remarks2 = ""; String remarks3 = ""; + String remarks4 = ""; StringBuffer sb = new StringBuffer(); Set setString = new HashSet<>(); BigDecimal amountAll = new BigDecimal(0); @@ -460,6 +534,13 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign { if (!voucherDetails.isEmpty()) { for (CollectionVoucher.CollectionVoucherDetail voucherDetail : voucherDetails) { if (StringUtils.isNotBlank(voucherDetail.getPayCostTitleValue())) { + String bankCode = ""; + if (StringUtils.isNotBlank(voucherDetail.getBankName())) { + DictCommonVo dictCommonVo2 = dictCommonFeign.selectBykey(voucherDetail.getBankName(), "investorsCode").getData(); + if (null != dictCommonVo2) { + bankCode = dictCommonVo.getDictValue(); + } + } String payCostTitleValue = voucherDetail.getPayCostTitleValue(); date = voucherDetail.getDataTime(); amountAll = amountAll.add(voucherDetail.getAmount()); @@ -494,6 +575,67 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign { } dto2.setCredit(String.valueOf(voucherDetail.getAmount())); resultDetails.add(dto2); + } else if (payCostTitleValue.equals("结清时资方逾期利息")) { + setString.add("结清款"); + Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方 + dto2.setSummary("收资方逾期利息"); + dto2.setSubjectNo("1201.02.03"); + dto2.setDimensionDept(voucherDetail.getDeptCode()); + dto2.setDimensionCustom(voucherDetail.getCustomerCode()); + dto2.setCredit(String.valueOf(voucherDetail.getAmount())); + resultDetails.add(dto2); + } else if (payCostTitleValue.equals("名义价")) { + setString.add("结清款"); + Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方 + dto2.setSummary("结清名义价款"); + dto2.setSubjectNo(bankCode); + dto2.setDimensionDept(voucherDetail.getDeptCode()); + dto2.setDimensionCustom(voucherDetail.getCustomerCode()); + dto2.setCredit(String.valueOf(voucherDetail.getSubtrahend())); + resultDetails.add(dto2); + if (voucherDetail.getBalance().compareTo(BigDecimal.ZERO) != 0) { + Voucher.VoucherResultDetailDto dto3 = new Voucher.VoucherResultDetailDto(); //贷方 + dto3.setSummary("结清名义价款差额转收入"); + dto3.setSubjectNo("6002.01.17"); + dto3.setDimensionDept(voucherDetail.getDeptCode()); + dto3.setCredit(String.valueOf(voucherDetail.getBalance())); + resultDetails.add(dto3); + } + } else if (payCostTitleValue.equals("合同违约金")) { + setString.add("结清款"); + Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方 + dto2.setSummary("还其他费用-合同违约金"); + dto2.setSubjectNo(bankCode); + dto2.setDimensionDept(voucherDetail.getDeptCode()); + dto2.setDimensionCustom(voucherDetail.getCustomerCode()); + dto2.setCredit(String.valueOf(voucherDetail.getSubtrahend())); + resultDetails.add(dto2); + if (voucherDetail.getBalance().compareTo(BigDecimal.ZERO) != 0) { + Voucher.VoucherResultDetailDto dto3 = new Voucher.VoucherResultDetailDto(); //贷方 + dto3.setSummary("其他费用差额转收入"); + dto3.setSubjectNo("6002.01.17"); + dto3.setDimensionDept(voucherDetail.getDeptCode()); + dto3.setCredit(String.valueOf(voucherDetail.getBalance())); + resultDetails.add(dto3); + } + } else if (payCostTitleValue.equals("其他费用")) { + setString.add("结清款"); + Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方 + dto2.setSummary("还其他费用-资方其他费用"); + dto2.setSubjectNo(bankCode); + dto2.setDimensionDept(voucherDetail.getDeptCode()); + dto2.setDimensionCustom(voucherDetail.getCustomerCode()); + dto2.setCredit(String.valueOf(voucherDetail.getSubtrahend())); + resultDetails.add(dto2); + if (voucherDetail.getBalance().compareTo(BigDecimal.ZERO) != 0) { + Voucher.VoucherResultDetailDto dto3 = new Voucher.VoucherResultDetailDto(); //贷方 + dto3.setSummary("收其他费用"); + dto3.setSubjectNo("1133.10.00"); + dto3.setDimensionDept(voucherDetail.getDeptCode()); + dto3.setDimensionCustom(voucherDetail.getCustomerCode()); + dto3.setCredit(String.valueOf(voucherDetail.getBalance())); + resultDetails.add(dto3); + } } else if (payCostTitleValue.equals("资方退还垫款")) { check = 1; Voucher.VoucherResultDetailDto dto1 = new Voucher.VoucherResultDetailDto(); //借方 @@ -524,6 +666,8 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign { remarks2 = "累欠"; } else if (s.equals("逾期利息")) { remarks3 = "逾期利息"; + } else if (s.equals("结清款")) { + remarks4 = "结清款"; } } } @@ -536,6 +680,9 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign { if (StringUtils.isNotBlank(remarks3)) { sb.append(remarks3).append("、"); } + if (StringUtils.isNotBlank(remarks4)) { + sb.append(remarks4).append("、"); + } Voucher.VoucherResultDetailDto dto1 = new Voucher.VoucherResultDetailDto(); //借方 if (StringUtils.isNotBlank(voucher.getBankAccount())) { dto1.setBankAccount(voucher.getBankAccount()); @@ -664,6 +811,75 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign { return voucherService.saveVoucher(newVoucher); } + @Override + public ResultBean saveSettleBankVoucher(PaymentVoucher voucher) { + ResultBean rb = ResultBean.fireFail(); + Voucher newVoucher = new Voucher(); + List resultDetails = new ArrayList<>(); + if (StringUtils.isNotBlank(voucher.getUseOrgCode())) { + newVoucher.setAccountBook(voucher.getUseOrgCode()); + newVoucher.setVoucherNo(voucher.getUseOrgCode()); + } + List voucherDetails = voucher.getVoucherDetails(); + if (!voucherDetails.isEmpty()) { + for (PaymentVoucher.PaymentVoucherDetail voucherDetail : voucherDetails) { + String bankCode = ""; + //正常 + DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(voucherDetail.getBankName(), "investorsCode").getData(); + if (null != dictCommonVo) { + bankCode = dictCommonVo.getDictValue(); + } + if (voucherDetail.getSceneCode().equals(SceneCodeEnum.settle_VOUCHER1.getCode())) { + Voucher.VoucherResultDetailDto dto1 = new Voucher.VoucherResultDetailDto(); //借方 + Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方 + Voucher.VoucherResultDetailDto dto3 = new Voucher.VoucherResultDetailDto(); //贷方 + dto1.setSummary(voucherDetail.getBankName() + "结清"); + dto2.setSummary(voucherDetail.getBankName() + "个贷保证金抵结清款"); + dto3.setSummary(voucherDetail.getBankName() + "结清"); + dto1.setSubjectNo(bankCode); + dto2.setSubjectNo("1009.01.00"); + if (voucher.getPayTypeCode().equals("02")) { + dto3.setSubjectNo("1002.01.00"); + } else if (voucher.getPayTypeCode().equals("01")) { + dto3.setSubjectNo("1002.02.01"); + } + dto1.setDimensionDept(voucherDetail.getDeptCode()); + dto1.setDimensionCustom(voucherDetail.getCustomerCode()); + dto2.setDimensionDept(voucherDetail.getDeptCode()); + dto2.setDimensionCustom(voucherDetail.getCustomerCode()); + dto3.setBankAccount(voucher.getBankAccount()); + dto1.setDebit(String.valueOf(voucherDetail.getAmount())); + dto2.setCredit(String.valueOf(voucherDetail.getSubtrahend())); + dto3.setCredit(String.valueOf(voucherDetail.getBalance())); + resultDetails.add(dto1); + resultDetails.add(dto2); + resultDetails.add(dto3); + } else { + Voucher.VoucherResultDetailDto dto1 = new Voucher.VoucherResultDetailDto(); //借方 + Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方 + dto1.setSummary(voucherDetail.getBankName() + "结清"); + dto2.setSummary(voucherDetail.getBankName() + "结清"); + dto1.setSubjectNo(bankCode); + if (voucher.getPayTypeCode().equals("02")) { + dto2.setSubjectNo("1002.01.00"); + } else if (voucher.getPayTypeCode().equals("01")) { + dto2.setSubjectNo("1002.02.01"); + } + dto1.setDimensionDept(voucherDetail.getDeptCode()); + dto1.setDimensionCustom(voucherDetail.getCustomerCode()); + dto2.setBankAccount(voucher.getBankAccount()); + dto1.setDebit(String.valueOf(voucherDetail.getAmount())); + dto2.setCredit(String.valueOf(voucherDetail.getAmount())); + resultDetails.add(dto1); + resultDetails.add(dto2); + } + } + newVoucher.setResultDetails(resultDetails); + } + log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(newVoucher)); + return voucherService.saveVoucher(newVoucher); + } + /** * 保存垫款付款凭证接口 * diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java index 4e38d87713..c4397bc5f6 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java @@ -95,4 +95,14 @@ public interface LoanSettleApplyFeign { @ApiOperation(value = "结清确认") @PostMapping(value = "/confirmAtn") ResultBean confirmAtn(@RequestParam("sid") String sid); + + @ApiOperation(value = "金融认款返回公司应收和资方应收") + @PostMapping(value = "/getFinSettleVo") + ResultBean getFinSettleVo(@RequestParam("busVinSid") String busVinSid,@RequestParam("receivablesName") String receivablesName); + + @ApiOperation(value = "推送资方结清款凭证") + @PostMapping(value = "/pushBankVoucher") + ResultBean pushBankVoucher(@RequestParam("sid") String sid,@RequestParam("accountNumber") String accountNumber,@RequestParam("payTypeCode") String payTypeCode); + + } diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/SettleFinVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/SettleFinVo.java new file mode 100644 index 0000000000..b914741231 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/SettleFinVo.java @@ -0,0 +1,23 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author Fan + * @description + * @date 2024/9/5 9:10 + */ +@Data +public class SettleFinVo { + + private String busSid; //结清申请sid + private BigDecimal amount; //分公司金额 + @ApiModelProperty("差额适用于结清时计算差额") + public BigDecimal balance; + @ApiModelProperty("减数适用于结清时计算差额") + public BigDecimal subtrahend; + +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.java index bf20ff25a9..efd93e570b 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.java @@ -82,4 +82,6 @@ public interface LoanSettleApplyMapper extends BaseMapper { List selJMSelectedByBusVinSid(@Param("busVinSid") String busVinSid); List selLoanHistories(@Param("busVinSid") String busVinSid); + + LoanSettleApply getFinSettleVo(@Param("busVinSid") String busVinSid); } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.xml index 9c3d6f965f..e8ddcce327 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.xml @@ -371,4 +371,16 @@ FROM ( LEFT JOIN loan_repayment_plan_details as p ON h.planDetailSid = p.sid WHERE p.busVinSid = #{busVinSid} AND h.buckleKey != '002' AND h.buckleKey != '003' AND h.actualMoney < 0 + diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java index dfb5083ab5..ecdcbfec5a 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java @@ -118,4 +118,14 @@ public class LoanSettleApplyRest implements LoanSettleApplyFeign { public ResultBean confirmAtn(String sid) { return loanSettleApplyService.confirmAtn(sid); } + + @Override + public ResultBean getFinSettleVo(String busVinSid, String receivablesName) { + return loanSettleApplyService.getFinSettleVo(busVinSid,receivablesName); + } + + @Override + public ResultBean pushBankVoucher(String sid, String accountNumber, String payTypeCode) { + return loanSettleApplyService.pushBankVoucher(sid,accountNumber,payTypeCode); + } } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java index f41c6b2a89..7d4eba8a9c 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java @@ -7,23 +7,28 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.yxt.anrui.base.api.basemiddleman.BaseMiddlemanDetailsVo; +import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo; +import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign; import com.yxt.anrui.base.api.commoncontract.CommonContract; import com.yxt.anrui.base.common.enums.BillTypeEnum; import com.yxt.anrui.base.common.utils.Rule; import com.yxt.anrui.base.common.utils.domain.BillNo; import com.yxt.anrui.buscenter.api.busdeposit.BusDeposit; import com.yxt.anrui.buscenter.api.busdepositfictitious.BusDepositFictitious; -import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; -import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFL; -import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderSourceLCVo; +import com.yxt.anrui.buscenter.api.bussalesorder.*; import com.yxt.anrui.buscenter.api.bussalesorder.app.order.AppOrderDiscountListVo; import com.yxt.anrui.buscenter.api.bussalesorder.flowable.BusSalesOrderDelegateQuery; +import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo; +import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign; import com.yxt.anrui.buscenter.api.bussalesorderdeposit.BusSalesOrderDeposit; import com.yxt.anrui.buscenter.api.bussalesorderinsurance.BusSalesOrderInsuranceDetailsVo; import com.yxt.anrui.buscenter.api.bussalesordermodel.BusSalesOrderModel; import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice; import com.yxt.anrui.buscenter.api.bussalesordersubmit.BusSalesOrderSubmit; import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle; +import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign; +import com.yxt.anrui.fin.api.finmanufacturerbank.FinManufacturerBank; +import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecord; import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto; import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordFeign; import com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailed; @@ -31,6 +36,11 @@ import com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivabl import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailed; import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR; import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRFeign; +import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign; +import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer; +import com.yxt.anrui.fin.api.kingdee.voucher.GeneralVoucher; +import com.yxt.anrui.fin.api.kingdee.voucher.PaymentVoucher; +import com.yxt.anrui.fin.api.kingdee.voucher.SceneCodeEnum; import com.yxt.anrui.flowable.api.flow.FlowableFeign; import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery; @@ -50,6 +60,7 @@ import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo; import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserVo; +import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord; import com.yxt.anrui.riskcenter.api.loanoverduefin.UrlQuery; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails; @@ -66,6 +77,7 @@ import com.yxt.anrui.riskcenter.api.loansettlevehicle.LoanSettleVehicleDto; import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions; import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo; import com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetail; +import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord; import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService; import com.yxt.anrui.riskcenter.biz.loanrepaymentschedule.LoanRepaymentScheduleService; @@ -92,6 +104,7 @@ import com.yxt.messagecenter.api.message.MessageFlowVo; import com.yxt.messagecenter.api.message.MessageFlowableQuery; import com.yxt.messagecenter.api.messagelist.MessageList; import com.yxt.messagecenter.api.messagelist.MessageListFeign; +import io.swagger.annotations.ApiModelProperty; import org.apache.commons.lang3.StringUtils; import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; @@ -173,6 +186,16 @@ public class LoanSettleApplyService extends MybatisBaseService listPageVo(PagerQuery pq) { LoanSettleApplyQuery query = pq.getParams(); @@ -676,6 +699,35 @@ public class LoanSettleApplyService extends MybatisBaseService variables = new HashMap<>(); Map appMap = new HashMap<>(); + //若有网关,则赋值网关中判断的字段。 + BigDecimal jmRate = BigDecimal.ZERO; //减免后的占用费年利率 + BigDecimal rate1 = new BigDecimal("0.18"); //利率18% + BigDecimal rate2 = new BigDecimal("0.144"); //利率14.4% + BigDecimal fund = BigDecimal.ZERO; //减免后的占用费年利率 + BigDecimal fundJm = BigDecimal.ZERO; //减免后的占用费年利率 + LoanSettleCompanyCost companyCost = loanSettleCompanyCostService.selectByMainSid(businessSid); + if (null != companyCost) { + if (null != companyCost.getFunfCost()) { + fund = companyCost.getFunfCost(); + } + } + LoanSettleCompanyReduction reduction = loanSettleCompanyReductionService.selectByMainSid(businessSid); + if (null != reduction) { + if (null != reduction.getFundPenalty()) { + fundJm = reduction.getFundPenalty(); + } + } + jmRate = (fund.subtract(fundJm)).divide(fund,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("0.36")); + boolean isTure = false; + boolean isTure2 = false; + if (jmRate.compareTo(rate1) < 0) { + isTure = true; + } + if (jmRate.compareTo(rate2) < 0) { + isTure2 = true; + } + variables.put("isTure", isTure); + variables.put("isTure2", isTure2); appMap.put("sid", businessSid); variables.put("app", appMap); //用户的部门全路径sid @@ -786,6 +838,36 @@ public class LoanSettleApplyService extends MybatisBaseService variables = new HashMap<>(); Map appMap = new HashMap<>(); + + //若有网关,则赋值网关中判断的字段。 + BigDecimal jmRate = BigDecimal.ZERO; //减免后的占用费年利率 + BigDecimal rate1 = new BigDecimal("0.18"); //利率18% + BigDecimal rate2 = new BigDecimal("0.144"); //利率14.4% + BigDecimal fund = BigDecimal.ZERO; //减免后的占用费年利率 + BigDecimal fundJm = BigDecimal.ZERO; //减免后的占用费年利率 + LoanSettleCompanyCost companyCost = loanSettleCompanyCostService.selectByMainSid(businessSid); + if (null != companyCost) { + if (null != companyCost.getFunfCost()) { + fund = companyCost.getFunfCost(); + } + } + LoanSettleCompanyReduction reduction2 = loanSettleCompanyReductionService.selectByMainSid(businessSid); + if (null != reduction2) { + if (null != reduction2.getFundPenalty()) { + fundJm = reduction2.getFundPenalty(); + } + } + jmRate = (fund.subtract(fundJm)).divide(fund,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("0.36")); + boolean isTure = false; + boolean isTure2 = false; + if (jmRate.compareTo(rate1) < 0) { + isTure = true; + } + if (jmRate.compareTo(rate2) < 0) { + isTure2 = true; + } + variables.put("isTure", isTure); + variables.put("isTure2", isTure2); appMap.put("sid", businessSid); variables.put("app", appMap); if (StringUtils.isNotBlank(loanSettleApply.getBusSid())) { @@ -839,6 +921,8 @@ public class LoanSettleApplyService extends MybatisBaseService voucherDetails = new ArrayList<>(); + LoanRepaymentPlanDetails planDetails = baseMapper.selectMainPeriodByBusVinSid(loanSettleApply.getBusVinSid()); + if (null != planDetails) { + String useOrgSid = planDetails.getUseOrgSid(); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); + if (null != organizationVo) { + generalVoucher.setUseOrgCode(organizationVo.getOrgCode()); + } + String deptCode = ""; + String customerNumber = ""; + String scheduleSid = planDetails.getScheduleSid(); + LoanRepaymentSchedule repaymentSchedule = loanRepaymentScheduleService.fetchBySid(scheduleSid); + if (null != repaymentSchedule) { + if (StringUtils.isNotBlank(repaymentSchedule.getCwDeptNo())) { + deptCode = repaymentSchedule.getCwDeptNo(); + } + } + BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(planDetails.getBusVinSid()).getData(); + BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(planDetails.getSalesOrderSid()).getData(); + if (null != salesOrder) { + if (null != busSalesOrderVehicle) { + //判断财务系统是否有客户 + Boolean aBoolean = finKingDeeFeign.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData(); + String linkNo = ""; + BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData(); + if (!aBoolean) { + // List bdCustomers = new ArrayList<>(); + BdCustomer bdCustomer = new BdCustomer(); + bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo()); + bdCustomer.setFShortName(salesOrder.getContractNo()); + if (StringUtils.isNotBlank(salesOrder.getPurchaseSystemSid())) { + BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData(); + bdCustomer.setTOrgIds(data.getOrgCode()); + } + bdCustomer.setTOrgIds(deptCode); + if (org.apache.commons.lang3.StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) { + String vinNo = busSalesOrderVehicle.getLinkNo(); + if (vinNo.length() > 8) { + linkNo = vinNo.substring(vinNo.length() - 8); + } else { + linkNo = busSalesOrderVehicle.getLinkNo(); + } + if (null != borrowerDetailsVo) { + bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + linkNo); + } + } else { + if (null != borrowerDetailsVo) { + bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo()); + } + } + // bdCustomers.add(bdCustomer); + ResultBean resultBean = finKingDeeFeign.draftBdCustomer(bdCustomer); + if (resultBean.getSuccess()) { + customerNumber = bdCustomer.getFNumber(); + } + } else { + customerNumber = busSalesOrderVehicle.getTemporaryNo(); + } + } + } + BigDecimal fund = BigDecimal.ZERO;//资金占用费减免 + BigDecimal bzjMoney = BigDecimal.ZERO;//剩余贷款保证金结转 + BigDecimal bzjJM = BigDecimal.ZERO;//贷款保证金减免 + BigDecimal bzjKF = BigDecimal.ZERO;//贷款保证金扣罚 + BigDecimal sybzj = BigDecimal.ZERO;//贷款保证金扣罚 + BigDecimal zfJQK = BigDecimal.ZERO;//资方结清款 + int topping = 0; + BigDecimal bbjDDMoney = BigDecimal.ZERO; //资方保证金抵顶 + if (null != reduction) { + if (null != reduction.getFundPenalty()) { + fund = reduction.getFundPenalty(); + } + if (null != reduction.getDepositPenalty()) { + bzjJM = reduction.getDepositPenalty(); + } + } + if (null != companyCost) { + if (null != companyCost.getLoanDeposit()) { + bzjMoney = companyCost.getLoanDeposit(); + } + if (null != companyCost.getDeductionAmount()) { + bzjKF = companyCost.getDeductionAmount(); + } + } + if (null != bankCost) { + if (null != bankCost.getBankSettlePrice()) { + zfJQK = bankCost.getBankSettlePrice(); + } + topping = bankCost.getTopping(); + if (null != bankCost.getLoanDeposit()) { + bbjDDMoney = bankCost.getLoanDeposit(); + } + } + sybzj = bzjMoney.subtract(bzjKF).add(bzjJM); + //资金占用费减免凭证 + if (fund.compareTo(BigDecimal.ZERO) > 0) { + GeneralVoucher.GeneralVoucherDetail voucherDetail = new GeneralVoucher.GeneralVoucherDetail(); + voucherDetail.setSceneCode("资金占用费减免"); + voucherDetail.setBankName(planDetails.getBankName()); + voucherDetail.setDeptCode(deptCode); + voucherDetail.setCustomerCode(customerNumber); + voucherDetail.setAmount(fund); + voucherDetails.add(voucherDetail); + } + //剩余贷款保证金结转 + if (sybzj.compareTo(BigDecimal.ZERO) > 0) { + GeneralVoucher.GeneralVoucherDetail voucherDetail = new GeneralVoucher.GeneralVoucherDetail(); + voucherDetail.setSceneCode("剩余贷款保证金结转"); + voucherDetail.setBankName(planDetails.getBankName()); + voucherDetail.setDeptCode(deptCode); + voucherDetail.setCustomerCode(customerNumber); + voucherDetail.setAmount(sybzj); + voucherDetails.add(voucherDetail); + } + //贷款保证金扣罚 + if (bzjKF.compareTo(BigDecimal.ZERO) > 0) { + GeneralVoucher.GeneralVoucherDetail voucherDetail = new GeneralVoucher.GeneralVoucherDetail(); + voucherDetail.setSceneCode("贷款保证金扣罚"); + voucherDetail.setBankName(planDetails.getBankName()); + voucherDetail.setDeptCode(deptCode); + voucherDetail.setCustomerCode(customerNumber); + voucherDetail.setAmount(bzjKF); + voucherDetails.add(voucherDetail); + } + //资方结清款付款 + if (zfJQK.compareTo(BigDecimal.ZERO) <= 0) { + if (topping == 1) { + if (bbjDDMoney.compareTo(BigDecimal.ZERO) > 0) { + GeneralVoucher.GeneralVoucherDetail voucherDetail = new GeneralVoucher.GeneralVoucherDetail(); + voucherDetail.setSceneCode("资方结清款付款"); + voucherDetail.setBankName(planDetails.getBankName()); + voucherDetail.setDeptCode(deptCode); + voucherDetail.setCustomerCode(customerNumber); + voucherDetail.setAmount(bbjDDMoney); + voucherDetails.add(voucherDetail); + } + } + } + generalVoucher.setVoucherDetails(voucherDetails); + finKingDeeFeign.saveSettleVoucher(generalVoucher); + } + } + //--------------------资方结清款到出纳代付款列表------------------ private void pushBankSettlePrice(LoanSettleApply loanSettleApply) { if (StringUtils.isBlank(loanSettleApply.getBusSid())) { @@ -2054,6 +2288,38 @@ public class LoanSettleApplyService extends MybatisBaseService variables = new HashMap<>(); + //若有网关,则赋值网关中判断的字段。 + BigDecimal jmRate = BigDecimal.ZERO; //减免后的占用费年利率 + BigDecimal rate1 = new BigDecimal("0.18"); //利率18% + BigDecimal rate2 = new BigDecimal("0.144"); //利率14.4% + BigDecimal fund = BigDecimal.ZERO; //减免后的占用费年利率 + BigDecimal fundJm = BigDecimal.ZERO; //减免后的占用费年利率 + LoanSettleCompanyCost companyCost = loanSettleCompanyCostService.selectByMainSid(query.getBusinessSid()); + if (null != companyCost) { + if (null != companyCost.getFunfCost()) { + fund = companyCost.getFunfCost(); + } + } + LoanSettleCompanyReduction reduction = loanSettleCompanyReductionService.selectByMainSid(query.getBusinessSid()); + if (null != reduction) { + if (null != reduction.getFundPenalty()) { + fundJm = reduction.getFundPenalty(); + } + } + jmRate = (fund.subtract(fundJm)).divide(fund,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("0.36")); + boolean isTure = false; + boolean isTure2 = false; + if (jmRate.compareTo(rate1) < 0) { + isTure = true; + } + if (jmRate.compareTo(rate2) < 0) { + isTure2 = true; + } + variables.put("isTure", isTure); + variables.put("isTure2", isTure2); + bv.setFormVariables(variables); ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanSettleApplyNodeVo.class)).collect(Collectors.toList()); @@ -2066,6 +2332,38 @@ public class LoanSettleApplyService extends MybatisBaseService variables = new HashMap<>(); + //若有网关,则赋值网关中判断的字段。 + BigDecimal jmRate = BigDecimal.ZERO; //减免后的占用费年利率 + BigDecimal rate1 = new BigDecimal("0.18"); //利率18% + BigDecimal rate2 = new BigDecimal("0.144"); //利率14.4% + BigDecimal fund = BigDecimal.ZERO; //减免后的占用费年利率 + BigDecimal fundJm = BigDecimal.ZERO; //减免后的占用费年利率 + LoanSettleCompanyCost companyCost = loanSettleCompanyCostService.selectByMainSid(query.getBusinessSid()); + if (null != companyCost) { + if (null != companyCost.getFunfCost()) { + fund = companyCost.getFunfCost(); + } + } + LoanSettleCompanyReduction reduction = loanSettleCompanyReductionService.selectByMainSid(query.getBusinessSid()); + if (null != reduction) { + if (null != reduction.getFundPenalty()) { + fundJm = reduction.getFundPenalty(); + } + } + jmRate = (fund.subtract(fundJm)).divide(fund,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("0.36")); + boolean isTure = false; + boolean isTure2 = false; + if (jmRate.compareTo(rate1) < 0) { + isTure = true; + } + if (jmRate.compareTo(rate2) < 0) { + isTure2 = true; + } + variables.put("isTure", isTure); + variables.put("isTure2", isTure2); + bv.setFormVariables(variables); ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanSettleApplyNodeVo.class)).collect(Collectors.toList()); @@ -2093,6 +2391,35 @@ public class LoanSettleApplyService extends MybatisBaseService variables = new HashMap<>(); Map appMap = new HashMap<>(); appMap.put("sid", businessSid); + //若有网关,则赋值网关中判断的字段。 + BigDecimal jmRate = BigDecimal.ZERO; //减免后的占用费年利率 + BigDecimal rate1 = new BigDecimal("0.18"); //利率18% + BigDecimal rate2 = new BigDecimal("0.144"); //利率14.4% + BigDecimal fund = BigDecimal.ZERO; //减免后的占用费年利率 + BigDecimal fundJm = BigDecimal.ZERO; //减免后的占用费年利率 + LoanSettleCompanyCost companyCost = loanSettleCompanyCostService.selectByMainSid(businessSid); + if (null != companyCost) { + if (null != companyCost.getFunfCost()) { + fund = companyCost.getFunfCost(); + } + } + LoanSettleCompanyReduction reduction = loanSettleCompanyReductionService.selectByMainSid(businessSid); + if (null != reduction) { + if (null != reduction.getFundPenalty()) { + fundJm = reduction.getFundPenalty(); + } + } + jmRate = (fund.subtract(fundJm)).divide(fund,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("0.36")); + boolean isTure = false; + boolean isTure2 = false; + if (jmRate.compareTo(rate1) < 0) { + isTure = true; + } + if (jmRate.compareTo(rate2) < 0) { + isTure2 = true; + } + variables.put("isTure", isTure); + variables.put("isTure2", isTure2); if (StringUtils.isNotBlank(loanSettleApply.getBusSid())) { variables.put("orderNames", "提前结清申请"); } @@ -2431,6 +2758,8 @@ public class LoanSettleApplyService extends MybatisBaseService getFinSettleVo(String busVinSid, String receivablesName) { + ResultBean rb = ResultBean.fireFail(); + SettleFinVo vo = new SettleFinVo(); + LoanSettleApply apply = baseMapper.getFinSettleVo(busVinSid); + if (null != apply) { + String sid = apply.getSid(); + BigDecimal amount = BigDecimal.ZERO; + BigDecimal balance = BigDecimal.ZERO; + BigDecimal subtrahend = BigDecimal.ZERO; + LoanSettleCompanyCost companyCost = loanSettleCompanyCostService.selectByMainSid(sid); + LoanSettleBankCost bankCost = loanSettleBankCostService.selectByMainSid(sid); + if (null != companyCost) { + if (receivablesName.equals("名义价")) { + if (null != companyCost.getCompanyNominalPrice()) { + amount = companyCost.getCompanyNominalPrice(); + } + } + if (receivablesName.equals("合同违约金")) { + if (null != companyCost.getContractLiquidated()) { + amount = companyCost.getContractLiquidated(); + } + } + if (receivablesName.equals("其他费用")) { + if (null != companyCost.getCompanyOtherPrice()) { + amount = companyCost.getCompanyOtherPrice(); + } + } + } + if (null != bankCost) { + if (receivablesName.equals("名义价")) { + if (null != bankCost.getBankNominalPrice()) { + subtrahend = bankCost.getBankNominalPrice(); + } + } + if (receivablesName.equals("合同违约金")) { + if (null != bankCost.getBankContractLiquidated()) { + subtrahend = bankCost.getBankContractLiquidated(); + } + } + if (receivablesName.equals("其他费用")) { + if (null != bankCost.getBankOtherReceivable()) { + subtrahend = bankCost.getBankOtherReceivable(); + } + } + } + balance = amount.subtract(subtrahend); + vo.setBusSid(sid); + vo.setAmount(amount); + vo.setBalance(balance); + vo.setSubtrahend(subtrahend); + return rb.success().setData(vo); + } + return rb; + } + + public ResultBean pushBankVoucher(String sid, String accountNumber, String payTypeCode) { + ResultBean rb = ResultBean.fireFail(); + LoanSettleApply apply = fetchBySid(sid); + LoanSettleBankCost bankCost = loanSettleBankCostService.selectByMainSid(sid); + if (null != apply) { + BigDecimal zfJQK = BigDecimal.ZERO;//资方结清款 + int topping = 0; + BigDecimal bbjDDMoney = BigDecimal.ZERO; //资方保证金抵顶 + BigDecimal sub = BigDecimal.ZERO; //资方保证金差额 + if (null != bankCost) { + if (null != bankCost.getBankSettlePrice()) { + zfJQK = bankCost.getBankSettlePrice(); + } + topping = bankCost.getTopping(); + if (null != bankCost.getLoanDeposit()) { + bbjDDMoney = bankCost.getLoanDeposit(); + } + } + sub = zfJQK.subtract(bbjDDMoney); + if (zfJQK.compareTo(BigDecimal.ZERO) > 0) { + PaymentVoucher paymentVoucher = new PaymentVoucher(); + paymentVoucher.setBankAccount(accountNumber); + paymentVoucher.setPayTypeCode(payTypeCode); + List voucherDetails = new ArrayList<>(); + LoanRepaymentPlanDetails planDetails = baseMapper.selectMainPeriodByBusVinSid(apply.getBusVinSid()); + if (null != planDetails) { + PaymentVoucher.PaymentVoucherDetail voucherDetail = new PaymentVoucher.PaymentVoucherDetail(); + if (topping == 1) { + if (bbjDDMoney.compareTo(BigDecimal.ZERO) > 0) { + voucherDetail.setSceneCode(SceneCodeEnum.settle_VOUCHER1.getCode()); + } else { + voucherDetail.setSceneCode(SceneCodeEnum.settle_VOUCHER2.getCode()); + } + } else { + voucherDetail.setSceneCode(SceneCodeEnum.settle_VOUCHER2.getCode()); + } + if (StringUtils.isNotBlank(planDetails.getBankName())) { + voucherDetail.setBankName(planDetails.getBankName()); + } + String useOrgSid = planDetails.getUseOrgSid(); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); + if (null != organizationVo) { + paymentVoucher.setUseOrgCode(organizationVo.getOrgCode()); + } + LoanRepaymentSchedule schedule = loanRepaymentScheduleService.fetchBySid(planDetails.getScheduleSid()); + if (StringUtils.isNotBlank(schedule.getCwDeptNo())) { + voucherDetail.setDeptCode(schedule.getCwDeptNo()); + } + BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(planDetails.getBusVinSid()).getData(); + BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(planDetails.getSalesOrderSid()).getData(); + if (null != salesOrder) { + if (null != busSalesOrderVehicle) { + String customerNumber = ""; + //判断财务系统是否有客户 + Boolean aBoolean = finKingDeeFeign.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData(); + String linkNo = ""; + BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData(); + if (!aBoolean) { + // List bdCustomers = new ArrayList<>(); + BdCustomer bdCustomer = new BdCustomer(); + bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo()); + bdCustomer.setFShortName(salesOrder.getContractNo()); + BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData(); + bdCustomer.setTOrgIds(data.getOrgCode()); + if (org.apache.commons.lang3.StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) { + String vinNo = busSalesOrderVehicle.getLinkNo(); + if (vinNo.length() > 8) { + linkNo = vinNo.substring(vinNo.length() - 8); + } else { + linkNo = busSalesOrderVehicle.getLinkNo(); + } + if (null != borrowerDetailsVo) { + bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + linkNo); + } + } else { + if (null != borrowerDetailsVo) { + bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo()); + } + } + // bdCustomers.add(bdCustomer); + ResultBean resultBean = finKingDeeFeign.draftBdCustomer(bdCustomer); + if (resultBean.getSuccess()) { + customerNumber = bdCustomer.getFNumber(); + } + } else { + customerNumber = busSalesOrderVehicle.getTemporaryNo(); + } + voucherDetail.setCustomerCode(customerNumber); + } + } + voucherDetail.setAmount(zfJQK); + voucherDetail.setSubtrahend(bbjDDMoney); + voucherDetail.setBalance(sub); + voucherDetails.add(voucherDetail); + } + paymentVoucher.setVoucherDetails(voucherDetails); + finKingDeeFeign.saveSettleBankVoucher(paymentVoucher); + } + } + + return rb.success(); + } }