Browse Source

修改

zhanglei
ligaode 4 weeks ago
parent
commit
14e615a71c
  1. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbecollectionrecord/LoanBeCollectionRecordHistoryVehVo.java
  2. 12
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbeoverdueveh/LoanBeOverdueVehQuery.java
  3. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbeoverdueveh/LoanBeOverdueVehVo.java
  4. 94
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionrecord/LoanBeCollectionRecordMapper.xml
  5. 88
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionrecord/LoanBeCollectionRecordRest.java
  6. 7
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionrecord/LoanBeCollectionRecordService.java
  7. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbeoverdueveh/LoanBeOverdueVehMapper.java
  8. 254
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbeoverdueveh/LoanBeOverdueVehMapper.xml
  9. 20
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbeoverdueveh/LoanBeOverdueVehService.java
  10. 14
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanredemptionapply/LoanRedemptionApplyService.java
  11. 1
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanreturnvehledger/LoanReturnVehLedgerMapper.java
  12. 14
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansubletapply/LoanSubletApplyService.java
  13. 6
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmfinanceadjustapply/ScmFinanceAdjustApplyMapper.xml
  14. 2
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapply/ScmVehrebateCheckapplyService.java

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbecollectionrecord/LoanBeCollectionRecordHistoryVehVo.java

@ -10,6 +10,8 @@ import java.util.List;
@Data
public class LoanBeCollectionRecordHistoryVehVo {
@ApiModelProperty("销售订单车辆sid")
private String busVinSid;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车牌号")

12
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbeoverdueveh/LoanBeOverdueVehQuery.java

@ -13,18 +13,14 @@ public class LoanBeOverdueVehQuery implements Query {
private String dept;
@ApiModelProperty("贷款合同编号")
private String loanContractNo;
@ApiModelProperty("贷款人名称")
private String borrowerName;
@ApiModelProperty("还款操作人")
private String repaymentName;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车牌号")
private String carNum;
@ApiModelProperty("资方")
private String bankName;
@ApiModelProperty("资方合同编号")
private String bankContractNo;
@ApiModelProperty("贷款人名称")
private String borrowerName;
@ApiModelProperty("还款操作人")
private String repaymentName;
@ApiModelProperty("逾期期数")
private String beOverduePeriod;
@ApiModelProperty("逾期金额")

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbeoverdueveh/LoanBeOverdueVehVo.java

@ -18,37 +18,25 @@ public class LoanBeOverdueVehVo implements Vo {
private String dept;
@ApiModelProperty("贷款合同编号")
private String loanContractNo;
@ApiModelProperty("贷款人名称")
private String borrowerName;
@ApiModelProperty("还款操作人")
private String repaymentName;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车牌号")
private String carNum;
@ApiModelProperty("资方")
private String bankName;
@ApiModelProperty("资方合同编号")
private String bankContractNo;
@ApiModelProperty("资方月还")
private String dueMoney;
@ApiModelProperty("首次逾期日期")
private String firstBeDate;
@ApiModelProperty("贷款人名称")
private String borrowerName;
@ApiModelProperty("还款操作人")
private String repaymentName;
@ApiModelProperty("逾期期数")
private String beOverduePeriod;
@ApiModelProperty("逾期金额")
private String beOverdueMoney;
@ApiModelProperty("逾期金额换算期数")
private String beOverdueMoneyAndPeriod;
@ApiModelProperty("垫款金额")
private String advMoney;
@ApiModelProperty("资金占用费")
private String fundPossCostMoney;
@ApiModelProperty("最近催收日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty("风控专员")
private String riskStaffUserName;
@ApiModelProperty("远程控制状态")
private String lockCarState;
@ApiModelProperty("最近催收日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTime;
}

94
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionrecord/LoanBeCollectionRecordMapper.xml

@ -39,102 +39,32 @@
a1.borrowerName,
a1.mobile AS borrowerMobile,
a1.customer AS custName,
a1.`bankName`,
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') < 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') < CURDATE())),
0
)
) / a1.dueMoney, 1) AS beOverdueMoneyAndPeriod
a1.bankName,
MIN(a1.dueDate) AS firstBeDate,
a1.busVinSid
FROM
(SELECT
lrpd.sid,
lrpd.busVinSid,
lrpd.`useOrgName`,
lrpd.`dept`,
lrpd.`loanContractNo`,
lrpd.borrowerName,
bb.mobile,
lrpd.customer,
lrpd.`vinNo`,
lrpd.vinNo,
lrpd.vehMark,
lrpd.`bankName`,
lrpd.`bankContractNo`,
lrpd.dueMoney,
lrpd.bankName,
lrpd.dueDate,
(
lrpd.`dueMoney` - SUM(IFNULL(lrh.actualMoney, 0))
) AS yq_total,
(
lrpd.`dueMoney` - SUM(IFNULL(lrh.actualMoney, 0))
) / lrpd.`dueMoney` AS yq_hsqs,
lrpd.`paymentMoney` AS yd_dkje,
lrpd.fund AS yd_zjzyf,
lrpd.orgSidPath,
lrpd.createBySid,
bv.riskStaffUserSid,
bv.riskStaffUserName,
lr.createTime
lrpd.dueMoney - SUM(IFNULL(lrh.actualMoney, 0))
) AS yq_total
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 anrui_buscenter.`bus_sales_order_borrower` bb
loan_repayment_plan_details lrpd
LEFT JOIN loan_repayment_history lrh
ON lrh.planDetailSid = lrpd.sid
LEFT JOIN anrui_buscenter.bus_sales_order_borrower bb
ON lrpd.borrowerSid = bb.sid
LEFT JOIN
(SELECT
saleVehSid,
createTime
FROM
loan_be_collection_record
ORDER BY createTime DESC
LIMIT 1) lr
ON lrpd.busVinSid = lr.saleVehSid
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') < CURDATE()
AND lrpd.busVinSid = #{saleVehSid}
GROUP BY lrpd.`sid`
GROUP BY lrpd.sid
HAVING (yq_total > 0)) a1
</select>
</mapper>

88
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionrecord/LoanBeCollectionRecordRest.java

@ -41,56 +41,56 @@ import java.util.List;
@RequestMapping("v1/loanbecollectionrecord")
public class LoanBeCollectionRecordRest implements LoanBeCollectionRecordFeign {
@Autowired
private LoanBeCollectionRecordService loanBeCollectionRecordService;
@Autowired
private LoanBeCollectionRecordService loanBeCollectionRecordService;
@Override
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<LoanBeCollectionRecordVo>> listPage(@RequestBody PagerQuery<LoanBeCollectionRecordQuery> pq){
ResultBean rb = ResultBean.fireFail();
PagerVo<LoanBeCollectionRecordVo> pv = loanBeCollectionRecordService.listPageVo(pq);
return rb.success().setData(pv);
}
@Override
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<LoanBeCollectionRecordVo>> listPage(@RequestBody PagerQuery<LoanBeCollectionRecordQuery> pq) {
ResultBean rb = ResultBean.fireFail();
PagerVo<LoanBeCollectionRecordVo> pv = loanBeCollectionRecordService.listPageVo(pq);
return rb.success().setData(pv);
}
@Override
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody LoanBeCollectionRecordDto dto){
ResultBean rb = ResultBean.fireFail();
loanBeCollectionRecordService.saveOrUpdateDto(dto);
return rb.success();
}
@Override
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody LoanBeCollectionRecordDto dto) {
ResultBean rb = ResultBean.fireFail();
loanBeCollectionRecordService.saveOrUpdateDto(dto);
return rb.success();
}
@Override
@ApiOperation("根据sid批量删除")
@Override
@ApiOperation("根据sid批量删除")
@PostMapping("/delBySids")
public ResultBean delBySids(@RequestBody String[] sids){
ResultBean rb = ResultBean.fireFail();
loanBeCollectionRecordService.delBySids(sids);
return rb.success();
}
public ResultBean delBySids(@RequestBody String[] sids) {
ResultBean rb = ResultBean.fireFail();
loanBeCollectionRecordService.delBySids(sids);
return rb.success();
}
@Override
@ApiOperation("根据SID获取一条记录")
@Override
@ApiOperation("根据SID获取一条记录")
@GetMapping("/fetchDetailsBySid/{sid}")
public ResultBean<LoanBeCollectionRecordDetailsVo> fetchDetailsBySid(@PathVariable("sid") String sid){
ResultBean rb = ResultBean.fireFail();
LoanBeCollectionRecordDetailsVo vo = loanBeCollectionRecordService.fetchDetailsVoBySid(sid);
return rb.success().setData(vo);
}
public ResultBean<LoanBeCollectionRecordDetailsVo> fetchDetailsBySid(@PathVariable("sid") String sid) {
ResultBean rb = ResultBean.fireFail();
LoanBeCollectionRecordDetailsVo vo = loanBeCollectionRecordService.fetchDetailsVoBySid(sid);
return rb.success().setData(vo);
}
@Override
public ResultBean<LoanBeCollectionRecordInit> init(String saleVehSid) {
ResultBean rb = ResultBean.fireFail();
LoanBeCollectionRecordInit loanBeCollectionRecordInit = loanBeCollectionRecordService.init(saleVehSid);
return rb.success().setData(loanBeCollectionRecordInit);
}
@Override
public ResultBean<LoanBeCollectionRecordInit> init(String saleVehSid) {
ResultBean rb = ResultBean.fireFail();
LoanBeCollectionRecordInit loanBeCollectionRecordInit = loanBeCollectionRecordService.init(saleVehSid);
return rb.success().setData(loanBeCollectionRecordInit);
}
@Override
public ResultBean<LoanBeCollectionRecordHistoryVehVo> viewHistory(String saleVehSid) {
ResultBean rb = ResultBean.fireFail();
LoanBeCollectionRecordHistoryVehVo loanBeCollectionRecordHistoryVehVo = loanBeCollectionRecordService.viewHistory(saleVehSid);
return rb.success().setData(loanBeCollectionRecordHistoryVehVo);
}
@Override
public ResultBean<LoanBeCollectionRecordHistoryVehVo> viewHistory(String saleVehSid) {
ResultBean rb = ResultBean.fireFail();
LoanBeCollectionRecordHistoryVehVo loanBeCollectionRecordHistoryVehVo = loanBeCollectionRecordService.viewHistory(saleVehSid);
return rb.success().setData(loanBeCollectionRecordHistoryVehVo);
}
}

