|
|
@ -48,6 +48,8 @@ import com.yxt.anrui.riskcenter.api.loanoutboundapply.flow.*; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoutboundveh.LoanOutboundVeh; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanrestorereportapply.AlrepaidAndArrVo; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanreturninboundapply.LoanReturnInboundApply; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApply; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCost; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansubletapply.*; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansubletapply.app.AppSubletDetailsVo; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansubletapply.app.AppSubletVinListVo; |
|
|
@ -60,6 +62,8 @@ import com.yxt.anrui.riskcenter.biz.loanredemptionapply.LoanRedemptionApplyServi |
|
|
|
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; |
|
|
|
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService; |
|
|
|
import com.yxt.anrui.riskcenter.biz.loanrestorereportapply.LoanRestoreReportApplyService; |
|
|
|
import com.yxt.anrui.riskcenter.biz.loansecondarysalesapply.LoanSecondarySalesApplyService; |
|
|
|
import com.yxt.anrui.riskcenter.biz.loansecondarysalescost.LoanSecondarySalesCostService; |
|
|
|
import com.yxt.anrui.riskcenter.biz.loansubletveh.LoanSubletVehService; |
|
|
|
import com.yxt.common.base.config.component.FileUploadComponent; |
|
|
|
import com.yxt.common.base.service.MybatisBaseService; |
|
|
@ -126,6 +130,18 @@ public class LoanOutboundApplyService extends MybatisBaseService<LoanOutboundApp |
|
|
|
private FinKingDeeFeign finKingDeeFeign; |
|
|
|
@Autowired |
|
|
|
private LoanRestoreReportApplyService loanRestoreReportApplyService; |
|
|
|
@Autowired |
|
|
|
private BusSalesOrderFeign busSalesOrderFeign; |
|
|
|
@Autowired |
|
|
|
private BusSalesOrderBorrowerFeign busSalesOrderBorrowerFeign; |
|
|
|
@Autowired |
|
|
|
private BasePurchaseSystemFeign basePurchaseSystemFeign; |
|
|
|
@Autowired |
|
|
|
private LoanRepaymentPlanDetailsService loanRepaymentPlanDetailsService; |
|
|
|
@Autowired |
|
|
|
private LoanSecondarySalesApplyService loanSecondarySalesApplyService; |
|
|
|
@Autowired |
|
|
|
private LoanSecondarySalesCostService loanSecondarySalesCostService; |
|
|
|
|
|
|
|
public PagerVo<LoanOutboundApplyVo> listPage(PagerQuery<LoanOutboundApplyQuery> pq) { |
|
|
|
IPage<LoanOutboundApply> page = PagerUtil.queryToPage(pq); |
|
|
@ -608,29 +624,59 @@ public class LoanOutboundApplyService extends MybatisBaseService<LoanOutboundApp |
|
|
|
ResultBean resultBean1 = busSalesOrderVehicleFeign.setRiskState(busVinStateSetQuery); |
|
|
|
busVinStateSetQuery.setState(1); |
|
|
|
ResultBean resultBean2 = busSalesOrderVehicleFeign.setFundState(busVinStateSetQuery); |
|
|
|
//推送金蝶财务其他出库单
|
|
|
|
try { |
|
|
|
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() |
|
|
|
.setNameFormat("demo-pool-%d").build(); |
|
|
|
ExecutorService pool = new org.apache.tomcat.util.threads.ThreadPoolExecutor(2, 100, |
|
|
|
0L, TimeUnit.MILLISECONDS, |
|
|
|
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy()); |
|
|
|
LoanOutboundApply finalLoanOutboundApply = loanOutboundApply; |
|
|
|
Future future1 = pool.submit(() -> { |
|
|
|
//推送其他出库单
|
|
|
|
//TOdO:
|
|
|
|
pushStkOut(finalLoanOutboundApply,busVinSidList); |
|
|
|
}); |
|
|
|
Future future2 = pool.submit(() -> { |
|
|
|
//推送财务凭证
|
|
|
|
//TOdO:
|
|
|
|
pushRiskToFin(finalLoanOutboundApply,busVinSidList); |
|
|
|
}); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
|
|
|
|
}/*else if("二次转租".equals(loanOutboundApply.getDisposal())){ |
|
|
|
busVinStateSetQuery.setState(3); |
|
|
|
ResultBean resultBean1 = busSalesOrderVehicleFeign.setRiskState(busVinStateSetQuery); |
|
|
|
}*/else if("二次销售".equals(loanOutboundApply.getDisposal())){ |
|
|
|
//ToDo:
|
|
|
|
//推送金蝶财务其他出库单
|
|
|
|
try { |
|
|
|
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() |
|
|
|
.setNameFormat("demo-pool-%d").build(); |
|
|
|
ExecutorService pool = new org.apache.tomcat.util.threads.ThreadPoolExecutor(2, 100, |
|
|
|
0L, TimeUnit.MILLISECONDS, |
|
|
|
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy()); |
|
|
|
LoanOutboundApply finalLoanOutboundApply = loanOutboundApply; |
|
|
|
Future future1 = pool.submit(() -> { |
|
|
|
//推送其他出库单
|
|
|
|
//TOdO:
|
|
|
|
pushStkOut(finalLoanOutboundApply,busVinSidList); |
|
|
|
}); |
|
|
|
Future future2 = pool.submit(() -> { |
|
|
|
//推送财务凭证
|
|
|
|
//TOdO:
|
|
|
|
pushRiskToFin2(finalLoanOutboundApply,busVinSidList); |
|
|
|
}); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
//推送金蝶财务其他出库单
|
|
|
|
try { |
|
|
|
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() |
|
|
|
.setNameFormat("demo-pool-%d").build(); |
|
|
|
ExecutorService pool = new org.apache.tomcat.util.threads.ThreadPoolExecutor(2, 100, |
|
|
|
0L, TimeUnit.MILLISECONDS, |
|
|
|
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new org.apache.tomcat.util.threads.ThreadPoolExecutor.AbortPolicy()); |
|
|
|
LoanOutboundApply finalLoanOutboundApply = loanOutboundApply; |
|
|
|
Future future1 = pool.submit(() -> { |
|
|
|
//推送其他出库单
|
|
|
|
//TOdO:
|
|
|
|
pushStkOut(finalLoanOutboundApply,busVinSidList); |
|
|
|
}); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -670,7 +716,82 @@ public class LoanOutboundApplyService extends MybatisBaseService<LoanOutboundApp |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//推送财务凭证
|
|
|
|
private void pushRiskToFin2(LoanOutboundApply loanOutboundApply, List<String> busVinSidList) { |
|
|
|
LoanSecondarySalesApply loanSecondarySalesApply = loanSecondarySalesApplyService.fetchBySid(loanOutboundApply.getApplySid()); |
|
|
|
LoanSecondarySalesCost loanSecondarySalesCost = loanSecondarySalesCostService.selectMainSu(loanOutboundApply.getSid()); |
|
|
|
Voucher voucher = new Voucher(); |
|
|
|
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(loanOutboundApply.getUseOrgSid()).getData(); |
|
|
|
if (null != organizationVo) { |
|
|
|
voucher.setAccountBook(organizationVo.getOrgCode()); |
|
|
|
voucher.setVoucherNo(organizationVo.getOrgCode()); |
|
|
|
} |
|
|
|
List<Voucher.VoucherResultDetailDto> voucherResultDetailDtos = new ArrayList<>(); |
|
|
|
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(loanOutboundApply.getDeptSid()).getData(); |
|
|
|
for (int i = 0; i < busVinSidList.size(); i++){ |
|
|
|
String busVinSid = busVinSidList.get(i); |
|
|
|
//ToDo:
|
|
|
|
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData(); |
|
|
|
String customerNumber = ""; |
|
|
|
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(busSalesOrderVehicle.getSalesOrderSid()).getData(); |
|
|
|
if (salesOrder != null && busSalesOrderVehicle != null) { |
|
|
|
//判断财务系统是否有客户
|
|
|
|
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()); |
|
|
|
if (StringUtils.isNotBlank(salesOrder.getPurchaseSystemSid())) { |
|
|
|
BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData(); |
|
|
|
bdCustomer.setTOrgIds(data.getOrgCode()); |
|
|
|
} |
|
|
|
bdCustomer.setTOrgIds(deptVo.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(); |
|
|
|
} |
|
|
|
} |
|
|
|
//借方
|
|
|
|
Voucher.VoucherResultDetailDto voucherResultDetailDtoJf = new Voucher.VoucherResultDetailDto(); |
|
|
|
//贷方
|
|
|
|
Voucher.VoucherResultDetailDto voucherResultDetailDtoDf = new Voucher.VoucherResultDetailDto(); |
|
|
|
Voucher.VoucherResultDetailDto voucherResultDetailDtoDf2 = new Voucher.VoucherResultDetailDto(); |
|
|
|
Voucher.VoucherResultDetailDto voucherResultDetailDtoDf3 = new Voucher.VoucherResultDetailDto(); |
|
|
|
BigDecimal all = BigDecimal.ZERO;//扣回车辆费用=扣回入库-已认款+资方结清费用
|
|
|
|
BigDecimal dkbzjMoney = BigDecimal.ZERO;//贷款保证金
|
|
|
|
BigDecimal bxbzjMoney = BigDecimal.ZERO;//保险保证金
|
|
|
|
BigDecimal cssMoney = BigDecimal.ZERO;//车损失---计算=扣回车辆费用-贷款保证金-保险保证金
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//推送赎回凭证结转
|
|
|
|
public void pushRiskToFin(LoanOutboundApply loanOutboundApply,List<String> busVinSidList) { |
|
|
|
Voucher voucher = new Voucher(); |
|
|
|
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(loanOutboundApply.getUseOrgSid()).getData(); |
|
|
@ -678,11 +799,131 @@ public class LoanOutboundApplyService extends MybatisBaseService<LoanOutboundApp |
|
|
|
voucher.setAccountBook(organizationVo.getOrgCode()); |
|
|
|
voucher.setVoucherNo(organizationVo.getOrgCode()); |
|
|
|
} |
|
|
|
List<Voucher.VoucherResultDetailDto> voucherResultDetailDtos = new ArrayList<>(); |
|
|
|
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(loanOutboundApply.getDeptSid()).getData(); |
|
|
|
for (int i = 0; i < busVinSidList.size(); i++) { |
|
|
|
String busVinSid = busVinSidList.get(i); |
|
|
|
//ToDo:
|
|
|
|
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData(); |
|
|
|
String customerNumber = ""; |
|
|
|
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(busSalesOrderVehicle.getSalesOrderSid()).getData(); |
|
|
|
if (salesOrder != null && busSalesOrderVehicle != null) { |
|
|
|
//判断财务系统是否有客户
|
|
|
|
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()); |
|
|
|
if (StringUtils.isNotBlank(salesOrder.getPurchaseSystemSid())) { |
|
|
|
BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(salesOrder.getPurchaseSystemSid()).getData(); |
|
|
|
bdCustomer.setTOrgIds(data.getOrgCode()); |
|
|
|
} |
|
|
|
bdCustomer.setTOrgIds(deptVo.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(); |
|
|
|
} |
|
|
|
} |
|
|
|
AlrepaidAndArrVo alrepaidAndArrVo = loanRestoreReportApplyService.getAlrepaidAndArr2(busVinSid); |
|
|
|
//应收贷款车欠款_待处理欠款_扣回车辆
|
|
|
|
BigDecimal all = BigDecimal.ZERO; |
|
|
|
//应收贷款车欠款_到期欠款_累欠
|
|
|
|
BigDecimal lqMoney = BigDecimal.ZERO; |
|
|
|
//应收贷款车欠款_未到期欠款_未到期欠款
|
|
|
|
BigDecimal wdqMoney = BigDecimal.ZERO; |
|
|
|
//应收贷款车欠款_到期欠款_本金
|
|
|
|
BigDecimal bjMoney = BigDecimal.ZERO; |
|
|
|
|
|
|
|
String lq = loanRepaymentPlanDetailsService.getYqLq(busVinSid); |
|
|
|
lqMoney = lqMoney.add(new BigDecimal(StringUtils.isBlank(lq) ? "0" : lq)); |
|
|
|
//未到期欠款
|
|
|
|
String wdq = alrepaidAndArrVo.getUnexpiredMoney(); |
|
|
|
wdqMoney = wdqMoney.add(new BigDecimal(StringUtils.isBlank(wdq) ? "0" : wdq)); |
|
|
|
String bj = loanRepaymentPlanDetailsService.getBj(busVinSid); |
|
|
|
bjMoney = bjMoney.add(new BigDecimal(StringUtils.isBlank(bj) ? "0" : bj)); |
|
|
|
all = lqMoney.add(wdqMoney).add(bjMoney); |
|
|
|
|
|
|
|
//贷方
|
|
|
|
Voucher.VoucherResultDetailDto voucherResultDetailDtoDf = new Voucher.VoucherResultDetailDto(); |
|
|
|
//借方
|
|
|
|
Voucher.VoucherResultDetailDto voucherResultDetailDtoJf = new Voucher.VoucherResultDetailDto(); |
|
|
|
Voucher.VoucherResultDetailDto voucherResultDetailDtoJf2 = new Voucher.VoucherResultDetailDto(); |
|
|
|
Voucher.VoucherResultDetailDto voucherResultDetailDtoJf3 = new Voucher.VoucherResultDetailDto(); |
|
|
|
//-------------------------------------------应收贷款车欠款_待处理欠款_扣回车辆
|
|
|
|
if (all.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
voucherResultDetailDtoDf.setSummary("**扣回车辆赎回结转"); |
|
|
|
voucherResultDetailDtoDf.setSubjectNo("1201.03.01"); |
|
|
|
//核算部门
|
|
|
|
voucherResultDetailDtoDf.setDimensionDept(deptVo.getOrgCode()); |
|
|
|
//核算客户
|
|
|
|
voucherResultDetailDtoDf.setDimensionCustom(customerNumber); |
|
|
|
voucherResultDetailDtoDf.setCredit(all.toString()); |
|
|
|
voucherResultDetailDtos.add(voucherResultDetailDtoDf); |
|
|
|
} |
|
|
|
|
|
|
|
//---------------------------------------------应收贷款车欠款_到期欠款_累欠
|
|
|
|
if (lqMoney.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
voucherResultDetailDtoJf.setSummary("**扣回车辆赎回结转"); |
|
|
|
voucherResultDetailDtoJf.setSubjectNo("1201.02.03"); |
|
|
|
//核算部门
|
|
|
|
voucherResultDetailDtoJf.setDimensionDept(deptVo.getOrgCode()); |
|
|
|
//核算客户
|
|
|
|
voucherResultDetailDtoJf.setDimensionCustom(customerNumber); |
|
|
|
voucherResultDetailDtoJf.setDebit(lqMoney.toString()); |
|
|
|
voucherResultDetailDtos.add(voucherResultDetailDtoJf); |
|
|
|
} |
|
|
|
|
|
|
|
//--------------------------------------------应收贷款车欠款_未到期欠款_未到期欠款
|
|
|
|
if (wdqMoney.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
voucherResultDetailDtoJf2.setSummary("**扣回车辆赎回结转"); |
|
|
|
voucherResultDetailDtoJf2.setSubjectNo("1201.01.00"); |
|
|
|
//核算部门
|
|
|
|
voucherResultDetailDtoJf2.setDimensionDept(deptVo.getOrgCode()); |
|
|
|
//核算客户
|
|
|
|
voucherResultDetailDtoJf2.setDimensionCustom(customerNumber); |
|
|
|
voucherResultDetailDtoJf2.setDebit(wdqMoney.toString()); |
|
|
|
voucherResultDetailDtos.add(voucherResultDetailDtoJf2); |
|
|
|
} |
|
|
|
|
|
|
|
//-------------------------------------------应收贷款车欠款_到期欠款_本金
|
|
|
|
if (bjMoney.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
voucherResultDetailDtoJf3.setSummary("**扣回车辆赎回结转"); |
|
|
|
voucherResultDetailDtoJf3.setSubjectNo("1201.02.01"); |
|
|
|
//核算部门
|
|
|
|
voucherResultDetailDtoJf3.setDimensionDept(deptVo.getOrgCode()); |
|
|
|
//核算客户
|
|
|
|
voucherResultDetailDtoJf3.setDimensionCustom(customerNumber); |
|
|
|
voucherResultDetailDtoJf3.setDebit(bjMoney.toString()); |
|
|
|
voucherResultDetailDtos.add(voucherResultDetailDtoJf3); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (!voucherResultDetailDtos.isEmpty()) { |
|
|
|
voucher.setResultDetails(voucherResultDetailDtos); |
|
|
|
finKingDeeFeign.saveVoucher(voucher); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void pushStkOut(LoanOutboundApply loanOutboundApply,List<String> busVinSidList) { |
|
|
|