Browse Source

Merge remote-tracking branch 'origin/master'

master
yunuo970428 1 month ago
parent
commit
32b2f2e6b0
  1. 4
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseaccadjapply/AppCompanyAdjustVo.java
  2. 9
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecord.java
  3. 8
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordDetailsVo.java
  4. 8
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordDto.java
  5. 6
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordFeign.java
  6. 9
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordFeignFallback.java
  7. 3
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordQuery.java
  8. 2
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordVo.java
  9. 52
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/GetSerialNum.java
  10. 2
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordMapper.java
  11. 10
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordMapper.xml
  12. 8
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordRest.java
  13. 358
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordService.java
  14. 68
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java
  15. 4
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/appsubsetversion/AppSubsetVersionFeign.java
  16. 2
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java
  17. 19
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbecollectionrecord/LoanBeCollectionRecordFeign.java
  18. 15
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeign.java
  19. 6
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeignFallback.java
  20. 8
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java
  21. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettlecompanyreduction/LoanSettleCompanyReduction.java
  22. 8
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeign.java
  23. 8
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeignFallback.java
  24. 64
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvoucher/RskPaymentVoucher.java
  25. 52
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvoucher/RskVoucher.java
  26. 549
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbeoverdueveh/LoanBeOverdueVehMapper.xml
  27. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbeoverdueveh/LoanBeOverdueVehService.java
  28. 30
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyRest.java
  29. 212
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyService.java
  30. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java
  31. 373
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java
  32. 9
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyRest.java
  33. 203
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java
  34. 13
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleenterlibrary/ScmVehicleEnterlibraryFeign.java
  35. 8
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/supplychain/companyAdjust/CompanyAdjustVo.java

4
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseaccadjapply/AppCompanyAdjustVo.java

@ -26,10 +26,10 @@ public class AppCompanyAdjustVo implements Vo {
private String callOutOrgName;
@ApiModelProperty("调车类型key")
@JsonProperty("typeKey")
private String shuntingTypeKey;
private String accadjTypeKey;
@ApiModelProperty("调车类型")
@JsonProperty("type")
private String shuntingTypeValue;
private String accadjTypeValue;
private List<AppCompanyAdjustList> records = new ArrayList<>();
}

9
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecord.java

@ -119,4 +119,13 @@ public class FinPaymentrecord extends BaseEntity {
private BigDecimal paymentCharges;
@ApiModelProperty("是否推送回款返利,0不推送,1推送")
private Integer isPushHkfl;
@ApiModelProperty("推送财务数据类型(0付款单,1凭证)")
private Integer finDataType;
@ApiModelProperty("应付类别分类(dictTypeCode)")
private String payCostType;
@ApiModelProperty("款项类别key(dictKey对应财务应付类别编码)")
private String payChannel;
@ApiModelProperty("批量处理编码")
private String batchNumber;
}

8
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordDetailsVo.java

@ -85,4 +85,12 @@ public class FinPaymentrecordDetailsVo implements Vo {
private String purchaseSystemSid; // 采购系统sid
@ApiModelProperty("采购系统名称")
private String purchaseSystemName; // 采购系统名称
@ApiModelProperty("推送财务数据类型(0付款单,1凭证)")
private Integer finDataType;
@ApiModelProperty("应付类别分类(dictTypeCode)")
private String payCostType;
@ApiModelProperty("款项类别key(dictKey对应财务应付类别编码)")
private String payChannel;
@ApiModelProperty("批量处理编码")
private String batchNumber;
}

8
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordDto.java

@ -105,4 +105,12 @@ public class FinPaymentrecordDto implements Dto {
private String busRemarks;
@ApiModelProperty("是否推送回款返利,0不推送,1推送")
private Integer isPushHkfl;
@ApiModelProperty("推送财务数据类型(0付款单,1凭证)")
private Integer finDataType;
@ApiModelProperty("应付类别分类(dictTypeCode)")
private String payCostType;
@ApiModelProperty("款项类别key(dictKey对应财务应付类别编码)")
private String payChannel;
@ApiModelProperty("批量处理编码")
private String batchNumber;
}

6
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordFeign.java

@ -79,6 +79,12 @@ public interface FinPaymentrecordFeign {
@ResponseBody
ResultBean update(@RequestBody FinPaymentrecordUpdateDto dto);
@ApiOperation("批量办理")
@PostMapping("/batchUpdate")
@ResponseBody
ResultBean batchUpdate(@RequestBody FinPaymentrecordUpdateDto dto);
@ApiOperation("作废")
@PostMapping("/updateState")
@ResponseBody

9
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordFeignFallback.java

@ -29,10 +29,6 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
import java.util.Map;
/**
* Project: anrui-fin(财务) <br/>
@ -76,6 +72,11 @@ public class FinPaymentrecordFeignFallback implements FinPaymentrecordFeign {
return null;
}
@Override
public ResultBean batchUpdate(FinPaymentrecordUpdateDto dto) {
return null;
}
@Override
public ResultBean updateState(String[] sids) {
return null;

3
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordQuery.java

@ -78,5 +78,6 @@ public class FinPaymentrecordQuery implements Query {
private String payBank;
@ApiModelProperty("付款账号")
private String payBankAccount;
@ApiModelProperty("批量处理编码")
private String batchNumber;
}

2
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordVo.java

@ -95,4 +95,6 @@ public class FinPaymentrecordVo implements Vo {
private String payWayKey;
@ApiModelProperty("付款方式Value")
private String payWayValue;
@ApiModelProperty("批量处理编码")
private String batchNumber;
}

52
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/GetSerialNum.java

@ -0,0 +1,52 @@
package com.yxt.anrui.fin.api.finpaymentrecord;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.locks.ReentrantLock;
public class GetSerialNum {
// /**记录已有流水单*/
// public static int num = 0;
private static ReentrantLock lock = new ReentrantLock();
public static String getNum(int num) {
String unique = "";
//上锁
lock.lock();
try {
//------------------流水号业务逻辑----------------
//5位流水号
if (num == 0) {
//当天第一份流水单号
unique = new SimpleDateFormat("yyMMdd").format(new Date()) + "0001";
} else {
//当天最后的订单流水号累加1
String nums = String.valueOf(num + 1);
//设定具体流水为两位数,单数则补齐前面的0
StringBuilder sb = new StringBuilder(nums);
for (int i = nums.length(); i < 4; i++) {
sb.insert(0, "0");
}
unique = new SimpleDateFormat("yyMMdd").format(new Date()) + sb.toString();
}
//已有流水单+1
num++;
//----------------------------------
} catch (Exception e) {
e.printStackTrace();
} finally {
//释放锁
lock.unlock();
}
return unique;
}
}

2
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordMapper.java

@ -68,4 +68,6 @@ public interface FinPaymentrecordMapper extends BaseMapper<FinPaymentrecord> {
int updateStateBySid(@Param("sid")String sid, @Param("state") int i);
List<String> selectApplySidBySid(List<String> sids);
String selectBatchNum(@Param("s") String s);
}

10
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordMapper.xml

