Browse Source

Merge remote-tracking branch 'origin/master'

master
God 1 year ago
parent
commit
1b3617f9ad
  1. 24
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java
  2. 108
      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. 53
      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. 510
      doc/databases/报表中心.sql

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

@ -3759,11 +3759,11 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
if (bankResultBean.getData() != null) {
LoanFinBank loanFinBank = bankResultBean.getData();
if (null != loanFinBank.getReAdvances()) {
BigDecimal paymentMoney = planDetails.getPaymentMoney();
String subscriptionMoney = v.getSubscriptionMoney();
BigDecimal subtract = paymentMoney.subtract(new BigDecimal(subscriptionMoney));
planDetails.setPaymentMoney(subtract);
loanRepaymentPlanDetailsFeign.updateByEntity(planDetails);
BigDecimal paymentMoney = planDetails.getPaymentMoney();
String subscriptionMoney = v.getSubscriptionMoney();
BigDecimal subtract = paymentMoney.subtract(new BigDecimal(subscriptionMoney));
planDetails.setPaymentMoney(subtract);
loanRepaymentPlanDetailsFeign.updateByEntity(planDetails);
if (loanFinBank.getReAdvances() == 1) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
@ -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);

108
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.stkinstock.StkInStock;
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.GeneralVoucher;
import com.yxt.anrui.fin.api.kingdee.voucher.PaymentVoucher;
import com.yxt.anrui.fin.api.kingdee.voucher.Voucher;
import com.yxt.anrui.fin.api.kingdee.voucher.*;
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.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.voucher.VoucherService;
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.core.result.ResultBean;
import io.swagger.annotations.Api;
@ -73,6 +71,7 @@ import java.util.List;
@RequestMapping("/finKingDee")
@Slf4j
public class FinKingDeeFeignRest implements FinKingDeeFeign {
/**
* 应付单service
*/
@ -202,6 +201,7 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
@Autowired
private DictCommonFeign dictCommonFeign;
@ApiOperation("入账暂存应付单的接口")
@PostMapping("/draftEntryBill")
@ResponseBody
@ -255,11 +255,23 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
dto1.setSummary(voucherDetail.getBankName() + "贷款");
dto2.setSummary(voucherDetail.getBankName() + "贷款");
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);
}
newVoucher.setResultDetails(resultDetails);
}
return null;
// log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(newVoucher));
return voucherService.saveVoucher(newVoucher);
}
/**
@ -303,7 +315,7 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
}
newVoucher.setResultDetails(resultDetails);
}
// log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(newVoucher));
// log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(newVoucher));
return voucherService.saveVoucher(newVoucher);
}
@ -315,7 +327,35 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
*/
@Override
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
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.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign;
import com.yxt.anrui.base.common.enums.BillTypeEnum;
import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.buscenter.api.buscenterfile.BuscenterFile;
import com.yxt.anrui.buscenter.api.buscenterfile.BuscenterFileEnum;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.buscenter.api.bussolutionschange.BusSolutionsChangeFiles;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer;
import com.yxt.anrui.fin.api.kingdee.voucher.GeneralVoucher;
import com.yxt.anrui.fin.api.kingdee.voucher.SceneCodeEnum;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery;
@ -34,11 +46,14 @@ import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryRecordVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.biz.loanbuckleapplyrecord.LoanBuckleApplyRecordService;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
@ -88,6 +103,18 @@ public class LoanBuckleApplyService extends MybatisBaseService<LoanBuckleApplyMa
private FlowTaskFeign flowTaskFeign;
@Autowired
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) {
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());
} 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) {
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);
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}
AND s.isDelete = '0'
</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>

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);
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.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basetrailer.BaseTrailerDetailsVo;
import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateDto;
import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateEnum;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign;
import com.yxt.anrui.base.common.enums.BillTypeEnum;
import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.buscenter.api.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.app.order.AppOrderDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice;
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.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.bdcustomer.BdCustomer;
import com.yxt.anrui.fin.api.kingdee.voucher.GeneralVoucher;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
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.SysUserFeign;
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.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.*;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.flow.*;
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.biz.loanbuckleapplyrecord.LoanBuckleApplyRecordService;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecordService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
@ -120,6 +105,12 @@ public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonth
private FinKingDeeFeign finKingDeeFeign;
@Autowired
private BusSalesOrderVehicleFeign busSalesOrderVehicleFeign;
@Autowired
private BusSalesOrderBorrowerFeign busSalesOrderBorrowerFeign;
@Autowired
private BusSalesOrderFeign busSalesOrderFeign;
@Autowired
private BasePurchaseSystemFeign basePurchaseSystemFeign;
public ResultBean<LoanMonthlyAccrualApplyInit> accrualInit(String orgPath) {
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,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy());
//推送优惠包交接数据
//推送月还计提凭证数据
Future future = pool.submit(() -> {
pushAccrualVoucher(businessSid);
});
@ -705,9 +696,46 @@ public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonth
voucherDetail.setDeptCode(organizationDeptVo.getOrgCode());
}
String busVinSid = planDetails.getBusVinSid();
BusSalesOrderVehicle orderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData();
if (null != orderVehicle) {
voucherDetail.setCustomerCode(orderVehicle.getTemporaryNo());
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(planDetails.getDueMoney());
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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModpriceImportReturn;
import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModpriceImportVo;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempExportVo;
import com.yxt.anrui.fin.api.finmanufacturerbank.FinManufacturerBank;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRFeign;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer;
import com.yxt.anrui.fin.api.kingdee.voucher.GeneralVoucher;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
@ -20,10 +33,12 @@ import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyInit;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleHistoryRecord;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApply;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord;
import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameter;
import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterQuery;
import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.*;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForLateVoucher;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsDto;
import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord;
@ -55,6 +70,7 @@ import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.Predicate;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -75,6 +91,18 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
private SysUserFeign sysUserFeign;
@Autowired
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) {
ResultBean<String> rb = ResultBean.fireFail();
@ -701,6 +729,7 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
orgSidPath = orgSidPath.substring(0, i3);
String pushUseOrgSid = orgSidPath;
qw.like("p.orgSidPath", orgSidPath);
qw.ne("h.buckleKey", "002");
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 {
return rb.setMsg("暂无可更新的还款记录");
}
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) {
ResultBean<LoanBuckleApplyInit> rb = ResultBean.fireFail();
LoanBuckleApplyInit vo = new LoanBuckleApplyInit();
@ -1072,7 +1198,7 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
Date u = sdf.parse(record.getUpdateDate());
Date d = sdf.parse(record.getDueDate());
if (d.compareTo(u) <= 0) {
BigDecimal sum = new BigDecimal(2);
BigDecimal sum = new BigDecimal(0);
if (StringUtils.isNotBlank(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.yxt.anrui.riskcenter.api.loanrepaymenthistory.DifferenceVo;
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.MonRepayDetails;
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);
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}
WHERE busVinSid = #{busVinSid}
</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
FROM loan_repayment_plan_details
@ -243,4 +251,197 @@
resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails">
select * from loan_repayment_plan_details where busVinSid =#{busVinSid}
</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>

53
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java

@ -22,16 +22,14 @@ import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.DifferenceVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.HistoryOverDueVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryDto;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsDto;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayPeriodDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.*;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.*;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo;
import com.yxt.anrui.riskcenter.api.loansolutionsotherpolicy.LoanSolutionsOtherpolicy;
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformation;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentschedule.LoanRepaymentScheduleService;
import com.yxt.anrui.riskcenter.biz.loansolutions.LoanSolutionsService;
import com.yxt.anrui.riskcenter.biz.loansolutionsotherpolicy.LoanSolutionsOtherpolicyService;
import com.yxt.anrui.riskcenter.biz.loanwarrantinformation.LoanWarrantInformationService;
@ -72,7 +70,8 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
@Autowired
private LoanRepaymentHistoryService loanRepaymentHistoryService;
@Autowired
private LoanRepaymentScheduleService loanRepaymentScheduleService;
@Transactional(rollbackFor = Exception.class)
public ResultBean<String> savePlanDetails(LoanRepaymentPlanDetailsDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
@ -114,8 +113,8 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
return baseMapper.planList();
}
public int updateTime(String bankName, Date updateTime,String useOrgSid) {
return baseMapper.updateTime(bankName,updateTime,useOrgSid);
public int updateTime(String bankName, Date updateTime, String useOrgSid) {
return baseMapper.updateTime(bankName, updateTime, useOrgSid);
}
public List<HistoryOverDueVo> overDueVoList(String useOrgSid) {
@ -123,7 +122,7 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
}
public int updateOverDueState(List<String> planSids) {
return baseMapper.updateOverDueState(planSids);
return baseMapper.updateOverDueState(planSids);
}
public String reAdvancesOrPaymentMoney(String pSid) {
@ -138,11 +137,45 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
return baseMapper.InsertForCheckPaymentAndBank(sid);
}
public int saveVehMark(String busVinSid,String vehMark) {
return baseMapper.saveVehMark(busVinSid,vehMark);
public int saveVehMark(String busVinSid, String vehMark) {
return baseMapper.saveVehMark(busVinSid, vehMark);
}
public List<LoanRepaymentPlanDetails> getListByBusVinSid(String 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.extension.api.R;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign;
import com.yxt.anrui.buscenter.api.bushandover.BusHandover;
import com.yxt.anrui.buscenter.api.bushandoveritems.BusHandoverItems;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
@ -23,12 +25,17 @@ import com.yxt.anrui.buscenter.api.busvehicledatahandover.BusDataListPdfVo;
import com.yxt.anrui.buscenter.api.busvehicledatahandover.BusVehicleDataHandoverPdfVo;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer;
import com.yxt.anrui.fin.api.kingdee.voucher.GeneralVoucher;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserInfoVo;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBank;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyVo;
@ -41,6 +48,7 @@ import com.yxt.anrui.riskcenter.api.loansolutionsotherpolicy.LoanSolutionsOtherp
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformation;
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformationQuery;
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformationVo;
import com.yxt.anrui.riskcenter.biz.loanfinbank.LoanFinBankService;
import com.yxt.anrui.riskcenter.biz.loanfinotherPolicy.LoanFinOtherPolicyService;
import com.yxt.anrui.riskcenter.biz.loanfinpolicy.LoanFinPolicyService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
@ -85,6 +93,12 @@ import java.util.stream.Collectors;
@Service
public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepaymentScheduleMapper, LoanRepaymentSchedule> {
@Autowired
private LoanFinBankService loanFinBankService;
@Autowired
private BasePurchaseSystemFeign basePurchaseSystemFeign;
@Autowired
private FinKingDeeFeign finKingDeeFeign;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
@ -282,6 +296,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
ResultBean<String> rb = ResultBean.fireFail();
LoanRepaymentSchedule loanRepaymentSchedule = baseMapper.selectByContractSid(dto.getSalesOrderSid());
String orderSid = "";
String scheduleSid = "";
BusSalesOrderLoancontractDetailsVo loancontract = busSalesOrderLoancontractFeign.fetchDetailsBySid(dto.getSalesOrderSid()).getData();
if (null != loancontract) {
if (StringUtils.isNotBlank(loancontract.getSalesOrderSid())) {
@ -315,6 +330,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
}
}
if (null != loanRepaymentSchedule) {
scheduleSid = loanRepaymentSchedule.getSid();
BeanUtil.copyProperties(dto, loanRepaymentSchedule, "id", "sid");
loanRepaymentSchedule.setLoanContractSid(dto.getSalesOrderSid());
loanRepaymentSchedule.setSalesOrderSid(orderSid);
@ -658,6 +674,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
} else {
LoanRepaymentSchedule entity = new LoanRepaymentSchedule();
scheduleSid = entity.getSid();
BeanUtil.copyProperties(dto, entity, "id", "sid");
entity.setLoanContractSid(dto.getSalesOrderSid());
entity.setSalesOrderSid(orderSid);
@ -1040,14 +1057,16 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
}
}
}
// 使用多线程推送站内信发送短信
}
if (StringUtils.isNotBlank(scheduleSid)) {
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
LoanRepaymentSchedule schedule = fetchBySid(entity.getSid());
LoanRepaymentSchedule schedule = fetchBySid(scheduleSid);
// 使用多线程推送站内信发送短信
Future future1 = pool.submit(() -> {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (null != schedule) {
@ -1149,6 +1168,11 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
messageFeign.pushNoUriMessage(pushMessageQuery);
}
});
//推送还款计划总凭证
Future future2 = pool.submit(() -> {
pushScheduleVoucher(schedule);
});
} catch (Exception e) {
e.printStackTrace();
}
@ -1170,6 +1194,288 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
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.setUpdateState("1");
transfer.setUpdateTime(new DateTime());
BigDecimal money = new BigDecimal(2);
BigDecimal money = new BigDecimal(0);
if (null != applyRecord.getTransferPrincipal()) {
money = applyRecord.getTransferPrincipal();
}

510
doc/databases/报表中心.sql

@ -11,13 +11,16 @@ UPDATE daily_report r
and LENGTH(offlineDate) > 0
and bo.sid not in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo)
group by bo.createOrgSid
union all
select ifnull(sum(bo.platformNo), 0) as scount, bo.useOrgSid, bd.vehicleSid, bd.configSid modelConfigSid
union all
select ifnull(sum(bo.platformNo), 0) as scount,
bo.useOrgSid,
bd.vehicleSid,
bd.configSid modelConfigSid
from anrui_base.bus_vehicle_order bo
left join anrui_base.bus_vehicle_apply_detail bd on bd.sid = bo.purchaseApplyMediumModelSid
where
bo.isDelete <> 1
and LENGTH(offlineDate) = 0 and bo.orderStatus != '已作废'
left join anrui_base.bus_vehicle_apply_detail bd on bd.sid = bo.purchaseApplyMediumModelSid
where bo.isDelete <> 1
and LENGTH(offlineDate) = 0
and bo.orderStatus != '已作废'
and bo.sid not in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo)
group by bo.createOrgSid
) as v
@ -36,22 +39,42 @@ UPDATE daily_report r
INNER JOIN (
select sum(v.scount) as scount, v.useOrgSid, v.modelSid, v.modelConfigSid
from (
select ifnull(sum(si.num), 0) as scount, si.useOrgSid, si.modelSid, si.configSid modelConfigSid
from anrui_base.bus_vehicle_order bo
left join anrui_scm.scm_apply_inbound si on bo.purchaseRequisitionSid = si.vehicleOrderSid
where (si.nodeState != '已办结' and si.nodeState != '终止')
and bo.isDelete <> 1
and LENGTH(offlineDate) > 0
and bo.sid in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo)
group by bo.createOrgSid
union all
select ifnull(sum(bo.id), 0) as scount, bo.useOrgSid, bd.vehicleSid, bd.configSid modelConfigSid
from anrui_base.bus_vehicle_order bo
left join anrui_base.bus_vehicle_apply_detail bd on bd.sid = bo.purchaseApplyMediumModelSid
where
bo.isDelete <> 1
and LENGTH(offlineDate) >0
and bo.sid in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo)
/* select ifnull(sum(si.num), 0) as scount, si.useOrgSid, si.modelSid, si.configSid modelConfigSid
from anrui_base.bus_vehicle_order bo
left join anrui_scm.scm_apply_inbound si on bo.purchaseRequisitionSid = si.vehicleOrderSid
where (si.nodeState != '已办结' and si.nodeState != '终止')
and bo.isDelete <> 1
and LENGTH(offlineDate) > 0
and bo.sid in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo)
group by bo.createOrgSid
union all
select ifnull(sum(bo.platformNo), 0) as scount, bo.useOrgSid, bd.vehicleSid, bd.configSid modelConfigSid
from anrui_base.bus_vehicle_order bo
left join anrui_base.bus_vehicle_apply_detail bd on bd.sid = bo.purchaseApplyMediumModelSid
where
bo.isDelete <> 1
and LENGTH(offlineDate) >0
and bo.sid in (select bbbbo.linkSid from anrui_buscenter.bus_sales_vehicle_order bbbbo)
group by bo.createOrgSid*/
SELECT si.useOrgSid,
si.modelSid,
si.configSid modelConfigSid,
bo.sid,
ifnull(ab.counts, 0) as scount
FROM anrui_base.bus_vehicle_order bo
LEFT JOIN anrui_scm.scm_apply_inbound si ON bo.purchaseRequisitionSid = si.vehicleOrderSid
LEFT JOIN (
SELECT bbbbo.linkSid,
ifnull(count(bbbbo.linkSid), 0) as counts
FROM anrui_buscenter.bus_sales_vehicle_order bbbbo
LEFT JOIN anrui_buscenter.bus_sales_order bb ON bb.sid = bbbbo.salesOrderSid
WHERE LENGTH(bb.nodeState) > 0
AND bb.nodeState != '终止'
group by bbbbo.linkSid
) ab ON ab.linkSid = bo.sid
WHERE (si.nodeState != '已办结' AND si.nodeState != '终止')
AND bo.isDelete <> 1
AND LENGTH(offlineDate) > 0
group by bo.createOrgSid
) as v
GROUP BY v.`useOrgSid`,
@ -253,7 +276,9 @@ UPDATE daily_report r
left join anrui_base.base_vehicle_out bvo on bv.sid = bvo.vinSid
left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid
where bv.salesDate like concat('%', CURDATE(), '%')
and bvoa.saleTypeKey = '001' and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or length(bvo.materialTypeValue) = 0)
and bvoa.saleTypeKey = '001'
and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or
length(bvo.materialTypeValue) = 0)
group by bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss
group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid
) AS s ON r.useOrgSid = s.useOrgSid
@ -269,7 +294,9 @@ UPDATE daily_report r
left join anrui_base.base_vehicle_out bvo on bv.sid = bvo.vinSid
left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid
where bv.salesDate like concat('%', CURDATE(), '%')
and bvoa.saleTypeKey = '002' and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or length(bvo.materialTypeValue) = 0)
and bvoa.saleTypeKey = '002'
and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or
length(bvo.materialTypeValue) = 0)
group by bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss
group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid
) AS s ON r.useOrgSid = s.useOrgSid
@ -302,7 +329,9 @@ UPDATE daily_report r
left join anrui_base.base_vehicle_out bvo on bv.sid = bvo.vinSid
left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid
where bv.salesDate like concat('%', DATE_FORMAT(CURDATE(), '%Y-%m'), '%')
and bvoa.saleTypeKey = '001' and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or length(bvo.materialTypeValue) = 0)
and bvoa.saleTypeKey = '001'
and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or
length(bvo.materialTypeValue) = 0)
group by bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss
group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid
) AS s ON r.useOrgSid = s.useOrgSid
@ -318,7 +347,9 @@ UPDATE daily_report r
left join anrui_base.base_vehicle_out bvo on bv.sid = bvo.vinSid
left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid
where bv.salesDate like concat('%', DATE_FORMAT(CURDATE(), '%Y-%m'), '%')
and bvoa.saleTypeKey = '002' and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or length(bvo.materialTypeValue) = 0)
and bvoa.saleTypeKey = '002'
and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or
length(bvo.materialTypeValue) = 0)
group by bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss
group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid
) AS s ON r.useOrgSid = s.useOrgSid
@ -351,7 +382,9 @@ UPDATE daily_report r
left join anrui_base.base_vehicle_out bvo on bv.sid = bvo.vinSid
left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid
where bv.salesDate like concat('%', DATE_FORMAT(CURDATE(), '%Y'), '%')
and bvoa.saleTypeKey = '001' and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or length(bvo.materialTypeValue) = 0)
and bvoa.saleTypeKey = '001'
and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or
length(bvo.materialTypeValue) = 0)
group by bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss
group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid
) AS s ON r.useOrgSid = s.useOrgSid
@ -367,7 +400,9 @@ UPDATE daily_report r
left join anrui_base.base_vehicle_out bvo on bv.sid = bvo.vinSid
left join anrui_base.base_vehicle_out_apply bvoa on bvoa.sid = bvo.mainSid
where bv.salesDate like concat('%', DATE_FORMAT(CURDATE(), '%Y'), '%')
and bvoa.saleTypeKey = '002' and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or length(bvo.materialTypeValue) = 0)
and bvoa.saleTypeKey = '002'
and (bvo.materialTypeKey = '001' or bvo.materialTypeValue is null or
length(bvo.materialTypeValue) = 0)
group by bv.useOrgSid, bv.modelSid, bv.modelConfigSid) ss
group by ss.useOrgSid, ss.modelSid, ss.modelConfigSid
) AS s ON r.useOrgSid = s.useOrgSid
@ -635,46 +670,98 @@ where DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE();
-- ==============================================
-- 欠款出库数量、欠款出库金额万元、金融未放款数量、金融未放款金额(万元)
-- 欠款出库数量--截止当日欠款出库申请通过且未回清款的台数
update daily_report r inner join (select sum(cc.scount) as scount, cc.useOrgSid, cc.vehMConfigSid, cc.vehModelSid
from (
select count(bdad.id) as scount,
ba.useOrgSid,
bm.modelConfigSid as vehMConfigSid,
bm.modelSid as vehModelSid
from anrui_buscenter.bus_delivered_apply_details bdad
left join anrui_buscenter.bus_delivered_apply ba on ba.sid = bdad.applySid
left join anrui_buscenter.bus_sales_order_vehicle bv on bv.sid = bdad.busVinSid
left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid
left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bo.sid
left join anrui_fin.fin_uncollected_receivables_detailed fd
on fd.busVinSid = bdad.busVinSid
left join anrui_fin.fin_selected_receivables_detailed fs
on fs.receivablesSid = fd.sid
where ba.nodeState = '已办结'
and ba.typeState = 1
group by bdad.busVinSid, ba.useOrgSid, bm.modelSid, bm.modelConfigSid
having sum(fd.reveivableMoney) > ifnull(sum(fs.subscriptionMoney), 0)
union all
select count(bdad.id) as scount,
ba.useOrgSid,
bm.modelConfigSid as vehMConfigSid,
bm.modelSid as vehModelSid
from anrui_buscenter.bus_arrears_carry_vehicle_details bdad
left join anrui_buscenter.bus_arrears_carry_vehicle_apply ba
on ba.sid = bdad.applySid
left join anrui_buscenter.bus_sales_order_vehicle bv on bv.linkSid = bdad.vinSid
left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid
left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bo.sid
left join anrui_fin.fin_uncollected_receivables_detailed fd
on fd.busVinSid = bv.sid
left join anrui_fin.fin_selected_receivables_detailed fs
on fs.receivablesSid = fd.sid
left join anrui_base.base_vehicle bbv on bbv.sid = bv.linkSid
where ba.nodeState = '已办结'
and ba.paymentMethodKey = 1
and bbv.vehicleState = '0002'
group by bv.sid, ba.useOrgSid, bm.modelSid, bm.modelConfigSid
having sum(fd.reveivableMoney) > ifnull(sum(fs.subscriptionMoney), 0)) cc
update daily_report r inner join (SELECT SUM(cc.scount) AS scount,
cc.useOrgSid,
cc.vehMConfigSid,
cc.vehModelSid
FROM (
SELECT COUNT(a.id) AS scount,
a.useOrgSid,
a.NAME,
a.contractNo,
a.vehMConfigSid,
a.vehModelSid
FROM (
SELECT bdad.id,
ba.useOrgSid,
bm.modelConfigSid AS vehMConfigSid,
bm.modelSid AS vehModelSid,
so.NAME,
SUM(s.reveivableMoney),
SUM(s.subscriptionMoney),
bo.contractNo
FROM anrui_buscenter.bus_delivered_apply_details bdad
LEFT JOIN anrui_buscenter.bus_delivered_apply ba ON ba.sid = bdad.applySid
LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv ON bv.sid = bdad.busVinSid
LEFT JOIN anrui_buscenter.bus_sales_order bo ON bo.sid = bv.salesOrderSid
LEFT JOIN anrui_buscenter.bus_sales_order_model bm ON bm.salesOrderSid = bo.sid
LEFT JOIN (
SELECT fd.reveivableMoney,
fd.busVinSid,
IFNULL(SUM(fs.subscriptionMoney), 0) AS subscriptionMoney
FROM anrui_fin.fin_uncollected_receivables_detailed fd
LEFT JOIN anrui_fin.fin_selected_receivables_detailed fs
ON fs.receivablesSid = fd.sid
WHERE fd.kxState = '01'
AND fs.auditState = 3
GROUP BY fd.sid
) s ON s.busVinSid = bv.sid
LEFT JOIN anrui_portal.sys_organization so ON so.sid = ba.useOrgSid
WHERE ba.nodeState = '已办结'
AND ba.typeState = 1
GROUP BY bv.sid,
ba.useOrgSid,
bm.modelSid,
bm.modelConfigSid
HAVING SUM(s.reveivableMoney) > SUM(s.subscriptionMoney)) a
GROUP BY a.useOrgSid,
a.vehMConfigSid,
a.vehModelSid
UNION ALL
SELECT COUNT(a.id) AS scount,
a.useOrgSid,
a.name,
a.contractNo,
a.vehMConfigSid,
a.vehModelSid
FROM (SELECT bdad.id,
ba.useOrgSid,
bm.modelConfigSid AS vehMConfigSid,
bm.modelSid AS vehModelSid,
so.name,
SUM(s.reveivableMoney),
SUM(s.subscriptionMoney),
bo.contractNo
FROM anrui_buscenter.bus_arrears_carry_vehicle_details bdad
LEFT JOIN anrui_buscenter.bus_arrears_carry_vehicle_apply ba
ON ba.sid = bdad.applySid
LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv ON bv.linkSid = bdad.vinSid
LEFT JOIN anrui_buscenter.bus_sales_order bo ON bo.sid = bv.salesOrderSid
LEFT JOIN anrui_buscenter.bus_sales_order_model bm ON bm.salesOrderSid = bo.sid
LEFT JOIN anrui_base.base_vehicle bbv ON bbv.sid = bv.linkSid
LEFT JOIN (SELECT fd.reveivableMoney,
fd.busVinSid,
IFNULL(SUM(fs.subscriptionMoney), 0) AS subscriptionMoney
FROM anrui_fin.fin_uncollected_receivables_detailed fd
LEFT JOIN anrui_fin.fin_selected_receivables_detailed fs
ON fs.receivablesSid = fd.sid
WHERE fd.kxState = '01'
AND fs.auditState = 3
GROUP BY fd.sid) s ON s.busVinSid = bv.sid
LEFT JOIN anrui_portal.sys_organization so ON so.sid = ba.useOrgSid
WHERE ba.nodeState = '已办结'
AND ba.paymentMethodKey = 1
AND bbv.vehicleState = '0002'
GROUP BY bv.sid,
ba.useOrgSid,
bm.modelSid,
bm.modelConfigSid
HAVING SUM(s.reveivableMoney) > SUM(s.subscriptionMoney)) a
GROUP BY a.useOrgSid,
a.vehMConfigSid, a.vehModelSid) cc
GROUP BY cc.useOrgSid,
cc.vehMConfigSid,
cc.vehModelSid
) s
on r.useOrgSid = s.useOrgSid
and r.vehModelSid = s.vehModelSid
@ -684,46 +771,130 @@ where DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE();
-- 欠款出库金融--截止当日欠款出库申请通过且未回清款的台数欠款总额
update daily_report r inner join (select sum(cc.scount) as scount, cc.useOrgSid, cc.vehMConfigSid, cc.vehModelSid
from (
select (sum(fd.reveivableMoney) - sum(fs.subscriptionMoney)) as scount,
ba.useOrgSid,
bm.modelConfigSid as vehMConfigSid,
bm.modelSid as vehModelSid
from anrui_buscenter.bus_delivered_apply_details bdad
left join anrui_buscenter.bus_delivered_apply ba on ba.sid = bdad.applySid
left join anrui_buscenter.bus_sales_order_vehicle bv on bv.sid = bdad.busVinSid
left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid
left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bo.sid
left join anrui_fin.fin_uncollected_receivables_detailed fd
on fd.busVinSid = bdad.busVinSid
left join anrui_fin.fin_selected_receivables_detailed fs
on fs.receivablesSid = fd.sid
where ba.nodeState = '已办结'
and ba.typeState = 1
group by bdad.busVinSid, ba.useOrgSid, bm.modelSid, bm.modelConfigSid
having sum(fd.reveivableMoney) > ifnull(sum(fs.subscriptionMoney), 0)
union all
select (sum(fd.reveivableMoney) - sum(fs.subscriptionMoney)) as scount,
ba.useOrgSid,
bm.modelConfigSid as vehMConfigSid,
bm.modelSid as vehModelSid
from anrui_buscenter.bus_arrears_carry_vehicle_details bdad
left join anrui_buscenter.bus_arrears_carry_vehicle_apply ba
on ba.sid = bdad.applySid
left join anrui_buscenter.bus_sales_order_vehicle bv on bv.linkSid = bdad.vinSid
left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid
left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bo.sid
left join anrui_fin.fin_uncollected_receivables_detailed fd
on fd.busVinSid = bv.sid
left join anrui_fin.fin_selected_receivables_detailed fs
on fs.receivablesSid = fd.sid
left join anrui_base.base_vehicle bbv on bbv.sid = bv.linkSid
where ba.nodeState = '已办结'
and ba.paymentMethodKey = 1
and bbv.vehicleState = '0002'
group by bv.sid, ba.useOrgSid, bm.modelSid, bm.modelConfigSid
having sum(fd.reveivableMoney) > ifnull(sum(fs.subscriptionMoney), 0)) cc
update daily_report r inner join (SELECT
sum( cc.scount ) AS scount,
cc.useOrgSid,
cc.vehMConfigSid,
cc.vehModelSid
FROM
(
SELECT
SUM( a.scount ) AS scount,
a.useOrgSid,
a.NAME,
a.contractNo,
a.vehMConfigSid,
a.vehModelSid
FROM
(
SELECT
bdad.id,
ba.useOrgSid,
bm.modelConfigSid AS vehMConfigSid,
bm.modelSid AS vehModelSid,
so.NAME,
SUM( s.reveivableMoney ),
SUM( s.subscriptionMoney ),
bo.contractNo,
(
SUM( s.reveivableMoney ) - SUM( s.subscriptionMoney )) AS scount
FROM
anrui_buscenter.bus_delivered_apply_details bdad
LEFT JOIN anrui_buscenter.bus_delivered_apply ba ON ba.sid = bdad.applySid
LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv ON bv.sid = bdad.busVinSid
LEFT JOIN anrui_buscenter.bus_sales_order bo ON bo.sid = bv.salesOrderSid
LEFT JOIN anrui_buscenter.bus_sales_order_model bm ON bm.salesOrderSid = bo.sid
LEFT JOIN (
SELECT
fd.reveivableMoney,
fd.busVinSid,
IFNULL( SUM( fs.subscriptionMoney ), 0 ) AS subscriptionMoney
FROM
anrui_fin.fin_uncollected_receivables_detailed fd
LEFT JOIN anrui_fin.fin_selected_receivables_detailed fs ON fs.receivablesSid = fd.sid
WHERE
fd.kxState = '01'
AND fs.auditState = 3
GROUP BY
fd.sid
) s ON s.busVinSid = bv.sid
LEFT JOIN anrui_portal.sys_organization so ON so.sid = ba.useOrgSid
WHERE
ba.nodeState = '已办结'
AND ba.typeState = 1
GROUP BY
bv.sid,
ba.useOrgSid,
bm.modelSid,
bm.modelConfigSid
HAVING
SUM( s.reveivableMoney ) > SUM( s.subscriptionMoney )) a
GROUP BY
a.useOrgSid,
a.vehMConfigSid,
a.vehModelSid UNION ALL
SELECT
SUM( a.scount ) AS scount,
a.useOrgSid,
a.NAME,
a.contractNo,
a.vehMConfigSid,
a.vehModelSid
FROM
(
SELECT
bdad.id,
ba.useOrgSid,
bm.modelConfigSid AS vehMConfigSid,
bm.modelSid AS vehModelSid,
so.NAME,
SUM( s.reveivableMoney ),
SUM( s.subscriptionMoney ),
bo.contractNo,
(
SUM( s.reveivableMoney ) - SUM( s.subscriptionMoney )) AS scount
FROM
anrui_buscenter.bus_arrears_carry_vehicle_details bdad
LEFT JOIN anrui_buscenter.bus_arrears_carry_vehicle_apply ba ON ba.sid = bdad.applySid
LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv ON bv.linkSid = bdad.vinSid
LEFT JOIN anrui_buscenter.bus_sales_order bo ON bo.sid = bv.salesOrderSid
LEFT JOIN anrui_buscenter.bus_sales_order_model bm ON bm.salesOrderSid = bo.sid
LEFT JOIN anrui_base.base_vehicle bbv ON bbv.sid = bv.linkSid
LEFT JOIN (
SELECT
fd.reveivableMoney,
fd.busVinSid,
IFNULL( SUM( fs.subscriptionMoney ), 0 ) AS subscriptionMoney
FROM
anrui_fin.fin_uncollected_receivables_detailed fd
LEFT JOIN anrui_fin.fin_selected_receivables_detailed fs ON fs.receivablesSid = fd.sid
WHERE
fd.kxState = '01'
AND fs.auditState = 3
GROUP BY
fd.sid
) s ON s.busVinSid = bv.sid
LEFT JOIN anrui_portal.sys_organization so ON so.sid = ba.useOrgSid
WHERE
ba.nodeState = '已办结'
AND ba.paymentMethodKey = 1
AND bbv.vehicleState = '0002'
GROUP BY
bv.sid,
ba.useOrgSid,
bm.modelSid,
bm.modelConfigSid
HAVING
SUM( s.reveivableMoney ) > SUM( s.subscriptionMoney )) a
GROUP BY
a.useOrgSid,
a.vehMConfigSid,
a.vehModelSid
) cc
GROUP BY
cc.useOrgSid,
cc.vehMConfigSid,
cc.vehModelSid
) s
on r.useOrgSid = s.useOrgSid
and r.vehModelSid = s.vehModelSid
@ -734,38 +905,109 @@ where DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE();
-- 金融未放款数量--- 截止当日贷款业务已出库且融资放款未认款的台数
update daily_report r inner join (
select count(bv.id) as scount, bo.useOrgSid, bm.modelSid, bm.modelConfigSid, fd.reveivableMoney
from anrui_buscenter.bus_sales_order_vehicle bv
left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid
left join anrui_base.base_vehicle bbv on bbv.sid = bv.linkSid
left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bv.salesOrderSid
left join anrui_fin.fin_uncollected_receivables_detailed fd on fd.busVinSid = bv.sid
left join anrui_fin.fin_selected_receivables_detailed fs on fs.receivablesSid = fd.sid
where bo.payTypeKey = 2
and fd.receivablesName = '融资放款'
and bbv.vehicleState = '0002'
group by bv.sid, bo.useOrgSid, bm.modelSid, bm.modelConfigSid
having fd.reveivableMoney > ifnull(sum(fs.subscriptionMoney), 0)) as s on
r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.modelSid AND r.vehMConfigSid = s.modelConfigSid
SELECT
count( a.id ) AS scount,
a.useOrgSid,
a.NAME,
a.contractNo,
a.vehMConfigSid,
a.vehModelSid
FROM
(SELECT bv.id,
bo.useOrgSid,
bm.modelConfigSid AS vehMConfigSid,
bm.modelSid AS vehModelSid,
so.NAME,
SUM(s.reveivableMoney),
SUM(s.subscriptionMoney),
bo.contractNo
from anrui_buscenter.bus_sales_order_vehicle bv
left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid
left join anrui_base.base_vehicle bbv on bbv.sid = bv.linkSid
left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bv.salesOrderSid
LEFT JOIN (
SELECT
fd.reveivableMoney,
fd.busVinSid,
IFNULL( SUM( fs.subscriptionMoney ), 0 ) AS subscriptionMoney
FROM
anrui_fin.fin_uncollected_receivables_detailed fd
LEFT JOIN anrui_fin.fin_selected_receivables_detailed fs ON fs.receivablesSid = fd.sid
WHERE
fd.kxState = '01'
AND fs.auditState = 3
and fd.receivablesName = '融资放款'
GROUP BY
fd.sid
) s ON s.busVinSid = bv.sid
LEFT JOIN anrui_portal.sys_organization so ON so.sid = bo.useOrgSid
where bo.payTypeKey = 2
and bbv.vehicleState = '0002'
group by bv.sid, bo.useOrgSid, bm.modelSid, bm.modelConfigSid
HAVING
SUM( s.reveivableMoney ) > SUM( s.subscriptionMoney )) a
GROUP BY
a.useOrgSid,
a.vehMConfigSid,
a.vehModelSid) as s on
r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.vehModelSid AND r.vehMConfigSid = s.vehMConfigSid
SET r.`loan_not_count`=s.scount
WHERE DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE();
-- 金融未放款金额-- 截止当日贷款业务已出库且融资放款未认款的台数融资放款金额之和
update daily_report r inner join (
select sum(fd.reveivableMoney) as scount, bo.useOrgSid, bm.modelSid, bm.modelConfigSid, fd.reveivableMoney
from anrui_buscenter.bus_sales_order_vehicle bv
left join anrui_buscenter.bus_sales_order bo on bo.sid = bv.salesOrderSid
left join anrui_base.base_vehicle bbv on bbv.sid = bv.linkSid
left join anrui_buscenter.bus_sales_order_model bm on bm.salesOrderSid = bv.salesOrderSid
left join anrui_fin.fin_uncollected_receivables_detailed fd on fd.busVinSid = bv.sid
left join anrui_fin.fin_selected_receivables_detailed fs on fs.receivablesSid = fd.sid
where bo.payTypeKey = 2
and fd.receivablesName = '融资放款'
and bbv.vehicleState = '0002'
group by bv.sid, bo.useOrgSid, bm.modelSid, bm.modelConfigSid
having fd.reveivableMoney > ifnull(sum(fs.subscriptionMoney), 0)) as s on
r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.modelSid AND r.vehMConfigSid = s.modelConfigSid
SELECT
SUM( a.scount ) AS scount,
a.useOrgSid,
a.NAME,
a.contractNo,
a.vehMConfigSid,
a.vehModelSid
FROM
(SELECT
bv.id,
bo.useOrgSid,
bm.modelConfigSid AS vehMConfigSid,
bm.modelSid AS vehModelSid,
so.NAME,
SUM( s.reveivableMoney ),
SUM( s.subscriptionMoney ),
bo.contractNo,
(
SUM( s.reveivableMoney ) - SUM( s.subscriptionMoney )) AS scount
FROM anrui_buscenter.bus_sales_order_vehicle bv
LEFT JOIN anrui_buscenter.bus_sales_order bo ON bo.sid = bv.salesOrderSid
LEFT JOIN anrui_base.base_vehicle bbv ON bbv.sid = bv.linkSid
LEFT JOIN anrui_buscenter.bus_sales_order_model bm ON bm.salesOrderSid = bv.salesOrderSid
LEFT JOIN (
SELECT
fd.reveivableMoney,
fd.busVinSid,
IFNULL( SUM( fs.subscriptionMoney ), 0 ) AS subscriptionMoney
FROM
anrui_fin.fin_uncollected_receivables_detailed fd
LEFT JOIN anrui_fin.fin_selected_receivables_detailed fs ON fs.receivablesSid = fd.sid
WHERE
fd.kxState = '01'
AND fs.auditState = 3
AND fd.receivablesName = '融资放款'
GROUP BY
fd.sid
) s ON s.busVinSid = bv.sid
LEFT JOIN anrui_portal.sys_organization so ON so.sid = bo.useOrgSid
WHERE bo.payTypeKey = 2
AND bbv.vehicleState = '0002'
GROUP BY bv.sid, bo.useOrgSid, bm.modelSid, bm.modelConfigSid
HAVING
SUM( s.reveivableMoney ) > SUM( s.subscriptionMoney )) a
GROUP BY
a.useOrgSid,
a.vehMConfigSid,
a.vehModelSid) as s on
r.useOrgSid = s.useOrgSid AND r.vehModelSid = s.vehModelSid AND r.vehMConfigSid = s.vehMConfigSid
SET r.`loan_not_amount`=ROUND(s.scount / 10000, 2)
WHERE DATE_FORMAT(createTime, '%Y-%m-%d') = CURDATE();

Loading…
Cancel
Save