Browse Source

回购付款凭证及生成月还的垫付

zhanglei
dimengzhe 7 days ago
parent
commit
56eb7cc7cf
  1. 71
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordService.java
  2. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanRepaymentPlanDetails.java
  3. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyFeign.java
  4. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.java
  5. 23
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml
  6. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java
  7. 7
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepurchaseapply/LoanRepurchaseApplyRest.java
  8. 89
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepurchaseapply/LoanRepurchaseApplyService.java

71
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordService.java

@ -85,6 +85,10 @@ import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehFeign
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsFeign;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanMoneyVo;
import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.LoanRepurchaseApply;
import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.LoanRepurchaseApplyDetailsVo;
import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.LoanRepurchaseApplyFeign;
import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.LoanRepurchaseApplyVo;
import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApplyFeign;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApplyFeign;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
@ -192,6 +196,8 @@ public class FinPaymentrecordService extends MybatisBaseService<FinPaymentrecord
private FinPaymentapplyDetailsBelowService finPaymentapplyDetailsBelowService;
@Autowired
private FinPaymentapplyDetailsBelowEveService finPaymentapplyDetailsBelowEveService;
@Autowired
private LoanRepurchaseApplyFeign loanRepurchaseApplyFeign;
public PagerVo<FinPaymentrecordVo> listPageVo(PagerQuery<FinPaymentrecordQuery> pq) {
FinPaymentrecordQuery query = pq.getParams();
@ -603,19 +609,25 @@ public class FinPaymentrecordService extends MybatisBaseService<FinPaymentrecord
loanBePadsincereApplyFeign.pushAdvancesVoucher(finPaymentrecord.getApplySid(), finPaymentrecord.getSid());
});
} else if ("008".equals(costTypeKey) || "资方结清款".equals(finPaymentrecord.getCostTypeValue())) {
if (StringUtils.isNotBlank(finPaymentrecord.getPayBankAccount())) {
String shouxufei = "0";
if (null != finPaymentrecord.getPaymentCharges()) {
shouxufei = finPaymentrecord.getPaymentCharges().toString();
}
String accountNumber = finPaymentrecord.getPayBankAccount();
String payTypeCode = "";
FinManufacturerBank manufacturerBank = finManufacturerBankService.selOneByBankNo(accountNumber, finPaymentrecord.getUseOrgSid()).getData();
if (null != manufacturerBank) {
payTypeCode = manufacturerBank.getDueBankKey();
LoanRepurchaseApplyDetailsVo loanRepurchaseApply = loanRepurchaseApplyFeign.fetchDetailsBySid(finPaymentrecord.getApplySid()).getData();
if(loanRepurchaseApply != null){
loanRepurchaseApplyFeign.pushRiskToFin(finPaymentrecord.getApplySid());
}else{
if (StringUtils.isNotBlank(finPaymentrecord.getPayBankAccount())) {
String shouxufei = "0";
if (null != finPaymentrecord.getPaymentCharges()) {
shouxufei = finPaymentrecord.getPaymentCharges().toString();
}
String accountNumber = finPaymentrecord.getPayBankAccount();
String payTypeCode = "";
FinManufacturerBank manufacturerBank = finManufacturerBankService.selOneByBankNo(accountNumber, finPaymentrecord.getUseOrgSid()).getData();
if (null != manufacturerBank) {
payTypeCode = manufacturerBank.getDueBankKey();
}
loanSettleApplyFeign.pushBankVoucher(finPaymentrecord.getBusSid(), accountNumber, payTypeCode, shouxufei);
}
loanSettleApplyFeign.pushBankVoucher(finPaymentrecord.getBusSid(), accountNumber, payTypeCode, shouxufei);
}
} else if (StringUtils.isBlank(costTypeKey) || "015".equals(costTypeKey) || "016".equals(costTypeKey) || "017".equals(costTypeKey)) {
Voucher voucher = pushVoucher(finPaymentrecord.getSid());
voucherService.saveVoucher(voucher);
@ -973,22 +985,27 @@ public class FinPaymentrecordService extends MybatisBaseService<FinPaymentrecord
}
});
} else if ("008".equals(costTypeKey) || "资方结清款".equals(finPaymentrecord.getCostTypeValue())) {
if (StringUtils.isNotBlank(finPaymentrecord.getPayBankAccount())) {
String shouxufei = "0";
if (null != finPaymentrecord.getPaymentCharges()) {
shouxufei = finPaymentrecord.getPaymentCharges().toString();
}
String accountNumber = finPaymentrecord.getPayBankAccount();
String payTypeCode = "";
FinManufacturerBank manufacturerBank = finManufacturerBankService.selOneByBankNo(accountNumber, finPaymentrecord.getUseOrgSid()).getData();
if (null != manufacturerBank) {
payTypeCode = manufacturerBank.getDueBankKey();
}
RskVoucher voucher = loanSettleApplyFeign.pushBankReturnVoucher(finPaymentrecord.getBusSid(), accountNumber, payTypeCode, shouxufei).getData();
if (null != voucher) {
Voucher v = new Voucher();
BeanUtil.copyProperties(voucher, v);
vouchers.add(v);
LoanRepurchaseApplyDetailsVo loanRepurchaseApply = loanRepurchaseApplyFeign.fetchDetailsBySid(finPaymentrecord.getApplySid()).getData();
if(loanRepurchaseApply != null){
loanRepurchaseApplyFeign.pushRiskToFin(finPaymentrecord.getApplySid());
}else{
if (StringUtils.isNotBlank(finPaymentrecord.getPayBankAccount())) {
String shouxufei = "0";
if (null != finPaymentrecord.getPaymentCharges()) {
shouxufei = finPaymentrecord.getPaymentCharges().toString();
}
String accountNumber = finPaymentrecord.getPayBankAccount();
String payTypeCode = "";
FinManufacturerBank manufacturerBank = finManufacturerBankService.selOneByBankNo(accountNumber, finPaymentrecord.getUseOrgSid()).getData();
if (null != manufacturerBank) {
payTypeCode = manufacturerBank.getDueBankKey();
}
RskVoucher voucher = loanSettleApplyFeign.pushBankReturnVoucher(finPaymentrecord.getBusSid(), accountNumber, payTypeCode, shouxufei).getData();
if (null != voucher) {
Voucher v = new Voucher();
BeanUtil.copyProperties(voucher, v);
vouchers.add(v);
}
}
}
} else if (StringUtils.isBlank(costTypeKey) || "015".equals(costTypeKey) || "016".equals(costTypeKey) || "017".equals(costTypeKey)) {

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanRepaymentPlanDetails.java

@ -1,5 +1,6 @@
package com.yxt.anrui.riskcenter.api.loanrepaymentplandetails;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
@ -80,4 +81,7 @@ public class LoanRepaymentPlanDetails extends BaseEntity {
private Integer oweState; //是否转累欠状态(0是,1否)
private Date updateTime; //更新日期
@TableField(exist = false)
private String moneysl;
}

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepurchaseapply/LoanRepurchaseApplyFeign.java

@ -117,5 +117,8 @@ public interface LoanRepurchaseApplyFeign {
@ResponseBody
public ResultBean<AppRepurchaseDetailsVo> appDetail(@PathVariable("sid") String sid);
@ApiOperation("app详情")
@PostMapping("/pushRiskToFin")
@ResponseBody
ResultBean pushRiskToFin(@RequestParam("applySid") String applySid);
}

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

@ -119,4 +119,6 @@ public interface LoanRepaymentPlanDetailsMapper extends BaseMapper<LoanRepayment
String getWdq(String busVinSid);
String selectAllMoney(String busVinSid);
List<LoanRepaymentPlanDetails> selectByBusVinSid2(@Param("busVinSid") String busVinSid);
}

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

@ -1059,4 +1059,27 @@
) lbpv_sum ON lbpv_sum.saleVehSid = ss.busVinSid
GROUP BY ss.busVinSid having beMoney>0
</select>
<select id="selectByBusVinSid2"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails">
SELECT
lrpd.*,
(lrpd.dueMoney - COALESCE(SUM(lrh.actualMoney), 0)) as aa,
lrpd.paymentMoney,
lrpd.paymentInterest,
(lrpd.dueMoney - COALESCE(SUM(lrh.actualMoney), 0)-COALESCE(lrpd.paymentMoney,0)-COALESCE(lrpd.paymentInterest,0))AS moneysl
FROM
loan_repayment_plan_details lrpd
LEFT JOIN
loan_repayment_history lrh ON lrh.planDetailSid = lrpd.sid
WHERE
lrpd.busVinSid = #{busVinSid}
GROUP BY
lrpd.sid
HAVING
(lrpd.dueMoney - COALESCE(SUM(lrh.actualMoney), 0)-COALESCE(lrpd.paymentMoney,0)-COALESCE(lrpd.paymentInterest,0)) > 0
ORDER BY
lrpd.period ASC
</select>
</mapper>

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

@ -378,6 +378,9 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
public List<LoanRepaymentPlanDetails> selectByBusVinSid(String busVinSid) {
return baseMapper.selectByBusVinSid(busVinSid);
}
public List<LoanRepaymentPlanDetails> selectByBusVinSid2(String busVinSid) {
return baseMapper.selectByBusVinSid2(busVinSid);
}
//逾期且累欠的金额
public String getYqLq(String busVinSid) {
@ -403,4 +406,6 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
public String selectAllMoney(String busVinSid) {
return baseMapper.selectAllMoney(busVinSid);
}
}

7
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepurchaseapply/LoanRepurchaseApplyRest.java

@ -124,4 +124,11 @@ public class LoanRepurchaseApplyRest implements LoanRepurchaseApplyFeign {
public ResultBean<AppRepurchaseDetailsVo> appDetail(String sid) {
return loanRepurchaseApplyService.appDetail(sid);
}
@Override
public ResultBean pushRiskToFin(String applySid) {
ResultBean rb = ResultBean.fireFail();
loanRepurchaseApplyService.pushRiskToFin(applySid);
return rb.success();
}
}

89
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepurchaseapply/LoanRepurchaseApplyService.java

@ -20,6 +20,8 @@ import com.yxt.anrui.buscenter.api.bussalesorderreturnvehapply.BusSalesOrderRetu
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.fin.api.finmanufacturerbank.FinManufacturerBank;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordFeign;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordSourceLCVo;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer;
@ -46,6 +48,7 @@ import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanoverduefin.UrlQuery;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.*;
import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.app.AppRepurchaseDetailsVo;
import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.flow.*;
@ -57,6 +60,7 @@ import com.yxt.anrui.riskcenter.api.loansettlebankcost.LoanSettleBankCostVo;
import com.yxt.anrui.riskcenter.api.loansettlecompanycost.LoanSettleCompanyCostVo;
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.anrui.riskcenter.biz.loanrepurchasecompanycost.LoanRepurchaseCompanyCostService;
import com.yxt.anrui.riskcenter.biz.loanrepurchasecost.LoanRepurchaseCostService;
import com.yxt.anrui.riskcenter.biz.loansettleapply.LoanSettleApplyService;
@ -139,6 +143,10 @@ public class LoanRepurchaseApplyService extends MybatisBaseService<LoanRepurchas
private BasePurchaseSystemFeign basePurchaseSystemFeign;
@Autowired
private DictCommonFeign dictCommonFeign;
@Autowired
private FinPaymentrecordFeign finPaymentrecordFeign;
@Autowired
private LoanRepaymentPlanDetailsService loanRepaymentPlanDetailsService;
public PagerVo<LoanRepurchaseApplyVo> listPage(PagerQuery<LoanRepurchaseApplyQuery> pq) {
IPage<LoanRepurchaseApply> page = PagerUtil.queryToPage(pq);
@ -740,7 +748,43 @@ public class LoanRepurchaseApplyService extends MybatisBaseService<LoanRepurchas
baseMapper.updateById(repurchaseApply);
//更新车辆表回购状态为1
baseMapper.updateBus(repurchaseApply.getBusVinSid());
LoanRepurchaseCost loanRepurchaseCost = loanRepurchaseCostService.selectByMainSid(businessSid);
if(loanRepurchaseCost != null){
BigDecimal bankSettlePrice = loanRepurchaseCost.getBankSettlePrice();//资方结清金额
if(bankSettlePrice != null && bankSettlePrice.compareTo(BigDecimal.ZERO)>0){
FinPaymentrecordDto finPaymentrecordDto = new FinPaymentrecordDto();
finPaymentrecordDto.setApplySid(loanRepurchaseApply.getSid());
finPaymentrecordDto.setPayCompanySid("");
finPaymentrecordDto.setPayType(1);
finPaymentrecordDto.setCreateOrgSid(loanRepurchaseApply.getUseOrgSid());
finPaymentrecordDto.setUseOrgSid(loanRepurchaseApply.getUseOrgSid());
finPaymentrecordDto.setCostTypeKey("008");
finPaymentrecordDto.setCostTypeValue("资方结清款");
finPaymentrecordDto.setCostTitleKey("014");
finPaymentrecordDto.setCostTitleValue("资方结清款");
finPaymentrecordDto.setReceiveBank("");
finPaymentrecordDto.setReceiveBankAccount(loanRepurchaseCost.getBankAccount());
finPaymentrecordDto.setReceiveCompany(loanRepurchaseCost.getAccountName());
if(loanRepurchaseCost.getBankSettlePrice() != null){
finPaymentrecordDto.setCost(loanRepurchaseCost.getBankSettlePrice().toString());
finPaymentrecordDto.setAccountsReceive(loanRepurchaseCost.getBankSettlePrice().toString());
}
finPaymentrecordDto.setBusSid(loanRepurchaseApply.getBillNo());
finPaymentrecordDto.setPayRemark(loanRepurchaseApply.getPayRemarks());
finPaymentrecordDto.setPayCode("");
finPaymentrecordDto.setCreateBySid(loanRepurchaseApply.getCreateBySid());
finPaymentrecordDto.setUpdateBySid(loanRepurchaseApply.getCreateBySid());
finPaymentrecordDto.setRemarks(loanRepurchaseApply.getRemarks());
finPaymentrecordDto.setPurchaseSystemSid("");
finPaymentrecordDto.setPurchaseSystemName("");
finPaymentrecordDto.setBusRemarks(loanRepurchaseApply.getPayRemarks());
finPaymentrecordDto.setFinDataType(1);
String sid = finPaymentrecordFeign.save(finPaymentrecordDto).getData();
}
}
/*
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
@ -752,7 +796,7 @@ public class LoanRepurchaseApplyService extends MybatisBaseService<LoanRepurchas
});
} catch (Exception e) {
e.printStackTrace();
}
}*/
} else {
//极光推送
loanRepurchaseApply = fetchBySid(businessSid);
@ -777,9 +821,48 @@ public class LoanRepurchaseApplyService extends MybatisBaseService<LoanRepurchas
public void pushRiskToFin(String businessSid){
LoanRepurchaseApply loanRepurchaseApply = fetchBySid(businessSid);
LoanRepurchaseCost loanRepurchaseCost = loanRepurchaseCostService.selectByMainSid(businessSid);
//查询月还明细表,遍历
List<LoanRepaymentPlanDetails> list = loanRepaymentPlanDetailsService.selectByBusVinSid2(loanRepurchaseApply.getBusVinSid());
list.removeAll(Collections.singleton(null));
if(!list.isEmpty()){
BigDecimal bankSettlePrice = loanRepurchaseCost.getBankSettlePrice();
if(bankSettlePrice != null && bankSettlePrice.compareTo(BigDecimal.ZERO)>0){
for (int jj = 0; jj < list.size(); jj++) {
LoanRepaymentPlanDetails loanRepaymentPlanDetails = list.get(jj);
String moneysl = loanRepaymentPlanDetails.getMoneysl();
if(StringUtils.isNotBlank(moneysl) && bankSettlePrice.compareTo(BigDecimal.ZERO)>0){
if(bankSettlePrice.compareTo(new BigDecimal(moneysl))>0){
bankSettlePrice = bankSettlePrice.subtract(new BigDecimal(moneysl));
BigDecimal paymentMoney = loanRepaymentPlanDetails.getPaymentMoney();
if(paymentMoney != null){
paymentMoney = paymentMoney.add(new BigDecimal(moneysl));
}else{
paymentMoney = new BigDecimal(moneysl);
}
loanRepaymentPlanDetails.setPaymentMoney(paymentMoney);
loanRepaymentPlanDetailsService.updateById(loanRepaymentPlanDetails);
}else{
bankSettlePrice = BigDecimal.ZERO;
BigDecimal paymentMoney = loanRepaymentPlanDetails.getPaymentMoney();
if(paymentMoney != null){
paymentMoney = paymentMoney.add(bankSettlePrice);
}else{
paymentMoney = bankSettlePrice;
}
loanRepaymentPlanDetails.setPaymentMoney(paymentMoney);
loanRepaymentPlanDetailsService.updateById(loanRepaymentPlanDetails);
}
}else{
break;
}
}
}
}
//推送凭证
if(loanRepurchaseApply != null){
List<Voucher.VoucherResultDetailDto> voucherResultDetailDtos = new ArrayList<>();
LoanRepurchaseCost loanRepurchaseCost = loanRepurchaseCostService.selectByMainSid(businessSid);
DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(loanRepurchaseApply.getBankName(), "investorsCode").getData();
Voucher voucher = new Voucher();
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(loanRepurchaseApply.getUseOrgSid()).getData();

Loading…
Cancel
Save