@ -27,7 +27,8 @@
fp.payCode,
fp.busRemarks,
fp.payWayKey,
fp.payWayValue
fp.payWayValue,
fp.batchNumber
FROM fin_paymentrecord fp
LEFT JOIN anrui_portal.sys_organization so ON fp.createOrgSid = so.sid
<where>
@ -65,4 +66,11 @@
#{item}
</foreach>
</select>
<select id="selectBatchNum" resultType="java.lang.String">
select RIGHT (batchNumber, 4)
from fin_paymentrecord
where batchNumber LIKE concat(#{s}, '%')
order by id desc
limit 1
</select>
</mapper>

8
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordRest.java

@ -34,9 +34,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
* Project: anrui-fin(财务) <br/>
* File: FinPaymentrecordFeignFallback.java <br/>
@ -87,6 +84,11 @@ public class FinPaymentrecordRest implements FinPaymentrecordFeign {
return finPaymentrecordService.updateAll(dto);
}
@Override
public ResultBean batchUpdate(FinPaymentrecordUpdateDto dto) {
return finPaymentrecordService.batchUpdate(dto);
}
@Override
public ResultBean updateState(String[] sids) {
return finPaymentrecordService.updateState(sids);

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

@ -27,6 +27,7 @@ package com.yxt.anrui.fin.biz.finpaymentrecord;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
@ -55,12 +56,14 @@ import com.yxt.anrui.fin.api.finpaymentapplyvehicle.FinPaymentapplyVehicleVo;
import com.yxt.anrui.fin.api.finpaymentrecord.*;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR;
import com.yxt.anrui.fin.api.kingdee.appaybill.ApPayBill;
import com.yxt.anrui.fin.api.kingdee.voucher.Voucher;
import com.yxt.anrui.fin.biz.finmanufacturerbank.FinManufacturerBankService;
import com.yxt.anrui.fin.biz.finpaymentapply.FinPaymentapplyService;
import com.yxt.anrui.fin.biz.finpaymentapplydetails.FinPaymentapplyDetailsService;
import com.yxt.anrui.fin.biz.finpaymentapplyvehicle.FinPaymentapplyVehicleService;
import com.yxt.anrui.fin.biz.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRService;
import com.yxt.anrui.fin.biz.kingdee.appaybill.ApPayBillService;
import com.yxt.anrui.fin.biz.kingdee.voucher.VoucherService;
import com.yxt.anrui.portal.api.flow.FlowableFeign;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganization;
@ -79,6 +82,7 @@ import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDe
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanMoneyVo;
import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApplyFeign;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApplyFeign;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.anrui.scm.api.scmcollectionrebate.ScmCollectionRebateDto;
import com.yxt.anrui.scm.api.scmcollectionrebate.ScmCollectionRebateFeign;
import com.yxt.anrui.scm.api.scmcollectionrebateveh.ScmCollectionRebateVehDto;
@ -106,6 +110,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
@ -185,6 +190,8 @@ public class FinPaymentrecordService extends MybatisBaseService<FinPaymentrecord
private FinManufacturerBankService finManufacturerBankService;
@Autowired
private LoanSettleApplyFeign loanSettleApplyFeign;
@Autowired
private VoucherService voucherService;
public PagerVo<FinPaymentrecordVo> listPageVo(PagerQuery<FinPaymentrecordQuery> pq) {
FinPaymentrecordQuery query = pq.getParams();
@ -203,6 +210,9 @@ public class FinPaymentrecordService extends MybatisBaseService<FinPaymentrecord
if (StringUtils.isNotBlank(pageQuery.getCostTitleKey())) {
qw.eq("fp.costTitleKey", pageQuery.getCostTitleKey());
}
if (StringUtils.isNotBlank(pageQuery.getBatchNumber())) {
qw.like("fp.batchNumber", pageQuery.getBatchNumber());
}
//申请日期
qw.apply(StringUtils.isNotBlank(pageQuery.getCreateStartDate()), "date_format (fp.createTime,'%Y-%m-%d') >= date_format('" + pageQuery.getCreateStartDate() + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(pageQuery.getCreateEndDate()), "date_format (fp.createTime,'%Y-%m-%d') <= date_format('" + pageQuery.getCreateEndDate() + "','%Y-%m-%d')"
@ -657,17 +667,26 @@ public class FinPaymentrecordService extends MybatisBaseService<FinPaymentrecord
厂家采购订金:005定金厂家采购车款:车辆功能厂家销售/回款通路
"外采订金:005定金
外采车款:002外采"*/
if (!"厂家采购".equals(finPaymentrecord.getCostTypeValue()) && !"厂家车款".equals(finPaymentrecord.getCostTypeValue())) {
apPayBill.setF_PAEZ_AssistantKey(finPaymentrecord.getCostTypeKey());
// if (!"厂家采购".equals(finPaymentrecord.getCostTypeValue()) && !"厂家车款".equals(finPaymentrecord.getCostTypeValue())) {
// apPayBill.setF_PAEZ_AssistantKey(finPaymentrecord.getCostTypeKey());
// apPayBill.setF_PAEZ_AssistantType("payCostType");
// } else {
// if ("009".equals(finPaymentrecord.getCostTypeKey())){
// apPayBill.setF_PAEZ_AssistantKey("001");
// }else {
// apPayBill.setF_PAEZ_AssistantKey(finPaymentrecord.getCostTypeKey());
// }
// apPayBill.setF_PAEZ_AssistantType("payChannel");
// }
if (StringUtils.isNotBlank(finPaymentrecord.getPayCostType())) {
apPayBill.setF_PAEZ_AssistantKey(finPaymentrecord.getPayCostType());
apPayBill.setF_PAEZ_AssistantType("payCostType");
} else {
if ("009".equals(finPaymentrecord.getCostTypeKey())){
apPayBill.setF_PAEZ_AssistantKey("001");
}else {
apPayBill.setF_PAEZ_AssistantKey(finPaymentrecord.getCostTypeKey());
}
}
if (StringUtils.isNotBlank(finPaymentrecord.getPayChannel())) {
apPayBill.setF_PAEZ_AssistantKey(finPaymentrecord.getPayChannel());
apPayBill.setF_PAEZ_AssistantType("payChannel");
}
List<ApPayBill.FPAYBILLENTRY> FPAYBILLENTRYs = new ArrayList<>();
if (finPaymentrecord.getCost() != null
&& finPaymentrecord.getCost().compareTo(BigDecimal.ZERO) > 0) {
@ -719,6 +738,325 @@ public class FinPaymentrecordService extends MybatisBaseService<FinPaymentrecord
}
public String selectBatchNum(String s) {
return baseMapper.selectBatchNum(s);
}
public ResultBean batchUpdate(FinPaymentrecordUpdateDto dto) {
ResultBean rb = ResultBean.fireFail();
List<String> sids = dto.getSids();
//判断选择的sids的付款申请的收款单位是否一致
List<String> applySids = baseMapper.selectApplySids(sids);
if (applySids.size() > 1) {
applySids = applySids.stream().distinct().collect(Collectors.toList());
if (applySids.size() > 1) {
return rb.setMsg("批量处理的数据中存在收款账号不一致");
}
}
if (applySids.contains("")) {
return rb.setMsg("处理的数据包含收款账号不存在的数据");
}
//判断是否包含已作废的
List<String> sidState = baseMapper.selectApplySidBySid(sids);
if (sidState.size() > 1) {
if (sidState.contains(3)) {
return rb.setMsg("处理的数据包含已作废的记录");
}
if (sidState.contains(2)) {
return rb.setMsg("处理的数据中包含已通过的记录");
}
}
//生成批量处理编号
String batchNumTemp = selectBatchNum(new SimpleDateFormat("yyMMdd").format(new Date()));
if (StringUtils.isBlank(batchNumTemp)) {
batchNumTemp = "0";
}
int intValue = Integer.valueOf(batchNumTemp).intValue();
String batchNum = GetSerialNum.getNum(intValue);
List<ApPayBill> apPayBills = new ArrayList<>();
List<Voucher> vouchers = new ArrayList<>();
for (int i = 0; i < sids.size(); i++) {
FinPaymentrecord finPaymentrecord = fetchBySid(sids.get(i));
int finDataType = 0; //(0付款单,1凭证)
if (null != finPaymentrecord.getFinDataType()) {
if (finPaymentrecord.getFinDataType().intValue() == 1) {
finDataType = 1;
}
} else {
finDataType = 1;
}
finPaymentrecord.setBatchNumber(batchNum);
//到回款返利申请
if (finPaymentrecord.getIsPushHkfl() == 1) {
ScmCollectionRebateDto scmCollectionRebateDto = new ScmCollectionRebateDto();
List<ScmCollectionRebateVehDto> scmCollectionRebateVehDtos = new ArrayList<>();
FinPaymentapply finPaymentapply = finPaymentapplyService.fetchBySid(finPaymentrecord.getApplySid());
FinPaymentapplyDetails finPaymentapplyDetails = finPaymentapplyDetailsService.fetchBySid(finPaymentrecord.getBusSid());
List<FinPaymentapplyVehicleVo> vehicleList = finPaymentapplyVehicleService.getVehicleList(finPaymentapply.getSid());
scmCollectionRebateDto.setPurchaseSystemSid(finPaymentrecord.getPurchaseSystemSid());
scmCollectionRebateDto.setPurchaseSystemName(finPaymentrecord.getPurchaseSystemName());
scmCollectionRebateDto.setCostTitleKey(finPaymentrecord.getCostTitleKey());
scmCollectionRebateDto.setCostTitleValue(finPaymentrecord.getCostTitleValue());
scmCollectionRebateDto.setBrandSid(finPaymentapply.getCarBrandSid());
scmCollectionRebateDto.setBrandName(finPaymentapply.getCarBrandName());
scmCollectionRebateDto.setCollectionTypeKey(dto.getPayWayKey());
scmCollectionRebateDto.setCollectionTypeValue(dto.getPayWayValue());
scmCollectionRebateDto.setManufaSaleChannel("");
scmCollectionRebateDto.setManufaSaleChannelValue(finPaymentapplyDetails.getActualPay());
scmCollectionRebateDto.setCollectionMoney(new BigDecimal(dto.getCost()));
scmCollectionRebateDto.setCollectionDate(DateUtil.formatDate(dto.getPayDate()));
SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(finPaymentrecord.getCreateOrgSid()).getData();
scmCollectionRebateDto.setCreateOrgSid(finPaymentrecord.getCreateOrgSid());
scmCollectionRebateDto.setCreateOrgName(sysOrganizationVo.getName());
scmCollectionRebateDto.setUseOrgSid(finPaymentrecord.getUseOrgSid());
scmCollectionRebateDto.setUseOrgName(sysOrganizationVo.getName());
scmCollectionRebateDto.setOrgPath(finPaymentapply.getOrgSidPath());
scmCollectionRebateDto.setCreateBySid(finPaymentrecord.getCreateBySid());
if (vehicleList != null && vehicleList.size() > 0) {
for (FinPaymentapplyVehicleVo finPaymentapplyVehicleVo : vehicleList) {
ScmCollectionRebateVehDto scmCollectionRebateVehDto = new ScmCollectionRebateVehDto();
BaseVehicleSelectVo baseVehicleSelectVo = baseVehicleFeign.details(finPaymentapplyVehicleVo.getVehiSid()).getData();
scmCollectionRebateVehDto.setCarModelSid(finPaymentapplyVehicleVo.getModelSid());
scmCollectionRebateVehDto.setCarModelName(finPaymentapplyVehicleVo.getModelName());
scmCollectionRebateVehDto.setPriceDate(DateUtil.format(baseVehicleSelectVo.getPriceDate(), "yyyy-MM-dd"));
if (baseVehicleSelectVo.getSalesDate() != null) {
scmCollectionRebateVehDto.setSalesDate(DateUtil.format(baseVehicleSelectVo.getSalesDate(), "yyyy-MM-dd"));
}
scmCollectionRebateVehDto.setVehSid(finPaymentapplyVehicleVo.getVehiSid());
scmCollectionRebateVehDto.setVinNo(finPaymentapplyVehicleVo.getVinNo());
scmCollectionRebateVehDto.setCostPrice(finPaymentapplyVehicleVo.getMoney());
scmCollectionRebateVehDtos.add(scmCollectionRebateVehDto);
}
}
scmCollectionRebateDto.setScmCollectionRebateVehs(scmCollectionRebateVehDtos);
scmCollectionRebateDto.setIsEnable(1);
scmCollectionRebateFeign.save(scmCollectionRebateDto);
}
//更新还款计划表垫款金额和逾期利息
if ("007".equals(finPaymentrecord.getCostTypeKey())) {
List<LoanBePadsincereVehDetailsVo> loanBePadsincereVehDetailsVos = loanBePadsincereVehFeign.selByBankCont(finPaymentrecord.getApplySid(), finPaymentrecord.getBusSid()).getData();
for (LoanBePadsincereVehDetailsVo loanBePadsincereVehDetailsVo : loanBePadsincereVehDetailsVos) {
LoanRepaymentPlanMoneyVo loanRepaymentPlanMoneyVo = loanRepaymentPlanDetailsFeign.selVehSidAndPeriod(loanBePadsincereVehDetailsVo.getBusVinSid(), loanBePadsincereVehDetailsVo.getPeriod(), loanBePadsincereVehDetailsVo.getBankContractNo()).getData();
LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsFeign.fetchDetails(loanRepaymentPlanMoneyVo.getSid()).getData();
String paymentMoney = loanRepaymentPlanMoneyVo.getPaymentMoney().add(new BigDecimal(loanBePadsincereVehDetailsVo.getPadMoney())).toString();
String paymentInterest = loanRepaymentPlanMoneyVo.getPaymentInterest().add(new BigDecimal(loanBePadsincereVehDetailsVo.getBankBeInter())).toString();
loanRepaymentPlanDetailsFeign.updateSidAndPeriod(loanRepaymentPlanMoneyVo.getSid(), loanBePadsincereVehDetailsVo.getPeriod(), paymentMoney, paymentInterest);
//推送金融应收
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(finPaymentrecord.getCreateBySid());
SysUserVo userVo = sysUserFeign.fetchBySid(finPaymentrecord.getCreateBySid()).getData();
jr.setCreateByName(userVo.getName());
jr.setBusSid(planDetails.getSid());
jr.setApplySid(finPaymentrecord.getApplySid());
jr.setCurrentReceivableMoney(new BigDecimal(paymentInterest));
jr.setReveivableMoney(new BigDecimal(paymentInterest));
jr.setPayCostTitleKey("005");
jr.setPayCostTitleValue("资方逾期利息");
jr.setOrgSidPath(planDetails.getOrgSidPath());
jr.setUseOrgName(planDetails.getUseOrgName());
jr.setUseOrgSid(planDetails.getUseOrgSid());
jr.setStaffDeptName(planDetails.getDept());
jr.setStaffName(planDetails.getStaffName());
jr.setStaffDeptSid(planDetails.getDeptSid());
jr.setStaffUserSid(planDetails.getSalesUserSid());
finUncollectedReceivablesDetailedJRService.insert(jr);
}
}
FinPaymentrecord finPaymentrecordOne = null;
if (new BigDecimal(dto.getCost()).compareTo(finPaymentrecord.getAccountsReceive()) < 0) {//实收金额小于应收金额
finPaymentrecordOne = new FinPaymentrecord();
BeanUtil.copyProperties(finPaymentrecord, finPaymentrecordOne, "sid");
finPaymentrecordOne.setAccountsReceive(finPaymentrecord.getAccountsReceive().subtract(new BigDecimal(dto.getCost())));
finPaymentrecordOne.setCost(finPaymentrecordOne.getAccountsReceive());
}
BeanUtil.copyProperties(dto, finPaymentrecord, "sid");
List<String> payFiles = dto.getPayFiles();
if (payFiles.size() > 0) {
String payFile = payFiles.stream().map(v -> v.replace(fileUploadComponent.getUrlPrefix(), "")).collect(Collectors.joining(","));
finPaymentrecord.setPayFile(payFile);
}
baseMapper.updateById(finPaymentrecord);
//更新付款申请中的状态
FinPaymentapply finPaymentapply = finPaymentapplyService.fetchBySid(finPaymentrecord.getApplySid());
if (finPaymentapply != null) {
finPaymentapplyService.updateStateBySid(finPaymentrecord.getApplySid(), 2);
baseMapper.updateStateBySid(finPaymentrecord.getSid(), 2);
} else {
baseMapper.updateStateBySid(finPaymentrecord.getSid(), 2);
//更新厂家认款状态
BaseManufUpdateDto baseManufUpdateDto = new BaseManufUpdateDto();
baseManufUpdateDto.setSid(finPaymentrecord.getBusSid());
baseManufUpdateDto.setState("1");
ResultBean resultBean = baseManufactorSubscriptionFeign.updatePaymentState(baseManufUpdateDto);
}
if (finPaymentrecordOne != null) {
baseMapper.insert(finPaymentrecordOne);
}
//推送金蝶付款单
if (finDataType == 0) {
try {
ApPayBill apb = createApPayBill(finPaymentrecord);
apPayBills.add(apb);
} catch (Exception e) {
log.error(e.getMessage());
}
}
String costTypeKey = finPaymentrecord.getCostTypeKey();
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(1, 10,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
int finalI = i;
if ("005".equals(costTypeKey)) {
Future future6 = pool.submit(() -> {
List<String> recipientSidList = new ArrayList<>();
BusVehicleApplyDetailsVo busVehicleApplyDetailsVo = busVehicleApplyFeign.fetchSid(finPaymentrecord.getApplySid()).getData();
String createBySid = busVehicleApplyDetailsVo.getCreateBySid();
recipientSidList.add(createBySid);
PushMessageQuery pushMessageQuery = new PushMessageQuery();
pushMessageQuery.setReceivedSids(recipientSidList);
pushMessageQuery.setModuleName("财务管理");
pushMessageQuery.setMsgContent("您的付款申请已确认通过");
pushMessageQuery.setApp_type("2");
pushMessageQuery.setModuleSid("98ff0724-5df4-4fc7-ab6d-3996e7706acd");
pushMessageQuery.setMsgTitle("付款确认通知");
pushMessageQuery.setBusinessSid(sids.get(finalI));
// 消息推送
messageFeign.pushNoUriMessage(pushMessageQuery);
});
} else if ("002".equals(costTypeKey)) {
Future future6 = pool.submit(() -> {
List<String> recipientSidList = new ArrayList<>();
BaseOutsourcingApplicationDetailsVo baseOutsourcingApplicationDetailsVo = baseOutsourcingApplicationFeign.fetchBySid(finPaymentrecord.getApplySid()).getData();
String createBySid = baseOutsourcingApplicationDetailsVo.getCreateBySid();
recipientSidList.add(createBySid);
PushMessageQuery pushMessageQuery = new PushMessageQuery();
pushMessageQuery.setReceivedSids(recipientSidList);
pushMessageQuery.setModuleName("财务管理");
pushMessageQuery.setMsgContent("您的付款申请已确认通过");
pushMessageQuery.setApp_type("2");
pushMessageQuery.setModuleSid("98ff0724-5df4-4fc7-ab6d-3996e7706acd");
pushMessageQuery.setMsgTitle("付款确认通知");
pushMessageQuery.setBusinessSid(sids.get(finalI));
// 消息推送
messageFeign.pushNoUriMessage(pushMessageQuery);
});
} else if ("006".equals(costTypeKey)) {
//推送转付记录
Future future1 = pool.submit(() -> {
loanTransferPaymentApplyFeign.pushPaymentRecord(finPaymentrecord.getBusSid(), finPaymentrecord.getSid());
});
Future future2 = pool.submit(() -> {
RskVoucher voucher = loanTransferPaymentApplyFeign.pushPaymentVoucherReturnVoucher(finPaymentrecord.getBusSid(), finPaymentrecord.getSid()).getData();
if (null != voucher) {
Voucher v = new Voucher();
BeanUtil.copyProperties(voucher, v);
vouchers.add(v);
}
});
} else if ("007".equals(costTypeKey)) {
Future future1 = pool.submit(() -> {
RskVoucher voucher = loanBePadsincereApplyFeign.pushAdvancesReturnVoucher(finPaymentrecord.getApplySid(), finPaymentrecord.getSid()).getData();
if (null != voucher) {
Voucher v = new Voucher();
BeanUtil.copyProperties(voucher, v);
vouchers.add(v);
}
});
} 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);
}
}
}
} catch (Exception e) {
e.printStackTrace();
log.error("推送数据失败=========================" + e.getMessage());
return rb.setMsg("推送数据失败");
}
}
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(1, 10,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future future = pool.submit(() -> {
if (!apPayBills.isEmpty()) {
ApPayBill apPayBill = buildBatchApPayBill(apPayBills);
ResultBean resultBean1 = apPayBillService.draftApPayBill(apPayBill);
}
if (!vouchers.isEmpty()) {
Voucher voucher = buildBatchVoucher(vouchers);
log.info("FinKingDeeFeignRest-saveVoucher:{}", JSONObject.toJSONString(voucher));
voucherService.saveVoucher(voucher);
}
});
} catch (Exception e) {
e.printStackTrace();
log.error("推送数据失败=========================" + e.getMessage());
return rb.setMsg("推送数据失败");
}
return rb.success();
}
private Voucher pushPaymentVoucherReturnVoucher(String busSid, String sid) {
return null;
}
public ApPayBill buildBatchApPayBill(List<ApPayBill> list) {
ApPayBill apPayBill = new ApPayBill();
List<ApPayBill.FPAYBILLENTRY> FPAYBILLENTRY = new ArrayList<>();
ApPayBill payBill = list.get(0);
BeanUtil.copyProperties(payBill, apPayBill);
for (ApPayBill bill : list) {
List<ApPayBill.FPAYBILLENTRY> fpaybillentry = bill.getFPAYBILLENTRY();
if (!fpaybillentry.isEmpty()) {
for (ApPayBill.FPAYBILLENTRY f : fpaybillentry) {
FPAYBILLENTRY.add(f);
}
}
}
apPayBill.setFPAYBILLENTRY(FPAYBILLENTRY);
return apPayBill;
}
public Voucher buildBatchVoucher(List<Voucher> list) {
Voucher newVoucher = new Voucher();
List<Voucher.VoucherResultDetailDto> resultDetails = new ArrayList<>();
Voucher voucher = list.get(0);
BeanUtil.copyProperties(voucher, newVoucher);
for (Voucher v : list) {
List<Voucher.VoucherResultDetailDto> result = v.getResultDetails();
if (!result.isEmpty()) {
for (Voucher.VoucherResultDetailDto r : result) {
resultDetails.add(r);
}
}
}
newVoucher.setResultDetails(resultDetails);
return newVoucher;
}
/**
* 作废
*
@ -990,7 +1328,7 @@ public class FinPaymentrecordService extends MybatisBaseService<FinPaymentrecord
finPaymentrecordSourceLCVos.sort(comparing(FinPaymentrecordSourceLCVo::getSpsj));
dataMap.put("lcList", finPaymentrecordSourceLCVos);
}
dataMap.put("payCode", String.valueOf (finPaymentrecord.getId()));
dataMap.put("payCode", String.valueOf(finPaymentrecord.getId()));
dataMap.put("createTime", DateUtil.format(finPaymentrecord.getCreateTime(), "yyyy-MM-dd"));
dataMap.put("createByName", createByName);
dataMap.put("createByDeptName", deptName);
@ -1022,7 +1360,7 @@ public class FinPaymentrecordService extends MybatisBaseService<FinPaymentrecord
} else if (finPaymentapply != null) {
dataMap.put("remarks", finPaymentapply.getCostTypeValue() + "," + finPaymentrecord.getCostTitleValue() + "," + finPaymentapply.getRemarks());
FinPaymentapplyDetails finPaymentapplyDetails = finPaymentapplyDetailsService.fetchBySid(finPaymentrecord.getBusSid());
if ("1".equals(finPaymentapply.getIsVeh())){
if ("1".equals(finPaymentapply.getIsVeh())) {
List<FinPaymentapplyVehicleVo> vehicleList = finPaymentapplyVehicleService.getVehicleList(finPaymentapply.getSid());
String payRemark = "";
for (FinPaymentapplyVehicleVo finPaymentapplyVehicleVo : vehicleList) {

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

@ -1670,23 +1670,23 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
dto0.setDebit(String.valueOf(voucherDetail.getPaymentCharges()));
resultDetails.add(dto0);
}
if (voucherDetail.getNoRelief().compareTo(BigDecimal.ZERO) != 0) {
Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //借方
dto2.setSummary(voucherDetail.getBankName() + "结清未到期利息不减免");
dto2.setSubjectNo("6002.01.17");
dto2.setDimensionDept(voucherDetail.getDeptCode());
dto2.setCredit(String.valueOf(voucherDetail.getNoRelief()));
resultDetails.add(dto2);
}
if (voucherDetail.getRelief().compareTo(BigDecimal.ZERO) != 0) {
Voucher.VoucherResultDetailDto dto3 = new Voucher.VoucherResultDetailDto(); //借方
dto3.setSummary(voucherDetail.getBankName() + "结清未到期利息减免");
dto3.setSubjectNo("1201.01.00");
dto3.setDimensionDept(voucherDetail.getDeptCode());
dto3.setDimensionCustom(voucherDetail.getCustomerCode());
dto3.setCredit(String.valueOf(voucherDetail.getRelief()));
resultDetails.add(dto3);
}
// if (voucherDetail.getNoRelief().compareTo(BigDecimal.ZERO) != 0) {
// Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //借方
// dto2.setSummary(voucherDetail.getBankName() + "结清未到期利息不减免");
// dto2.setSubjectNo("6002.01.17");
// dto2.setDimensionDept(voucherDetail.getDeptCode());
// dto2.setCredit(String.valueOf(voucherDetail.getNoRelief()));
// resultDetails.add(dto2);
// }
// if (voucherDetail.getRelief().compareTo(BigDecimal.ZERO) != 0) {
// Voucher.VoucherResultDetailDto dto3 = new Voucher.VoucherResultDetailDto(); //借方
// dto3.setSummary(voucherDetail.getBankName() + "结清未到期利息减免");
// dto3.setSubjectNo("1201.01.00");
// dto3.setDimensionDept(voucherDetail.getDeptCode());
// dto3.setDimensionCustom(voucherDetail.getCustomerCode());
// dto3.setCredit(String.valueOf(voucherDetail.getRelief()));
// resultDetails.add(dto3);
// }
if (voucherDetail.getSubtrahend().compareTo(BigDecimal.ZERO) != 0) {
Voucher.VoucherResultDetailDto dto4 = new Voucher.VoucherResultDetailDto(); //贷方
dto4.setSummary(voucherDetail.getBankName() + "个贷保证金抵结清款");
@ -1729,23 +1729,23 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
dto0.setDebit(String.valueOf(voucherDetail.getPaymentCharges()));
resultDetails.add(dto0);
}
if (voucherDetail.getNoRelief().compareTo(BigDecimal.ZERO) != 0) {
Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //借方
dto2.setSummary(voucherDetail.getBankName() + "结清未到期利息不减免");
dto2.setSubjectNo("6002.01.17");
dto2.setDimensionDept(voucherDetail.getDeptCode());
dto2.setCredit(String.valueOf(voucherDetail.getNoRelief()));
resultDetails.add(dto2);
}
if (voucherDetail.getRelief().compareTo(BigDecimal.ZERO) != 0) {
Voucher.VoucherResultDetailDto dto3 = new Voucher.VoucherResultDetailDto(); //借方
dto3.setSummary(voucherDetail.getBankName() + "结清未到期利息减免");
dto3.setSubjectNo("1201.01.00");
dto3.setDimensionDept(voucherDetail.getDeptCode());
dto3.setDimensionCustom(voucherDetail.getCustomerCode());
dto3.setCredit(String.valueOf(voucherDetail.getRelief()));
resultDetails.add(dto3);
}
// if (voucherDetail.getNoRelief().compareTo(BigDecimal.ZERO) != 0) {
// Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //借方
// dto2.setSummary(voucherDetail.getBankName() + "结清未到期利息不减免");
// dto2.setSubjectNo("6002.01.17");
// dto2.setDimensionDept(voucherDetail.getDeptCode());
// dto2.setCredit(String.valueOf(voucherDetail.getNoRelief()));
// resultDetails.add(dto2);
// }
// if (voucherDetail.getRelief().compareTo(BigDecimal.ZERO) != 0) {
// Voucher.VoucherResultDetailDto dto3 = new Voucher.VoucherResultDetailDto(); //借方
// dto3.setSummary(voucherDetail.getBankName() + "结清未到期利息减免");
// dto3.setSubjectNo("1201.01.00");
// dto3.setDimensionDept(voucherDetail.getDeptCode());
// dto3.setDimensionCustom(voucherDetail.getCustomerCode());
// dto3.setCredit(String.valueOf(voucherDetail.getRelief()));
// resultDetails.add(dto3);
// }
if (voucherDetail.getBalance().compareTo(BigDecimal.ZERO) != 0) {
Voucher.VoucherResultDetailDto dto4 = new Voucher.VoucherResultDetailDto(); //贷方
dto4.setSummary(voucherDetail.getBankName() + "结清");

4
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/appsubsetversion/AppSubsetVersionFeign.java

@ -38,7 +38,7 @@ public interface AppSubsetVersionFeign {
@ResponseBody
@PostMapping("/save")
public ResultBean save(AppSubsetVersionDto appSubsetVersionDto);
@ApiOperation(value = "更新主框架的子应用")
@ResponseBody
@PostMapping("/update")
@ -62,6 +62,6 @@ public interface AppSubsetVersionFeign {
@ApiOperation("查询插件最新模块信息")
@GetMapping("/getLastRiskByAppSid")
ResultBean<AppSubVersionVo> getLastRiskByAppSid(@RequestParam("appSid") String appSid, @RequestParam("moduleAction")String moduleAction);
ResultBean<AppSubVersionVo> getLastRiskByAppSid(@RequestParam("appSid") String appSid, @RequestParam("moduleAction") String moduleAction);
}

2
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java

@ -296,6 +296,6 @@ public interface SysUserFeign {
@ApiOperation(value = "根据部门sid和角色名查询用户")
@PostMapping(value = "/selectByDeptSidAndRoleName")
ResultBean<List<DeptUserVo>> selectByDeptSidAndRoleName(@RequestParam("deptSid") String deptSid,
@RequestParam("roleNames") List<String> roleNames);
@RequestParam("roleNames") List<String> roleNames);
}

19
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbecollectionrecord/LoanBeCollectionRecordFeign.java

@ -33,21 +33,6 @@ import com.yxt.common.core.vo.PagerVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* Project: anrui-riskcenter(逾期催收记录) <br/>
* File: LoanBeCollectionRecordFeign.java <br/>
* Class: com.yxt.anrui.riskcenter.api.loanbecollectionrecord.LoanBeCollectionRecordFeign <br/>
* Description: 逾期催收记录. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2023-12-11 13:45:40 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Api(tags = "逾期催收记录")
@FeignClient(
contextId = "anrui-riskcenter-LoanBeCollectionRecord",
@ -65,12 +50,12 @@ public interface LoanBeCollectionRecordFeign {
@PostMapping("/save")
@ResponseBody
public ResultBean save(@RequestBody LoanBeCollectionRecordDto dto);
@ApiOperation("根据sid删除记录")
@DeleteMapping("/delBySids")
@ResponseBody
public ResultBean delBySids(@RequestBody String[] sids);
@ApiOperation("根据SID获取一条记录")
@GetMapping("/fetchDetailsBySid/{sid}")
@ResponseBody

15
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeign.java

@ -25,17 +25,14 @@
*********************************************************/
package com.yxt.anrui.riskcenter.api.loanbepadsincereapply;
import com.yxt.anrui.buscenter.api.busvalcustfiling.flowable.*;
import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehDetailsVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.CustomerRecordDelegateQuery;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.RepaymentExcelInfo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.TransferPaymentQuery;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
@ -149,6 +146,12 @@ public interface LoanBePadsincereApplyFeign {
@ResponseBody
public ResultBean pushAdvancesVoucher(@RequestParam("sid") String sid, @RequestParam("paySid") String paySid);
@ApiOperation("推送财务垫款付款凭证")
@PostMapping("/pushAdvancesReturnVoucher")
@ResponseBody
public ResultBean<RskVoucher> pushAdvancesReturnVoucher(@RequestParam("sid") String sid, @RequestParam("paySid") String paySid);
@ApiOperation("垫还明细列表列表导出")
@PostMapping("/dkListPageExport")
@ResponseBody

6
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeignFallback.java

@ -27,6 +27,7 @@ package com.yxt.anrui.riskcenter.api.loanbepadsincereapply;
import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehDetailsVo;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -146,6 +147,11 @@ public class LoanBePadsincereApplyFeignFallback implements LoanBePadsincereApply
return null;
}
@Override
public ResultBean<RskVoucher> pushAdvancesReturnVoucher(String sid, String paySid) {
return null;
}
@Override
public void dkListPageExport(DkRecordQuery query) {

8
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java

@ -1,6 +1,7 @@
package com.yxt.anrui.riskcenter.api.loansettleapply;
import com.yxt.anrui.riskcenter.api.loansettleapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -110,5 +111,12 @@ public interface LoanSettleApplyFeign {
@RequestParam("shouxufei") String shouxufei
);
@ApiOperation(value = "推送资方结清款凭证")
@PostMapping(value = "/pushBankVoucher")
ResultBean<RskVoucher> pushBankReturnVoucher(@RequestParam("sid") String sid,
@RequestParam("accountNumber") String accountNumber,
@RequestParam("payTypeCode") String payTypeCode,
@RequestParam("shouxufei") String shouxufei
);
}

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettlecompanyreduction/LoanSettleCompanyReduction.java

@ -28,7 +28,7 @@ public class LoanSettleCompanyReduction extends BaseEntity {
private BigDecimal profit;
@ApiModelProperty("公司未到期利息减免")
private BigDecimal notDuePriceRelief;
@ApiModelProperty("减免依据")
@ApiModelProperty("减免依据(资方未到期利息减免)")
private BigDecimal reliefBasis;
}

8
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeign.java

@ -1,7 +1,7 @@
package com.yxt.anrui.riskcenter.api.loantransferpaymentapply;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -68,6 +68,12 @@ public interface LoanTransferPaymentApplyFeign {
@ResponseBody
public ResultBean pushPaymentVoucher(@RequestParam("sid") String sid, @RequestParam("paySid") String paySid);
@ApiOperation("推送财务代付款凭证")
@PostMapping("/pushPaymentVoucherReturnVoucher")
@ResponseBody
public ResultBean<RskVoucher> pushPaymentVoucherReturnVoucher(@RequestParam("sid") String sid, @RequestParam("paySid") String paySid);
//---------------------------流程---------------------------------------
@ApiOperation("提交")

8
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeignFallback.java

@ -1,9 +1,8 @@
package com.yxt.anrui.riskcenter.api.loantransferpaymentapply;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -55,6 +54,11 @@ public class LoanTransferPaymentApplyFeignFallback implements LoanTransferPaymen
return null;
}
@Override
public ResultBean<RskVoucher> pushPaymentVoucherReturnVoucher(String sid, String paySid) {
return null;
}
@Override
public ResultBean submitRecordApplication(SubmitTransferDto dto) {
return null;

64
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvoucher/RskPaymentVoucher.java

@ -0,0 +1,64 @@
package com.yxt.anrui.riskcenter.api.loanvoucher;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author Fan
* @description
* @date 2023/12/19 11:18
*/
@Data
@ApiModel(value = "一般凭证 数据传输对象", description = "一般凭证 数据传输对象")
public class RskPaymentVoucher {
@ApiModelProperty("分公司编码")
public String useOrgCode;
@ApiModelProperty("收款方式编码")
public String payTypeCode;
@ApiModelProperty("银行账号")
public String bankAccount;
@ApiModelProperty("凭证明细")
public List<RskPaymentVoucher.PaymentVoucherDetail> voucherDetails;
@Data
public static class PaymentVoucherDetail {
@ApiModelProperty("场景编码")
public String sceneCode;
@ApiModelProperty("资方简称")
public String bankName;
@ApiModelProperty("数据日期")
public Date dataTime;
@ApiModelProperty("部门编码")
public String deptCode;
@ApiModelProperty("部门名称")
public String deptName;
@ApiModelProperty("客户编码")
public String customerCode;
@ApiModelProperty("客户名称")
public String customerName;
@ApiModelProperty("金额")
public BigDecimal amount;
@ApiModelProperty("差额适用于结清时计算差额")
public BigDecimal balance;
@ApiModelProperty("减数适用于结清时计算差额")
public BigDecimal subtrahend;
@ApiModelProperty("结清时未到期利息减免")
public BigDecimal relief;
@ApiModelProperty("结清时未到期利息不减免")
public BigDecimal noRelief;
@ApiModelProperty("付款时手续费")
public BigDecimal paymentCharges;
@ApiModelProperty("备注")
public String remarks;
@ApiModelProperty("借贷方类型")
public String type;
@ApiModelProperty("核算维度银行")
public String bank;
}
}

52
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvoucher/RskVoucher.java

@ -0,0 +1,52 @@
package com.yxt.anrui.riskcenter.api.loanvoucher;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author Administrator
* @description
* @date 2023/9/12 18:13
*/
@Data
public class RskVoucher {
@ApiModelProperty("账簿")
public String accountBook;
@ApiModelProperty("业务日期")
public String bussDate;
@ApiModelProperty("凭证字")
public String voucherWord;
@ApiModelProperty("凭证号")
public String voucherNo;
@ApiModelProperty("收款明细")
public List<RskVoucher.VoucherResultDetailDto> resultDetails;
@Data
public static class VoucherResultDetailDto implements Dto {
@ApiModelProperty("摘要")
public String summary;
@ApiModelProperty("科目编码")
public String subjectNo;
@ApiModelProperty("核算维度部门")
public String dimensionDept;
@ApiModelProperty("核算维度客户")
public String dimensionCustom;
@ApiModelProperty("核算维度银行账号")
public String bankAccount;
@ApiModelProperty("核算维度厂商(供应商)")
public String manufacturer;
@ApiModelProperty("核算维度物料")
public String material;
@ApiModelProperty("核算维度银行")
public String bank;
@ApiModelProperty("借方金额")
public String debit;
@ApiModelProperty("贷方金额")
public String credit;
}
}

549
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbeoverdueveh/LoanBeOverdueVehMapper.xml

@ -16,65 +16,26 @@
a1.bankName,
a1.bankContractNo,
a1.dueMoney AS bankMonthRep,
a1.dueDate AS firstBeDate,
MIN(a1.dueDate) AS firstBeDate, -- 改为取最早逾期日期
COUNT(a1.sid) AS beOverduePeriod,
(
SUM(a1.yq_total) + IFNULL(
(SELECT
SUM(lbpv.bankBeInter)
FROM
loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT
SUM(fund)
FROM
loan_fund_day
WHERE busSid IN
(SELECT
lrpd.sid
FROM
loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') &lt; CURDATE())),
0
)
) AS beOverdueMoney,
SUM(a1.yq_total) +
COALESCE(lbpv_sum.bankBeInter_sum, 0) +
COALESCE(lfd_sum.fund_sum, 0) AS beOverdueMoney,
ROUND(
(
SUM(a1.yq_total) + IFNULL(
(SELECT
SUM(lbpv.bankBeInter)
FROM
loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT
SUM(fund)
FROM
loan_fund_day
WHERE busSid IN
(SELECT
lrpd.sid
FROM
loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') &lt; CURDATE())),
0
)
) / a1.qjyh,
(SUM(a1.yq_total) + COALESCE(lbpv_sum.bankBeInter_sum, 0) + COALESCE(lfd_sum.fund_sum, 0)) /
MAX(a1.qjyh), -- 保证聚合正确性
1
) AS beOverdueMoneyAndPeriod,
SUM(a1.yd_dkje) AS advMoney,
SUM(a1.yd_zjzyf) AS fundPossCostMoney,
a1.riskStaffUserSid,
a1.riskStaffUserName,
a1.reaRepaymentName AS repaymentName,
a1.createTime,
MAX(a1.riskStaffUserSid) AS riskStaffUserSid, -- 保证聚合正确性
MAX(a1.riskStaffUserName) AS riskStaffUserName,
MAX(a1.reaRepaymentName) AS repaymentName,
MAX(a1.createTime) AS createTime,
a1.orgSidPath,
a1.lockCarState
FROM
(SELECT
MAX(a1.lockCarState) AS lockCarState -- 保证聚合正确性
FROM (
SELECT
lrpd.sid,
lrpd.busVinSid,
lrpd.useOrgName,
@ -87,63 +48,67 @@
lrpd.bankContractNo,
lrpd.dueMoney,
lrpd.dueDate,
(
IFNULL(lrs.mainMidRepay, 0) + IFNULL(lrs.otherMidRepay, 0)
) AS qjyh,
(
lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))
) AS yq_total,
(
lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))
) / lrpd.dueMoney AS yq_hsqs,
COALESCE(lrs.mainMidRepay, 0) + COALESCE(lrs.otherMidRepay, 0) AS qjyh,
lrpd.dueMoney - COALESCE(SUM(lrh.actualMoney), 0) AS yq_total,
lrpd.paymentMoney AS yd_dkje,
lrpd.fund AS yd_zjzyf,
lrpd.orgSidPath,
lrpd.createBySid,
bv.riskStaffUserSid,
bv.riskStaffUserName,
bv.reaRepaymentName,
lr.createTime,
(SELECT
CASE
lbcv.lockCarState
WHEN 0
THEN '未控制'
WHEN 1
THEN '控制成功'
WHEN 2
THEN '控制失败'
WHEN 3
THEN '已解控'
lbcr.createTime,
CASE lbcv.lockCarState
WHEN 0 THEN '未控制'
WHEN 1 THEN '控制成功'
WHEN 2 THEN '控制失败'
WHEN 3 THEN '已解控'
END AS lockCarState
FROM
loan_be_collection_veh lbcv
LEFT JOIN loan_be_collection_apply lbca
ON lbca.sid = lbcv.mainSid
WHERE lbca.collMeasure LIKE '%远程控制%'
AND lbca.nodeState = '已办结'
AND lbcv.saleVehSid = lrpd.busVinSid
ORDER BY lbca.createTime DESC
LIMIT 1) AS lockCarState
FROM
loan_repayment_plan_details lrpd
FROM loan_repayment_plan_details lrpd
LEFT JOIN loan_repayment_history lrh
ON lrh.planDetailSid = lrpd.sid
INNER JOIN loan_repayment_schedule lrs
ON lrpd.scheduleSid = lrs.sid
LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv
ON lrpd.busVinSid = bv.sid
LEFT JOIN loan_repayment_schedule lrs
ON lrpd.scheduleSid = lrs.sid
LEFT JOIN
(SELECT
LEFT JOIN (
SELECT
saleVehSid,
createTime
FROM
loan_be_collection_record
ORDER BY createTime DESC) lr
ON lrpd.busVinSid = lr.saleVehSid
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') &lt; CURDATE()
MAX(createTime) AS createTime -- 取最新记录
FROM loan_be_collection_record
GROUP BY saleVehSid
) lbcr ON lrpd.busVinSid = lbcr.saleVehSid
LEFT JOIN (
SELECT
lbcv.saleVehSid,
lbcv.lockCarState,
ROW_NUMBER() OVER (PARTITION BY lbcv.saleVehSid ORDER BY lbca.createTime DESC) AS rn
FROM loan_be_collection_veh lbcv
JOIN loan_be_collection_apply lbca
ON lbca.sid = lbcv.mainSid
WHERE lbca.collMeasure LIKE '%远程控制%'
AND lbca.nodeState = '已办结'
) lbcv ON lbcv.saleVehSid = lrpd.busVinSid AND lbcv.rn = 1
WHERE lrpd.dueDate &lt; CURDATE() -- 移除DATE_FORMAT函数
GROUP BY lrpd.sid
HAVING (yq_total > 0)) a1
HAVING (lrpd.dueMoney - COALESCE(SUM(lrh.actualMoney), 0)) > 0
) a1
LEFT JOIN (
SELECT
saleVehSid,
SUM(bankBeInter) AS bankBeInter_sum
FROM loan_be_padsincere_veh
GROUP BY saleVehSid
) lbpv_sum ON lbpv_sum.saleVehSid = a1.busVinSid
LEFT JOIN (
SELECT
lrpd.busVinSid,
SUM(lfd.fund) AS fund_sum
FROM loan_fund_day lfd
JOIN loan_repayment_plan_details lrpd
ON lrpd.sid = lfd.busSid
WHERE lrpd.dueDate &lt; CURDATE()
GROUP BY lrpd.busVinSid
) lfd_sum ON lfd_sum.busVinSid = a1.busVinSid
<where>
${ew.sqlSegment}
</where>
@ -160,134 +125,113 @@
<select id="initVehListByBorrSid"
resultType="com.yxt.anrui.riskcenter.api.loanbecollectionrecord.LoanBeCollectionRecordVehInit">
SELECT
RIGHT (a1.vinNo, 8) AS vinNo,
a1.customer AS custName,
a1.mobile AS custPhone,
a1.loanContractNo,
a1.bankContractNo,
a1.bankName,
a1.borrowerName AS loanName,
a1.vehMark AS carNum,
a1.dueDate AS firstBeDate,
COUNT(a1.sid) AS beOverduePeriod,
(
SUM(a1.yq_total) + IFNULL(
(SELECT
SUM(lbpv.bankBeInter)
FROM
loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT
SUM(fund)
FROM
loan_fund_day
WHERE busSid IN
(SELECT
lrpd.sid
FROM
loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') &lt; CURDATE())),
0
)
) AS beOverdueMoney,
ROUND((
SUM(a1.yq_total) + IFNULL(
(SELECT
SUM(lbpv.bankBeInter)
FROM
loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT
SUM(fund)
FROM
loan_fund_day
WHERE busSid IN
(SELECT
lrpd.sid
FROM
loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') &lt; CURDATE())),
0
)
) / a1.qjyh, 1) AS beOverdueMoneyAndPeriod,
a1.busVinSid AS saleVehSid,
a1.salesOrderSid,
a1.lockCarState
RIGHT(a1.vinNo, 8) AS vinNo,
MAX(a1.customer) AS custName, -- 使用聚合函数确保分组正确
MAX(a1.mobile) AS custPhone,
a1.loanContractNo,
MAX(a1.bankContractNo) AS bankContractNo,
MAX(a1.bankName) AS bankName,
MAX(a1.borrowerName) AS loanName,
MAX(a1.vehMark) AS carNum,
MIN(a1.dueDate) AS firstBeDate, -- 根据业务需求确定合适的聚合函数
COUNT(a1.sid) AS beOverduePeriod,
CAST(SUM(a1.yq_total) AS DECIMAL(10,2)) + CAST(IFNULL(MAX(a1.bankBeInter_sum), 0) AS DECIMAL(10,2)) + CAST(IFNULL(MAX(a1.fund_sum), 0) AS DECIMAL(10,2)) AS beOverdueMoney,
ROUND(
(SUM(a1.yq_total) + IFNULL(MAX(a1.bankBeInter_sum), 0) + IFNULL(MAX(a1.fund_sum), 0)) / MAX(a1.qjyh),
1
) AS beOverdueMoneyAndPeriod,
a1.busVinSid AS saleVehSid,
MAX(a1.salesOrderSid) AS salesOrderSid,
MAX(a1.lockCarState) AS lockCarState
FROM (
SELECT
lrpd.sid,
lrpd.busVinSid,
lrpd.loanContractNo,
lrpd.bankContractNo,
lrpd.vinNo,
lrpd.bankName,
lrpd.borrowerName,
lrpd.dueDate,
lrpd.vehMark,
lrpd.dueMoney,
(IFNULL(lrs.mainMidRepay, 0) + IFNULL(lrs.otherMidRepay, 0)) AS qjyh,
(lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))) AS yq_total,
lbpv_agg.bankBeInter_sum,
lfd_agg.fund_sum,
lrpd.customer,
ct.mobile,
lrpd.borrowerSid,
lrpd.salesOrderSid,
lbcv_agg.lockCarState
FROM
(SELECT
lrpd.sid,
lrpd.busVinSid,
lrpd.loanContractNo,
lrpd.bankContractNo,
lrpd.vinNo,
lrpd.bankName,
lrpd.borrowerName,
lrpd.dueDate,
lrpd.vehMark,
lrpd.dueMoney,
(IFNULL(lrs.mainMidRepay,0) + IFNULL(lrs.otherMidRepay,0)) AS qjyh,
(
lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))
) AS yq_total,
(
lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))
) / lrpd.dueMoney AS yq_hsqs,
lrpd.customer,
ct.mobile,
lr.createTime,
lrpd.borrowerSid,
lrpd.salesOrderSid,
(SELECT
CASE
lbcv.lockCarState
WHEN 0
THEN '未控制'
WHEN 1
THEN '控制成功'
WHEN 2
THEN '控制失败'
WHEN 3
THEN '已解控'
END AS lockCarState
FROM
loan_be_collection_veh lbcv
LEFT JOIN loan_be_collection_apply lbca
ON lbca.sid = lbcv.mainSid
WHERE lbca.collMeasure LIKE '%远程控制%'
AND lbca.nodeState = '已办结'
AND lbcv.saleVehSid = lrpd.busVinSid
ORDER BY lbca.createTime DESC
LIMIT 1) AS lockCarState
FROM
loan_repayment_plan_details lrpd
LEFT JOIN loan_repayment_history lrh
ON lrh.planDetailSid = lrpd.sid
LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv
ON lrpd.busVinSid = bv.sid
LEFT JOIN loan_repayment_schedule lrs
ON lrpd.scheduleSid = lrs.sid
LEFT JOIN
(SELECT
saleVehSid,
createTime
FROM
loan_be_collection_record
ORDER BY createTime DESC
LIMIT 1) lr
ON lrpd.busVinSid = lr.saleVehSid
LEFT JOIN anrui_crm.crm_customer_temp ct
ON lrpd.customerSid = ct.sid
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') &lt; CURDATE()
GROUP BY lrpd.sid
HAVING (yq_total > 0)) a1
WHERE a1.borrowerSid = #{borrowerSid}
GROUP BY a1.loanContractNo,
a1.vinNo,
a1.busVinSid
loan_repayment_plan_details lrpd
LEFT JOIN loan_repayment_history lrh
ON lrh.planDetailSid = lrpd.sid
LEFT JOIN loan_repayment_schedule lrs
ON lrpd.scheduleSid = lrs.sid
LEFT JOIN anrui_crm.crm_customer_temp ct
ON lrpd.customerSid = ct.sid
LEFT JOIN (
SELECT
saleVehSid,
CASE lockCarState
WHEN 0 THEN '未控制'
WHEN 1 THEN '控制成功'
WHEN 2 THEN '控制失败'
WHEN 3 THEN '已解控'
END AS lockCarState
FROM (
SELECT
lbcv.saleVehSid,
lbcv.lockCarState,
ROW_NUMBER() OVER (
PARTITION BY lbcv.saleVehSid
ORDER BY lbca.createTime DESC
) AS rn
FROM loan_be_collection_veh lbcv
LEFT JOIN loan_be_collection_apply lbca
ON lbca.sid = lbcv.mainSid
WHERE
lbca.collMeasure LIKE '%远程控制%'
AND lbca.nodeState = '已办结'
) t WHERE rn = 1
) lbcv_agg
ON lbcv_agg.saleVehSid = lrpd.busVinSid
LEFT JOIN (
SELECT
saleVehSid,
SUM(bankBeInter) AS bankBeInter_sum
FROM loan_be_padsincere_veh
GROUP BY saleVehSid
) lbpv_agg
ON lbpv_agg.saleVehSid = lrpd.busVinSid
LEFT JOIN (
SELECT
lrpd_sub.busVinSid,
SUM(lfd.fund) AS fund_sum
FROM loan_fund_day lfd
JOIN loan_repayment_plan_details lrpd_sub
ON lfd.busSid = lrpd_sub.sid
WHERE
lrpd_sub.dueDate &lt; CURDATE()
GROUP BY
lrpd_sub.busVinSid
) lfd_agg
ON lfd_agg.busVinSid = lrpd.busVinSid
WHERE
lrpd.dueDate &lt; CURDATE()
GROUP BY
lrpd.sid
HAVING
(lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))) > 0
) a1
WHERE
a1.borrowerSid = #{borrowerSid}
GROUP BY
a1.loanContractNo,
a1.vinNo,
a1.busVinSid
</select>
<select id="initReaRepayment" resultType="com.yxt.anrui.riskcenter.api.loanbeoverdueveh.ReaRepaymentVo">
@ -303,7 +247,7 @@
ON ld.busVinSid = bv.sid
WHERE ld.busVinSid = #{saleVehSid}
</select>
<select id="excelList" resultType="com.yxt.anrui.riskcenter.api.loanbeoverdueveh.LoanBeOverdueVehExcelVo">
SELECT
@row_number := @row_number + 1 AS rankNo,
@ -317,65 +261,26 @@
a1.bankName,
a1.bankContractNo,
a1.dueMoney AS bankMonthRep,
a1.dueDate AS firstBeDate,
MIN(a1.dueDate) AS firstBeDate, -- 改为取最早逾期日期
COUNT(a1.sid) AS beOverduePeriod,
(
SUM(a1.yq_total) + IFNULL(
(SELECT
SUM(lbpv.bankBeInter)
FROM
loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT
SUM(fund)
FROM
loan_fund_day
WHERE busSid IN
(SELECT
lrpd.sid
FROM
loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') &lt; CURDATE())),
0
)
) AS beOverdueMoney,
SUM(a1.yq_total) +
COALESCE(lbpv_sum.bankBeInter_sum, 0) +
COALESCE(lfd_sum.fund_sum, 0) AS beOverdueMoney,
ROUND(
(
SUM(a1.yq_total) + IFNULL(
(SELECT
SUM(lbpv.bankBeInter)
FROM
loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT
SUM(fund)
FROM
loan_fund_day
WHERE busSid IN
(SELECT
lrpd.sid
FROM
loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') &lt; CURDATE())),
0
)
) / a1.qjyh,
(SUM(a1.yq_total) + COALESCE(lbpv_sum.bankBeInter_sum, 0) + COALESCE(lfd_sum.fund_sum, 0)) /
MAX(a1.qjyh), -- 保证聚合正确性
1
) AS beOverdueMoneyAndPeriod,
SUM(a1.yd_dkje) AS advMoney,
SUM(a1.yd_zjzyf) AS fundPossCostMoney,
a1.riskStaffUserSid,
a1.riskStaffUserName,
a1.reaRepaymentName AS repaymentName,
a1.createTime,
MAX(a1.riskStaffUserSid) AS riskStaffUserSid, -- 保证聚合正确性
MAX(a1.riskStaffUserName) AS riskStaffUserName,
MAX(a1.reaRepaymentName) AS repaymentName,
MAX(a1.createTime) AS createTime,
a1.orgSidPath,
a1.lockCarState
FROM
(SELECT
MAX(a1.lockCarState) AS lockCarState -- 保证聚合正确性
FROM (
SELECT
lrpd.sid,
lrpd.busVinSid,
lrpd.useOrgName,
@ -388,63 +293,67 @@
lrpd.bankContractNo,
lrpd.dueMoney,
lrpd.dueDate,
(
IFNULL(lrs.mainMidRepay, 0) + IFNULL(lrs.otherMidRepay, 0)
) AS qjyh,
(
lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))
) AS yq_total,
(
lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))
) / lrpd.dueMoney AS yq_hsqs,
COALESCE(lrs.mainMidRepay, 0) + COALESCE(lrs.otherMidRepay, 0) AS qjyh,
lrpd.dueMoney - COALESCE(SUM(lrh.actualMoney), 0) AS yq_total,
lrpd.paymentMoney AS yd_dkje,
lrpd.fund AS yd_zjzyf,
lrpd.orgSidPath,
lrpd.createBySid,
bv.riskStaffUserSid,
bv.riskStaffUserName,
bv.reaRepaymentName,
lr.createTime,
(SELECT
CASE
lbcv.lockCarState
WHEN 0
THEN '未控制'
WHEN 1
THEN '控制成功'
WHEN 2
THEN '控制失败'
WHEN 3
THEN '已解控'
lbcr.createTime,
CASE lbcv.lockCarState
WHEN 0 THEN '未控制'
WHEN 1 THEN '控制成功'
WHEN 2 THEN '控制失败'
WHEN 3 THEN '已解控'
END AS lockCarState
FROM
loan_be_collection_veh lbcv
LEFT JOIN loan_be_collection_apply lbca
ON lbca.sid = lbcv.mainSid
WHERE lbca.collMeasure LIKE '%远程控制%'
AND lbca.nodeState = '已办结'
AND lbcv.saleVehSid = lrpd.busVinSid
ORDER BY lbca.createTime DESC
LIMIT 1) AS lockCarState
FROM
loan_repayment_plan_details lrpd
FROM loan_repayment_plan_details lrpd
LEFT JOIN loan_repayment_history lrh
ON lrh.planDetailSid = lrpd.sid
INNER JOIN loan_repayment_schedule lrs
ON lrpd.scheduleSid = lrs.sid
LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv
ON lrpd.busVinSid = bv.sid
LEFT JOIN loan_repayment_schedule lrs
ON lrpd.scheduleSid = lrs.sid
LEFT JOIN
(SELECT
LEFT JOIN (
SELECT
saleVehSid,
createTime
FROM
loan_be_collection_record
ORDER BY createTime DESC) lr
ON lrpd.busVinSid = lr.saleVehSid
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') &lt; CURDATE()
MAX(createTime) AS createTime -- 取最新记录
FROM loan_be_collection_record
GROUP BY saleVehSid
) lbcr ON lrpd.busVinSid = lbcr.saleVehSid
LEFT JOIN (
SELECT
lbcv.saleVehSid,
lbcv.lockCarState,
ROW_NUMBER() OVER (PARTITION BY lbcv.saleVehSid ORDER BY lbca.createTime DESC) AS rn
FROM loan_be_collection_veh lbcv
JOIN loan_be_collection_apply lbca
ON lbca.sid = lbcv.mainSid
WHERE lbca.collMeasure LIKE '%远程控制%'
AND lbca.nodeState = '已办结'
) lbcv ON lbcv.saleVehSid = lrpd.busVinSid AND lbcv.rn = 1
WHERE lrpd.dueDate &lt; CURDATE() -- 移除DATE_FORMAT函数
GROUP BY lrpd.sid
HAVING (yq_total > 0)) a1,(
HAVING (lrpd.dueMoney - COALESCE(SUM(lrh.actualMoney), 0)) > 0
) a1
LEFT JOIN (
SELECT
saleVehSid,
SUM(bankBeInter) AS bankBeInter_sum
FROM loan_be_padsincere_veh
GROUP BY saleVehSid
) lbpv_sum ON lbpv_sum.saleVehSid = a1.busVinSid
LEFT JOIN (
SELECT
lrpd.busVinSid,
SUM(lfd.fund) AS fund_sum
FROM loan_fund_day lfd
JOIN loan_repayment_plan_details lrpd
ON lrpd.sid = lfd.busSid
WHERE lrpd.dueDate &lt; CURDATE()
GROUP BY lrpd.busVinSid
) lfd_sum ON lfd_sum.busVinSid = a1.busVinSid,(
SELECT
@row_number := 0
) AS t

2
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbeoverdueveh/LoanBeOverdueVehService.java

@ -26,8 +26,6 @@ public class LoanBeOverdueVehService {
private SysUserFeign sysUserFeign;
@Autowired
private LoanBeOverdueVehMapper loanBeOverdueVehMapper;
@Autowired
private BusSalesOrderVehicleFeign busSalesOrderVehicleFeign;
public PagerVo<LoanBeOverdueVehVo> listPageVo(PagerQuery<LoanBeOverdueVehQuery> pq) {
LoanBeOverdueVehQuery query = pq.getParams();

30
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyRest.java

@ -26,48 +26,31 @@
package com.yxt.anrui.riskcenter.biz.loanbepadsincereapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModpriceExportVo;
import com.yxt.anrui.base.api.basevehicle.BaseVehicle;
import com.yxt.anrui.base.api.basevehiclecertificate.BaseVehicleCertificate;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.*;
import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVeh;
import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehDetailsVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.RepaymentExcelInfo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.export.TransferedPaymentExportVo;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.base.utils.ExportExcelUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Project: anrui-riskcenter(垫款申请) <br/>
* File: LoanBePadsincereApplyFeignFallback.java <br/>
@ -223,6 +206,11 @@ public class LoanBePadsincereApplyRest implements LoanBePadsincereApplyFeign {
return loanBePadsincereApplyService.pushAdvancesVoucher(sid,paySid);
}
@Override
public ResultBean<RskVoucher> pushAdvancesReturnVoucher(String sid, String paySid) {
return loanBePadsincereApplyService.pushAdvancesReturnVoucher(sid,paySid);
}
@Override
public void dkListPageExport(DkRecordQuery query) {
//得到所有要导出的数据

212
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyService.java

@ -29,6 +29,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo;
@ -42,9 +43,6 @@ 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.finmanufacturerbank.FinManufacturerBankFeign;
import com.yxt.anrui.fin.api.finpaymentapply.FinPaymentapply;
import com.yxt.anrui.fin.api.finpaymentapply.FinPaymentapplyDto;
import com.yxt.anrui.fin.api.finpaymentapply.FinPaymentapplyFeign;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecord;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordFeign;
@ -52,6 +50,7 @@ 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.PaymentVoucher;
import com.yxt.anrui.fin.api.kingdee.voucher.SceneCodeEnum;
import com.yxt.anrui.fin.api.kingdee.voucher.Voucher;
import com.yxt.anrui.flowable.api.flow.FlowProcessMapQuery;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
@ -62,6 +61,8 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign;
import com.yxt.anrui.portal.api.dictcommon.DictCommonVo;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
@ -77,24 +78,24 @@ import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehDto;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.MonthlyAccrualSourceLCVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForFundVoucher;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanMoneyVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentSchedule;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentScheduleDetailsVo;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApply;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentRecordVo;
import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskPaymentVoucher;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.anrui.riskcenter.biz.loanbepadsincereveh.LoanBePadsincereVehService;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentschedule.LoanRepaymentScheduleService;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.ConstantUtils;
import com.yxt.common.base.utils.DateUtils;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.WordConvertUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.messagecenter.api.message.Message;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
@ -102,12 +103,6 @@ import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import com.yxt.messagecenter.api.messagelist.MessageList;
import com.yxt.messagecenter.api.messagelist.MessageListFeign;
import org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
@ -123,7 +118,6 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
@ -191,7 +185,8 @@ public class LoanBePadsincereApplyService extends MybatisBaseService<LoanBePadsi
private BusSalesOrderBorrowerFeign busSalesOrderBorrowerFeign;
@Autowired
private BasePurchaseSystemFeign basePurchaseSystemFeign;
@Autowired
private DictCommonFeign dictCommonFeign;
public PagerVo<LoanBePadsincereApplyVo> listPageVo(PagerQuery<LoanBePadsincereApplyQuery> pq) {
LoanBePadsincereApplyQuery query = pq.getParams();
@ -987,6 +982,7 @@ public class LoanBePadsincereApplyService extends MybatisBaseService<LoanBePadsi
finPaymentrecordDto.setPurchaseSystemSid("");
finPaymentrecordDto.setPurchaseSystemName("");
finPaymentrecordDto.setBusRemarks(loanBePadsincereApply.getPaymentRemarks());
finPaymentrecordDto.setFinDataType(1);
String sid = finPaymentrecordFeign.save(finPaymentrecordDto).getData();
loanBePadsincereVehService.updatePaySid(sid,loanBePadsincereVehDetailsVo.getSid());
}
@ -1507,4 +1503,184 @@ public class LoanBePadsincereApplyService extends MybatisBaseService<LoanBePadsi
List<DkRecordExportVo> recordVos = baseMapper.dkListPageExport(qw);
return recordVos;
}
public ResultBean<RskVoucher> pushAdvancesReturnVoucher(String sid, String paySid) {
ResultBean rb = ResultBean.fireFail();
List<LoanBePadsincereVeh> records = loanBePadsincereVehService.selByMainSidAndPaySid(sid, paySid);
FinPaymentrecord paymentrecord = finPaymentrecordFeign.fetchBySid(paySid).getData();
if (!records.isEmpty()) {
RskPaymentVoucher paymentVoucher = new RskPaymentVoucher();
List<RskPaymentVoucher.PaymentVoucherDetail> voucherDetails = new ArrayList<>();
LoanBePadsincereVeh l = records.get(0);
if (null != l) {
String accountNumber = paymentrecord.getPayBankAccount();
paymentVoucher.setBankAccount(paymentrecord.getPayBankAccount());
String mainSid = l.getMainSid();
LoanBePadsincereApply loanBePadsincereApply = fetchBySid(mainSid);
FinManufacturerBank manufacturerBank = finManufacturerBankFeign.selOneByBankNo(accountNumber, loanBePadsincereApply.getUseOrgSid()).getData();
if (null != manufacturerBank) {
paymentVoucher.setPayTypeCode(manufacturerBank.getDueBankKey());
}
String useOrgSid = loanBePadsincereApply.getUseOrgSid();
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData();
if (null != organizationVo) {
paymentVoucher.setUseOrgCode(organizationVo.getOrgCode());
}
}
RskPaymentVoucher.PaymentVoucherDetail voucherDetail1 = new RskPaymentVoucher.PaymentVoucherDetail();
voucherDetail1.setType("贷方");
List<BigDecimal> result = new ArrayList<>();
records.stream().forEach(r -> {
result.add(new BigDecimal(r.getPadMoney()));
});
BigDecimal b = result.stream()
// 使用reduce()聚合函数,实现累加器
.reduce(BigDecimal.ZERO, BigDecimal::add);
voucherDetail1.setAmount(b);
voucherDetail1.setDataTime(new DateTime());
voucherDetails.add(voucherDetail1);
for (LoanBePadsincereVeh v : records) {
LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsService.selOneByBankNoAndBusVinSid(v.getBankContractNo(), v.getSaleVehSid());
if (null != planDetails) {
String bankName = planDetails.getBankName();
String orgCode = "";
LoanRepaymentSchedule schedule = loanRepaymentScheduleService.fetchBySid(planDetails.getScheduleSid());
if (null != schedule) {
if (StringUtils.isNotBlank(schedule.getCwDeptNo())) {
orgCode = schedule.getCwDeptNo();
}
}
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(planDetails.getBusVinSid()).getData();
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(planDetails.getSalesOrderSid()).getData();
String customerNumber = "";
if (null != salesOrder) {
if (null != busSalesOrderVehicle) {
//判断财务系统是否有客户
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();
}
}
}
if (StringUtils.isNotBlank(v.getBankBeMoney())) {
BigDecimal beMoney = new BigDecimal(v.getBankBeMoney());
if (beMoney.compareTo(BigDecimal.ZERO) > 0) {
RskPaymentVoucher.PaymentVoucherDetail voucherDetail = new RskPaymentVoucher.PaymentVoucherDetail();
voucherDetail.setSceneCode(SceneCodeEnum.PADSINCERE_VOUCHER1.getCode());
voucherDetail.setType("借方");
if (StringUtils.isNotBlank(bankName)) {
voucherDetail.setBankName(bankName);
}
voucherDetail.setDeptCode(orgCode);
if (StringUtils.isNotBlank(customerNumber)) {
voucherDetail.setCustomerCode(customerNumber);
}
voucherDetail.setAmount(beMoney);
voucherDetails.add(voucherDetail);
}
}
if (StringUtils.isNotBlank(v.getBankBeInter())) {
BigDecimal beInter = new BigDecimal(v.getBankBeInter());
if (beInter.compareTo(BigDecimal.ZERO) > 0) {
RskPaymentVoucher.PaymentVoucherDetail voucherDetail = new RskPaymentVoucher.PaymentVoucherDetail();
voucherDetail.setSceneCode(SceneCodeEnum.PADSINCERE_VOUCHER2.getCode());
voucherDetail.setType("借方");
if (StringUtils.isNotBlank(bankName)) {
voucherDetail.setBankName(bankName);
}
voucherDetail.setDeptCode(orgCode);
if (StringUtils.isNotBlank(customerNumber)) {
voucherDetail.setCustomerCode(customerNumber);
}
voucherDetail.setAmount(beInter);
voucherDetails.add(voucherDetail);
}
}
}
}
paymentVoucher.setVoucherDetails(voucherDetails);
RskVoucher rskVoucher = returnAdvancesVoucher(paymentVoucher);
return rb.success().setData(rskVoucher);
}
return rb.success();
}
public RskVoucher returnAdvancesVoucher(RskPaymentVoucher voucher) {
ResultBean rb = ResultBean.fireFail();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
RskVoucher newVoucher = new RskVoucher();
List<RskVoucher.VoucherResultDetailDto> resultDetails = new ArrayList<>();
if (com.yxt.common.base.utils.StringUtils.isNotBlank(voucher.getUseOrgCode())) {
newVoucher.setAccountBook(voucher.getUseOrgCode());
newVoucher.setVoucherNo(voucher.getUseOrgCode());
}
List<RskPaymentVoucher.PaymentVoucherDetail> voucherDetails = voucher.getVoucherDetails();
if (!voucherDetails.isEmpty()) {
for (RskPaymentVoucher.PaymentVoucherDetail voucherDetail : voucherDetails) {
if (voucherDetail.getType().equals("借方")) {
RskVoucher.VoucherResultDetailDto dto1 = new RskVoucher.VoucherResultDetailDto(); //借方
if (voucherDetail.getSceneCode().equals(SceneCodeEnum.PADSINCERE_VOUCHER1.getCode())) {
dto1.setSummary(voucherDetail.getBankName() + "垫付" + voucherDetail.getCustomerName() + "月还款");
DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(voucherDetail.getBankName(), "investorsCode").getData();
if (null != dictCommonVo) {
dto1.setSubjectNo(dictCommonVo.getDictValue());
}
} else if (voucherDetail.getSceneCode().equals(SceneCodeEnum.PADSINCERE_VOUCHER2.getCode())) {
dto1.setSummary(voucherDetail.getBankName() + "垫款资方违约金");
dto1.setSubjectNo("1201.02.03");
}
dto1.setDimensionDept(voucherDetail.getDeptCode());
dto1.setDimensionCustom(voucherDetail.getCustomerCode());
dto1.setDebit(String.valueOf(voucherDetail.getAmount()));
resultDetails.add(dto1);
} else if (voucherDetail.getType().equals("贷方")) {
RskVoucher.VoucherResultDetailDto dto2 = new RskVoucher.VoucherResultDetailDto(); //贷方
if (voucher.getPayTypeCode().equals("02")) {
dto2.setSubjectNo("1002.01.00");
} else if (voucher.getPayTypeCode().equals("01")) {
dto2.setSubjectNo("1002.02.01");
}
String date = sdf.format(voucherDetail.getDataTime());
String[] split = date.split("-");
dto2.setSummary(split[1] + "月垫付月还款");
dto2.setBankAccount(voucher.getBankAccount());
dto2.setCredit(String.valueOf(voucherDetail.getAmount()));
resultDetails.add(dto2);
}
}
newVoucher.setResultDetails(resultDetails);
}
return newVoucher;
}
}

6
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.riskcenter.api.loansettleapply.*;
import com.yxt.anrui.riskcenter.api.loansettleapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -128,4 +129,9 @@ public class LoanSettleApplyRest implements LoanSettleApplyFeign {
public ResultBean pushBankVoucher(String sid, String accountNumber, String payTypeCode, String shouxufei) {
return loanSettleApplyService.pushBankVoucher(sid, accountNumber, payTypeCode,shouxufei);
}
@Override
public ResultBean<RskVoucher> pushBankReturnVoucher(String sid, String accountNumber, String payTypeCode, String shouxufei) {
return loanSettleApplyService.pushBankReturnVoucher(sid, accountNumber, payTypeCode,shouxufei);
}
}

373
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java

@ -3,37 +3,26 @@ package com.yxt.anrui.riskcenter.biz.loansettleapply;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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.basemiddleman.BaseMiddlemanDetailsVo;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign;
import com.yxt.anrui.base.api.commoncontract.CommonContract;
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.busdeposit.BusDeposit;
import com.yxt.anrui.buscenter.api.busdepositfictitious.BusDepositFictitious;
import com.yxt.anrui.buscenter.api.bussalesorder.*;
import com.yxt.anrui.buscenter.api.bussalesorder.app.order.AppOrderDiscountListVo;
import com.yxt.anrui.buscenter.api.bussalesorder.flowable.BusSalesOrderDelegateQuery;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderSourceLCVo;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign;
import com.yxt.anrui.buscenter.api.bussalesorderdeposit.BusSalesOrderDeposit;
import com.yxt.anrui.buscenter.api.bussalesorderinsurance.BusSalesOrderInsuranceDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesordermodel.BusSalesOrderModel;
import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice;
import com.yxt.anrui.buscenter.api.bussalesordersubmit.BusSalesOrderSubmit;
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.FinPaymentrecord;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordFeign;
import com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailed;
import com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailedFeign;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailed;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRFeign;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
@ -54,16 +43,13 @@ import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign;
import com.yxt.anrui.portal.api.dictcommon.DictCommonVo;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganization;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysparameter.SysParameterFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo;
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.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord;
import com.yxt.anrui.riskcenter.api.loanoverduefin.UrlQuery;
import com.yxt.anrui.riskcenter.api.loanpushfundhistory.LoanPushFundHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
@ -79,10 +65,9 @@ import com.yxt.anrui.riskcenter.api.loansettlecompanycost.LoanSettleCompanyCostV
import com.yxt.anrui.riskcenter.api.loansettlecompanyreduction.LoanSettleCompanyReduction;
import com.yxt.anrui.riskcenter.api.loansettlecompanyreduction.LoanSettleCompanyReductionVo;
import com.yxt.anrui.riskcenter.api.loansettlevehicle.LoanSettleVehicleDto;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo;
import com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetail;
import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskPaymentVoucher;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.anrui.riskcenter.biz.loanpushfundhistory.LoanPushFundHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
@ -100,8 +85,10 @@ import com.yxt.anrui.riskcenter.biz.loansolutionsdetail.LoanSolutionsDetailServi
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.*;
import com.yxt.common.base.utils.Base64;
import com.yxt.common.base.utils.ConstantUtils;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.WordConvertUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -111,7 +98,6 @@ import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import com.yxt.messagecenter.api.messagelist.MessageList;
import com.yxt.messagecenter.api.messagelist.MessageListFeign;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
@ -119,7 +105,6 @@ import org.springframework.stereotype.Service;
import java.io.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
@ -970,14 +955,9 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
int check = 0;// 0不推抵顶保证金凭证 1推送
//结清合计 + 贷款保证金结转金额
BigDecimal add = amountTo.add(depositJZ);
// BigDecimal actualDeposit = BigDecimal.ZERO;
List<LoanSettleVoucherVo> settleVoucherVos = new ArrayList<>();
if (add.compareTo(BigDecimal.ZERO) > 0) {
//结转剩余保证金
// BigDecimal decimal = carryForward(loanSettleApply);
// if (null != decimal) {
// actualDeposit = decimal;
// }
settleVoucherVos = carryForward2(loanSettleApply);
check = 1;
}
@ -990,7 +970,6 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
//设置认款月还为已转付
updatePaymentStateByBusVinSid(loanSettleApply.getBusVinSid());
//推送财务凭证
// pushSettleVoucher(loanSettleApply, check, actualDeposit);
pushSettleVoucher2(loanSettleApply, check, settleVoucherVos);
}
baseMapper.updateById(loanSettleApply);
@ -2269,6 +2248,15 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
BigDecimal zfJQK = BigDecimal.ZERO;//资方结清款
int topping = 0;
BigDecimal bbjDDMoney = BigDecimal.ZERO; //资方保证金抵顶
BigDecimal wdqlxjm = BigDecimal.ZERO; //未到期利息减免
BigDecimal gsdqwdqyh = BigDecimal.ZERO; //公司当期未到期月还
BigDecimal gswdqje = BigDecimal.ZERO; //公司未到期金额
BigDecimal gswdqlxjm = BigDecimal.ZERO; //公司未到期利息减免
BigDecimal zfdqwdqyh = BigDecimal.ZERO; //资方当期未到期月还
BigDecimal zfwdqje = BigDecimal.ZERO; //资方未到期金额
BigDecimal zfwdqlxjm = BigDecimal.ZERO; //资方未到期利息减免
if (null != reduction) {
if (null != reduction.getFundPenalty()) {
fund = reduction.getFundPenalty();
@ -2276,6 +2264,12 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
if (null != reduction.getDepositPenalty()) {
bzjJM = reduction.getDepositPenalty();
}
if (null != reduction.getNotDuePriceRelief()) {
gswdqlxjm = reduction.getNotDuePriceRelief();
}
if (null != reduction.getReliefBasis()) {
zfwdqlxjm = reduction.getReliefBasis();
}
}
if (null != companyCost) {
if (null != companyCost.getLoanDeposit()) {
@ -2284,6 +2278,13 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
if (null != companyCost.getDeductionAmount()) {
bzjKF = companyCost.getDeductionAmount();
}
if (null != companyCost.getCompanyCurrentNotPrice()) {
gsdqwdqyh = companyCost.getCompanyCurrentNotPrice();
}
if (null != companyCost.getBankNotPrice()) {
gswdqje = companyCost.getBankNotPrice();
}
}
if (null != bankCost) {
if (null != bankCost.getBankSettlePrice()) {
@ -2293,6 +2294,12 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
if (null != bankCost.getLoanDeposit()) {
bbjDDMoney = bankCost.getLoanDeposit();
}
if (null != bankCost.getCurrentNotDuePrice()) {
zfdqwdqyh = bankCost.getCurrentNotDuePrice();
}
if (null != bankCost.getNotDuePrice()) {
zfwdqje = bankCost.getNotDuePrice();
}
}
sybzj = bzjMoney.subtract(bzjKF).add(bzjJM);
bzjKFCw = bzjKF.subtract(bzjJM);
@ -2497,6 +2504,37 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
voucherDetail.setDebit(amountAll.toString());
resultDetails.add(voucherDetail);
}
BigDecimal yhcesrCompany = gsdqwdqyh.add(gswdqje).subtract(gswdqlxjm); //月还差额计收入 公司部分
BigDecimal yhcesrBank = zfdqwdqyh.add(zfwdqje).subtract(zfwdqlxjm); //月还差额计收入 资方部分
BigDecimal yhcejsr = yhcesrCompany.subtract(yhcesrBank);//月还差额记收入
BigDecimal yhjmjf = yhcejsr.add(gswdqlxjm);
if (yhjmjf.compareTo(BigDecimal.ZERO) > 0) {
Voucher.VoucherResultDetailDto voucherDetail = new Voucher.VoucherResultDetailDto();
voucherDetail.setSummary(planDetails.getBankName() + "结清");
voucherDetail.setSubjectNo(bankCode);
voucherDetail.setDimensionDept(deptCode);
voucherDetail.setDimensionCustom(customerNumber);
voucherDetail.setDebit(yhjmjf.toString());
resultDetails.add(voucherDetail);
}
if (gswdqlxjm.compareTo(BigDecimal.ZERO) > 0) {
Voucher.VoucherResultDetailDto voucherDetail = new Voucher.VoucherResultDetailDto();
voucherDetail.setSummary(planDetails.getBankName() + "结清未到期利息减免");
voucherDetail.setSubjectNo("1201.01.00");
voucherDetail.setDimensionDept(deptCode);
voucherDetail.setDimensionCustom(customerNumber);
voucherDetail.setCredit(gswdqlxjm.toString());
resultDetails.add(voucherDetail);
}
if (yhcejsr.compareTo(BigDecimal.ZERO) > 0) {
Voucher.VoucherResultDetailDto voucherDetail = new Voucher.VoucherResultDetailDto();
voucherDetail.setSummary(planDetails.getBorrowerName() + "结清收入");
voucherDetail.setSubjectNo("6002.01.17");
voucherDetail.setDimensionDept(deptCode);
voucherDetail.setCredit(yhcejsr.toString());
resultDetails.add(voucherDetail);
}
newVoucher.setResultDetails(resultDetails);
if (!fundHistoryList.isEmpty()) {
loanPushFundHistoryService.saveLists(fundHistoryList);
@ -2514,6 +2552,7 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
BigDecimal bankSettlePrice = bankCost.getBankSettlePrice();
if (bankSettlePrice.compareTo(BigDecimal.ZERO) > 0) {
FinPaymentrecordDto finPaymentrecordDto = new FinPaymentrecordDto();
finPaymentrecordDto.setFinDataType(1);
finPaymentrecordDto.setApplySid("");
finPaymentrecordDto.setPayCompanySid("");
finPaymentrecordDto.setPayType(1);
@ -3596,13 +3635,8 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
}
loanSettleApply.setState(1);
baseMapper.updateById(loanSettleApply);
// BigDecimal actualDeposit = BigDecimal.ZERO;
//结转剩余保证金
List<LoanSettleVoucherVo> settleVoucherVos = carryForward2(loanSettleApply);
// BigDecimal decimal = carryForward(loanSettleApply);
// if (null != decimal) {
// actualDeposit = decimal;
// }
//更新车辆表结清状态
baseMapper.updateBus(loanSettleApply.getBusVinSid(), "1");
//推送资方结清款到出纳代付款列表
@ -3610,7 +3644,6 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
//设置认款月还为已转付
updatePaymentStateByBusVinSid(loanSettleApply.getBusVinSid());
//推送财务凭证
// pushSettleVoucher(loanSettleApply, 1, actualDeposit);
pushSettleVoucher2(loanSettleApply, 1, settleVoucherVos);
return rb.success();
}
@ -4004,8 +4037,10 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
BigDecimal kuanxiang = BigDecimal.ZERO; //差额
BigDecimal companyAmount = BigDecimal.ZERO; //公司收
BigDecimal subtrahend = BigDecimal.ZERO; //资方收
BigDecimal qtfyjm = BigDecimal.ZERO; //其他费用减免
LoanSettleCompanyCost companyCost = loanSettleCompanyCostService.selectByMainSid(sid);
LoanSettleBankCost bankCost = loanSettleBankCostService.selectByMainSid(sid);
LoanSettleCompanyReduction reduction = loanSettleCompanyReductionService.selectByMainSid(sid);
if (null != bankCost) {
if (receivablesName.equals("名义价")) {
if (null != bankCost.getBankNominalPrice()) {
@ -4050,6 +4085,12 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
}
}
}
if (null != reduction) {
if (null != reduction.getOtherCost()) {
qtfyjm = reduction.getOtherCost();
}
}
PlanNoReturnMoney p = baseMapper.selectNoReturnMoneyByType(planDetailsSid, receivablesName);
if (null != p) {
BigDecimal money = new BigDecimal(p.getMoney());
@ -4059,6 +4100,9 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
} else {
balance = companyAmount.subtract(subtrahend);
}
if (receivablesName.equals("其他费用")) {
balance = balance.subtract(qtfyjm);
}
kuanxiang = amount.subtract(balance);
vo.setBusSid(sid);
vo.setAmount(amount);
@ -4073,31 +4117,26 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
ResultBean rb = ResultBean.fireFail();
LoanSettleApply apply = fetchBySid(sid);
LoanSettleBankCost bankCost = loanSettleBankCostService.selectByMainSid(sid);
// LoanSettleCompanyCost companyCost = loanSettleCompanyCostService.selectByMainSid(sid);
LoanSettleCompanyReduction reduction = loanSettleCompanyReductionService.selectByMainSid(sid);
if (null != apply) {
BigDecimal amountAll = BigDecimal.ZERO;//推送资方结清款总数
BigDecimal zfJQK = BigDecimal.ZERO;//资方结清款
BigDecimal bankRelief = BigDecimal.ZERO;//资方结清未到期利息减免
BigDecimal companyRelief = BigDecimal.ZERO;//公司结清未到期利息减免
BigDecimal noRelief = BigDecimal.ZERO;//结清未到期利息不减免
// BigDecimal bankRelief = BigDecimal.ZERO;//资方结清未到期利息减免
// BigDecimal companyRelief = BigDecimal.ZERO;//公司结清未到期利息减免
// BigDecimal noRelief = BigDecimal.ZERO;//结清未到期利息不减免
int topping = 0;
BigDecimal bbjDDMoney = BigDecimal.ZERO; //资方保证金抵顶
BigDecimal sub = BigDecimal.ZERO; //资方保证金差额
BigDecimal shouxufeiCW = new BigDecimal(shouxufei);
// // 资方未到期金额
// BigDecimal zfwdq = BigDecimal.ZERO;
// // 公司未到期金额
// BigDecimal gswdq = BigDecimal.ZERO;
if (null != reduction) {
if (null != reduction.getNotDuePriceRelief()) {
companyRelief = reduction.getNotDuePriceRelief();
}
if (null != reduction.getReliefBasis()) {
bankRelief = reduction.getReliefBasis();
}
noRelief = bankRelief.subtract(companyRelief);
}
// if (null != reduction) {
// if (null != reduction.getNotDuePriceRelief()) {
// companyRelief = reduction.getNotDuePriceRelief();
// }
// if (null != reduction.getReliefBasis()) {
// bankRelief = reduction.getReliefBasis();
// }
// noRelief = bankRelief.subtract(companyRelief);
// }
if (null != bankCost) {
if (null != bankCost.getBankSettlePrice()) {
zfJQK = bankCost.getBankSettlePrice();
@ -4106,20 +4145,10 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
if (null != bankCost.getLoanDeposit()) {
bbjDDMoney = bankCost.getLoanDeposit();
}
// if (null != bankCost.getNotDuePrice()) {
// zfwdq = bankCost.getNotDuePrice();
// }
}
// if (null != companyCost) {
// if (null != companyCost.getBankNotPrice()) {
// gswdq = companyCost.getBankNotPrice();
// }
// }
// if (companyRelief.compareTo(BigDecimal.ZERO) == 0 && bankRelief.compareTo(BigDecimal.ZERO) == 0) {
// noRelief = gswdq.subtract(zfwdq);
// }
sub = zfJQK.subtract(bbjDDMoney);
amountAll = noRelief.add(companyRelief).add(bbjDDMoney).add(sub);
// amountAll = noRelief.add(companyRelief).add(bbjDDMoney).add(sub);
amountAll = bbjDDMoney.add(sub);
if (zfJQK.compareTo(BigDecimal.ZERO) > 0) {
PaymentVoucher paymentVoucher = new PaymentVoucher();
paymentVoucher.setBankAccount(accountNumber);
@ -4198,8 +4227,8 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
voucherDetail.setAmount(amountAll);
voucherDetail.setSubtrahend(bbjDDMoney);
voucherDetail.setBalance(sub.add(shouxufeiCW));
voucherDetail.setRelief(companyRelief);
voucherDetail.setNoRelief(noRelief);
// voucherDetail.setRelief(companyRelief);
// voucherDetail.setNoRelief(noRelief);
voucherDetail.setPaymentCharges(shouxufeiCW);
voucherDetails.add(voucherDetail);
}
@ -4210,4 +4239,214 @@ public class LoanSettleApplyService extends MybatisBaseService<LoanSettleApplyMa
return rb.success();
}
public ResultBean<RskVoucher> pushBankReturnVoucher(String sid, String accountNumber, String payTypeCode, String shouxufei) {
ResultBean rb = ResultBean.fireFail();
LoanSettleApply apply = fetchBySid(sid);
LoanSettleBankCost bankCost = loanSettleBankCostService.selectByMainSid(sid);
LoanSettleCompanyReduction reduction = loanSettleCompanyReductionService.selectByMainSid(sid);
if (null != apply) {
BigDecimal amountAll = BigDecimal.ZERO;//推送资方结清款总数
BigDecimal zfJQK = BigDecimal.ZERO;//资方结清款
int topping = 0;
BigDecimal bbjDDMoney = BigDecimal.ZERO; //资方保证金抵顶
BigDecimal sub = BigDecimal.ZERO; //资方保证金差额
BigDecimal shouxufeiCW = new BigDecimal(shouxufei);
if (null != bankCost) {
if (null != bankCost.getBankSettlePrice()) {
zfJQK = bankCost.getBankSettlePrice();
}
topping = bankCost.getTopping();
if (null != bankCost.getLoanDeposit()) {
bbjDDMoney = bankCost.getLoanDeposit();
}
}
sub = zfJQK.subtract(bbjDDMoney);
amountAll = bbjDDMoney.add(sub);
if (zfJQK.compareTo(BigDecimal.ZERO) > 0) {
RskPaymentVoucher paymentVoucher = new RskPaymentVoucher();
paymentVoucher.setBankAccount(accountNumber);
paymentVoucher.setPayTypeCode(payTypeCode);
List<RskPaymentVoucher.PaymentVoucherDetail> voucherDetails = new ArrayList<>();
LoanRepaymentPlanDetails planDetails = baseMapper.selectByBusVinSidAndDesc(apply.getBusVinSid());
String scheduleSid = planDetails.getScheduleSid();
LoanRepaymentSchedule schedule = loanRepaymentScheduleService.fetchBySid(scheduleSid);
if (schedule.getIsOtherPolicy().equals("1") && schedule.getSameBank().equals("0")) {
planDetails = baseMapper.selectMainPeriodByBusVinSid(apply.getBusVinSid());
}
if (null != planDetails) {
RskPaymentVoucher.PaymentVoucherDetail voucherDetail = new RskPaymentVoucher.PaymentVoucherDetail();
if (topping == 1) {
if (bbjDDMoney.compareTo(BigDecimal.ZERO) > 0) {
voucherDetail.setSceneCode(SceneCodeEnum.settle_VOUCHER1.getCode());
} else {
voucherDetail.setSceneCode(SceneCodeEnum.settle_VOUCHER2.getCode());
}
} else {
voucherDetail.setSceneCode(SceneCodeEnum.settle_VOUCHER2.getCode());
}
if (StringUtils.isNotBlank(planDetails.getBankName())) {
voucherDetail.setBankName(planDetails.getBankName());
}
String useOrgSid = planDetails.getUseOrgSid();
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData();
if (null != organizationVo) {
paymentVoucher.setUseOrgCode(organizationVo.getOrgCode());
}
if (StringUtils.isNotBlank(schedule.getCwDeptNo())) {
voucherDetail.setDeptCode(schedule.getCwDeptNo());
}
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(planDetails.getBusVinSid()).getData();
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(planDetails.getSalesOrderSid()).getData();
if (null != salesOrder) {
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(amountAll);
voucherDetail.setSubtrahend(bbjDDMoney);
voucherDetail.setBalance(sub.add(shouxufeiCW));
voucherDetail.setPaymentCharges(shouxufeiCW);
voucherDetails.add(voucherDetail);
}
paymentVoucher.setVoucherDetails(voucherDetails);
RskVoucher rskVoucher = returnSettleBankVoucher(paymentVoucher);
return rb.success().setData(rskVoucher);
}
}
return rb.success();
}
public RskVoucher returnSettleBankVoucher(RskPaymentVoucher voucher) {
RskVoucher newVoucher = new RskVoucher();
List<RskVoucher.VoucherResultDetailDto> resultDetails = new ArrayList<>();
if (com.yxt.common.base.utils.StringUtils.isNotBlank(voucher.getUseOrgCode())) {
newVoucher.setAccountBook(voucher.getUseOrgCode());
newVoucher.setVoucherNo(voucher.getUseOrgCode());
}
List<RskPaymentVoucher.PaymentVoucherDetail> voucherDetails = voucher.getVoucherDetails();
if (!voucherDetails.isEmpty()) {
for (RskPaymentVoucher.PaymentVoucherDetail voucherDetail : voucherDetails) {
String bankCode = "";
//正常
DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(voucherDetail.getBankName(), "investorsCode").getData();
if (null != dictCommonVo) {
bankCode = dictCommonVo.getDictValue();
}
if (voucherDetail.getSceneCode().equals(SceneCodeEnum.settle_VOUCHER1.getCode())) {
if (voucherDetail.getAmount().compareTo(BigDecimal.ZERO) != 0) {
RskVoucher.VoucherResultDetailDto dto1 = new RskVoucher.VoucherResultDetailDto(); //借方
dto1.setSummary(voucherDetail.getBankName() + "结清");
dto1.setSubjectNo(bankCode);
dto1.setDimensionDept(voucherDetail.getDeptCode());
dto1.setDimensionCustom(voucherDetail.getCustomerCode());
dto1.setDebit(String.valueOf(voucherDetail.getAmount()));
resultDetails.add(dto1);
}
if (voucherDetail.getPaymentCharges().compareTo(BigDecimal.ZERO) != 0) {
RskVoucher.VoucherResultDetailDto dto0 = new RskVoucher.VoucherResultDetailDto(); //借方
dto0.setSummary("付款手续费");
dto0.setSubjectNo("6603.03.00");
dto0.setDebit(String.valueOf(voucherDetail.getPaymentCharges()));
resultDetails.add(dto0);
}
if (voucherDetail.getSubtrahend().compareTo(BigDecimal.ZERO) != 0) {
RskVoucher.VoucherResultDetailDto dto4 = new RskVoucher.VoucherResultDetailDto(); //贷方
dto4.setSummary(voucherDetail.getBankName() + "个贷保证金抵结清款");
dto4.setSubjectNo("1009.01.00");
dto4.setDimensionDept(voucherDetail.getDeptCode());
dto4.setDimensionCustom(voucherDetail.getCustomerCode());
dto4.setBank("342");
dto4.setCredit(String.valueOf(voucherDetail.getSubtrahend()));
resultDetails.add(dto4);
}
if (voucherDetail.getBalance().compareTo(BigDecimal.ZERO) != 0) {
RskVoucher.VoucherResultDetailDto dto5 = new RskVoucher.VoucherResultDetailDto(); //贷方
dto5.setSummary(voucherDetail.getBankName() + "结清");
if (voucher.getPayTypeCode().equals("02")) {
dto5.setSubjectNo("1002.01.00");
} else if (voucher.getPayTypeCode().equals("01")) {
dto5.setSubjectNo("1002.02.01");
}
dto5.setBankAccount(voucher.getBankAccount());
dto5.setCredit(String.valueOf(voucherDetail.getBalance()));
resultDetails.add(dto5);
}
} else {
if (voucherDetail.getAmount().compareTo(BigDecimal.ZERO) != 0) {
RskVoucher.VoucherResultDetailDto dto1 = new RskVoucher.VoucherResultDetailDto(); //借方
dto1.setSummary(voucherDetail.getBankName() + "结清");
dto1.setSubjectNo(bankCode);
dto1.setDimensionDept(voucherDetail.getDeptCode());
dto1.setDimensionCustom(voucherDetail.getCustomerCode());
dto1.setDebit(String.valueOf(voucherDetail.getAmount()));
resultDetails.add(dto1);
}
if (voucherDetail.getPaymentCharges().compareTo(BigDecimal.ZERO) != 0) {
RskVoucher.VoucherResultDetailDto dto0 = new RskVoucher.VoucherResultDetailDto(); //借方
dto0.setSummary("付款手续费");
dto0.setSubjectNo("6603.03.00");
dto0.setDebit(String.valueOf(voucherDetail.getPaymentCharges()));
resultDetails.add(dto0);
}
if (voucherDetail.getBalance().compareTo(BigDecimal.ZERO) != 0) {
RskVoucher.VoucherResultDetailDto dto4 = new RskVoucher.VoucherResultDetailDto(); //贷方
dto4.setSummary(voucherDetail.getBankName() + "结清");
if (voucher.getPayTypeCode().equals("02")) {
dto4.setSubjectNo("1002.01.00");
} else if (voucher.getPayTypeCode().equals("01")) {
dto4.setSubjectNo("1002.02.01");
}
dto4.setBankAccount(voucher.getBankAccount());
dto4.setCredit(String.valueOf(voucherDetail.getBalance()));
resultDetails.add(dto4);
}
}
}
newVoucher.setResultDetails(resultDetails);
}
return newVoucher;
}
}

9
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyRest.java

@ -3,11 +3,9 @@ package com.yxt.anrui.riskcenter.biz.loantransferpaymentapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.*;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -69,6 +67,11 @@ public class LoanTransferPaymentApplyRest implements LoanTransferPaymentApplyFei
return loanTransferPaymentApplyService.pushPaymentVoucher(sid,paySid);
}
@Override
public ResultBean<RskVoucher> pushPaymentVoucherReturnVoucher(String sid, String paySid) {
return loanTransferPaymentApplyService.pushPaymentVoucherReturnVoucher(sid,paySid);
}
@Override
public ResultBean submitRecordApplication(SubmitTransferDto dto) {
return loanTransferPaymentApplyService.submitRecordApplication(dto);

203
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java

@ -3,7 +3,6 @@ package com.yxt.anrui.riskcenter.biz.loantransferpaymentapply;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.math.Money;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -27,7 +26,6 @@ import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordFeign;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR;
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.PaymentVoucher;
import com.yxt.anrui.fin.api.kingdee.voucher.SceneCodeEnum;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
@ -39,6 +37,8 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign;
import com.yxt.anrui.portal.api.dictcommon.DictCommonVo;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
@ -47,21 +47,17 @@ 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.riskcenter.api.loanbuckleapply.LoanBuckleApply;
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.AppAccrualRecordVo;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.AppMonthAccrualDetailsVo;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApply;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.MonthlyAccrualSourceLCVo;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentSchedule;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.flow.*;
import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskPaymentVoucher;
import com.yxt.anrui.riskcenter.api.loanvoucher.RskVoucher;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
@ -82,7 +78,6 @@ import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import com.yxt.messagecenter.api.messagelist.MessageList;
import com.yxt.messagecenter.api.messagelist.MessageListFeign;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -107,6 +102,8 @@ import static java.util.Comparator.comparing;
@Service
public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTransferPaymentApplyMapper, LoanTransferPaymentApply> {
@Autowired
private DictCommonFeign dictCommonFeign;
@Autowired
private MessageListFeign messageListFeign;
@Autowired
@ -664,28 +661,6 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
repaymentHistory.setPaymentState("已转付");
repaymentHistory.setTransferDate(new DateTime());
loanRepaymentHistoryService.updateById(repaymentHistory);
// //推送转付还款记录
// LoanRepaymentHistory transfer = new LoanRepaymentHistory();
// transfer.setScheduleSid(repaymentHistory.getScheduleSid());
// transfer.setPlanDetailSid(repaymentHistory.getPlanDetailSid());
// transfer.setReturnWay("转付");
// transfer.setReturnWayKey("03");
// transfer.setActualDate(new Date());
// transfer.setDataTime(new DateTime());
// transfer.setBuckleKey("001");
// transfer.setBuckle("未申请");
// transfer.setUpdateState("1");
// transfer.setUpdateTime(new DateTime());
// BigDecimal money = new BigDecimal(0);
// if (null != applyRecord.getTransferPrincipal()) {
// money = applyRecord.getTransferPrincipal();
// }
// if (null != applyRecord.getDefaultInterest()) {
// money = applyRecord.getDefaultInterest().add(money);
// }
// String amount = String.valueOf(money);
// transfer.setActualMoney(new BigDecimal("-" + amount));
// loanRepaymentHistoryService.insert(transfer);
}
if (payFormKey.equals("01")) {
if (StringUtils.isNotBlank(applyRecord.getBankContractNo())) {
@ -735,6 +710,7 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
if (!map.isEmpty()) {
for (Map.Entry<String, BigDecimal> entry : map.entrySet()) {
FinPaymentrecordDto payDto = new FinPaymentrecordDto();
payDto.setFinDataType(1);
payDto.setBusSid(apply.getSid());
payDto.setCreateBySid(apply.getCreateBySid());
payDto.setCost(entry.getValue().toString());
@ -795,22 +771,6 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
}
}
}
// 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(() -> {
// pushPaymentVoucher(businessSid);
// });
// } catch (Exception e) {
// e.printStackTrace();
// log.error("推送数据失败=========================" + e.getMessage());
// return rb.setMsg("推送数据失败");
// }
}
return rb.success().setData(resultBean.getData());
} else {
@ -877,7 +837,6 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
} else {
voucherDetail.setSceneCode(SceneCodeEnum.TRANSFER_VOUCHER1.getCode());
}
// String bankName = loanRepaymentPlanDetailsService.getBankNameByMainOrOtherPolicy(planDetails);
if (StringUtils.isNotBlank(planDetails.getBankName())) {
voucherDetail.setBankName(planDetails.getBankName());
}
@ -949,7 +908,6 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
}
voucherDetail.setAmount(money);
voucherDetails.add(voucherDetail);
}
}
}
@ -1476,4 +1434,151 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
}
return rb.success().setData(finalPath);
}
public ResultBean<RskVoucher> pushPaymentVoucherReturnVoucher(String sid, String paySid) {
ResultBean rb = ResultBean.fireFail();
List<LoanTransferPaymentRecord> records = loanTransferPaymentRecordService.selByMainSidAndPaySid(sid, paySid);
FinPaymentrecord paymentrecord = finPaymentrecordFeign.fetchBySid(paySid).getData();
if (!records.isEmpty()) {
RskPaymentVoucher paymentVoucher = new RskPaymentVoucher();
List<RskPaymentVoucher.PaymentVoucherDetail> voucherDetails = new ArrayList<>();
for (LoanTransferPaymentRecord v : records) {
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(v.getRepaymentHistorySid());
if (null != repaymentHistory) {
String planDetailSid = repaymentHistory.getPlanDetailSid();
LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsService.fetchBySid(planDetailSid);
if (null != planDetails) {
RskPaymentVoucher.PaymentVoucherDetail voucherDetail = new RskPaymentVoucher.PaymentVoucherDetail();
List<FinUncollectedReceivablesDetailedJR> jrList = baseMapper.selFinJrList(planDetails.getSid());
if (null != jrList) {
if (jrList.size() > 0) {
voucherDetail.setSceneCode(SceneCodeEnum.TRANSFER_VOUCHER2.getCode());
} else {
voucherDetail.setSceneCode(SceneCodeEnum.TRANSFER_VOUCHER1.getCode());
}
} else {
voucherDetail.setSceneCode(SceneCodeEnum.TRANSFER_VOUCHER1.getCode());
}
if (StringUtils.isNotBlank(planDetails.getBankName())) {
voucherDetail.setBankName(planDetails.getBankName());
}
String useOrgSid = planDetails.getUseOrgSid();
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData();
if (null != organizationVo) {
paymentVoucher.setUseOrgCode(organizationVo.getOrgCode());
}
if (StringUtils.isNotBlank(paymentrecord.getPayBankAccount())) {
String accountNumber = paymentrecord.getPayBankAccount();
paymentVoucher.setBankAccount(paymentrecord.getPayBankAccount());
FinManufacturerBank manufacturerBank = finManufacturerBankFeign.selOneByBankNo(accountNumber, useOrgSid).getData();
if (null != manufacturerBank) {
paymentVoucher.setPayTypeCode(manufacturerBank.getDueBankKey());
}
}
LoanRepaymentSchedule schedule = loanRepaymentScheduleService.fetchBySid(planDetails.getScheduleSid());
if (StringUtils.isNotBlank(schedule.getCwDeptNo())) {
voucherDetail.setDeptCode(schedule.getCwDeptNo());
}
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(planDetails.getBusVinSid()).getData();
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(planDetails.getSalesOrderSid()).getData();
if (null != salesOrder) {
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);
}
}
BigDecimal money = new BigDecimal(0);
if (null != v.getTransferPrincipal()) {
money = v.getTransferPrincipal();
}
if (null != v.getDefaultInterest()) {
money = v.getDefaultInterest().add(money);
}
voucherDetail.setAmount(money);
voucherDetails.add(voucherDetail);
}
}
}
paymentVoucher.setVoucherDetails(voucherDetails);
RskVoucher rskVoucher = returnPaymentVoucher(paymentVoucher);
return rb.success().setData(rskVoucher);
}
return rb.success();
}
public RskVoucher returnPaymentVoucher(RskPaymentVoucher voucher) {
RskVoucher newVoucher = new RskVoucher();
List<RskVoucher.VoucherResultDetailDto> resultDetails = new ArrayList<>();
if (com.yxt.common.base.utils.StringUtils.isNotBlank(voucher.getUseOrgCode())) {
newVoucher.setAccountBook(voucher.getUseOrgCode());
newVoucher.setVoucherNo(voucher.getUseOrgCode());
}
List<RskPaymentVoucher.PaymentVoucherDetail> voucherDetails = voucher.getVoucherDetails();
if (!voucherDetails.isEmpty()) {
for (RskPaymentVoucher.PaymentVoucherDetail voucherDetail : voucherDetails) {
RskVoucher.VoucherResultDetailDto dto1 = new RskVoucher.VoucherResultDetailDto(); //借方
RskVoucher.VoucherResultDetailDto dto2 = new RskVoucher.VoucherResultDetailDto(); //贷方
dto1.setSummary("代付客户" + voucherDetail.getBankName() + "月还款");
dto2.setSummary("代付客户" + voucherDetail.getBankName() + "月还款");
if (voucherDetail.getSceneCode().equals(SceneCodeEnum.TRANSFER_VOUCHER1.getCode())) {
//正常
DictCommonVo dictCommonVo = dictCommonFeign.selectBykey(voucherDetail.getBankName(), "investorsCode").getData();
if (null != dictCommonVo) {
dto1.setSubjectNo(dictCommonVo.getDictValue());
}
} else if (voucherDetail.getSceneCode().equals(SceneCodeEnum.TRANSFER_VOUCHER2.getCode())) {
//已垫款
dto1.setSubjectNo("1133.10.20");
}
if (voucher.getPayTypeCode().equals("02")) {
dto2.setSubjectNo("1002.01.00");
} else if (voucher.getPayTypeCode().equals("01")) {
dto2.setSubjectNo("1002.02.01");
}
dto1.setDimensionDept(voucherDetail.getDeptCode());
dto1.setDimensionCustom(voucherDetail.getCustomerCode());
dto2.setBankAccount(voucher.getBankAccount());
dto1.setDebit(String.valueOf(voucherDetail.getAmount()));
dto2.setCredit(String.valueOf(voucherDetail.getAmount()));
resultDetails.add(dto1);
resultDetails.add(dto2);
}
newVoucher.setResultDetails(resultDetails);
}
return newVoucher;
}
}

