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 2f453d8e78..3c4ab00453 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 @@ -3759,11 +3759,11 @@ public class FinCollectionConfirmationService extends MybatisBaseService saveLateVoucher(GeneralVoucher voucher) { - return null; + 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(); //贷方 + dto1.setSummary("本金转累欠"); + dto2.setSummary("本金转累欠"); + dto1.setSubjectNo("1201.02.03"); + dto2.setSubjectNo("1201.02.01"); + dto1.setDimensionDept(voucherDetail.getDeptCode()); + dto1.setDimensionCustom(voucherDetail.getCustomerCode()); + dto2.setDimensionDept(voucherDetail.getDeptCode()); + dto2.setDimensionCustom(voucherDetail.getCustomerCode()); + 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); } /** @@ -326,7 +366,55 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign { */ @Override public ResultBean saveBuckleVoucher(GeneralVoucher voucher) { - return null; + 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(); //贷方 + dto1.setSummary(voucherDetail.getBankName() + "划扣"); + dto2.setSummary(voucherDetail.getBankName() + "划扣"); + if (voucherDetail.getSceneCode().equals(SceneCodeEnum.BUCKLE_VOUCHER1)) { + //正常月还 + DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(voucherDetail.getBankName(), "investorsCode").getData(); + if (null != dictCommonVo) { + dto1.setSubjectNo(dictCommonVo.getDictValue()); + } + dto2.setSubjectNo("1201.02.01"); + } + if (voucherDetail.getSceneCode().equals(SceneCodeEnum.BUCKLE_VOUCHER2)) { + //逾期未垫款 + DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(voucherDetail.getBankName(), "investorsCode").getData(); + if (null != dictCommonVo) { + dto1.setSubjectNo(dictCommonVo.getDictValue()); + } + dto2.setSubjectNo("1201.02.03"); + } + if (voucherDetail.getSceneCode().equals(SceneCodeEnum.BUCKLE_VOUCHER3)) { + //逾期已垫款 + dto1.setSubjectNo("1133.10.20"); + dto2.setSubjectNo("1201.02.03"); + } + dto1.setDimensionDept(voucherDetail.getDeptCode()); + dto1.setDimensionCustom(voucherDetail.getCustomerCode()); + dto2.setDimensionDept(voucherDetail.getDeptCode()); + dto2.setDimensionCustom(voucherDetail.getCustomerCode()); + 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/loanrepaymentplandetails/LoanPlanDetailsVoForLateVoucher.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanPlanDetailsVoForLateVoucher.java new file mode 100644 index 0000000000..da5e0d333c --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanPlanDetailsVoForLateVoucher.java @@ -0,0 +1,19 @@ +package com.yxt.anrui.riskcenter.api.loanrepaymentplandetails; + +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/1/5 15:59 + */ +@Data +public class LoanPlanDetailsVoForLateVoucher { + private String planSid; + private String overdueState; + private String outstandingMoney; + private String useOrgSid; + private String deptSid; + private String busVinSid; + private String salesOrderSid; +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java index 60070a1a79..f52acbaa53 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java @@ -6,12 +6,24 @@ import com.alibaba.fastjson.JSON; 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.basepurchasesystem.BasePurchaseSystemDetailsVo; +import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign; 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.buscenterfile.BuscenterFile; import com.yxt.anrui.buscenter.api.buscenterfile.BuscenterFileEnum; +import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; +import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign; +import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo; +import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign; +import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle; +import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign; import com.yxt.anrui.buscenter.api.bussolutionschange.BusSolutionsChangeFiles; +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.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; @@ -34,11 +46,14 @@ import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*; import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord; import com.yxt.anrui.riskcenter.api.loanfile.LoanFile; import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum; +import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryRecordVo; +import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails; import com.yxt.anrui.riskcenter.biz.loanbuckleapplyrecord.LoanBuckleApplyRecordService; import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService; import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; +import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService; import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.PagerUtil; @@ -88,6 +103,18 @@ public class LoanBuckleApplyService extends MybatisBaseService listPage(PagerQuery pq) { IPage page = PagerUtil.queryToPage(pq); @@ -553,6 +580,21 @@ public class LoanBuckleApplyService extends MybatisBaseService(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy()); + //推送优惠包交接数据 + Future future = pool.submit(() -> { + pushBuckleVoucher(businessSid); + }); + } catch (Exception e) { + e.printStackTrace(); + log.error("推送数据失败=========================" + e.getMessage()); + return rb.setMsg("推送数据失败"); + } } return rb.success().setData(resultBean.getData()); } else { @@ -560,6 +602,94 @@ public class LoanBuckleApplyService extends MybatisBaseService records = loanBuckleApplyRecordService.selByMainSid(businessSid); + if (!records.isEmpty()) { + for (LoanBuckleApplyRecord v : records) { + LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(v.getRepaymentHistorySid()); + if (null != repaymentHistory) { + String planDetailSid = repaymentHistory.getPlanDetailSid(); + LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsService.fetchBySid(planDetailSid); + if (null != planDetails) { + GeneralVoucher generalVoucher = new GeneralVoucher(); + List voucherDetails = new ArrayList<>(); + GeneralVoucher.GeneralVoucherDetail voucherDetail = new GeneralVoucher.GeneralVoucherDetail(); + String state = loanRepaymentPlanDetailsService.selForPushBuckleVoucher(planDetailSid); + if (StringUtils.isNotBlank(state)) { + if (state.equals("0")) { + voucherDetail.setSceneCode("03"); + } else if (state.equals("1")) { + voucherDetail.setSceneCode("02"); + } else if (state.equals("2")) { + voucherDetail.setSceneCode("01"); + } + } + String bankName = loanRepaymentPlanDetailsService.getBankNameByMainOrOtherPolicy(planDetails); + if (StringUtils.isNotBlank(bankName)) { + voucherDetail.setBankName(bankName); + } + String useOrgSid = planDetails.getUseOrgSid(); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); + if (null != organizationVo) { + generalVoucher.setUseOrgCode(organizationVo.getOrgCode()); + } + String deptSid = planDetails.getDeptSid(); + SysOrganizationVo organizationDeptVo = sysOrganizationFeign.fetchBySid(deptSid).getData(); + if (null != organizationDeptVo) { + voucherDetail.setDeptCode(organizationDeptVo.getOrgCode()); + } + String busVinSid = planDetails.getBusVinSid(); + BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData(); + 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()); + 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); + } + } 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(repaymentHistory.getActualMoney()); + voucherDetails.add(voucherDetail); + generalVoucher.setVoucherDetails(voucherDetails); + finKingDeeFeign.saveBuckleVoucher(generalVoucher); + } + } + } + } + } + public ResultBean revokeProcess(BuckleTaskQuery query) { ResultBean rb = ResultBean.fireFail(); diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.java index 24a3451b72..1d9694ca15 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.java @@ -90,4 +90,6 @@ public interface LoanFinBankMapper extends BaseMapper { List selectListByOrgSid(String orgSid); LoanFinBank reAdvancesByOrderSid(@Param("orderSid") String orderSid); + + LoanFinBank selBankByOrderSid(@Param("orderSid") String salesOrderSid); } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.xml index 429b898a56..4a15373a6b 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.xml @@ -88,4 +88,12 @@ WHERE s.salesOrderSid = #{orderSid} AND s.isDelete = '0' + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankService.java index fd355c1f8e..0aac9fb7f1 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankService.java @@ -308,4 +308,8 @@ public class LoanFinBankService extends MybatisBaseService accrualInit(String orgPath) { ResultBean rb = ResultBean.fireFail(); @@ -669,7 +660,7 @@ public class LoanMonthlyAccrualApplyService extends MybatisBaseService(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy()); - //推送优惠包交接数据 + //推送月还计提凭证数据 Future future = pool.submit(() -> { pushAccrualVoucher(businessSid); }); @@ -705,9 +696,46 @@ public class LoanMonthlyAccrualApplyService 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); + } + } 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(planDetails.getDueMoney()); voucherDetails.add(voucherDetail); diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java index 5ff43f2e33..298fad3307 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java @@ -4,14 +4,27 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateTime; 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.basemodelmodprice.BaseModelModpriceImportReturn; import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModpriceImportVo; +import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo; +import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign; +import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; +import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign; +import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo; +import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign; +import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle; +import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign; import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp; import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempExportVo; import com.yxt.anrui.fin.api.finmanufacturerbank.FinManufacturerBank; import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto; 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.portal.api.sysorganization.SysOrganizationFeign; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo; import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; @@ -20,10 +33,12 @@ import com.yxt.anrui.portal.api.sysuser.SysUserVo; import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyInit; import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleHistoryRecord; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApply; +import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord; import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameter; import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterQuery; import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterVo; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.*; +import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForLateVoucher; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsDto; import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord; @@ -55,6 +70,7 @@ import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.*; import java.util.function.Predicate; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -75,6 +91,18 @@ public class LoanRepaymentHistoryService extends MybatisBaseService saveHistory(LoanRepaymentHistoryDto dto) { ResultBean rb = ResultBean.fireFail(); @@ -701,6 +729,7 @@ public class LoanRepaymentHistoryService extends MybatisBaseService(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy()); + //推送财务当月逾期转累欠凭证 + Future future = pool.submit(() -> { + pushLateVoucher(pushUseOrgSid); + }); + } catch (Exception e) { + e.printStackTrace(); + log.error("推送数据失败=========================" + e.getMessage()); + return rb.setMsg("推送数据失败"); + } } else { return rb.setMsg("暂无可更新的还款记录"); } return rb.success(); } + private void pushLateVoucher(String pushUseOrgSid) { + List records = loanRepaymentPlanDetailsService.selListForLateVoucher(pushUseOrgSid); + List planSids = new ArrayList<>(); + if (!records.isEmpty()) { + for (LoanPlanDetailsVoForLateVoucher planDetails : records) { + if (null != planDetails) { + planSids.add(planDetails.getPlanSid()); + GeneralVoucher generalVoucher = new GeneralVoucher(); + List voucherDetails = new ArrayList<>(); + GeneralVoucher.GeneralVoucherDetail voucherDetail = new GeneralVoucher.GeneralVoucherDetail(); + if (StringUtils.isNotBlank(planDetails.getUseOrgSid())) { + String useOrgSid = planDetails.getUseOrgSid(); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); + if (null != organizationVo) { + generalVoucher.setUseOrgCode(organizationVo.getOrgCode()); + } + } + if (StringUtils.isNotBlank(planDetails.getDeptSid())) { + String deptSid = planDetails.getDeptSid(); + SysOrganizationVo organizationDeptVo = sysOrganizationFeign.fetchBySid(deptSid).getData(); + if (null != organizationDeptVo) { + voucherDetail.setDeptCode(organizationDeptVo.getOrgCode()); + } + } + if (StringUtils.isNotBlank(planDetails.getBusVinSid())) { + String busVinSid = planDetails.getBusVinSid(); + BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData(); + 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()); + 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); + } + } 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); + } + } + if (StringUtils.isNotBlank(planDetails.getOutstandingMoney())) { + voucherDetail.setAmount(new BigDecimal(planDetails.getOutstandingMoney())); + } + voucherDetails.add(voucherDetail); + generalVoucher.setVoucherDetails(voucherDetails); + finKingDeeFeign.saveLateVoucher(generalVoucher); + } + } + } + if (!planSids.isEmpty()) { + int i = loanRepaymentPlanDetailsService.updateOweState(planSids); + } + } + public ResultBean buckleNewInit(String orgPath) { ResultBean rb = ResultBean.fireFail(); LoanBuckleApplyInit vo = new LoanBuckleApplyInit(); @@ -1072,7 +1198,7 @@ public class LoanRepaymentHistoryService extends MybatisBaseService getListByBusVinSid(@Param("busVinSid") String busVinSid); + + List selListForLateVoucher(@Param("pushUseOrgSid") String pushUseOrgSid); + + int updateOweState(@Param("planSids") List planSids); + + String selForPushBuckleVoucher(@Param("planDetailSid") String planDetailSid); + + String getMainBankName(@Param("sid") String sid); + + String getOtherBankName(@Param("sid") String sid); } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml index 8c9e719363..6d0f05a91c 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml @@ -20,6 +20,14 @@ SET vehMark = #{vehMark} WHERE busVinSid = #{busVinSid} + + update loan_repayment_plan_details + set oweState = 0 + where sid in + + #{planSid} + + DELETE FROM loan_repayment_plan_details @@ -243,4 +251,197 @@ resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails"> select * from loan_repayment_plan_details where busVinSid =#{busVinSid} + + + + + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java index 0f63be0c57..ec3418c640 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java @@ -22,16 +22,14 @@ import com.yxt.anrui.portal.api.sysuser.SysUserVo; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.DifferenceVo; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.HistoryOverDueVo; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryDto; -import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails; -import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsDto; -import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayDetails; -import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayPeriodDetails; +import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.*; import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.*; import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions; import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo; import com.yxt.anrui.riskcenter.api.loansolutionsotherpolicy.LoanSolutionsOtherpolicy; import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformation; import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; +import com.yxt.anrui.riskcenter.biz.loanrepaymentschedule.LoanRepaymentScheduleService; import com.yxt.anrui.riskcenter.biz.loansolutions.LoanSolutionsService; import com.yxt.anrui.riskcenter.biz.loansolutionsotherpolicy.LoanSolutionsOtherpolicyService; import com.yxt.anrui.riskcenter.biz.loanwarrantinformation.LoanWarrantInformationService; @@ -72,7 +70,8 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService savePlanDetails(LoanRepaymentPlanDetailsDto dto) { ResultBean rb = ResultBean.fireFail(); @@ -114,8 +113,8 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService overDueVoList(String useOrgSid) { @@ -123,7 +122,7 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService planSids) { - return baseMapper.updateOverDueState(planSids); + return baseMapper.updateOverDueState(planSids); } public String reAdvancesOrPaymentMoney(String pSid) { @@ -138,11 +137,45 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService getListByBusVinSid(String busVinSid) { return baseMapper.getListByBusVinSid(busVinSid); } + + public List selListForLateVoucher(String pushUseOrgSid) { + return baseMapper.selListForLateVoucher(pushUseOrgSid); + } + + public int updateOweState(List planSids) { + return baseMapper.updateOweState(planSids); + } + + public String selForPushBuckleVoucher(String planDetailSid) { + return baseMapper.selForPushBuckleVoucher(planDetailSid); + } + + public String getBankNameByMainOrOtherPolicy(LoanRepaymentPlanDetails planDetails) { + String policyOrOther = planDetails.getPolicyOrOther(); + String scheduleSid = planDetails.getScheduleSid(); + LoanRepaymentSchedule repaymentSchedule = loanRepaymentScheduleService.fetchBySid(scheduleSid); + String sameBank = repaymentSchedule.getSameBank(); + String bankName = ""; + if (policyOrOther.equals("0")) { + //主产品 + bankName = baseMapper.getMainBankName(planDetails.getSid()); + } else if (policyOrOther.equals("1")) { + if (sameBank.equals("1")) { + bankName = baseMapper.getMainBankName(planDetails.getSid()); + } else if (sameBank.equals("0")) { + //其他融 + bankName = baseMapper.getOtherBankName(planDetails.getSid()); + } + } + return bankName; + } + + ; } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java index 90fce7c680..6d349386c7 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.api.R; import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo; +import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign; import com.yxt.anrui.buscenter.api.bushandover.BusHandover; import com.yxt.anrui.buscenter.api.bushandoveritems.BusHandoverItems; import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; @@ -23,12 +25,17 @@ import com.yxt.anrui.buscenter.api.busvehicledatahandover.BusDataListPdfVo; import com.yxt.anrui.buscenter.api.busvehicledatahandover.BusVehicleDataHandoverPdfVo; import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign; import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo; +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.portal.api.sysorganization.SysOrganizationFeign; +import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserInfoVo; import com.yxt.anrui.portal.api.sysuser.SysUserVo; +import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBank; import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy; import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy; import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyVo; @@ -41,6 +48,7 @@ import com.yxt.anrui.riskcenter.api.loansolutionsotherpolicy.LoanSolutionsOtherp import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformation; import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformationQuery; import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformationVo; +import com.yxt.anrui.riskcenter.biz.loanfinbank.LoanFinBankService; import com.yxt.anrui.riskcenter.biz.loanfinotherPolicy.LoanFinOtherPolicyService; import com.yxt.anrui.riskcenter.biz.loanfinpolicy.LoanFinPolicyService; import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; @@ -85,6 +93,12 @@ import java.util.stream.Collectors; @Service public class LoanRepaymentScheduleService extends MybatisBaseService { + @Autowired + private LoanFinBankService loanFinBankService; + @Autowired + private BasePurchaseSystemFeign basePurchaseSystemFeign; + @Autowired + private FinKingDeeFeign finKingDeeFeign; @Autowired private SysUserFeign sysUserFeign; @Autowired @@ -282,6 +296,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService rb = ResultBean.fireFail(); LoanRepaymentSchedule loanRepaymentSchedule = baseMapper.selectByContractSid(dto.getSalesOrderSid()); String orderSid = ""; + String scheduleSid = ""; BusSalesOrderLoancontractDetailsVo loancontract = busSalesOrderLoancontractFeign.fetchDetailsBySid(dto.getSalesOrderSid()).getData(); if (null != loancontract) { if (StringUtils.isNotBlank(loancontract.getSalesOrderSid())) { @@ -315,6 +330,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); - LoanRepaymentSchedule schedule = fetchBySid(entity.getSid()); + LoanRepaymentSchedule schedule = fetchBySid(scheduleSid); + // 使用多线程推送站内信发送短信 Future future1 = pool.submit(() -> { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (null != schedule) { @@ -1149,6 +1168,11 @@ public class LoanRepaymentScheduleService extends MybatisBaseService { + pushScheduleVoucher(schedule); + }); + } catch (Exception e) { e.printStackTrace(); } @@ -1170,6 +1194,288 @@ public class LoanRepaymentScheduleService extends MybatisBaseService vehicles = busSalesOrderVehicleFeign.selectListByOrderSidAndXdConSid(salesOrderSid, loanContractSid).getData(); + String bankName = ""; + String otherBankName = ""; + String isOtherPolicy = schedule.getIsOtherPolicy(); + String sameBank = schedule.getSameBank(); + BigDecimal amountMain = new BigDecimal("0.00"); + BigDecimal amountOther = new BigDecimal("0.00"); + if (isOtherPolicy.equals("0")) { + int mainPeriod = Integer.parseInt(schedule.getMainPeriod()); + int midPeriod = mainPeriod - 2; + BigDecimal mainFirstRepay = schedule.getMainFirstRepay(); + BigDecimal mainMidRepay = schedule.getMainMidRepay(); + BigDecimal mainLastRepay = schedule.getMainLastRepay(); + amountMain = mainMidRepay.multiply(new BigDecimal(midPeriod)).add(mainFirstRepay).add(mainLastRepay); + } else if (isOtherPolicy.equals("1")) { + if (isOtherPolicy.equals("1")) { + if (sameBank.equals("0")) { + LoanSolutions loanSolutions = loanSolutionsService.selectBySaleOrderSid(salesOrderSid); + //查看是否有其他融 + LoanSolutionsOtherpolicy otherpolicy = loanSolutionsOtherpolicyService.selectByLoanSid(loanSolutions.getSid()); + if (null != otherpolicy) { + if (StringUtils.isNotBlank(otherpolicy.getOtherPolicyPeriod())) { + String otherPolicySid = otherpolicy.getOtherPolicySid(); + LoanFinOtherPolicy loanFinOtherPolicy = loanFinOtherPolicyService.fetchBySid(otherPolicySid); + if (loanFinOtherPolicy != null) { + if (StringUtils.isNotBlank(loanFinOtherPolicy.getBankSid())) { + String otherBankSid = loanFinOtherPolicy.getBankSid(); + LoanFinBank loanFinBank = loanFinBankService.fetchBySid(otherBankSid); + if (null != loanFinBank) { + otherBankName = loanFinBank.getBankShortName(); + } + } + } + } + } + int mainPeriod = Integer.parseInt(schedule.getMainPeriod()); + int midPeriod = mainPeriod - 2; + BigDecimal mainFirstRepay = schedule.getMainFirstRepay(); + BigDecimal mainMidRepay = schedule.getMainMidRepay(); + BigDecimal mainLastRepay = schedule.getMainLastRepay(); + amountMain = mainMidRepay.multiply(new BigDecimal(midPeriod)).add(mainFirstRepay).add(mainLastRepay); + int otherPeriod = Integer.parseInt(schedule.getOtherPeriod()); + int midOtherPeriod = otherPeriod - 2; + BigDecimal otherFirstRepay = schedule.getOtherFirstRepay(); + BigDecimal otherMidRepay = schedule.getOtherMidRepay(); + BigDecimal otherLastRepay = schedule.getOtherLastRepay(); + amountOther = otherMidRepay.multiply(new BigDecimal(midOtherPeriod)).add(otherFirstRepay).add(otherLastRepay); + } + if (sameBank.equals("1")) { + int mainPeriod = Integer.parseInt(schedule.getMainPeriod()); + int midPeriod = mainPeriod - 2; + BigDecimal mainFirstRepay = schedule.getMainFirstRepay(); + BigDecimal mainMidRepay = schedule.getMainMidRepay(); + BigDecimal mainLastRepay = schedule.getMainLastRepay(); + amountMain = mainMidRepay.multiply(new BigDecimal(midPeriod)).add(mainFirstRepay).add(mainLastRepay); + int otherPeriod = Integer.parseInt(schedule.getOtherPeriod()); + int midOtherPeriod = otherPeriod - 2; + BigDecimal otherFirstRepay = schedule.getOtherFirstRepay(); + BigDecimal otherMidRepay = schedule.getOtherMidRepay(); + BigDecimal otherLastRepay = schedule.getOtherLastRepay(); + amountOther = otherMidRepay.multiply(new BigDecimal(midOtherPeriod)).add(otherFirstRepay).add(otherLastRepay); + amountMain = amountMain.add(amountOther); + } + } + } + LoanFinBank loanFinBank = loanFinBankService.selBankByOrderSid(salesOrderSid); + if (null != loanFinBank) { + bankName = loanFinBank.getBankShortName(); + } + if (null != salesOrder) { + if (!vehicles.isEmpty()) { + for (BusSalesOrderVehicle busSalesOrderVehicle : vehicles) { + if (isOtherPolicy.equals("0")) { + GeneralVoucher generalVoucher = new GeneralVoucher(); + List voucherDetails = new ArrayList<>(); + String useOrgSid = salesOrder.getUseOrgSid(); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); + if (null != organizationVo) { + generalVoucher.setUseOrgCode(organizationVo.getOrgCode()); + } + String deptSid = salesOrder.getOrgSid(); + GeneralVoucher.GeneralVoucherDetail voucherDetail = new GeneralVoucher.GeneralVoucherDetail(); + if (StringUtils.isNotBlank(bankName)) { + voucherDetail.setBankName(bankName); + } + SysOrganizationVo organizationDeptVo = sysOrganizationFeign.fetchBySid(deptSid).getData(); + if (null != organizationDeptVo) { + voucherDetail.setDeptCode(organizationDeptVo.getOrgCode()); + } + // String busVinSid = vehicle.getSid(); + // BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData(); + 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(amountMain); + voucherDetails.add(voucherDetail); + generalVoucher.setVoucherDetails(voucherDetails); + finKingDeeFeign.saveScheduleVoucher(generalVoucher); + } + if (isOtherPolicy.equals("1")) { + if (sameBank.equals("0")) { + for (int i = 0; i <= 1; i++) { + GeneralVoucher generalVoucher = new GeneralVoucher(); + List voucherDetails = new ArrayList<>(); + String useOrgSid = salesOrder.getUseOrgSid(); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); + if (null != organizationVo) { + generalVoucher.setUseOrgCode(organizationVo.getOrgCode()); + } + String deptSid = salesOrder.getOrgSid(); + GeneralVoucher.GeneralVoucherDetail voucherDetail = new GeneralVoucher.GeneralVoucherDetail(); + if (i == 0) { + if (StringUtils.isNotBlank(bankName)) { + voucherDetail.setBankName(bankName); + } + } else if (i == 1) { + if (StringUtils.isNotBlank(otherBankName)) { + voucherDetail.setBankName(otherBankName); + } + } + SysOrganizationVo organizationDeptVo = sysOrganizationFeign.fetchBySid(deptSid).getData(); + if (null != organizationDeptVo) { + voucherDetail.setDeptCode(organizationDeptVo.getOrgCode()); + } + // String busVinSid = vehicle.getSid(); + // BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData(); + 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); + } + if (i == 0) { + voucherDetail.setAmount(amountMain); + } else if (i == 1) { + voucherDetail.setAmount(amountOther); + } + voucherDetails.add(voucherDetail); + generalVoucher.setVoucherDetails(voucherDetails); + finKingDeeFeign.saveScheduleVoucher(generalVoucher); + } + } + if (sameBank.equals("1")) { + GeneralVoucher generalVoucher = new GeneralVoucher(); + List voucherDetails = new ArrayList<>(); + String useOrgSid = salesOrder.getUseOrgSid(); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData(); + if (null != organizationVo) { + generalVoucher.setUseOrgCode(organizationVo.getOrgCode()); + } + String deptSid = salesOrder.getOrgSid(); + GeneralVoucher.GeneralVoucherDetail voucherDetail = new GeneralVoucher.GeneralVoucherDetail(); + if (StringUtils.isNotBlank(bankName)) { + voucherDetail.setBankName(bankName); + } + SysOrganizationVo organizationDeptVo = sysOrganizationFeign.fetchBySid(deptSid).getData(); + if (null != organizationDeptVo) { + voucherDetail.setDeptCode(organizationDeptVo.getOrgCode()); + } + // String busVinSid = vehicle.getSid(); + // BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData(); + 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(amountMain); + voucherDetails.add(voucherDetail); + generalVoucher.setVoucherDetails(voucherDetails); + finKingDeeFeign.saveScheduleVoucher(generalVoucher); + } + } + } + } + + } + } + /** * 根据首期还款日+主产品期数推算主产品月还日期 * diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java index 3b3c932a75..cd751be1a3 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java @@ -619,7 +619,7 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService 0 and bo.sid not in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo) group by bo.createOrgSid - union all - select ifnull(sum(bo.platformNo), 0) as scount, bo.useOrgSid, bd.vehicleSid, bd.configSid modelConfigSid + union all + select ifnull(sum(bo.platformNo), 0) as scount, + bo.useOrgSid, + bd.vehicleSid, + bd.configSid modelConfigSid from anrui_base.bus_vehicle_order bo - left join anrui_base.bus_vehicle_apply_detail bd on bd.sid = bo.purchaseApplyMediumModelSid - where - bo.isDelete <> 1 - and LENGTH(offlineDate) = 0 and bo.orderStatus != '已作废' + left join anrui_base.bus_vehicle_apply_detail bd on bd.sid = bo.purchaseApplyMediumModelSid + where bo.isDelete <> 1 + and LENGTH(offlineDate) = 0 + and bo.orderStatus != '已作废' and bo.sid not in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo) group by bo.createOrgSid ) as v @@ -36,22 +39,42 @@ UPDATE daily_report r INNER JOIN ( select sum(v.scount) as scount, v.useOrgSid, v.modelSid, v.modelConfigSid from ( - select ifnull(sum(si.num), 0) as scount, si.useOrgSid, si.modelSid, si.configSid modelConfigSid - from anrui_base.bus_vehicle_order bo - left join anrui_scm.scm_apply_inbound si on bo.purchaseRequisitionSid = si.vehicleOrderSid - where (si.nodeState != '已办结' and si.nodeState != '终止') - and bo.isDelete <> 1 - and LENGTH(offlineDate) > 0 - and bo.sid in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo) - group by bo.createOrgSid - union all - select ifnull(sum(bo.id), 0) as scount, bo.useOrgSid, bd.vehicleSid, bd.configSid modelConfigSid - from anrui_base.bus_vehicle_order bo - left join anrui_base.bus_vehicle_apply_detail bd on bd.sid = bo.purchaseApplyMediumModelSid - where - bo.isDelete <> 1 - and LENGTH(offlineDate) >0 - and bo.sid in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo) + /* select ifnull(sum(si.num), 0) as scount, si.useOrgSid, si.modelSid, si.configSid modelConfigSid + from anrui_base.bus_vehicle_order bo + left join anrui_scm.scm_apply_inbound si on bo.purchaseRequisitionSid = si.vehicleOrderSid + where (si.nodeState != '已办结' and si.nodeState != '终止') + and bo.isDelete <> 1 + and LENGTH(offlineDate) > 0 + and bo.sid in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo) + group by bo.createOrgSid + union all + select ifnull(sum(bo.platformNo), 0) as scount, bo.useOrgSid, bd.vehicleSid, bd.configSid modelConfigSid + from anrui_base.bus_vehicle_order bo + left join anrui_base.bus_vehicle_apply_detail bd on bd.sid = bo.purchaseApplyMediumModelSid + where + bo.isDelete <> 1 + and LENGTH(offlineDate) >0 + and bo.sid in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo) + group by bo.createOrgSid*/ + SELECT si.useOrgSid, + si.modelSid, + si.configSid modelConfigSid, + bo.sid, + ifnull(ab.counts, 0) as scount + FROM anrui_base.bus_vehicle_order bo + LEFT JOIN anrui_scm.scm_apply_inbound si ON bo.purchaseRequisitionSid = si.vehicleOrderSid + LEFT JOIN ( + SELECT bbbbo.linkSid, + ifnull(count(bbbbo.linkSid), 0) as counts + FROM anrui_buscenter.bus_sales_vehicle_order bbbbo + LEFT JOIN anrui_buscenter.bus_sales_order bb ON bb.sid = bbbbo.salesOrderSid + WHERE LENGTH(bb.nodeState) > 0 + AND bb.nodeState != '终止' + group by bbbbo.linkSid + ) ab ON ab.linkSid = bo.sid + WHERE (si.nodeState != '已办结' AND si.nodeState != '终止') + AND bo.isDelete <> 1 + AND LENGTH(offlineDate) > 0 group by bo.createOrgSid ) as v GROUP BY v.`useOrgSid`, @@ -253,7 +276,9 @@ UPDATE daily_report r left join anrui_base.base_vehicle_out bvo on bv.sid = bvo.vinSid left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid where bv.salesDate like concat('%', CURDATE(), '%') - and bvoa.saleTypeKey = '001' and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or length(bvo.materialTypeValue) = 0) + and bvoa.saleTypeKey = '001' + and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or + length(bvo.materialTypeValue) = 0) group by bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid ) AS s ON r.useOrgSid = s.useOrgSid @@ -269,7 +294,9 @@ UPDATE daily_report r left join anrui_base.base_vehicle_out bvo on bv.sid = bvo.vinSid left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid where bv.salesDate like concat('%', CURDATE(), '%') - and bvoa.saleTypeKey = '002' and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or length(bvo.materialTypeValue) = 0) + and bvoa.saleTypeKey = '002' + and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or + length(bvo.materialTypeValue) = 0) group by bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid ) AS s ON r.useOrgSid = s.useOrgSid @@ -302,7 +329,9 @@ UPDATE daily_report r left join anrui_base.base_vehicle_out bvo on bv.sid = bvo.vinSid left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid where bv.salesDate like concat('%', DATE_FORMAT(CURDATE(), '%Y-%m'), '%') - and bvoa.saleTypeKey = '001' and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or length(bvo.materialTypeValue) = 0) + and bvoa.saleTypeKey = '001' + and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or + length(bvo.materialTypeValue) = 0) group by bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid ) AS s ON r.useOrgSid = s.useOrgSid @@ -318,7 +347,9 @@ UPDATE daily_report r left join anrui_base.base_vehicle_out bvo on bv.sid = bvo.vinSid left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid where bv.salesDate like concat('%', DATE_FORMAT(CURDATE(), '%Y-%m'), '%') - and bvoa.saleTypeKey = '002' and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or length(bvo.materialTypeValue) = 0) + and bvoa.saleTypeKey = '002' + and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or + length(bvo.materialTypeValue) = 0) group by bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid ) AS s ON r.useOrgSid = s.useOrgSid @@ -351,7 +382,9 @@ UPDATE daily_report r left join anrui_base.base_vehicle_out bvo on bv.sid = bvo.vinSid left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid where bv.salesDate like concat('%', DATE_FORMAT(CURDATE(), '%Y'), '%') - and bvoa.saleTypeKey = '001' and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or length(bvo.materialTypeValue) = 0) + and bvoa.saleTypeKey = '001' + and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or + length(bvo.materialTypeValue) = 0) group by bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid ) AS s ON r.useOrgSid = s.useOrgSid @@ -367,7 +400,9 @@ UPDATE daily_report r left join anrui_base.base_vehicle_out bvo on bv.sid = bvo.vinSid left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid where bv.salesDate like concat('%', DATE_FORMAT(CURDATE(), '%Y'), '%') - and bvoa.saleTypeKey = '002' and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or length(bvo.materialTypeValue) = 0) + and bvoa.saleTypeKey = '002' + and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or + length(bvo.materialTypeValue) = 0) group by bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid ) AS s ON r.useOrgSid = s.useOrgSid @@ -635,46 +670,98 @@ where DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE(); -- ============================================== -- 欠款出库数量、欠款出库金额万元、金融未放款数量、金融未放款金额(万元) -- 欠款出库数量--截止当日欠款出库申请通过且未回清款的台数 -update daily_report r inner join (select sum(cc.scount) as scount, cc.useOrgSid, cc.vehMConfigSid, cc.vehModelSid - from ( - select count(bdad.id) as scount, - ba.useOrgSid, - bm.modelConfigSid as vehMConfigSid, - bm.modelSid as vehModelSid - from anrui_buscenter.bus_delivered_apply_details bdad - left join anrui_buscenter.bus_delivered_apply ba on ba.sid = bdad.applySid - left join anrui_buscenter.bus_sales_order_vehicle bv on bv.sid = bdad.busVinSid - left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid - left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bo.sid - left join anrui_fin.fin_uncollected_receivables_detailed fd - on fd.busVinSid = bdad.busVinSid - left join anrui_fin.fin_selected_receivables_detailed fs - on fs.receivablesSid = fd.sid - where ba.nodeState = '已办结' - and ba.typeState = 1 - group by bdad.busVinSid, ba.useOrgSid, bm.modelSid, bm.modelConfigSid - having sum(fd.reveivableMoney) > ifnull(sum(fs.subscriptionMoney), 0) - union all - select count(bdad.id) as scount, - ba.useOrgSid, - bm.modelConfigSid as vehMConfigSid, - bm.modelSid as vehModelSid - from anrui_buscenter.bus_arrears_carry_vehicle_details bdad - left join anrui_buscenter.bus_arrears_carry_vehicle_apply ba - on ba.sid = bdad.applySid - left join anrui_buscenter.bus_sales_order_vehicle bv on bv.linkSid = bdad.vinSid - left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid - left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bo.sid - left join anrui_fin.fin_uncollected_receivables_detailed fd - on fd.busVinSid = bv.sid - left join anrui_fin.fin_selected_receivables_detailed fs - on fs.receivablesSid = fd.sid - left join anrui_base.base_vehicle bbv on bbv.sid = bv.linkSid - where ba.nodeState = '已办结' - and ba.paymentMethodKey = 1 - and bbv.vehicleState = '0002' - group by bv.sid, ba.useOrgSid, bm.modelSid, bm.modelConfigSid - having sum(fd.reveivableMoney) > ifnull(sum(fs.subscriptionMoney), 0)) cc +update daily_report r inner join (SELECT SUM(cc.scount) AS scount, + cc.useOrgSid, + cc.vehMConfigSid, + cc.vehModelSid + FROM ( + SELECT COUNT(a.id) AS scount, + a.useOrgSid, + a.NAME, + a.contractNo, + a.vehMConfigSid, + a.vehModelSid + FROM ( + SELECT bdad.id, + ba.useOrgSid, + bm.modelConfigSid AS vehMConfigSid, + bm.modelSid AS vehModelSid, + so.NAME, + SUM(s.reveivableMoney), + SUM(s.subscriptionMoney), + bo.contractNo + FROM anrui_buscenter.bus_delivered_apply_details bdad + LEFT JOIN anrui_buscenter.bus_delivered_apply ba ON ba.sid = bdad.applySid + LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv ON bv.sid = bdad.busVinSid + LEFT JOIN anrui_buscenter.bus_sales_order bo ON bo.sid = bv.salesOrderSid + LEFT JOIN anrui_buscenter.bus_sales_order_model bm ON bm.salesOrderSid = bo.sid + LEFT JOIN ( + SELECT fd.reveivableMoney, + fd.busVinSid, + IFNULL(SUM(fs.subscriptionMoney), 0) AS subscriptionMoney + FROM anrui_fin.fin_uncollected_receivables_detailed fd + LEFT JOIN anrui_fin.fin_selected_receivables_detailed fs + ON fs.receivablesSid = fd.sid + WHERE fd.kxState = '01' + AND fs.auditState = 3 + GROUP BY fd.sid + ) s ON s.busVinSid = bv.sid + LEFT JOIN anrui_portal.sys_organization so ON so.sid = ba.useOrgSid + WHERE ba.nodeState = '已办结' + AND ba.typeState = 1 + GROUP BY bv.sid, + ba.useOrgSid, + bm.modelSid, + bm.modelConfigSid + HAVING SUM(s.reveivableMoney) > SUM(s.subscriptionMoney)) a + GROUP BY a.useOrgSid, + a.vehMConfigSid, + a.vehModelSid + UNION ALL + SELECT COUNT(a.id) AS scount, + a.useOrgSid, + a.name, + a.contractNo, + a.vehMConfigSid, + a.vehModelSid + FROM (SELECT bdad.id, + ba.useOrgSid, + bm.modelConfigSid AS vehMConfigSid, + bm.modelSid AS vehModelSid, + so.name, + SUM(s.reveivableMoney), + SUM(s.subscriptionMoney), + bo.contractNo + FROM anrui_buscenter.bus_arrears_carry_vehicle_details bdad + LEFT JOIN anrui_buscenter.bus_arrears_carry_vehicle_apply ba + ON ba.sid = bdad.applySid + LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv ON bv.linkSid = bdad.vinSid + LEFT JOIN anrui_buscenter.bus_sales_order bo ON bo.sid = bv.salesOrderSid + LEFT JOIN anrui_buscenter.bus_sales_order_model bm ON bm.salesOrderSid = bo.sid + LEFT JOIN anrui_base.base_vehicle bbv ON bbv.sid = bv.linkSid + LEFT JOIN (SELECT fd.reveivableMoney, + fd.busVinSid, + IFNULL(SUM(fs.subscriptionMoney), 0) AS subscriptionMoney + FROM anrui_fin.fin_uncollected_receivables_detailed fd + LEFT JOIN anrui_fin.fin_selected_receivables_detailed fs + ON fs.receivablesSid = fd.sid + WHERE fd.kxState = '01' + AND fs.auditState = 3 + GROUP BY fd.sid) s ON s.busVinSid = bv.sid + LEFT JOIN anrui_portal.sys_organization so ON so.sid = ba.useOrgSid + WHERE ba.nodeState = '已办结' + AND ba.paymentMethodKey = 1 + AND bbv.vehicleState = '0002' + GROUP BY bv.sid, + ba.useOrgSid, + bm.modelSid, + bm.modelConfigSid + HAVING SUM(s.reveivableMoney) > SUM(s.subscriptionMoney)) a + GROUP BY a.useOrgSid, + a.vehMConfigSid, a.vehModelSid) cc + GROUP BY cc.useOrgSid, + cc.vehMConfigSid, + cc.vehModelSid ) s on r.useOrgSid = s.useOrgSid and r.vehModelSid = s.vehModelSid @@ -684,46 +771,130 @@ where DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE(); -- 欠款出库金融--截止当日欠款出库申请通过且未回清款的台数欠款总额 -update daily_report r inner join (select sum(cc.scount) as scount, cc.useOrgSid, cc.vehMConfigSid, cc.vehModelSid - from ( - select (sum(fd.reveivableMoney) - sum(fs.subscriptionMoney)) as scount, - ba.useOrgSid, - bm.modelConfigSid as vehMConfigSid, - bm.modelSid as vehModelSid - from anrui_buscenter.bus_delivered_apply_details bdad - left join anrui_buscenter.bus_delivered_apply ba on ba.sid = bdad.applySid - left join anrui_buscenter.bus_sales_order_vehicle bv on bv.sid = bdad.busVinSid - left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid - left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bo.sid - left join anrui_fin.fin_uncollected_receivables_detailed fd - on fd.busVinSid = bdad.busVinSid - left join anrui_fin.fin_selected_receivables_detailed fs - on fs.receivablesSid = fd.sid - where ba.nodeState = '已办结' - and ba.typeState = 1 - group by bdad.busVinSid, ba.useOrgSid, bm.modelSid, bm.modelConfigSid - having sum(fd.reveivableMoney) > ifnull(sum(fs.subscriptionMoney), 0) - union all - select (sum(fd.reveivableMoney) - sum(fs.subscriptionMoney)) as scount, - ba.useOrgSid, - bm.modelConfigSid as vehMConfigSid, - bm.modelSid as vehModelSid - from anrui_buscenter.bus_arrears_carry_vehicle_details bdad - left join anrui_buscenter.bus_arrears_carry_vehicle_apply ba - on ba.sid = bdad.applySid - left join anrui_buscenter.bus_sales_order_vehicle bv on bv.linkSid = bdad.vinSid - left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid - left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bo.sid - left join anrui_fin.fin_uncollected_receivables_detailed fd - on fd.busVinSid = bv.sid - left join anrui_fin.fin_selected_receivables_detailed fs - on fs.receivablesSid = fd.sid - left join anrui_base.base_vehicle bbv on bbv.sid = bv.linkSid - where ba.nodeState = '已办结' - and ba.paymentMethodKey = 1 - and bbv.vehicleState = '0002' - group by bv.sid, ba.useOrgSid, bm.modelSid, bm.modelConfigSid - having sum(fd.reveivableMoney) > ifnull(sum(fs.subscriptionMoney), 0)) cc +update daily_report r inner join (SELECT + sum( cc.scount ) AS scount, + cc.useOrgSid, + cc.vehMConfigSid, + cc.vehModelSid + FROM + ( + SELECT + SUM( a.scount ) AS scount, + a.useOrgSid, + a.NAME, + a.contractNo, + a.vehMConfigSid, + a.vehModelSid + FROM + ( + SELECT + bdad.id, + ba.useOrgSid, + bm.modelConfigSid AS vehMConfigSid, + bm.modelSid AS vehModelSid, + so.NAME, + SUM( s.reveivableMoney ), + SUM( s.subscriptionMoney ), + bo.contractNo, + ( + SUM( s.reveivableMoney ) - SUM( s.subscriptionMoney )) AS scount + FROM + anrui_buscenter.bus_delivered_apply_details bdad + LEFT JOIN anrui_buscenter.bus_delivered_apply ba ON ba.sid = bdad.applySid + LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv ON bv.sid = bdad.busVinSid + LEFT JOIN anrui_buscenter.bus_sales_order bo ON bo.sid = bv.salesOrderSid + LEFT JOIN anrui_buscenter.bus_sales_order_model bm ON bm.salesOrderSid = bo.sid + LEFT JOIN ( + SELECT + fd.reveivableMoney, + fd.busVinSid, + IFNULL( SUM( fs.subscriptionMoney ), 0 ) AS subscriptionMoney + FROM + anrui_fin.fin_uncollected_receivables_detailed fd + LEFT JOIN anrui_fin.fin_selected_receivables_detailed fs ON fs.receivablesSid = fd.sid + WHERE + fd.kxState = '01' + AND fs.auditState = 3 + GROUP BY + fd.sid + ) s ON s.busVinSid = bv.sid + LEFT JOIN anrui_portal.sys_organization so ON so.sid = ba.useOrgSid + WHERE + ba.nodeState = '已办结' + AND ba.typeState = 1 + GROUP BY + bv.sid, + ba.useOrgSid, + bm.modelSid, + bm.modelConfigSid + HAVING + SUM( s.reveivableMoney ) > SUM( s.subscriptionMoney )) a + GROUP BY + a.useOrgSid, + a.vehMConfigSid, + a.vehModelSid UNION ALL + SELECT + SUM( a.scount ) AS scount, + a.useOrgSid, + a.NAME, + a.contractNo, + a.vehMConfigSid, + a.vehModelSid + FROM + ( + SELECT + bdad.id, + ba.useOrgSid, + bm.modelConfigSid AS vehMConfigSid, + bm.modelSid AS vehModelSid, + so.NAME, + SUM( s.reveivableMoney ), + SUM( s.subscriptionMoney ), + bo.contractNo, + ( + SUM( s.reveivableMoney ) - SUM( s.subscriptionMoney )) AS scount + FROM + anrui_buscenter.bus_arrears_carry_vehicle_details bdad + LEFT JOIN anrui_buscenter.bus_arrears_carry_vehicle_apply ba ON ba.sid = bdad.applySid + LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv ON bv.linkSid = bdad.vinSid + LEFT JOIN anrui_buscenter.bus_sales_order bo ON bo.sid = bv.salesOrderSid + LEFT JOIN anrui_buscenter.bus_sales_order_model bm ON bm.salesOrderSid = bo.sid + LEFT JOIN anrui_base.base_vehicle bbv ON bbv.sid = bv.linkSid + LEFT JOIN ( + SELECT + fd.reveivableMoney, + fd.busVinSid, + IFNULL( SUM( fs.subscriptionMoney ), 0 ) AS subscriptionMoney + FROM + anrui_fin.fin_uncollected_receivables_detailed fd + LEFT JOIN anrui_fin.fin_selected_receivables_detailed fs ON fs.receivablesSid = fd.sid + WHERE + fd.kxState = '01' + AND fs.auditState = 3 + GROUP BY + fd.sid + ) s ON s.busVinSid = bv.sid + LEFT JOIN anrui_portal.sys_organization so ON so.sid = ba.useOrgSid + WHERE + ba.nodeState = '已办结' + AND ba.paymentMethodKey = 1 + AND bbv.vehicleState = '0002' + GROUP BY + bv.sid, + ba.useOrgSid, + bm.modelSid, + bm.modelConfigSid + HAVING + SUM( s.reveivableMoney ) > SUM( s.subscriptionMoney )) a + GROUP BY + a.useOrgSid, + a.vehMConfigSid, + a.vehModelSid + ) cc + GROUP BY + cc.useOrgSid, + cc.vehMConfigSid, + cc.vehModelSid ) s on r.useOrgSid = s.useOrgSid and r.vehModelSid = s.vehModelSid @@ -734,38 +905,109 @@ where DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE(); -- 金融未放款数量--- 截止当日贷款业务已出库且融资放款未认款的台数 update daily_report r inner join ( - select count(bv.id) as scount, bo.useOrgSid, bm.modelSid, bm.modelConfigSid, fd.reveivableMoney - from anrui_buscenter.bus_sales_order_vehicle bv - left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid - left join anrui_base.base_vehicle bbv on bbv.sid = bv.linkSid - left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bv.salesOrderSid - left join anrui_fin.fin_uncollected_receivables_detailed fd on fd.busVinSid = bv.sid - left join anrui_fin.fin_selected_receivables_detailed fs on fs.receivablesSid = fd.sid - where bo.payTypeKey = 2 - and fd.receivablesName = '融资放款' - and bbv.vehicleState = '0002' - group by bv.sid, bo.useOrgSid, bm.modelSid, bm.modelConfigSid - having fd.reveivableMoney > ifnull(sum(fs.subscriptionMoney), 0)) as s on - r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.modelSid AND r.vehMConfigSid = s.modelConfigSid + SELECT + count( a.id ) AS scount, + a.useOrgSid, + a.NAME, + a.contractNo, + a.vehMConfigSid, + a.vehModelSid + FROM + (SELECT bv.id, + bo.useOrgSid, + bm.modelConfigSid AS vehMConfigSid, + bm.modelSid AS vehModelSid, + so.NAME, + SUM(s.reveivableMoney), + SUM(s.subscriptionMoney), + bo.contractNo + from anrui_buscenter.bus_sales_order_vehicle bv + left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid + left join anrui_base.base_vehicle bbv on bbv.sid = bv.linkSid + left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bv.salesOrderSid + LEFT JOIN ( + SELECT + fd.reveivableMoney, + fd.busVinSid, + IFNULL( SUM( fs.subscriptionMoney ), 0 ) AS subscriptionMoney + FROM + anrui_fin.fin_uncollected_receivables_detailed fd + LEFT JOIN anrui_fin.fin_selected_receivables_detailed fs ON fs.receivablesSid = fd.sid + WHERE + fd.kxState = '01' + AND fs.auditState = 3 + and fd.receivablesName = '融资放款' + GROUP BY + fd.sid + ) s ON s.busVinSid = bv.sid + LEFT JOIN anrui_portal.sys_organization so ON so.sid = bo.useOrgSid + where bo.payTypeKey = 2 + + and bbv.vehicleState = '0002' + group by bv.sid, bo.useOrgSid, bm.modelSid, bm.modelConfigSid + HAVING + SUM( s.reveivableMoney ) > SUM( s.subscriptionMoney )) a + GROUP BY + a.useOrgSid, + a.vehMConfigSid, + a.vehModelSid) as s on + r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.vehModelSid AND r.vehMConfigSid = s.vehMConfigSid SET r.`loan_not_count`=s.scount WHERE DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE(); -- 金融未放款金额-- 截止当日贷款业务已出库且融资放款未认款的台数融资放款金额之和 update daily_report r inner join ( - select sum(fd.reveivableMoney) as scount, bo.useOrgSid, bm.modelSid, bm.modelConfigSid, fd.reveivableMoney - from anrui_buscenter.bus_sales_order_vehicle bv - left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid - left join anrui_base.base_vehicle bbv on bbv.sid = bv.linkSid - left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bv.salesOrderSid - left join anrui_fin.fin_uncollected_receivables_detailed fd on fd.busVinSid = bv.sid - left join anrui_fin.fin_selected_receivables_detailed fs on fs.receivablesSid = fd.sid - where bo.payTypeKey = 2 - and fd.receivablesName = '融资放款' - and bbv.vehicleState = '0002' - group by bv.sid, bo.useOrgSid, bm.modelSid, bm.modelConfigSid - having fd.reveivableMoney > ifnull(sum(fs.subscriptionMoney), 0)) as s on - r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.modelSid AND r.vehMConfigSid = s.modelConfigSid + SELECT + SUM( a.scount ) AS scount, + a.useOrgSid, + a.NAME, + a.contractNo, + a.vehMConfigSid, + a.vehModelSid + FROM + (SELECT + bv.id, + bo.useOrgSid, + bm.modelConfigSid AS vehMConfigSid, + bm.modelSid AS vehModelSid, + so.NAME, + SUM( s.reveivableMoney ), + SUM( s.subscriptionMoney ), + bo.contractNo, + ( + SUM( s.reveivableMoney ) - SUM( s.subscriptionMoney )) AS scount + FROM anrui_buscenter.bus_sales_order_vehicle bv + LEFT JOIN anrui_buscenter.bus_sales_order bo ON bo.sid = bv.salesOrderSid + LEFT JOIN anrui_base.base_vehicle bbv ON bbv.sid = bv.linkSid + LEFT JOIN anrui_buscenter.bus_sales_order_model bm ON bm.salesOrderSid = bv.salesOrderSid + LEFT JOIN ( + SELECT + fd.reveivableMoney, + fd.busVinSid, + IFNULL( SUM( fs.subscriptionMoney ), 0 ) AS subscriptionMoney + FROM + anrui_fin.fin_uncollected_receivables_detailed fd + LEFT JOIN anrui_fin.fin_selected_receivables_detailed fs ON fs.receivablesSid = fd.sid + WHERE + fd.kxState = '01' + AND fs.auditState = 3 + AND fd.receivablesName = '融资放款' + GROUP BY + fd.sid + ) s ON s.busVinSid = bv.sid + LEFT JOIN anrui_portal.sys_organization so ON so.sid = bo.useOrgSid + WHERE bo.payTypeKey = 2 + + AND bbv.vehicleState = '0002' + GROUP BY bv.sid, bo.useOrgSid, bm.modelSid, bm.modelConfigSid + HAVING + SUM( s.reveivableMoney ) > SUM( s.subscriptionMoney )) a + GROUP BY + a.useOrgSid, + a.vehMConfigSid, + a.vehModelSid) as s on + r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.vehModelSid AND r.vehMConfigSid = s.vehMConfigSid SET r.`loan_not_amount`=ROUND(s.scount / 10000, 2) WHERE DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE();