Browse Source

Merge remote-tracking branch 'origin/master'

zhanglei
God 1 year ago
parent
commit
1b3617f9ad
  1. 14
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java
  2. 106
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java
  3. 19
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanPlanDetailsVoForLateVoucher.java
  4. 130
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java
  5. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.java
  6. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.xml
  7. 4
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankService.java
  8. 78
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyService.java
  9. 128
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java
  10. 11
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.java
  11. 201
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml
  12. 51
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java
  13. 310
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java
  14. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java
  15. 456
      doc/databases/报表中心.sql

14
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java

@ -3789,6 +3789,20 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
} }
} }
} }
//认资金占用费消减平台资金占用费
if (v.getReceivablesName().equals("资金占用费")) {
FinUncollectedReceivablesDetailedJR jr = finUncollectedReceivablesDetailedJRService.fetchBySid(v.getReceivablesSid());
LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsFeign.fetchDetails(jr.getBusSid()).getData();
if (planDetails != null) {
if (planDetails.getFund() != null) {
BigDecimal fund = planDetails.getFund();
String subscriptionMoney = v.getSubscriptionMoney();
BigDecimal subtract = fund.subtract(new BigDecimal(subscriptionMoney));
planDetails.setFund(subtract);
loanRepaymentPlanDetailsFeign.updateByEntity(planDetails);
}
}
}
}); });
//查询该申请已认款金额总数 //查询该申请已认款金额总数
subscriptionMoneyAll = finSelectedReceivablesDetailedVos.stream().map(FinSelectedReceivablesDetailedVo::getSubscriptionMoney).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add); subscriptionMoneyAll = finSelectedReceivablesDetailedVos.stream().map(FinSelectedReceivablesDetailedVo::getSubscriptionMoney).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add);

106
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java

