|
|
@ -26,16 +26,29 @@ |
|
|
|
package com.yxt.anrui.buscenter.biz.bussalesorderloancontract; |
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
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.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesorderloancontract.*; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign; |
|
|
|
import com.yxt.anrui.buscenter.biz.bussalesorder.BusSalesOrderService; |
|
|
|
import com.yxt.anrui.buscenter.biz.bussalesorderborrower.BusSalesOrderBorrowerService; |
|
|
|
import com.yxt.anrui.buscenter.biz.bussalesordervehicle.BusSalesOrderVehicleService; |
|
|
|
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailedFeign; |
|
|
|
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.UnCollectionDto; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.capitalcreditresult.CapitalCreditResult; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.capitalcreditresult.CwSystemYT; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.otherarreceivable.OtherReceivable; |
|
|
|
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; |
|
|
|
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; |
|
|
|
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; |
|
|
|
import com.yxt.anrui.portal.api.sysuser.SysUserFeign; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameter; |
|
|
@ -44,6 +57,8 @@ import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterVo; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutionsFeign; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansolutions.PushVo; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo; |
|
|
|
import com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetailFeign; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import com.yxt.common.base.service.MybatisBaseService; |
|
|
|
import com.yxt.common.base.utils.PagerUtil; |
|
|
@ -55,7 +70,9 @@ import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
@ -83,9 +100,19 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService<BusSale |
|
|
|
@Autowired |
|
|
|
private LoanSolutionsFeign loanSolutionsFeign; |
|
|
|
@Autowired |
|
|
|
private LoanSolutionsDetailFeign loanSolutionsDetailFeign; |
|
|
|
@Autowired |
|
|
|
private BusSalesOrderService busSalesOrderService; |
|
|
|
@Autowired |
|
|
|
private FinUncollectedReceivablesDetailedFeign finUncollectedDetailedFeign; |
|
|
|
@Autowired |
|
|
|
private SysOrganizationFeign sysOrganizationFeign; |
|
|
|
@Autowired |
|
|
|
private FinKingDeeFeign finKingDeeFeign; |
|
|
|
@Autowired |
|
|
|
private BusSalesOrderBorrowerService busSalesOrderBorrowerService; |
|
|
|
@Autowired |
|
|
|
private BasePurchaseSystemFeign basePurchaseSystemFeign; |
|
|
|
|
|
|
|
private QueryWrapper<BusSalesOrderLoancontract> createQueryWrapper(BusSalesOrderLoancontractQuery query) { |
|
|
|
// todo: 这里根据具体业务调整查询条件
|
|
|
@ -260,14 +287,14 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService<BusSale |
|
|
|
BusSalesOrder busSalesOrder = busSalesOrderService.fetchBySid(saleOrderSid); |
|
|
|
//根据消贷合同查询贷款人
|
|
|
|
BusSalesOrderLoancontract busSalesOrderLoancontract = fetchBySid(loanContractSid); |
|
|
|
if(busSalesOrderLoancontract != null){ |
|
|
|
if (busSalesOrderLoancontract != null) { |
|
|
|
//根据销售订单的贷款人sid查询车辆表中的数据
|
|
|
|
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleService.selectByBorrowSid(busSalesOrderLoancontract.getBorrowerSid()); |
|
|
|
//这是生成业务系统融资放款应收的逻辑:
|
|
|
|
// 融资放款=融资项目总额-融资首付-[贷款保证金]-[厂家贴息],根据选择的产品政策来判断,若贷款保证金为固定的,需要减去,若为敞口的,不需要减;差额放款需要减厂家贴息,全额放款不需要。差额放款的厂家贴息金额存入“其他应收”字段中,
|
|
|
|
//计算融资放款的金额以及厂家贴息金额
|
|
|
|
ResultBean<PushVo> resultBean = loanSolutionsFeign.selectMoney(saleOrderSid); |
|
|
|
if(resultBean.getData() != null){ |
|
|
|
if (resultBean.getData() != null) { |
|
|
|
PushVo pushVo = resultBean.getData(); |
|
|
|
UnCollectionDto unCollectionDto = new UnCollectionDto(); |
|
|
|
unCollectionDto.setContractNo(busSalesOrder.getContractNo()); |
|
|
@ -309,4 +336,144 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService<BusSale |
|
|
|
} |
|
|
|
return rb.success(); |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean pushOtherReceivable(LoanContractPush loanContractPush) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
String saleOrderSid = loanContractPush.getSaleOrderSid(); |
|
|
|
// String loanContractSid = loanContractPush.getLoanContractSid();
|
|
|
|
BusSalesOrder salesOrder = busSalesOrderService.fetchBySid(saleOrderSid); |
|
|
|
if (null != salesOrder) { |
|
|
|
BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerService.fetchDetailsByOrderSid(saleOrderSid).getData(); |
|
|
|
if (null != borrowerDetailsVo) { |
|
|
|
//-----------获取其他应收单对象----------------
|
|
|
|
CapitalCreditResult creditResult = new CapitalCreditResult(); |
|
|
|
//根据销售订单的贷款人sid查询车辆表中的数据
|
|
|
|
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleService.selectByBorrowSid(borrowerDetailsVo.getSid()); |
|
|
|
if (null != busSalesOrderVehicle) { |
|
|
|
String customerNumber = ""; |
|
|
|
//判断财务系统是否有客户
|
|
|
|
Boolean aBoolean = finKingDeeFeign.customerExistState(busSalesOrderVehicle.getTemporaryNo()).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 (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) { |
|
|
|
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getLinkNo()); |
|
|
|
} else { |
|
|
|
bdCustomer.setFName(borrowerDetailsVo.getBorrowerName() + busSalesOrderVehicle.getTemporaryNo()); |
|
|
|
} |
|
|
|
bdCustomers.add(bdCustomer); |
|
|
|
ResultBean<String> resultBean = finKingDeeFeign.draftBdCustomers(bdCustomers); |
|
|
|
if (resultBean.getSuccess()) { |
|
|
|
customerNumber = bdCustomer.getFNumber(); |
|
|
|
} |
|
|
|
} else { |
|
|
|
customerNumber = busSalesOrderVehicle.getTemporaryNo(); |
|
|
|
} |
|
|
|
creditResult.setCommUnit(customerNumber); |
|
|
|
SysOrganizationVo sysOrganizationVo1 = sysOrganizationFeign.fetchBySid(salesOrder.getUseOrgSid()).getData(); |
|
|
|
creditResult.setCollectionOrg(sysOrganizationVo1.getOrgCode()); |
|
|
|
creditResult.setBussDate(DateUtil.formatDate(new Date())); |
|
|
|
List<CapitalCreditResult.CapitalCreditResultDetailDto> collectionDetailDtoListOne = new ArrayList<>(); |
|
|
|
SysOrganizationVo sysOrganizationVo2 = sysOrganizationFeign.fetchBySid(salesOrder.getOrgSid()).getData(); |
|
|
|
//这是生成业务系统融资放款应收的逻辑:
|
|
|
|
// 融资放款=融资项目总额-融资首付-[贷款保证金]-[厂家贴息],根据选择的产品政策来判断,若贷款保证金为固定的,需要减去,若为敞口的,不需要减;差额放款需要减厂家贴息,全额放款不需要。差额放款的厂家贴息金额存入“其他应收”字段中,
|
|
|
|
//计算融资放款的金额以及厂家贴息金额
|
|
|
|
ResultBean<PushVo> resultBean = loanSolutionsFeign.selectMoney(saleOrderSid); |
|
|
|
if (null != resultBean.getData()) { |
|
|
|
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto(); |
|
|
|
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode()); |
|
|
|
creditResultDetailDto.setExTaxMoney("-" + resultBean.getData().getMoney()); |
|
|
|
creditResultDetailDto.setUseTo(CwSystemYT.RONGZI_FANGKUAN.getType()); |
|
|
|
collectionDetailDtoListOne.add(creditResultDetailDto); |
|
|
|
} |
|
|
|
SolutionsDetailsVo solutions = loanSolutionsFeign.selectDetails(saleOrderSid).getData(); |
|
|
|
if (null != solutions) { |
|
|
|
//贷款保证金
|
|
|
|
if (StringUtils.isNotBlank(solutions.getBondAmounts()) && !("0").equals(solutions.getBondAmounts())) { |
|
|
|
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto(); |
|
|
|
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode()); |
|
|
|
creditResultDetailDto.setExTaxMoney(solutions.getBondAmounts()); |
|
|
|
creditResultDetailDto.setUseTo(CwSystemYT.BOND_AMOUNTS.getType()); |
|
|
|
collectionDetailDtoListOne.add(creditResultDetailDto); |
|
|
|
} |
|
|
|
//保险保证金
|
|
|
|
if (StringUtils.isNotBlank(solutions.getDepositPremium()) && !("0").equals(solutions.getDepositPremium())) { |
|
|
|
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto(); |
|
|
|
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode()); |
|
|
|
creditResultDetailDto.setExTaxMoney(solutions.getDepositPremium()); |
|
|
|
creditResultDetailDto.setUseTo(CwSystemYT.DEPOSIT_PREMIUM.getType()); |
|
|
|
collectionDetailDtoListOne.add(creditResultDetailDto); |
|
|
|
} |
|
|
|
//落户保证金
|
|
|
|
if (StringUtils.isNotBlank(solutions.getDepositSettle()) && !("0").equals(solutions.getDepositSettle())) { |
|
|
|
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto(); |
|
|
|
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode()); |
|
|
|
creditResultDetailDto.setExTaxMoney(solutions.getDepositSettle()); |
|
|
|
creditResultDetailDto.setUseTo(CwSystemYT.DEPOSIT_SETTLE.getType()); |
|
|
|
collectionDetailDtoListOne.add(creditResultDetailDto); |
|
|
|
} |
|
|
|
//服务费
|
|
|
|
if (StringUtils.isNotBlank(solutions.getServiceAmount()) && !("0").equals(solutions.getServiceAmount())) { |
|
|
|
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto(); |
|
|
|
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode()); |
|
|
|
creditResultDetailDto.setUseTo(CwSystemYT.SERVICE_AMOUNT_DANBAO.getType()); |
|
|
|
creditResultDetailDto.setExTaxMoney(solutions.getServiceAmount()); |
|
|
|
collectionDetailDtoListOne.add(creditResultDetailDto); |
|
|
|
} |
|
|
|
//代收意外险
|
|
|
|
if (StringUtils.isNotBlank(solutions.getProxyAccidentPremium()) && !("0").equals(solutions.getProxyAccidentPremium())) { |
|
|
|
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto(); |
|
|
|
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode()); |
|
|
|
creditResultDetailDto.setUseTo(CwSystemYT.PROXY_ACCIDENT_PREMIUM.getType()); |
|
|
|
creditResultDetailDto.setExTaxMoney(solutions.getProxyAccidentPremium()); |
|
|
|
collectionDetailDtoListOne.add(creditResultDetailDto); |
|
|
|
} |
|
|
|
//上牌费、运管费
|
|
|
|
if ((StringUtils.isNotBlank(solutions.getRegisterAmount()) && !("0").equals(solutions.getRegisterAmount())) || |
|
|
|
(StringUtils.isNotBlank(solutions.getOperationAmount()) && !("0").equals(solutions.getOperationAmount()))) { |
|
|
|
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto(); |
|
|
|
BigDecimal registerAmount = new BigDecimal(solutions.getRegisterAmount()); |
|
|
|
BigDecimal opertionAmount = new BigDecimal(solutions.getOperationAmount()); |
|
|
|
BigDecimal add = registerAmount.add(opertionAmount); |
|
|
|
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode()); |
|
|
|
creditResultDetailDto.setUseTo(CwSystemYT.SHANGPAI_YUNGUAN.getType()); |
|
|
|
creditResultDetailDto.setExTaxMoney(add.toString()); |
|
|
|
collectionDetailDtoListOne.add(creditResultDetailDto); |
|
|
|
} |
|
|
|
//其它费用
|
|
|
|
if (StringUtils.isNotBlank(solutions.getOtherAmount()) && !("0").equals(solutions.getOtherAmount())) { |
|
|
|
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto(); |
|
|
|
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode()); |
|
|
|
creditResultDetailDto.setExTaxMoney(solutions.getOtherAmount()); |
|
|
|
creditResultDetailDto.setUseTo(CwSystemYT.OTHER_AMOUNT.getType()); |
|
|
|
collectionDetailDtoListOne.add(creditResultDetailDto); |
|
|
|
} |
|
|
|
//补车价
|
|
|
|
if (StringUtils.isNotBlank(solutions.getVehOtherPrice()) && !("0").equals(solutions.getVehOtherPrice())) { |
|
|
|
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto(); |
|
|
|
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode()); |
|
|
|
creditResultDetailDto.setExTaxMoney(solutions.getVehOtherPrice()); |
|
|
|
creditResultDetailDto.setUseTo(CwSystemYT.VEH_OTHER_PRICE.getType()); |
|
|
|
collectionDetailDtoListOne.add(creditResultDetailDto); |
|
|
|
} |
|
|
|
//留购价
|
|
|
|
if (StringUtils.isNotBlank(solutions.getNominalPrice()) && !("0").equals(solutions.getNominalPrice())) { |
|
|
|
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto(); |
|
|
|
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode()); |
|
|
|
creditResultDetailDto.setExTaxMoney(solutions.getNominalPrice()); |
|
|
|
creditResultDetailDto.setUseTo(CwSystemYT.NOMINAL_PRICE.getType()); |
|
|
|
collectionDetailDtoListOne.add(creditResultDetailDto); |
|
|
|
} |
|
|
|
} |
|
|
|
creditResult.setResultDetails(collectionDetailDtoListOne); |
|
|
|
finKingDeeFeign.pushOtherReceivableBill(creditResult); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return rb.success(); |
|
|
|
} |
|
|
|
} |