13
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehicleenterlibrary/ScmVehicleEnterlibraryFeign.java

@ -35,19 +35,6 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
/**
* Project: scm(scm) <br/>
* File: ScmVehicleEnterlibraryFeign.java <br/>
* Class: scm.api.scmvehicleenterlibrary.ScmVehicleEnterlibraryFeign <br/>
* Description: 入库单. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2022-06-06 09:53:39 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Api(tags = "入库单")
@FeignClient(
contextId = "scm-ScmVehicleEnterlibrary",

8
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/supplychain/companyAdjust/CompanyAdjustVo.java

@ -20,16 +20,16 @@ public class CompanyAdjustVo implements Vo {
private String procInsId;
@ApiModelProperty("调入分公司名称")
@JsonProperty("company2")
private String buyerOrgName;
private String callInOrgName;
@ApiModelProperty("调出分公司名称")
@JsonProperty("company")
private String sellerOrgName;
private String callOutOrgName;
@ApiModelProperty("调车类型key")
@JsonProperty("typeKey")
private String shuntingTypeKey;
private String accadjTypeKey;
@ApiModelProperty("调车类型")
@JsonProperty("type")
private String shuntingTypeValue;
private String accadjTypeValue;
private List<CompanyAdjustList> records = new ArrayList<>();
}

Loading…
Cancel
Save