@ -26,10 +26,7 @@ import com.yxt.anrui.fin.api.kingdee.salesreturn.SalesReturn;
import com.yxt.anrui.fin.api.kingdee.saloutstock.SalOutStock; import com.yxt.anrui.fin.api.kingdee.saloutstock.SalOutStock;
import com.yxt.anrui.fin.api.kingdee.stkinstock.StkInStock; import com.yxt.anrui.fin.api.kingdee.stkinstock.StkInStock;
import com.yxt.anrui.fin.api.kingdee.stktransferdirect.StkTransferDirect; import com.yxt.anrui.fin.api.kingdee.stktransferdirect.StkTransferDirect;
import com.yxt.anrui.fin.api.kingdee.voucher.CollectionVoucher; import com.yxt.anrui.fin.api.kingdee.voucher.*;
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.Voucher;
import com.yxt.anrui.fin.biz.kingdee.appaybill.ApPayBillService; import com.yxt.anrui.fin.biz.kingdee.appaybill.ApPayBillService;
import com.yxt.anrui.fin.biz.kingdee.appayable.APPayableService; import com.yxt.anrui.fin.biz.kingdee.appayable.APPayableService;
import com.yxt.anrui.fin.biz.kingdee.arreceivebill.ArReceivebillService; import com.yxt.anrui.fin.biz.kingdee.arreceivebill.ArReceivebillService;
@ -54,6 +51,7 @@ import com.yxt.anrui.fin.biz.kingdee.stkinstock.STKInStockService;
import com.yxt.anrui.fin.biz.kingdee.stktransferdirect.StkTransferDirectService; import com.yxt.anrui.fin.biz.kingdee.stktransferdirect.StkTransferDirectService;
import com.yxt.anrui.fin.biz.kingdee.voucher.VoucherService; import com.yxt.anrui.fin.biz.kingdee.voucher.VoucherService;
import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign; import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign;
import com.yxt.anrui.portal.api.dictcommon.DictCommonVo;
import com.yxt.common.base.utils.StringUtils; import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -73,6 +71,7 @@ import java.util.List;
@RequestMapping("/finKingDee") @RequestMapping("/finKingDee")
@Slf4j @Slf4j
public class FinKingDeeFeignRest implements FinKingDeeFeign { public class FinKingDeeFeignRest implements FinKingDeeFeign {
/** /**
* 应付单service * 应付单service
*/ */
@ -202,6 +201,7 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
@Autowired @Autowired
private DictCommonFeign dictCommonFeign; private DictCommonFeign dictCommonFeign;
@ApiOperation("入账暂存应付单的接口") @ApiOperation("入账暂存应付单的接口")
@PostMapping("/draftEntryBill") @PostMapping("/draftEntryBill")
@ResponseBody @ResponseBody
@ -255,11 +255,23 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
dto1.setSummary(voucherDetail.getBankName() + "贷款"); dto1.setSummary(voucherDetail.getBankName() + "贷款");
dto2.setSummary(voucherDetail.getBankName() + "贷款"); dto2.setSummary(voucherDetail.getBankName() + "贷款");
dto1.setSubjectNo("1201.01.00"); dto1.setSubjectNo("1201.01.00");
DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(voucherDetail.getBankName(), "investorsCode").getData();
if (null != dictCommonVo) {
dto2.setSubjectNo(dictCommonVo.getDictValue());
} }
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);
} }
return null; newVoucher.setResultDetails(resultDetails);
}
// log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(newVoucher));
return voucherService.saveVoucher(newVoucher);
} }
/** /**
@ -315,7 +327,35 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
*/ */
@Override @Override
public ResultBean<String> saveLateVoucher(GeneralVoucher voucher) { public ResultBean<String> saveLateVoucher(GeneralVoucher voucher) {
return null; ResultBean rb = ResultBean.fireFail();
Voucher newVoucher = new Voucher();
List<Voucher.VoucherResultDetailDto> resultDetails = new ArrayList<>();
if (StringUtils.isNotBlank(voucher.getUseOrgCode())) {
newVoucher.setAccountBook(voucher.getUseOrgCode());
newVoucher.setVoucherNo(voucher.getUseOrgCode());
}
List<GeneralVoucher.GeneralVoucherDetail> 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 @Override
public ResultBean<String> saveBuckleVoucher(GeneralVoucher voucher) { public ResultBean<String> saveBuckleVoucher(GeneralVoucher voucher) {
return null; ResultBean rb = ResultBean.fireFail();
Voucher newVoucher = new Voucher();
List<Voucher.VoucherResultDetailDto> resultDetails = new ArrayList<>();
if (StringUtils.isNotBlank(voucher.getUseOrgCode())) {
newVoucher.setAccountBook(voucher.getUseOrgCode());
newVoucher.setVoucherNo(voucher.getUseOrgCode());
}
List<GeneralVoucher.GeneralVoucherDetail> 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);
} }
/** /**

19
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;
}

130
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.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder; 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.enums.BillTypeEnum;
import com.yxt.anrui.base.common.utils.Rule; import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.base.common.utils.domain.BillNo; import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.buscenter.api.buscenterfile.BuscenterFile; import com.yxt.anrui.buscenter.api.buscenterfile.BuscenterFile;
import com.yxt.anrui.buscenter.api.buscenterfile.BuscenterFileEnum; 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.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.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery; 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.loanbuckleapplyrecord.LoanBuckleApplyRecord;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile; import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum; 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.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryRecordVo; 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.loanbuckleapplyrecord.LoanBuckleApplyRecordService;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService; import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; 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.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.base.utils.PagerUtil;
@ -88,6 +103,18 @@ public class LoanBuckleApplyService extends MybatisBaseService<LoanBuckleApplyMa
private FlowTaskFeign flowTaskFeign; private FlowTaskFeign flowTaskFeign;
@Autowired @Autowired
private FlowableFeign flowableFeign; private FlowableFeign flowableFeign;
@Autowired
private LoanRepaymentPlanDetailsService loanRepaymentPlanDetailsService;
@Autowired
private BusSalesOrderVehicleFeign busSalesOrderVehicleFeign;
@Autowired
private FinKingDeeFeign finKingDeeFeign;
@Autowired
private BusSalesOrderBorrowerFeign busSalesOrderBorrowerFeign;
@Autowired
private BusSalesOrderFeign busSalesOrderFeign;
@Autowired
private BasePurchaseSystemFeign basePurchaseSystemFeign;
public PagerVo<LoanBuckleApplyVo> listPage(PagerQuery<LoanBuckleApplyQuery> pq) { public PagerVo<LoanBuckleApplyVo> listPage(PagerQuery<LoanBuckleApplyQuery> pq) {
IPage<LoanBuckleApply> page = PagerUtil.queryToPage(pq); IPage<LoanBuckleApply> page = PagerUtil.queryToPage(pq);
@ -553,6 +580,21 @@ public class LoanBuckleApplyService extends MybatisBaseService<LoanBuckleApplyMa
} }
} }
} }
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new org.apache.tomcat.util.threads.ThreadPoolExecutor(1, 10,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(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()); return rb.success().setData(resultBean.getData());
} else { } else {
@ -560,6 +602,94 @@ public class LoanBuckleApplyService extends MybatisBaseService<LoanBuckleApplyMa
} }
} }
private void pushBuckleVoucher(String businessSid) {
List<LoanBuckleApplyRecord> 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<GeneralVoucher.GeneralVoucherDetail> 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<BdCustomer> 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<String> 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) { public ResultBean revokeProcess(BuckleTaskQuery query) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();

2
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<LoanFinBank> {
List<LoanFinBanksVo> selectListByOrgSid(String orgSid); List<LoanFinBanksVo> selectListByOrgSid(String orgSid);
LoanFinBank reAdvancesByOrderSid(@Param("orderSid") String orderSid); LoanFinBank reAdvancesByOrderSid(@Param("orderSid") String orderSid);
LoanFinBank selBankByOrderSid(@Param("orderSid") String salesOrderSid);
} }

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.xml

@ -88,4 +88,12 @@
WHERE s.salesOrderSid = #{orderSid} WHERE s.salesOrderSid = #{orderSid}
AND s.isDelete = '0' AND s.isDelete = '0'
</select> </select>
<select id="selBankByOrderSid" resultType="com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBank">
SELECT b.*
FROM loan_solutions AS s
LEFT JOIN loan_fin_policy AS p ON s.policySid = p.sid
LEFT JOIN loan_fin_bank as b ON p.bankSid = b.sid
WHERE s.salesOrderSid = #{orderSid}
AND s.isDelete = '0'
</select>
</mapper> </mapper>

4
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<LoanFinBankMapper, Lo
LoanFinBank loanFinBank = baseMapper.reAdvancesByOrderSid(orderSid); LoanFinBank loanFinBank = baseMapper.reAdvancesByOrderSid(orderSid);
return rb.success().setData(loanFinBank); return rb.success().setData(loanFinBank);
} }
public LoanFinBank selBankByOrderSid(String salesOrderSid) {
return baseMapper.selBankByOrderSid(salesOrderSid);
}
} }

78
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyService.java

@ -7,27 +7,19 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basetrailer.BaseTrailerDetailsVo; import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo;
import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateDto; import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign;
import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateEnum;
import com.yxt.anrui.base.common.enums.BillTypeEnum; import com.yxt.anrui.base.common.enums.BillTypeEnum;
import com.yxt.anrui.base.common.utils.Rule; import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.base.common.utils.domain.BillNo; import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.buscenter.api.busarrearscarryvehicleapply.BusArrearsCarryVehicleApplyVo;
import com.yxt.anrui.buscenter.api.busbillapplication.BusBillApplication;
import com.yxt.anrui.buscenter.api.busbilltrailer.BusBillTrailerVo;
import com.yxt.anrui.buscenter.api.busbillvehicle.BusBillVehicleVo;
import com.yxt.anrui.buscenter.api.busdeliveredapplydetails.BusDeliveredApplyDetails;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.app.order.AppOrderDetailsVo; import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice; 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.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign; import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.buscenter.api.busvalcustfiling.BusValcustFilingDto;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingDetailsVo;
import com.yxt.anrui.fin.api.finvehicleinvoice.FinVehicleInvoiceDto;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign; 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.GeneralVoucher;
import com.yxt.anrui.flowable.api.flow.FlowableFeign; import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
@ -45,19 +37,12 @@ import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo; import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.portal.api.sysuser.UserQuery;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApply;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppRecordVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile; import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum; import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.*; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.*;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.flow.*; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.flow.*;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryRecordVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails; 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.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecordService; import com.yxt.anrui.riskcenter.biz.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecordService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
@ -120,6 +105,12 @@ public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonth
private FinKingDeeFeign finKingDeeFeign; private FinKingDeeFeign finKingDeeFeign;
@Autowired @Autowired
private BusSalesOrderVehicleFeign busSalesOrderVehicleFeign; private BusSalesOrderVehicleFeign busSalesOrderVehicleFeign;
@Autowired
private BusSalesOrderBorrowerFeign busSalesOrderBorrowerFeign;
@Autowired
private BusSalesOrderFeign busSalesOrderFeign;
@Autowired
private BasePurchaseSystemFeign basePurchaseSystemFeign;
public ResultBean<LoanMonthlyAccrualApplyInit> accrualInit(String orgPath) { public ResultBean<LoanMonthlyAccrualApplyInit> accrualInit(String orgPath) {
ResultBean<LoanMonthlyAccrualApplyInit> rb = ResultBean.fireFail(); ResultBean<LoanMonthlyAccrualApplyInit> rb = ResultBean.fireFail();
@ -669,7 +660,7 @@ public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonth
ExecutorService pool = new org.apache.tomcat.util.threads.ThreadPoolExecutor(1, 10, ExecutorService pool = new org.apache.tomcat.util.threads.ThreadPoolExecutor(1, 10,
1000, TimeUnit.MILLISECONDS, 1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy()); new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy());
//推送优惠包交接数据 //推送月还计提凭证数据
Future future = pool.submit(() -> { Future future = pool.submit(() -> {
pushAccrualVoucher(businessSid); pushAccrualVoucher(businessSid);
}); });
@ -705,9 +696,46 @@ public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonth
voucherDetail.setDeptCode(organizationDeptVo.getOrgCode()); voucherDetail.setDeptCode(organizationDeptVo.getOrgCode());
} }
String busVinSid = planDetails.getBusVinSid(); String busVinSid = planDetails.getBusVinSid();
BusSalesOrderVehicle orderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData(); BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData();
if (null != orderVehicle) { if (null != busSalesOrderVehicle) {
voucherDetail.setCustomerCode(orderVehicle.getTemporaryNo()); String customerNumber = "";
//判断财务系统是否有客户
Boolean aBoolean = finKingDeeFeign.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData();
String linkNo = "";
BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(busSalesOrderVehicle.getBorrowerSid()).getData();
if (!aBoolean) {
// List<BdCustomer> 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<String> resultBean = finKingDeeFeign.draftBdCustomer(bdCustomer);
if (resultBean.getSuccess()) {
customerNumber = bdCustomer.getFNumber();
}
} else {
customerNumber = busSalesOrderVehicle.getTemporaryNo();
}
voucherDetail.setCustomerCode(customerNumber);
} }
voucherDetail.setAmount(planDetails.getDueMoney()); voucherDetail.setAmount(planDetails.getDueMoney());
voucherDetails.add(voucherDetail); voucherDetails.add(voucherDetail);

128
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 cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; 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.BaseModelModpriceImportReturn;
import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModpriceImportVo; 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.CrmCustomerTemp;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempExportVo; import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempExportVo;
import com.yxt.anrui.fin.api.finmanufacturerbank.FinManufacturerBank; import com.yxt.anrui.fin.api.finmanufacturerbank.FinManufacturerBank;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto; import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR; import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRFeign; 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.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; 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.LoanBuckleApplyInit;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleHistoryRecord; import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleHistoryRecord;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApply; 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.LoanParameter;
import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterQuery; import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterQuery;
import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterVo; import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.*; 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.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsDto; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsDto;
import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord; import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord;
@ -55,6 +70,7 @@ import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.*;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -75,6 +91,18 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
private SysUserFeign sysUserFeign; private SysUserFeign sysUserFeign;
@Autowired @Autowired
private FinUncollectedReceivablesDetailedJRFeign finUncollectedReceivablesDetailedJRFeign; private FinUncollectedReceivablesDetailedJRFeign finUncollectedReceivablesDetailedJRFeign;
@Autowired
private FinKingDeeFeign finKingDeeFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
@Autowired
private BusSalesOrderVehicleFeign busSalesOrderVehicleFeign;
@Autowired
private BusSalesOrderBorrowerFeign busSalesOrderBorrowerFeign;
@Autowired
private BasePurchaseSystemFeign basePurchaseSystemFeign;
@Autowired
private BusSalesOrderFeign busSalesOrderFeign;
public ResultBean<String> saveHistory(LoanRepaymentHistoryDto dto) { public ResultBean<String> saveHistory(LoanRepaymentHistoryDto dto) {
ResultBean<String> rb = ResultBean.fireFail(); ResultBean<String> rb = ResultBean.fireFail();
@ -701,6 +729,7 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
int i3 = orgSidPath.indexOf("/", i2 + 1); int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1); int i4 = orgSidPath.indexOf("/", i3 + 1);
orgSidPath = orgSidPath.substring(0, i3); orgSidPath = orgSidPath.substring(0, i3);
String pushUseOrgSid = orgSidPath;
qw.like("p.orgSidPath", orgSidPath); qw.like("p.orgSidPath", orgSidPath);
qw.ne("h.buckleKey", "002"); qw.ne("h.buckleKey", "002");
qw.ne("h.buckleKey", "003"); qw.ne("h.buckleKey", "003");
@ -802,12 +831,109 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
} }
} }
} }
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new org.apache.tomcat.util.threads.ThreadPoolExecutor(1, 10,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(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 { } else {
return rb.setMsg("暂无可更新的还款记录"); return rb.setMsg("暂无可更新的还款记录");
} }
return rb.success(); return rb.success();
} }
private void pushLateVoucher(String pushUseOrgSid) {
List<LoanPlanDetailsVoForLateVoucher> records = loanRepaymentPlanDetailsService.selListForLateVoucher(pushUseOrgSid);
List<String> planSids = new ArrayList<>();
if (!records.isEmpty()) {
for (LoanPlanDetailsVoForLateVoucher planDetails : records) {
if (null != planDetails) {
planSids.add(planDetails.getPlanSid());
GeneralVoucher generalVoucher = new GeneralVoucher();
List<GeneralVoucher.GeneralVoucherDetail> 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<BdCustomer> 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<String> 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<LoanBuckleApplyInit> buckleNewInit(String orgPath) { public ResultBean<LoanBuckleApplyInit> buckleNewInit(String orgPath) {
ResultBean<LoanBuckleApplyInit> rb = ResultBean.fireFail(); ResultBean<LoanBuckleApplyInit> rb = ResultBean.fireFail();
LoanBuckleApplyInit vo = new LoanBuckleApplyInit(); LoanBuckleApplyInit vo = new LoanBuckleApplyInit();
@ -1072,7 +1198,7 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
Date u = sdf.parse(record.getUpdateDate()); Date u = sdf.parse(record.getUpdateDate());
Date d = sdf.parse(record.getDueDate()); Date d = sdf.parse(record.getDueDate());
if (d.compareTo(u) <= 0) { if (d.compareTo(u) <= 0) {
BigDecimal sum = new BigDecimal(2); BigDecimal sum = new BigDecimal(0);
if (StringUtils.isNotBlank(record.getOutstandingMoney())) { if (StringUtils.isNotBlank(record.getOutstandingMoney())) {
sum = new BigDecimal(record.getOutstandingMoney()); sum = new BigDecimal(record.getOutstandingMoney());
} }

11
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.java

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.DifferenceVo; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.DifferenceVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.HistoryOverDueVo; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.HistoryOverDueVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForLateVoucher;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayDetails; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayPeriodDetails; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayPeriodDetails;
@ -56,4 +57,14 @@ public interface LoanRepaymentPlanDetailsMapper extends BaseMapper<LoanRepayment
int saveVehMark(@Param("busVinSid") String busVinSid,@Param("vehMark") String vehMark); int saveVehMark(@Param("busVinSid") String busVinSid,@Param("vehMark") String vehMark);
List<LoanRepaymentPlanDetails> getListByBusVinSid(@Param("busVinSid") String busVinSid); List<LoanRepaymentPlanDetails> getListByBusVinSid(@Param("busVinSid") String busVinSid);
List<LoanPlanDetailsVoForLateVoucher> selListForLateVoucher(@Param("pushUseOrgSid") String pushUseOrgSid);
int updateOweState(@Param("planSids") List<String> planSids);
String selForPushBuckleVoucher(@Param("planDetailSid") String planDetailSid);
String getMainBankName(@Param("sid") String sid);
String getOtherBankName(@Param("sid") String sid);
} }

201
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml

@ -20,6 +20,14 @@
SET vehMark = #{vehMark} SET vehMark = #{vehMark}
WHERE busVinSid = #{busVinSid} WHERE busVinSid = #{busVinSid}
</update> </update>
<update id="updateOweState">
update loan_repayment_plan_details
set oweState = 0
where sid in
<foreach collection="planSids" item="planSid" open="(" close=")" separator=",">
#{planSid}
</foreach>
</update>
<delete id="deletePlanDetails"> <delete id="deletePlanDetails">
DELETE DELETE
FROM loan_repayment_plan_details FROM loan_repayment_plan_details
@ -243,4 +251,197 @@
resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails"> resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails">
select * from loan_repayment_plan_details where busVinSid =#{busVinSid} select * from loan_repayment_plan_details where busVinSid =#{busVinSid}
</select> </select>
<select id="selListForLateVoucher"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForLateVoucher">
SELECT
b.sid AS planSid,
CASE
WHEN ( b.outstandingMoney + b.bankBeInter + b.fund ) >
0 THEN
'0'
WHEN ( b.outstandingMoney + b.bankBeInter + b.fund ) &lt;= 0 THEN
'1'
END AS overdueState,
b.outstandingMoney,
b.useOrgSid,
b.deptSid,
b.busVinSid,
b.salesOrderSid
FROM
(
SELECT
a.*
FROM
(
SELECT
pd.oweState,
pd.dueDate,
pd.useOrgSid,
pd.deptSid,
pd.busVinSid,
pd.sid,
IFNULL( pd.fund, 0 ) AS fund,
pd.dueMoney,
pd.overdue,
pd.salesOrderSid,
t.repaidMoney,
t.outstandingMoney,
IFNULL( v.bankBeInter, 0 ) AS bankBeInter,
pd.overdue AS dueOverdue,
pd.updateTime AS updateDate
FROM
loan_repayment_plan_details AS pd
LEFT JOIN anrui_buscenter.bus_sales_order AS s ON s.sid = pd.salesOrderSid
LEFT JOIN loan_be_padsincere_veh AS v ON v.saleVehSid = pd.busVinSid
LEFT JOIN (
SELECT
p.sid,
IFNULL((
SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'
),
0
) AS repaidMoney,
IFNULL(
(
p.dueMoney - IFNULL((
SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'
),
0
)),
0
) AS outstandingMoney
FROM
loan_repayment_plan_details AS p
) AS t ON pd.sid = t.sid
) AS a
WHERE
a.dueDate &lt;= a.updateDate
AND a.oweState = 1
AND a.useOrgSid = #{pushUseOrgSid}
) AS b
WHERE b.overdue = '0'
</select>
<select id="selForPushBuckleVoucher" resultType="java.lang.String">
SELECT
c.overdueState
FROM
(SELECT
b.sid AS planSid,
b.paymentMoney,
b.dueDate,
b.updateDate,
CASE
WHEN ( b.outstandingMoney + b.bankBeInter + b.fund ) > 0
AND b.dueDate &lt;= b.updateDate
AND IFNULL(b.paymentMoney,0) > 0
THEN '0'
WHEN ( b.outstandingMoney + b.bankBeInter + b.fund ) > 0
AND b.dueDate &lt;= b.updateDate
AND IFNULL(b.paymentMoney,0) &lt;= 0
THEN '1'
ELSE '2'
END AS overdueState,
-- 0逾期已垫款1逾期未垫款2正常
b.outstandingMoney,
b.useOrgSid,
b.deptSid,
b.busVinSid,
b.salesOrderSid
FROM
(
SELECT
a.*
FROM
(
SELECT
pd.paymentMoney,
pd.oweState,
pd.dueDate,
pd.useOrgSid,
pd.deptSid,
pd.busVinSid,
pd.sid,
IFNULL( pd.fund, 0 ) AS fund,
pd.dueMoney,
pd.overdue,
pd.salesOrderSid,
t.repaidMoney,
t.outstandingMoney,
IFNULL( v.bankBeInter, 0 ) AS bankBeInter,
pd.overdue AS dueOverdue,
pd.updateTime AS updateDate
FROM
loan_repayment_plan_details AS pd
LEFT JOIN anrui_buscenter.bus_sales_order AS s ON s.sid = pd.salesOrderSid
LEFT JOIN loan_be_padsincere_veh AS v ON v.saleVehSid = pd.busVinSid
LEFT JOIN (
SELECT
p.sid,
IFNULL((
SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'
),
0
) AS repaidMoney,
IFNULL(
(
p.dueMoney - IFNULL((
SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'
),
0
)),
0
) AS outstandingMoney
FROM
loan_repayment_plan_details AS p
) AS t ON pd.sid = t.sid
) AS a
) AS b) as c
WHERE c.planSid = #{planDetailSid}
</select>
<select id="getMainBankName" resultType="java.lang.String">
SELECT b.bankShortName FROM loan_repayment_plan_details as p
LEFT JOIN loan_solutions as s ON p.salesOrderSid = s.salesOrderSid
LEFT JOIN loan_fin_policy as po ON po.sid = s.policySid
LEFT JOIN loan_fin_bank as b ON po.bankSid = b.sid
WHERE p.sid = #{sid}
AND s.isDelete = '0'
</select>
<select id="getOtherBankName" resultType="java.lang.String">
SELECT b.bankShortName FROM loan_repayment_plan_details as p
LEFT JOIN loan_solutions as s ON p.salesOrderSid = s.salesOrderSid
LEFT JOIN loan_solutions_otherpolicy as o ON s.sid = o.solutionsSid
LEFT JOIN loan_fin_otherpolicy as po ON po.sid = s.policySid
LEFT JOIN loan_fin_bank as b ON po.bankSid = b.sid
WHERE p.sid = #{sid}
AND s.isDelete = '0'
</select>
</mapper> </mapper>

51
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.DifferenceVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.HistoryOverDueVo; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.HistoryOverDueVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryDto; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryDto;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails; import com.yxt.anrui.riskcenter.api.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.loanrepaymentschedule.*; import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.*;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions; import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo; import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo;
import com.yxt.anrui.riskcenter.api.loansolutionsotherpolicy.LoanSolutionsOtherpolicy; import com.yxt.anrui.riskcenter.api.loansolutionsotherpolicy.LoanSolutionsOtherpolicy;
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformation; import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformation;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; 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.loansolutions.LoanSolutionsService;
import com.yxt.anrui.riskcenter.biz.loansolutionsotherpolicy.LoanSolutionsOtherpolicyService; import com.yxt.anrui.riskcenter.biz.loansolutionsotherpolicy.LoanSolutionsOtherpolicyService;
import com.yxt.anrui.riskcenter.biz.loanwarrantinformation.LoanWarrantInformationService; import com.yxt.anrui.riskcenter.biz.loanwarrantinformation.LoanWarrantInformationService;
@ -72,7 +70,8 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
@Autowired @Autowired
private LoanRepaymentHistoryService loanRepaymentHistoryService; private LoanRepaymentHistoryService loanRepaymentHistoryService;
@Autowired
private LoanRepaymentScheduleService loanRepaymentScheduleService;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ResultBean<String> savePlanDetails(LoanRepaymentPlanDetailsDto dto) { public ResultBean<String> savePlanDetails(LoanRepaymentPlanDetailsDto dto) {
ResultBean<String> rb = ResultBean.fireFail(); ResultBean<String> rb = ResultBean.fireFail();
@ -114,8 +113,8 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
return baseMapper.planList(); return baseMapper.planList();
} }
public int updateTime(String bankName, Date updateTime,String useOrgSid) { public int updateTime(String bankName, Date updateTime, String useOrgSid) {
return baseMapper.updateTime(bankName,updateTime,useOrgSid); return baseMapper.updateTime(bankName, updateTime, useOrgSid);
} }
public List<HistoryOverDueVo> overDueVoList(String useOrgSid) { public List<HistoryOverDueVo> overDueVoList(String useOrgSid) {
@ -138,11 +137,45 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
return baseMapper.InsertForCheckPaymentAndBank(sid); return baseMapper.InsertForCheckPaymentAndBank(sid);
} }
public int saveVehMark(String busVinSid,String vehMark) { public int saveVehMark(String busVinSid, String vehMark) {
return baseMapper.saveVehMark(busVinSid,vehMark); return baseMapper.saveVehMark(busVinSid, vehMark);
} }
public List<LoanRepaymentPlanDetails> getListByBusVinSid(String busVinSid) { public List<LoanRepaymentPlanDetails> getListByBusVinSid(String busVinSid) {
return baseMapper.getListByBusVinSid(busVinSid); return baseMapper.getListByBusVinSid(busVinSid);
} }
public List<LoanPlanDetailsVoForLateVoucher> selListForLateVoucher(String pushUseOrgSid) {
return baseMapper.selListForLateVoucher(pushUseOrgSid);
}
public int updateOweState(List<String> 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;
}
;
} }

310
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.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.api.R; import com.baomidou.mybatisplus.extension.api.R;
import com.google.common.util.concurrent.ThreadFactoryBuilder; 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.bushandover.BusHandover;
import com.yxt.anrui.buscenter.api.bushandoveritems.BusHandoverItems; import com.yxt.anrui.buscenter.api.bushandoveritems.BusHandoverItems;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; 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.buscenter.api.busvehicledatahandover.BusVehicleDataHandoverPdfVo;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign; import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo; 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.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserInfoVo; import com.yxt.anrui.portal.api.sysuser.SysUserInfoVo;
import com.yxt.anrui.portal.api.sysuser.SysUserVo; 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.loanfinotherPolicy.LoanFinOtherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy; import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyVo; 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.LoanWarrantInformation;
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformationQuery; import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformationQuery;
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformationVo; 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.loanfinotherPolicy.LoanFinOtherPolicyService;
import com.yxt.anrui.riskcenter.biz.loanfinpolicy.LoanFinPolicyService; import com.yxt.anrui.riskcenter.biz.loanfinpolicy.LoanFinPolicyService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
@ -85,6 +93,12 @@ import java.util.stream.Collectors;
@Service @Service
public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepaymentScheduleMapper, LoanRepaymentSchedule> { public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepaymentScheduleMapper, LoanRepaymentSchedule> {
@Autowired
private LoanFinBankService loanFinBankService;
@Autowired
private BasePurchaseSystemFeign basePurchaseSystemFeign;
@Autowired
private FinKingDeeFeign finKingDeeFeign;
@Autowired @Autowired
private SysUserFeign sysUserFeign; private SysUserFeign sysUserFeign;
@Autowired @Autowired
@ -282,6 +296,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
ResultBean<String> rb = ResultBean.fireFail(); ResultBean<String> rb = ResultBean.fireFail();
LoanRepaymentSchedule loanRepaymentSchedule = baseMapper.selectByContractSid(dto.getSalesOrderSid()); LoanRepaymentSchedule loanRepaymentSchedule = baseMapper.selectByContractSid(dto.getSalesOrderSid());
String orderSid = ""; String orderSid = "";
String scheduleSid = "";
BusSalesOrderLoancontractDetailsVo loancontract = busSalesOrderLoancontractFeign.fetchDetailsBySid(dto.getSalesOrderSid()).getData(); BusSalesOrderLoancontractDetailsVo loancontract = busSalesOrderLoancontractFeign.fetchDetailsBySid(dto.getSalesOrderSid()).getData();
if (null != loancontract) { if (null != loancontract) {
if (StringUtils.isNotBlank(loancontract.getSalesOrderSid())) { if (StringUtils.isNotBlank(loancontract.getSalesOrderSid())) {
@ -315,6 +330,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
} }
} }
if (null != loanRepaymentSchedule) { if (null != loanRepaymentSchedule) {
scheduleSid = loanRepaymentSchedule.getSid();
BeanUtil.copyProperties(dto, loanRepaymentSchedule, "id", "sid"); BeanUtil.copyProperties(dto, loanRepaymentSchedule, "id", "sid");
loanRepaymentSchedule.setLoanContractSid(dto.getSalesOrderSid()); loanRepaymentSchedule.setLoanContractSid(dto.getSalesOrderSid());
loanRepaymentSchedule.setSalesOrderSid(orderSid); loanRepaymentSchedule.setSalesOrderSid(orderSid);
@ -658,6 +674,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
} else { } else {
LoanRepaymentSchedule entity = new LoanRepaymentSchedule(); LoanRepaymentSchedule entity = new LoanRepaymentSchedule();
scheduleSid = entity.getSid();
BeanUtil.copyProperties(dto, entity, "id", "sid"); BeanUtil.copyProperties(dto, entity, "id", "sid");
entity.setLoanContractSid(dto.getSalesOrderSid()); entity.setLoanContractSid(dto.getSalesOrderSid());
entity.setSalesOrderSid(orderSid); entity.setSalesOrderSid(orderSid);
@ -1040,14 +1057,16 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
} }
} }
} }
// 使用多线程推送站内信发送短信 }
if (StringUtils.isNotBlank(scheduleSid)) {
try { try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build(); .setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100, ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS, 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
LoanRepaymentSchedule schedule = fetchBySid(entity.getSid()); LoanRepaymentSchedule schedule = fetchBySid(scheduleSid);
// 使用多线程推送站内信发送短信
Future future1 = pool.submit(() -> { Future future1 = pool.submit(() -> {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (null != schedule) { if (null != schedule) {
@ -1149,6 +1168,11 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
messageFeign.pushNoUriMessage(pushMessageQuery); messageFeign.pushNoUriMessage(pushMessageQuery);
} }
}); });
//推送还款计划总凭证
Future future2 = pool.submit(() -> {
pushScheduleVoucher(schedule);
});
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -1170,6 +1194,288 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
return rb.success().setData(returnPath); return rb.success().setData(returnPath);
} }
public void pushScheduleVoucher(LoanRepaymentSchedule schedule) {
String salesOrderSid = schedule.getSalesOrderSid();
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(salesOrderSid).getData();
String loanContractSid = schedule.getLoanContractSid();
List<BusSalesOrderVehicle> 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<GeneralVoucher.GeneralVoucherDetail> 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<BdCustomer> 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<String> 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<GeneralVoucher.GeneralVoucherDetail> 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<BdCustomer> 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<String> 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<GeneralVoucher.GeneralVoucherDetail> 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<BdCustomer> 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<String> 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);
}
}
}
}
}
}
/** /**
* 根据首期还款日+主产品期数推算主产品月还日期 * 根据首期还款日+主产品期数推算主产品月还日期
* *

2
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<LoanTran
transfer.setBuckle("未申请"); transfer.setBuckle("未申请");
transfer.setUpdateState("1"); transfer.setUpdateState("1");
transfer.setUpdateTime(new DateTime()); transfer.setUpdateTime(new DateTime());
BigDecimal money = new BigDecimal(2); BigDecimal money = new BigDecimal(0);
if (null != applyRecord.getTransferPrincipal()) { if (null != applyRecord.getTransferPrincipal()) {
money = applyRecord.getTransferPrincipal(); money = applyRecord.getTransferPrincipal();
} }

456
doc/databases/报表中心.sql

@ -12,12 +12,15 @@ UPDATE daily_report r
and bo.sid not in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo) and bo.sid not in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo)
group by bo.createOrgSid group by bo.createOrgSid
union all union all
select ifnull(sum(bo.platformNo), 0) as scount, bo.useOrgSid, bd.vehicleSid, bd.configSid modelConfigSid select ifnull(sum(bo.platformNo), 0) as scount,
bo.useOrgSid,
bd.vehicleSid,
bd.configSid modelConfigSid
from anrui_base.bus_vehicle_order bo from anrui_base.bus_vehicle_order bo
left join anrui_base.bus_vehicle_apply_detail bd on bd.sid = bo.purchaseApplyMediumModelSid left join anrui_base.bus_vehicle_apply_detail bd on bd.sid = bo.purchaseApplyMediumModelSid
where where bo.isDelete <> 1
bo.isDelete <> 1 and LENGTH(offlineDate) = 0
and LENGTH(offlineDate) = 0 and bo.orderStatus != '已作废' and bo.orderStatus != '已作废'
and bo.sid not in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo) and bo.sid not in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo)
group by bo.createOrgSid group by bo.createOrgSid
) as v ) as v
@ -36,7 +39,7 @@ UPDATE daily_report r
INNER JOIN ( INNER JOIN (
select sum(v.scount) as scount, v.useOrgSid, v.modelSid, v.modelConfigSid select sum(v.scount) as scount, v.useOrgSid, v.modelSid, v.modelConfigSid
from ( from (
select ifnull(sum(si.num), 0) as scount, si.useOrgSid, si.modelSid, si.configSid modelConfigSid /* select ifnull(sum(si.num), 0) as scount, si.useOrgSid, si.modelSid, si.configSid modelConfigSid
from anrui_base.bus_vehicle_order bo from anrui_base.bus_vehicle_order bo
left join anrui_scm.scm_apply_inbound si on bo.purchaseRequisitionSid = si.vehicleOrderSid left join anrui_scm.scm_apply_inbound si on bo.purchaseRequisitionSid = si.vehicleOrderSid
where (si.nodeState != '已办结' and si.nodeState != '终止') where (si.nodeState != '已办结' and si.nodeState != '终止')
@ -45,13 +48,33 @@ UPDATE daily_report r
and bo.sid in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo) and bo.sid in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo)
group by bo.createOrgSid group by bo.createOrgSid
union all union all
select ifnull(sum(bo.id), 0) as scount, bo.useOrgSid, bd.vehicleSid, bd.configSid modelConfigSid select ifnull(sum(bo.platformNo), 0) as scount, bo.useOrgSid, bd.vehicleSid, bd.configSid modelConfigSid
from anrui_base.bus_vehicle_order bo from anrui_base.bus_vehicle_order bo
left join anrui_base.bus_vehicle_apply_detail bd on bd.sid = bo.purchaseApplyMediumModelSid left join anrui_base.bus_vehicle_apply_detail bd on bd.sid = bo.purchaseApplyMediumModelSid
where where
bo.isDelete <> 1 bo.isDelete <> 1
and LENGTH(offlineDate) >0 and LENGTH(offlineDate) >0
and bo.sid in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo) 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 group by bo.createOrgSid
) as v ) as v
GROUP BY v.`useOrgSid`, 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 bvo on bv.sid = bvo.vinSid
left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid
where bv.salesDate like concat('%', CURDATE(), '%') 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 bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss
group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid
) AS s ON r.useOrgSid = s.useOrgSid ) 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 bvo on bv.sid = bvo.vinSid
left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid
where bv.salesDate like concat('%', CURDATE(), '%') 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 bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss
group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid
) AS s ON r.useOrgSid = s.useOrgSid ) 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 bvo on bv.sid = bvo.vinSid
left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid
where bv.salesDate like concat('%', DATE_FORMAT(CURDATE(), '%Y-%m'), '%') 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 bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss
group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid
) AS s ON r.useOrgSid = s.useOrgSid ) 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 bvo on bv.sid = bvo.vinSid
left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid
where bv.salesDate like concat('%', DATE_FORMAT(CURDATE(), '%Y-%m'), '%') 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 bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss
group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid
) AS s ON r.useOrgSid = s.useOrgSid ) 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 bvo on bv.sid = bvo.vinSid
left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid
where bv.salesDate like concat('%', DATE_FORMAT(CURDATE(), '%Y'), '%') 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 bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss
group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid
) AS s ON r.useOrgSid = s.useOrgSid ) 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 bvo on bv.sid = bvo.vinSid
left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid
where bv.salesDate like concat('%', DATE_FORMAT(CURDATE(), '%Y'), '%') 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 bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss
group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid
) AS s ON r.useOrgSid = s.useOrgSid ) 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 update daily_report r inner join (SELECT SUM(cc.scount) AS scount,
from ( cc.useOrgSid,
select count(bdad.id) as scount, 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, ba.useOrgSid,
bm.modelConfigSid as vehMConfigSid, bm.modelConfigSid AS vehMConfigSid,
bm.modelSid as vehModelSid bm.modelSid AS vehModelSid,
from anrui_buscenter.bus_delivered_apply_details bdad so.NAME,
left join anrui_buscenter.bus_delivered_apply ba on ba.sid = bdad.applySid SUM(s.reveivableMoney),
left join anrui_buscenter.bus_sales_order_vehicle bv on bv.sid = bdad.busVinSid SUM(s.subscriptionMoney),
left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid bo.contractNo
left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bo.sid FROM anrui_buscenter.bus_delivered_apply_details bdad
left join anrui_fin.fin_uncollected_receivables_detailed fd LEFT JOIN anrui_buscenter.bus_delivered_apply ba ON ba.sid = bdad.applySid
on fd.busVinSid = bdad.busVinSid LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv ON bv.sid = bdad.busVinSid
left join anrui_fin.fin_selected_receivables_detailed fs LEFT JOIN anrui_buscenter.bus_sales_order bo ON bo.sid = bv.salesOrderSid
on fs.receivablesSid = fd.sid LEFT JOIN anrui_buscenter.bus_sales_order_model bm ON bm.salesOrderSid = bo.sid
where ba.nodeState = '已办结' LEFT JOIN (
and ba.typeState = 1 SELECT fd.reveivableMoney,
group by bdad.busVinSid, ba.useOrgSid, bm.modelSid, bm.modelConfigSid fd.busVinSid,
having sum(fd.reveivableMoney) > ifnull(sum(fs.subscriptionMoney), 0) IFNULL(SUM(fs.subscriptionMoney), 0) AS subscriptionMoney
union all FROM anrui_fin.fin_uncollected_receivables_detailed fd
select count(bdad.id) as scount, 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, ba.useOrgSid,
bm.modelConfigSid as vehMConfigSid, bm.modelSid,
bm.modelSid as vehModelSid bm.modelConfigSid
from anrui_buscenter.bus_arrears_carry_vehicle_details bdad HAVING SUM(s.reveivableMoney) > SUM(s.subscriptionMoney)) a
left join anrui_buscenter.bus_arrears_carry_vehicle_apply ba GROUP BY a.useOrgSid,
on ba.sid = bdad.applySid a.vehMConfigSid,
left join anrui_buscenter.bus_sales_order_vehicle bv on bv.linkSid = bdad.vinSid a.vehModelSid
left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid UNION ALL
left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bo.sid SELECT COUNT(a.id) AS scount,
left join anrui_fin.fin_uncollected_receivables_detailed fd a.useOrgSid,
on fd.busVinSid = bv.sid a.name,
left join anrui_fin.fin_selected_receivables_detailed fs a.contractNo,
on fs.receivablesSid = fd.sid a.vehMConfigSid,
left join anrui_base.base_vehicle bbv on bbv.sid = bv.linkSid a.vehModelSid
where ba.nodeState = '已办结' FROM (SELECT bdad.id,
and ba.paymentMethodKey = 1 ba.useOrgSid,
and bbv.vehicleState = '0002' bm.modelConfigSid AS vehMConfigSid,
group by bv.sid, ba.useOrgSid, bm.modelSid, bm.modelConfigSid bm.modelSid AS vehModelSid,
having sum(fd.reveivableMoney) > ifnull(sum(fs.subscriptionMoney), 0)) cc 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 ) s
on r.useOrgSid = s.useOrgSid on r.useOrgSid = s.useOrgSid
and r.vehModelSid = s.vehModelSid 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 update daily_report r inner join (SELECT
from ( sum( cc.scount ) AS scount,
select (sum(fd.reveivableMoney) - sum(fs.subscriptionMoney)) 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, ba.useOrgSid,
bm.modelConfigSid as vehMConfigSid, bm.modelConfigSid AS vehMConfigSid,
bm.modelSid as vehModelSid bm.modelSid AS vehModelSid,
from anrui_buscenter.bus_delivered_apply_details bdad so.NAME,
left join anrui_buscenter.bus_delivered_apply ba on ba.sid = bdad.applySid SUM( s.reveivableMoney ),
left join anrui_buscenter.bus_sales_order_vehicle bv on bv.sid = bdad.busVinSid SUM( s.subscriptionMoney ),
left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid bo.contractNo,
left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bo.sid (
left join anrui_fin.fin_uncollected_receivables_detailed fd SUM( s.reveivableMoney ) - SUM( s.subscriptionMoney )) AS scount
on fd.busVinSid = bdad.busVinSid FROM
left join anrui_fin.fin_selected_receivables_detailed fs anrui_buscenter.bus_delivered_apply_details bdad
on fs.receivablesSid = fd.sid LEFT JOIN anrui_buscenter.bus_delivered_apply ba ON ba.sid = bdad.applySid
where ba.nodeState = '已办结' LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv ON bv.sid = bdad.busVinSid
and ba.typeState = 1 LEFT JOIN anrui_buscenter.bus_sales_order bo ON bo.sid = bv.salesOrderSid
group by bdad.busVinSid, ba.useOrgSid, bm.modelSid, bm.modelConfigSid LEFT JOIN anrui_buscenter.bus_sales_order_model bm ON bm.salesOrderSid = bo.sid
having sum(fd.reveivableMoney) > ifnull(sum(fs.subscriptionMoney), 0) LEFT JOIN (
union all SELECT
select (sum(fd.reveivableMoney) - sum(fs.subscriptionMoney)) as scount, 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, ba.useOrgSid,
bm.modelConfigSid as vehMConfigSid, bm.modelSid,
bm.modelSid as vehModelSid bm.modelConfigSid
from anrui_buscenter.bus_arrears_carry_vehicle_details bdad HAVING
left join anrui_buscenter.bus_arrears_carry_vehicle_apply ba SUM( s.reveivableMoney ) > SUM( s.subscriptionMoney )) a
on ba.sid = bdad.applySid GROUP BY
left join anrui_buscenter.bus_sales_order_vehicle bv on bv.linkSid = bdad.vinSid a.useOrgSid,
left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid a.vehMConfigSid,
left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bo.sid a.vehModelSid UNION ALL
left join anrui_fin.fin_uncollected_receivables_detailed fd SELECT
on fd.busVinSid = bv.sid SUM( a.scount ) AS scount,
left join anrui_fin.fin_selected_receivables_detailed fs a.useOrgSid,
on fs.receivablesSid = fd.sid a.NAME,
left join anrui_base.base_vehicle bbv on bbv.sid = bv.linkSid a.contractNo,
where ba.nodeState = '已办结' a.vehMConfigSid,
and ba.paymentMethodKey = 1 a.vehModelSid
and bbv.vehicleState = '0002' FROM
group by bv.sid, ba.useOrgSid, bm.modelSid, bm.modelConfigSid (
having sum(fd.reveivableMoney) > ifnull(sum(fs.subscriptionMoney), 0)) cc 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 ) s
on r.useOrgSid = s.useOrgSid on r.useOrgSid = s.useOrgSid
and r.vehModelSid = s.vehModelSid and r.vehModelSid = s.vehModelSid
@ -734,38 +905,109 @@ where DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE();
-- 金融未放款数量--- 截止当日贷款业务已出库且融资放款未认款的台数 -- 金融未放款数量--- 截止当日贷款业务已出库且融资放款未认款的台数
update daily_report r inner join ( update daily_report r inner join (
select count(bv.id) as scount, bo.useOrgSid, bm.modelSid, bm.modelConfigSid, fd.reveivableMoney 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 from anrui_buscenter.bus_sales_order_vehicle bv
left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid 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_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_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 (
left join anrui_fin.fin_selected_receivables_detailed fs on fs.receivablesSid = fd.sid SELECT
where bo.payTypeKey = 2 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 = '融资放款' 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' and bbv.vehicleState = '0002'
group by bv.sid, bo.useOrgSid, bm.modelSid, bm.modelConfigSid group by bv.sid, bo.useOrgSid, bm.modelSid, bm.modelConfigSid
having fd.reveivableMoney > ifnull(sum(fs.subscriptionMoney), 0)) as s on HAVING
r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.modelSid AND r.vehMConfigSid = s.modelConfigSid 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 SET r.`loan_not_count`=s.scount
WHERE DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE(); WHERE DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE();
-- 金融未放款金额-- 截止当日贷款业务已出库且融资放款未认款的台数融资放款金额之和 -- 金融未放款金额-- 截止当日贷款业务已出库且融资放款未认款的台数融资放款金额之和
update daily_report r inner join ( update daily_report r inner join (
select sum(fd.reveivableMoney) as scount, bo.useOrgSid, bm.modelSid, bm.modelConfigSid, fd.reveivableMoney SELECT
from anrui_buscenter.bus_sales_order_vehicle bv SUM( a.scount ) AS scount,
left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid a.useOrgSid,
left join anrui_base.base_vehicle bbv on bbv.sid = bv.linkSid a.NAME,
left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bv.salesOrderSid a.contractNo,
left join anrui_fin.fin_uncollected_receivables_detailed fd on fd.busVinSid = bv.sid a.vehMConfigSid,
left join anrui_fin.fin_selected_receivables_detailed fs on fs.receivablesSid = fd.sid a.vehModelSid
where bo.payTypeKey = 2 FROM
and fd.receivablesName = '融资放款' (SELECT
and bbv.vehicleState = '0002' bv.id,
group by bv.sid, bo.useOrgSid, bm.modelSid, bm.modelConfigSid bo.useOrgSid,
having fd.reveivableMoney > ifnull(sum(fs.subscriptionMoney), 0)) as s on bm.modelConfigSid AS vehMConfigSid,
r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.modelSid AND r.vehMConfigSid = s.modelConfigSid 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) SET r.`loan_not_amount`=ROUND(s.scount / 10000, 2)
WHERE DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE(); WHERE DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE();

Loading…
Cancel
Save