7
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionrecord/LoanBeCollectionRecordService.java

@ -47,6 +47,7 @@ import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanhomevisitinvestigatecustomer.LoanHomevisitInvestigateCustomer;
import com.yxt.anrui.riskcenter.api.loanhomevisitinvestigatecustomer.LoanHomevisitInvestigateCustomerDetailsVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrestorereportapply.AlrepaidAndArrVo;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo;
import com.yxt.anrui.riskcenter.biz.loanbeoverdueveh.LoanBeOverdueVehService;
@ -54,6 +55,7 @@ import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanhomevisitinvestigate.LoanHomevisitInvestigateService;
import com.yxt.anrui.riskcenter.biz.loanhomevisitinvestigatecustomer.LoanHomevisitInvestigateCustomerService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.anrui.riskcenter.biz.loanrestorereportapply.LoanRestoreReportApplyService;
import com.yxt.anrui.riskcenter.biz.loansolutions.LoanSolutionsService;
import com.yxt.common.base.config.component.FileUploadComponent;
import org.apache.commons.lang3.StringUtils;
@ -96,6 +98,8 @@ public class LoanBeCollectionRecordService extends MybatisBaseService<LoanBeColl
private LoanHomevisitInvestigateService loanHomevisitInvestigateService;
@Autowired
private LoanRepaymentPlanDetailsService loanRepaymentPlanDetailsService;
@Autowired
private LoanRestoreReportApplyService loanRestoreReportApplyService;
private QueryWrapper<LoanBeCollectionRecord> createQueryWrapper(LoanBeCollectionRecordQuery query) {
// todo: 这里根据具体业务调整查询条件
@ -249,6 +253,9 @@ public class LoanBeCollectionRecordService extends MybatisBaseService<LoanBeColl
public LoanBeCollectionRecordHistoryVehVo viewHistory(String saleVehSid) {
LoanBeCollectionRecordHistoryVehVo loanBeCollectionRecordHistoryVehVo = baseMapper.viewHistoryVeh(saleVehSid);
AlrepaidAndArrVo alrepaidAndArr2 = loanRestoreReportApplyService.getAlrepaidAndArr2(loanBeCollectionRecordHistoryVehVo.getBusVinSid());
loanBeCollectionRecordHistoryVehVo.setBeOverdueMoney(alrepaidAndArr2.getCurrentBeMoney());
loanBeCollectionRecordHistoryVehVo.setBeOverdueMoneyAndPeriod(alrepaidAndArr2.getBeOverdueMoneyAndPeriod());
List<LoanBeCollectionRecordHistoryVo> loanBeCollectionRecordDetailsVoList = baseMapper.viewHistory(saleVehSid);
loanBeCollectionRecordHistoryVehVo.setLoanBeCollectionRecordHistoryVoList(loanBeCollectionRecordDetailsVoList);
return loanBeCollectionRecordHistoryVehVo;

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

@ -18,6 +18,8 @@ public interface LoanBeOverdueVehMapper {
IPage<LoanBeOverdueVehVo> selectPageVo(IPage<LoanBeOverdueVehVo> page, @Param(Constants.WRAPPER) Wrapper<LoanBeOverdueVehVo> qw);
IPage<LoanBeOverdueVehVo> riskListPage(IPage<LoanBeOverdueVehVo> page, @Param(Constants.WRAPPER) Wrapper<LoanBeOverdueVehVo> qw);
void allocationRiskStaff(@Param("saleVehSid") String saleVehSid, @Param("userSid") String userSid, @Param("userName") String userName);
List<LoanBeCollectionRecordVehInit> initVehListByBorrSid(String borrowerSid);

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

@ -13,27 +13,137 @@
a1.borrowerName,
RIGHT(a1.vinNo, 8) AS vinNo,
a1.vehMark AS carNum,
a1.bankName,
a1.bankContractNo,
a1.dueMoney AS bankMonthRep,
MIN(a1.dueDate) AS firstBeDate, -- 改为取最早逾期日期
COUNT(a1.nowOverdue) AS beOverduePeriod,
SUM(CASE WHEN (a1.yq_total +
COALESCE(lbpv_sum.bankBeInter_sum, 0) +
COALESCE(lfd_sum.fund_sum, 0)) > 0 THEN 1 ELSE 0 END) AS beOverduePeriod,
ROUND(SUM(a1.yq_total) +
COALESCE(lbpv_sum.bankBeInter_sum, 0) +
CAST(COALESCE(lfd_sum.fund_sum, 0) AS DECIMAL(10,2)),2) AS beOverdueMoney,
ROUND(
(SUM(a1.yq_total) + COALESCE(lbpv_sum.bankBeInter_sum, 0) + COALESCE(lfd_sum.fund_sum, 0)) /
MAX(a1.qjyh), -- 保证聚合正确性
MAX(a1.qjyh), -- 保证聚合正确性
2
) AS beOverdueMoneyAndPeriod,
SUM(a1.yd_dkje) AS advMoney,
SUM(a1.yd_zjzyf) AS fundPossCostMoney,
MAX(a1.riskStaffUserSid) AS riskStaffUserSid, -- 保证聚合正确性
MAX(a1.riskStaffUserName) AS riskStaffUserName,
MAX(a1.reaRepaymentName) AS repaymentName,
MAX(a1.createTime) AS createTime,
a1.orgSidPath,
MAX(a1.lockCarState) AS lockCarState, -- 保证聚合正确性
MAX(a1.lockCarState) AS lockCarState, -- 保证聚合正确性
a1.nowOverdue
FROM (
SELECT
lrpd.sid,
lrpd.busVinSid,
lrpd.useOrgName,
lrpd.dept,
lrpd.loanContractNo,
lrpd.borrowerName,
lrpd.vinNo,
lrpd.vehMark,
COALESCE(lrs.mainMidRepay, 0) + COALESCE(lrs.otherMidRepay, 0) AS qjyh,
lrpd.dueMoney - COALESCE(SUM(lrh.actualMoney), 0) AS yq_total,
lrpd.orgSidPath,
bv.riskStaffUserName,
bv.reaRepaymentName,
lbcr.createTime,
CASE lbcv.lockCarState
WHEN 0 THEN '未控制'
WHEN 1 THEN '控制成功'
WHEN 2 THEN '控制失败'
WHEN 3 THEN '已解控'
END AS lockCarState,
if(lrpd.dueDate &lt;= lrpd.updateTime,0,1) as nowOverdue
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 (
SELECT
saleVehSid,
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;= lrpd.updateTime -- 移除DATE_FORMAT函数
GROUP BY lrpd.sid
) 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
lp.busVinSid,
SUM(fjj.reveivableMoney - fjj.m) AS fund_sum
FROM (
SELECT
IFNULL((
SELECT SUM(subscriptionMoney)
FROM anrui_fin.fin_selected_receivables_detailed s
WHERE s.auditState = '3'
AND s.receivablesSid = fj.sid
), 0) AS m,
fj.*
FROM (
SELECT j.busSid, j.sid, j.reveivableMoney
FROM anrui_fin.fin_uncollected_receivables_detailed_jr j
WHERE j.payCostTitleKey = '006'
) fj
) fjj
LEFT JOIN loan_repayment_plan_details lp
ON lp.sid = fjj.busSid
WHERE lp.dueDate &lt;= lp.updateTime
AND lp.busVinSid IS NOT NULL
GROUP BY lp.busVinSid
) lfd_sum ON lfd_sum.busVinSid = a1.busVinSid
<where>
${ew.sqlSegment}
</where>
</select>
<select id="riskListPage" resultType="com.yxt.anrui.riskcenter.api.loanbeoverdueveh.LoanBeOverdueVehVo">
SELECT
a1.busVinSid AS saleVehSid,
a1.useOrgName,
a1.dept,
a1.loanContractNo,
a1.borrowerName,
RIGHT(a1.vinNo, 8) AS vinNo,
a1.vehMark AS carNum,
SUM(CASE WHEN (a1.yq_total +
COALESCE(lbpv_sum.bankBeInter_sum, 0) +
COALESCE(lfd_sum.fund_sum, 0)) > 0 THEN 1 ELSE 0 END) AS beOverduePeriod,
ROUND(SUM(a1.yq_total) +
COALESCE(lbpv_sum.bankBeInter_sum, 0) +
CAST(COALESCE(lfd_sum.fund_sum, 0) AS DECIMAL(10,2)),2) AS beOverdueMoney,
ROUND(
(SUM(a1.yq_total) + COALESCE(lbpv_sum.bankBeInter_sum, 0) + COALESCE(lfd_sum.fund_sum, 0)) /
MAX(a1.qjyh), -- 保证聚合正确性
2
) AS beOverdueMoneyAndPeriod,
MAX(a1.riskStaffUserSid) AS riskStaffUserSid,
MAX(a1.riskStaffUserName) AS riskStaffUserName,
MAX(a1.reaRepaymentName) AS repaymentName,
MAX(a1.createTime) AS createTime,
a1.orgSidPath,
MAX(a1.lockCarState) AS lockCarState, -- 保证聚合正确性
a1.nowOverdue
FROM (
SELECT
@ -45,14 +155,8 @@
lrpd.borrowerName,
lrpd.vinNo,
lrpd.vehMark,
lrpd.bankName,
lrpd.bankContractNo,
lrpd.dueMoney,
lrpd.dueDate,
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,
bv.riskStaffUserSid,
bv.riskStaffUserName,
@ -75,7 +179,7 @@
LEFT JOIN (
SELECT
saleVehSid,
MAX(createTime) AS createTime -- 取最新记录
MAX(createTime) AS createTime -- 取最新记录
FROM loan_be_collection_record
GROUP BY saleVehSid
) lbcr ON lrpd.busVinSid = lbcr.saleVehSid
@ -132,7 +236,7 @@
<update id="allocationRiskStaff">
UPDATE
anrui_buscenter.bus_sales_order_vehicle
anrui_buscenter.bus_sales_order_vehicle
SET riskStaffUserSid = #{userSid},
riskStaffUserName = #{userName}
WHERE sid = #{saleVehSid}
@ -142,26 +246,30 @@
resultType="com.yxt.anrui.riskcenter.api.loanbecollectionrecord.LoanBeCollectionRecordVehInit">
SELECT
RIGHT(a1.vinNo, 8) AS vinNo,
MAX(a1.customer) AS custName, -- 使用聚合函数确保分组正确
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,
MIN(CASE WHEN (a1.yq_total +
COALESCE(lbpv_agg.bankBeInter_sum, 0) +
COALESCE(lfd_agg.fund_sum, 0)) > 0
THEN a1.dueDate ELSE NULL END) AS firstBeDate,
SUM(CASE WHEN (a1.yq_total +
COALESCE(lbpv_agg.bankBeInter_sum, 0) +
COALESCE(lfd_agg.fund_sum, 0)) > 0 THEN 1 ELSE 0 END) AS beOverduePeriod,
ROUND(
SUM(a1.yq_total) + IFNULL(MAX(a1.bankBeInter_sum), 0) + IFNULL(MAX(a1.fund_sum), 0),
SUM(a1.yq_total) + IFNULL(MAX(lbpv_agg.bankBeInter_sum), 0) + IFNULL(MAX(lfd_agg.fund_sum), 0),
2
) AS beOverdueMoney,
ROUND(
(SUM(a1.yq_total) + IFNULL(MAX(a1.bankBeInter_sum), 0) + IFNULL(MAX(a1.fund_sum), 0)) / MAX(a1.qjyh),
(SUM(a1.yq_total) + IFNULL(MAX(lbpv_agg.bankBeInter_sum), 0) + IFNULL(MAX(lfd_agg.fund_sum), 0)) / MAX(a1.qjyh),
2
) AS beOverdueMoneyAndPeriod,
a1.busVinSid AS saleVehSid,
MAX(a1.salesOrderSid) AS salesOrderSid,
MAX(a1.lockCarState) AS lockCarState,
a1.nowOverdue
FROM (
SELECT
@ -177,14 +285,11 @@
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,
if(lrpd.dueDate &lt;= lrpd.updateTime,0,1) as nowOverdue
IF(lrpd.dueDate &lt;= lrpd.updateTime,0,1) AS nowOverdue
FROM
loan_repayment_plan_details lrpd
LEFT JOIN loan_repayment_history lrh
@ -193,58 +298,43 @@
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
lrpd.dueDate &lt; CURDATE()
GROUP BY
lrpd.sid
) a1
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
) lbpv_agg ON lbpv_agg.saleVehSid = a1.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
) a1
lp.busVinSid,
SUM(fjj.reveivableMoney - fjj.m) AS fund_sum
FROM (
SELECT
IFNULL((
SELECT SUM(subscriptionMoney)
FROM anrui_fin.fin_selected_receivables_detailed s
WHERE s.auditState = '3'
AND s.receivablesSid = fj.sid
), 0) AS m,
fj.*
FROM (
SELECT j.busSid, j.sid, j.reveivableMoney
FROM anrui_fin.fin_uncollected_receivables_detailed_jr j
WHERE j.payCostTitleKey = '006'
) fj
) fjj
LEFT JOIN loan_repayment_plan_details lp
ON lp.sid = fjj.busSid
WHERE lp.dueDate &lt;= lp.updateTime
AND lp.busVinSid IS NOT NULL
GROUP BY lp.busVinSid
) lfd_agg ON lfd_agg.busVinSid = a1.busVinSid
WHERE
a1.borrowerSid = #{borrowerSid}
AND a1.nowOverdue = 0
@ -262,10 +352,10 @@
ld.borrowerName AS borrerName,
bv.reaRepaymentName,
bv.reaRepaymentPhone,
ld.busVinSid AS saleVehSid
ld.busVinSid AS saleVehSid
FROM loan_repayment_plan_details ld
LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv
ON ld.busVinSid = bv.sid
LEFT JOIN anrui_buscenter.bus_sales_order_vehicle bv
ON ld.busVinSid = bv.sid
WHERE ld.busVinSid = #{saleVehSid}
</select>
@ -282,24 +372,26 @@
a1.bankName,
a1.bankContractNo,
a1.dueMoney AS bankMonthRep,
MIN(a1.dueDate) AS firstBeDate, -- 改为取最早逾期日期
COUNT(a1.sid) AS beOverduePeriod,
MIN(a1.dueDate) AS firstBeDate, -- 改为取最早逾期日期
SUM(CASE WHEN (a1.yq_total +
COALESCE(lbpv_sum.bankBeInter_sum, 0) +
COALESCE(lfd_sum.fund_sum, 0)) > 0 THEN 1 ELSE 0 END) AS beOverduePeriod,
ROUND(SUM(a1.yq_total) +
COALESCE(lbpv_sum.bankBeInter_sum, 0) +
CAST(COALESCE(lfd_sum.fund_sum, 0) AS DECIMAL(10,2)),2) AS beOverdueMoney,
ROUND(
(SUM(a1.yq_total) + COALESCE(lbpv_sum.bankBeInter_sum, 0) + COALESCE(lfd_sum.fund_sum, 0)) /
MAX(a1.qjyh), -- 保证聚合正确性
MAX(a1.qjyh), -- 保证聚合正确性
2
) AS beOverdueMoneyAndPeriod,
SUM(a1.yd_dkje) AS advMoney,
SUM(a1.yd_zjzyf) AS fundPossCostMoney,
MAX(a1.riskStaffUserSid) AS riskStaffUserSid, -- 保证聚合正确性
MAX(a1.riskStaffUserSid) AS riskStaffUserSid, -- 保证聚合正确性
MAX(a1.riskStaffUserName) AS riskStaffUserName,
MAX(a1.reaRepaymentName) AS repaymentName,
MAX(a1.createTime) AS createTime,
a1.orgSidPath,
MAX(a1.lockCarState) AS lockCarState, -- 保证聚合正确性
MAX(a1.lockCarState) AS lockCarState, -- 保证聚合正确性
a1.nowOverdue
FROM (
SELECT
@ -341,7 +433,7 @@
LEFT JOIN (
SELECT
saleVehSid,
MAX(createTime) AS createTime -- 取最新记录
MAX(createTime) AS createTime -- 取最新记录
FROM loan_be_collection_record
GROUP BY saleVehSid
) lbcr ON lrpd.busVinSid = lbcr.saleVehSid
@ -356,7 +448,7 @@
WHERE lbca.collMeasure LIKE '%远程控制%'
AND lbca.nodeState = '已办结'
) lbcv ON lbcv.saleVehSid = lrpd.busVinSid AND lbcv.rn = 1
WHERE lrpd.dueDate &lt; CURDATE() -- 移除DATE_FORMAT函数
WHERE lrpd.dueDate &lt; CURDATE() -- 移除DATE_FORMAT函数
GROUP BY lrpd.sid
) a1
LEFT JOIN (

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

@ -91,12 +91,6 @@ public class LoanBeOverdueVehService {
if (StringUtils.isNotBlank(query.getCarNum())) {
qw.like("a1.vehMark", query.getCarNum());
}
if (StringUtils.isNotBlank(query.getBankName())) {
qw.like("a1.bankName", query.getBankName());
}
if (StringUtils.isNotBlank(query.getBankContractNo())) {
qw.like("a1.bankContractNo", query.getBankContractNo());
}
if (StringUtils.isNotBlank(query.getRiskStaffName())) {
qw.like("a1.riskStaffUserName", query.getRiskStaffName());
}
@ -153,12 +147,6 @@ public class LoanBeOverdueVehService {
if (StringUtils.isNotBlank(query.getCarNum())) {
qw.like("a1.vehMark", query.getCarNum());
}
if (StringUtils.isNotBlank(query.getBankName())) {
qw.like("a1.bankName", query.getBankName());
}
if (StringUtils.isNotBlank(query.getBankContractNo())) {
qw.like("a1.bankContractNo", query.getBankContractNo());
}
if (StringUtils.isNotBlank(query.getVinNo())) {
qw.like("a1.vinNo", query.getVinNo());
}
@ -185,7 +173,7 @@ public class LoanBeOverdueVehService {
}
qw.having("beOverdueMoney > {0}", 0);
IPage<LoanBeOverdueVehVo> page = PagerUtil.queryToPage(pq);
IPage<LoanBeOverdueVehVo> pagging = loanBeOverdueVehMapper.selectPageVo(page, qw);
IPage<LoanBeOverdueVehVo> pagging = loanBeOverdueVehMapper.riskListPage(page, qw);
PagerVo<LoanBeOverdueVehVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
@ -271,12 +259,6 @@ public class LoanBeOverdueVehService {
if (StringUtils.isNotBlank(query.getCarNum())) {
qw.like("a1.vehMark", query.getCarNum());
}
if (StringUtils.isNotBlank(query.getBankName())) {
qw.like("a1.bankName", query.getBankName());
}
if (StringUtils.isNotBlank(query.getBankContractNo())) {
qw.like("a1.bankContractNo", query.getBankContractNo());
}
if (StringUtils.isNotBlank(query.getRiskStaffName())) {
qw.like("a1.riskStaffUserName", query.getRiskStaffName());
}

14
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanredemptionapply/LoanRedemptionApplyService.java

@ -45,6 +45,7 @@ import com.yxt.anrui.riskcenter.api.loanredemptionapply.flow.*;
import com.yxt.anrui.riskcenter.api.loanredemptionveh.LoanRedemptionVeh;
import com.yxt.anrui.riskcenter.api.loanrestorereportapply.AlrepaidAndArrVo;
import com.yxt.anrui.riskcenter.api.loanreturnvehledger.LoanReturnVehLedger;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVeh;
import com.yxt.anrui.riskcenter.api.loansubletapply.VehDisposal;
import com.yxt.anrui.riskcenter.biz.loanbuckleapplyrecord.LoanBuckleApplyRecordService;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
@ -53,6 +54,7 @@ import com.yxt.anrui.riskcenter.biz.loanredemptionveh.LoanRedemptionVehService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.anrui.riskcenter.biz.loanrestorereportapply.LoanRestoreReportApplyService;
import com.yxt.anrui.riskcenter.biz.loanreturnvehledger.LoanReturnVehLedgerService;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
@ -114,6 +116,8 @@ public class LoanRedemptionApplyService extends MybatisBaseService<LoanRedemptio
private CrmCustomerTempFeign crmCustomerTempFeign;
@Autowired
private FinUncollectedReceivablesDetailedJRFeign finUncollectedReceivablesDetailedJRFeign;
@Autowired
private LoanReturnVehLedgerService loanReturnVehLedgerService;
public PagerVo<LoanRedemptionApplyVo> listPage(PagerQuery<LoanRedemptionApplyQuery> pq) {
IPage<LoanRedemptionApply> page = PagerUtil.queryToPage(pq);
@ -798,6 +802,16 @@ public class LoanRedemptionApplyService extends MybatisBaseService<LoanRedemptio
FinUncollectedReceivablesDetailedJR finUncollectedReceivablesDetailedJR = new FinUncollectedReceivablesDetailedJR();
finUncollectedReceivablesDetailedJR.setCreateByName(redemptionApply.getApplyName());
finUncollectedReceivablesDetailedJR.setCreateBySid(redemptionApply.getCreateBySid());
redemptionVinLists.removeAll(Collections.singleton(null));
if (!redemptionVinLists.isEmpty()) {
for (int j = 0; j < redemptionVinLists.size(); j++) {
RedemptionVinList redemptionVinList = redemptionVinLists.get(j);
LoanReturnVehLedger loanReturnVehLedger = loanReturnVehLedgerService.fetchBySid(redemptionVinList.getLedgerSid());
loanReturnVehLedger.setDisposal("客户赎回");
loanReturnVehLedger.setDisposalKey("02");
loanReturnVehLedgerService.updateById(loanReturnVehLedger);
}
}
//查询销售订单信息
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.fetchBySalesOrderVehiclerSid(redemptionVinLists.get(0).getBusVinSid()).getData();
BusSalesOrder busSalesOrder = busSalesOrderFeign.fetchBySid(busSalesOrderVehicle.getSalesOrderSid()).getData();

1
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanreturnvehledger/LoanReturnVehLedgerMapper.java

@ -10,6 +10,7 @@ import com.yxt.anrui.riskcenter.api.loanreturnvehledger.LoanReturnVehLedgerQuery
import com.yxt.anrui.riskcenter.api.loanreturnvehledger.LoanReturnVehLedgerVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
/**
* @description:

14
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansubletapply/LoanSubletApplyService.java

@ -47,6 +47,7 @@ import com.yxt.anrui.riskcenter.biz.loanoutboundapply.LoanOutboundApplyService;
import com.yxt.anrui.riskcenter.biz.loanredemptionapply.LoanRedemptionApplyService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.anrui.riskcenter.biz.loanreturnvehledger.LoanReturnVehLedgerService;
import com.yxt.anrui.riskcenter.biz.loansubletveh.LoanSubletVehService;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
@ -101,6 +102,8 @@ public class LoanSubletApplyService extends MybatisBaseService<LoanSubletApplyMa
private LoanOutboundApplyService loanOutboundApplyService;
@Autowired
private CrmCustomerTempFeign crmCustomerTempFeign;
@Autowired
private LoanReturnVehLedgerService loanReturnVehLedgerService;
public PagerVo<LoanSubletApplyVo> listPage(PagerQuery<LoanSubletApplyQuery> pq) {
IPage<LoanSubletApply> page = PagerUtil.queryToPage(pq);
@ -682,6 +685,17 @@ public class LoanSubletApplyService extends MybatisBaseService<LoanSubletApplyMa
LoanSubletApply subletApply = fetchBySid(businessSid);
subletApply.setClosingDate(new DateTime());
baseMapper.updateById(subletApply);
List<SubletVinList> subletVinLists = loanSubletVehService.selByMainSid(businessSid);
subletVinLists.removeAll(Collections.singleton(null));
if (!subletVinLists.isEmpty()) {
for (int j = 0; j < subletVinLists.size(); j++) {
SubletVinList subletVinList = subletVinLists.get(j);
LoanReturnVehLedger loanReturnVehLedger = loanReturnVehLedgerService.fetchBySid(subletVinList.getLedgerSid());
loanReturnVehLedger.setDisposal("二次转租");
loanReturnVehLedger.setDisposalKey("04");
loanReturnVehLedgerService.updateById(loanReturnVehLedger);
}
}
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();

6
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmfinanceadjustapply/ScmFinanceAdjustApplyMapper.xml

@ -47,7 +47,7 @@
WHEN n.alreadyMoney = 0 THEN'未调整'
WHEN n.alreadyMoney != 0 AND n.nowDiffAmount != 0 THEN '部分调整'
WHEN n.nowDiffAmount = 0 THEN'已调整'
END AS `state`
END AS state
FROM
(SELECT
a.sid as checkApplySid,
@ -73,7 +73,7 @@
scm_vehrebate_checkapplydetail AS d
LEFT JOIN scm_vehrebate_checkapply as a ON d.mainSid = a.sid
LEFT JOIN scm_veh_rebate as r ON d.vehRebateSid = r.sid
WHERE r.adjustmentMoney &lt; 0 AND a.nodeState = '已办结' AND d.rebateTypeValue = '金融贴息') as n
WHERE r.adjustmentMoney &lt; 0 AND a.nodeState = '已办结' AND d.rebateTypeValue = '金融贴息' AND d.isAdjustment = '是') as n
LEFT JOIN anrui_buscenter.bus_sales_order as bo ON n.orderSid = bo.sid
<where> ${ew.sqlSegment} </where>
</select>
@ -85,7 +85,7 @@
WHEN n.alreadyMoney = 0 THEN'未调整'
WHEN n.alreadyMoney != 0 AND n.nowDiffAmount != 0 THEN '部分调整'
WHEN n.nowDiffAmount = 0 THEN'已调整'
END AS `state`
END AS state
FROM
(SELECT
a.sid as checkApplySid,

2
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehrebatecheckapply/ScmVehrebateCheckapplyService.java

@ -833,7 +833,7 @@ public class ScmVehrebateCheckapplyService extends MybatisBaseService<ScmVehreba
if (rebate.getIsAdjustment().equals("是")) {
if (StringUtils.isNotBlank(rebate.getAdjustmentMoney())) {
BigDecimal adMoney = new BigDecimal(rebate.getAdjustmentMoney());
if (adMoney.compareTo(BigDecimal.ZERO) != 0) {
if (adMoney.compareTo(BigDecimal.ZERO) == 1) {
CostAdjustmentsBill.CostAdjustmentsBillDetailDto dto = new CostAdjustmentsBill.CostAdjustmentsBillDetailDto();
dto.setCompanyCode(useOrgCode);
dto.setMaterialID(vinCode);

Loading…
Cancel
Save