Browse Source

Merge remote-tracking branch 'origin/master'

master
God 1 year ago
parent
commit
8b6074e7d4
  1. 4
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finmanufacturerbank/FinManufacturerBankFeign.java
  2. 5
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finmanufacturerbank/FinManufacturerBankFeignFallback.java
  3. 5
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finuncollectedreceivablesdetailedjr/FinUncollectedReceivablesDetailedJRFeign.java
  4. 5
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finuncollectedreceivablesdetailedjr/FinUncollectedReceivablesDetailedJRFeignFallback.java
  5. 2
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finmanufacturerbank/FinManufacturerBankMapper.java
  6. 6
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finmanufacturerbank/FinManufacturerBankMapper.xml
  7. 5
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finmanufacturerbank/FinManufacturerBankRest.java
  8. 6
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finmanufacturerbank/FinManufacturerBankService.java
  9. 8
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailedjr/FinUncollectedReceivablesDetailedJRRest.java
  10. 8
      anrui-riskcenter-ui/src/api/collectionmeasures/collectionmeasures.js
  11. 43
      anrui-riskcenter-ui/src/views/collectionmeasures/collectionmeasuresInfo.vue
  12. 149
      anrui-riskcenter-ui/src/views/collectionmeasures/relation/remotecontrolstateEdit.vue
  13. 5
      anrui-riskcenter-ui/src/views/overduevehicle/vehiclecollectionentry.vue
  14. 15
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/DifferenceVo.java
  15. 15
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/HistoryOverDueVo.java
  16. 12
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentplandetails/LoanRepaymentPlanDetails.java
  17. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentrecord/LoanTransferPaymentRecord.java
  18. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.java
  19. 23
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml
  20. 209
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java
  21. 13
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.java
  22. 166
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml
  23. 22
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java
  24. 128
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java
  25. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentrecord/LoanTransferPaymentRecordMapper.xml

4
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finmanufacturerbank/FinManufacturerBankFeign.java

@ -102,4 +102,8 @@ public interface FinManufacturerBankFeign {
@ResponseBody
public ResultBean listByPayment(@RequestParam("orgPath") String orgPath, @RequestParam("key") String key);
@ApiOperation("根据账号获取银行账户信息")
@GetMapping("/selOneByBankNo")
@ResponseBody
public ResultBean<FinManufacturerBank> selOneByBankNo(@RequestParam("bankAccount") String bankAccount, @RequestParam("useOrgSid") String useOrgSid);
}

5
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finmanufacturerbank/FinManufacturerBankFeignFallback.java

@ -94,4 +94,9 @@ public class FinManufacturerBankFeignFallback implements FinManufacturerBankFeig
public ResultBean listByPayment(String orgPath, String key) {
return null;
}
@Override
public ResultBean selOneByBankNo(String bankAccount,String useOrgSid) {
return null;
}
}

5
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finuncollectedreceivablesdetailedjr/FinUncollectedReceivablesDetailedJRFeign.java

@ -67,4 +67,9 @@ public interface FinUncollectedReceivablesDetailedJRFeign {
@ApiOperation("更新")
@PostMapping("/updateAll")
ResultBean updateAll(@RequestParam("sid") String sid, @RequestParam("type") String type, @RequestParam("fundDay") BigDecimal fundDay);
@ApiOperation("新增")
@PostMapping("/save")
ResultBean save(@RequestBody FinUncollectedReceivablesDetailedJR finUncollectedReceivablesDetailedJR);
}

5
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finuncollectedreceivablesdetailedjr/FinUncollectedReceivablesDetailedJRFeignFallback.java

@ -60,4 +60,9 @@ public class FinUncollectedReceivablesDetailedJRFeignFallback implements FinUnco
public ResultBean updateAll(String sid, String type, BigDecimal fundDay) {
return null;
}
@Override
public ResultBean save(FinUncollectedReceivablesDetailedJR finUncollectedReceivablesDetailedJR) {
return null;
}
}

2
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finmanufacturerbank/FinManufacturerBankMapper.java

@ -68,4 +68,6 @@ public interface FinManufacturerBankMapper extends BaseMapper<FinManufacturerBan
IPage<FinManufacturerVo> selAppAccountByOrgSid(IPage<FinManufacturerVo> page, @Param(Constants.WRAPPER) QueryWrapper<AppBusDeliveredPageQuery> qw, @Param("name") String name);
List<BankVoForPayment> listByPayment(@Param("useOrgSid") String useOrgSid, @Param("key") String key);
FinManufacturerBank selOneByBankNo(@Param("bankAccount") String bankAccount, @Param("useOrgSid") String useOrgSid);
}

6
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finmanufacturerbank/FinManufacturerBankMapper.xml

@ -93,4 +93,10 @@
where useOrgSid = #{useOrgSid}
and dueBankKey = #{key}
</select>
<select id="selOneByBankNo" resultType="com.yxt.anrui.fin.api.finmanufacturerbank.FinManufacturerBank">
select *
from fin_manufacturer_bank
where bankAccount = #{bankAccount}
and useOrgSid = #{useOrgSid}
</select>
</mapper>

5
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finmanufacturerbank/FinManufacturerBankRest.java

@ -110,4 +110,9 @@ public class FinManufacturerBankRest implements FinManufacturerBankFeign {
public ResultBean listByPayment(String orgPath, String key) {
return finManufacturerBankService.listByPayment(orgPath,key);
}
@Override
public ResultBean selOneByBankNo(String bankAccount,String useOrgSid) {
return finManufacturerBankService.selOneByBankNo(bankAccount,useOrgSid);
}
}

6
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finmanufacturerbank/FinManufacturerBankService.java

@ -272,4 +272,10 @@ public class FinManufacturerBankService extends MybatisBaseService<FinManufactur
List<BankVoForPayment> list = baseMapper.listByPayment(useOrgSid, key);
return rb.success().setData(list);
}
public ResultBean selOneByBankNo(String bankAccount,String useOrgSid) {
ResultBean rb = ResultBean.fireFail();
FinManufacturerBank finManufacturerBank = baseMapper.selOneByBankNo(bankAccount,useOrgSid);
return rb.success().setData(finManufacturerBank);
}
}

8
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailedjr/FinUncollectedReceivablesDetailedJRRest.java

@ -27,6 +27,7 @@ package com.yxt.anrui.fin.biz.finuncollectedreceivablesdetailedjr;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.*;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.DetailsOfReceivablesAndUncollectedItemsJRVo;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRFeign;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRQuery;
import com.yxt.common.core.query.PagerQuery;
@ -70,4 +71,11 @@ public class FinUncollectedReceivablesDetailedJRRest implements FinUncollectedRe
public ResultBean updateAll(String sid, String type, BigDecimal fundDay) {
return finUncollectedReceivablesDetailedJRService.updateAll(sid, type, fundDay);
}
@Override
public ResultBean save(FinUncollectedReceivablesDetailedJR finUncollectedReceivablesDetailedJR) {
ResultBean rb = ResultBean.fireFail();
finUncollectedReceivablesDetailedJRService.insert(finUncollectedReceivablesDetailedJR);
return rb.success();
}
}

8
anrui-riskcenter-ui/src/api/collectionmeasures/collectionmeasures.js

@ -42,6 +42,14 @@ export default {
})
},
// 担保人保存
saveLockCarState: function(data) {
return request({
url: '/riskcenter/v1/loanbecollectionapply/saveLockCarState',
method: 'post',
params: data
})
},
// 设置远程控制状态
saveDbr: function(data) {
return request({
url: '/riskcenter/v1/loanbecollectionveh/saveDbr',

43
anrui-riskcenter-ui/src/views/collectionmeasures/collectionmeasuresInfo.vue

@ -61,7 +61,12 @@
<el-table-column prop="beOverdueMoney" label="逾期金额" align="center" width="100" />
<el-table-column prop="beOverdueMoneyAndPeriod" label="换算期数" align="center" width="100" />
<el-table-column v-if="yckzVisible" prop="lockCarMoney" label="远程控制费用" align="center" width="120"/>
<el-table-column v-if="formobj.nodeState == '已办结' && yckzState" prop="lockCarState" label="远程控制状态" align="center" width="120"/>
<el-table-column v-if="formobj.nodeState == '已办结' && yckzState" label="远程控制状态" align="center" width="120">
<template slot-scope="scope">
<span v-if="scope.row.lockCarState == '待控制'" class="bluezi" @click="lockCarStateEdit(scope.row)">{{ scope.row.lockCarState }}</span>
<span v-else>{{ scope.row.lockCarState }}</span>
</template>
</el-table-column>
<el-table-column v-if="dbrVisible" label="担保人" align="center" width="140">
<template slot-scope="scope">
<span class="bluezi" @click="cautionerLook(scope.row)">查看</span>
@ -97,6 +102,8 @@
<materialInfo v-show="viewState == 7" ref="divMterial" @doback="resetState" />
<!-- 查看担保人信息 -->
<cautionerInfo v-show="viewState == 8" ref="divCautioner" @doback="resetState" />
<!-- 设置远程控制状态 -->
<remotecontrolstateEdit v-show="viewState == 9" ref="divControl" @doback="resetState" @reload="resetDate"/>
<!-- 还款协议查看 -->
<el-dialog :visible.sync="dialogVisible">
<el-image style="width: 150px; height: 150px" v-for="(item, index) in list" :key="index" :src="item" :preview-src-list="list"/>
@ -113,6 +120,7 @@ import financialschemeInfo from '@/components/publicPage/financialschemeInfo'
import homevisitreport from '@/views/overduevehicle/relation/homevisitreport'
import materialInfo from '@/views/overduevehicle/relation/materialInfo'
import cautionerInfo from './relation/cautionerInfo'
import remotecontrolstateEdit from './relation/remotecontrolstateEdit'
export default {
name: 'CollectionMeasuresInfo',
@ -123,7 +131,8 @@ export default {
financialschemeInfo,
homevisitreport,
materialInfo,
cautionerInfo
cautionerInfo,
remotecontrolstateEdit
},
data() {
return {
@ -205,6 +214,36 @@ export default {
this.list = aa
}
},
lockCarStateEdit(row) {
this.viewState = 9
this.$refs['divControl'].showInfo(row, this.formobj.sid)
},
resetDate() {
this.viewState = 1
req.fetchBySid(this.formobj.sid).then((res) => {
if (res.success) {
this.formobj = res.data
this.formobj.collMeasures = this.formobj.collMeasures.join(',')
if (this.formobj.collMeasures.indexOf('签订还款协议') !== -1) {
this.hkxyVisible = true
}
if (this.formobj.collMeasures.indexOf('增加担保人') !== -1) {
this.dbrVisible = true
}
if (this.formobj.collMeasures.indexOf('远程控制') !== -1) {
this.yckzVisible = true
this.yckzState = true
}
if (this.formobj.files.length > 0) {
const aa = []
this.formobj.files.forEach((e) => {
aa.push(e.url)
})
this.formobj.files = aa
}
}
})
},
dataChange(value, row, list) {
const choose = list.filter((item) => item.name === value)
if (value === '催收记录' && choose[0].sid !== '') {

149
anrui-riskcenter-ui/src/views/collectionmeasures/relation/remotecontrolstateEdit.vue

@ -0,0 +1,149 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate()">保存</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="24">
<div class="span-sty">贷款合同编号</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanContractNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.custName }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">资方</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankName }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">资方合同编号</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankContractNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">车牌号</div>
<el-form-item><span class="addinputInfo">{{ formobj.carNum }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">车架号</div>
<el-form-item><span class="addinputInfo">{{ formobj.vinNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">控制状态</div>
<el-form-item>
<el-radio-group class="addinputInfo" style="font-size: 1px" v-model="formobj.lockCarState">
<el-radio label="1">控制成功</el-radio>
<el-radio label="2">控制失败</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</div>
</template>
<script>
import req from '@/api/collectionmeasures/collectionmeasures'
export default {
name: 'RemoteControlStateEdit',
data() {
return {
viewTitle: '',
viewState: 1,
submitdisabled: false,
formobj: {
applySid: '',
bankContractNo: '',
bankName: '',
carNum: '',
custName: '',
lockCarState: '',
loanContractNo: '',
saleVehSid: '',
vinNo: ''
},
rules: {}
}
},
methods: {
showInfo(row, sid) {
this.formobj.applySid = sid
this.formobj.bankContractNo = row.bankContractNo
this.formobj.bankName = row.bankName
this.formobj.carNum = row.carNum
this.formobj.custName = row.custName
this.formobj.loanContractNo = row.loanContractNo
this.formobj.saleVehSid = row.saleVehSid
this.formobj.vinNo = row.vinNo
},
saveOrUpdate() {
if (this.formobj.lockCarState === '') {
this.$message({ showClose: true, type: 'error', message: '请选择控制状态' })
return
}
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
req.saveLockCarState({ applySid: this.formobj.applySid, saleVehSid: this.formobj.saleVehSid, lockCarState: this.formobj.lockCarState }).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '操作成功' })
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reload')
this.formobj = {
applySid: '',
bankContractNo: '',
bankName: '',
carNum: '',
custName: '',
lockCarState: '',
loanContractNo: '',
saleVehSid: '',
vinNo: ''
}
this.submitdisabled = false
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 140px !important;
}
.addinputInfo {
margin-left: 130px !important;
}
</style>

5
anrui-riskcenter-ui/src/views/overduevehicle/vehiclecollectionentry.vue

@ -283,11 +283,6 @@ export default {
this.formobj.createByName = window.sessionStorage.getItem('name')
this.formobj.createBySid = window.sessionStorage.getItem('userSid')
this.formobj.orgPath = window.sessionStorage.getItem('defaultOrgPath')
if (this.formobj.loanBeCollectionRecordVehInitList.length > 0) {
this.formobj.loanBeCollectionRecordVehInitList.forEach((e) => {
this.formobj.saleVehSids.push(e.saleVehSid)
})
}
getOrgSidByPath({ orgPath: this.formobj.orgPath }).then((resp) => {
if (resp.success) {
this.formobj.useOrgSid = resp.data

15
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/DifferenceVo.java

@ -0,0 +1,15 @@
package com.yxt.anrui.riskcenter.api.loanrepaymenthistory;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/1/4 10:40
*/
@Data
public class DifferenceVo {
private String sid;
private String difference; //差额
}

15
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/HistoryOverDueVo.java

@ -0,0 +1,15 @@
package com.yxt.anrui.riskcenter.api.loanrepaymenthistory;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/1/4 9:24
*/
@Data
public class HistoryOverDueVo {
private String planSid; //还款计划sid
private String overdueState; //是否逾期 0是1否
}

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

@ -70,11 +70,13 @@ public class LoanRepaymentPlanDetails extends BaseEntity {
private String orgSidPath;
private String returnWayKey;
private String returnWayKey; //还款方式key(01直还、02间还、03转付)
private String returnWay;
private String actualPerson;
private BigDecimal paymentMoney;
private BigDecimal fund;
private String actualPerson; //实际还款人
private BigDecimal paymentMoney; //公司垫款金额
private BigDecimal fund; //资金占用费
private Integer overdue; //是否曾逾期(0是,1否)
private Integer oweState; //是否转累欠状态(0是,1否)
private Date updateTime; //更新日期
}

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentrecord/LoanTransferPaymentRecord.java

@ -37,6 +37,6 @@ public class LoanTransferPaymentRecord extends BaseEntity {
private String account;
@ApiModelProperty("转付账户账号")
private String accountNumber;
@ApiModelProperty("资方合同号")
private String bankContractNo;
}

2
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.java

@ -49,4 +49,6 @@ public interface LoanRepaymentHistoryMapper extends BaseMapper<LoanRepaymentHist
IPage<RepaymentDetailsListVo> repaymentDetailsList(IPage<LoanRepaymentHistory> page, @Param(Constants.WRAPPER) QueryWrapper<LoanRepaymentHistory> qw);
List<RepaymentStatisticsExportVo> repaymentStatisticsExport(@Param(Constants.WRAPPER) QueryWrapper<LoanRepaymentHistory> qw);
String getMaxUpdateTimeByBankName(@Param("bankName") String bankName);
}

23
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml

@ -198,6 +198,8 @@
t.repaidMoney,
t.outstandingMoney,
v.bankBeInter,
pd.overdue as dueOverdue,
pd.updateTime as updateDate,
CASE
WHEN t.repaidMoney = 0 THEN
'01'
@ -223,18 +225,14 @@
AND h.updateState = '1'),0) as repaidMoney
,
IFNULL(
p.dueMoney - (
SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
(p.dueMoney - IFNULL((SELECT
SUM(IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'
),
0
) AS outstandingMoney
),0)),0) AS outstandingMoney
FROM
loan_repayment_plan_details AS p
) AS t ON pd.sid = t.sid
@ -352,5 +350,16 @@
${ew.sqlSegment}
</where>
</select>
<select id="getMaxUpdateTimeByBankName" resultType="java.lang.String">
SELECT
MAX(h.actualDate)
as updateTime
FROM loan_repayment_history AS h
LEFT JOIN loan_repayment_plan_details AS p
ON h.planDetailSid = p.sid
where h.updateState = '1'
AND h.returnWayKey = '01'
AND p.bankName = #{bankName}
</select>
</mapper>

209
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java

@ -8,10 +8,15 @@ import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModpriceImportReturn;
import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModpriceImportVo;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempExportVo;
import com.yxt.anrui.fin.api.finmanufacturerbank.FinManufacturerBank;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
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.loanbuckleapply.LoanBuckleApplyInit;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleHistoryRecord;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApply;
@ -21,6 +26,7 @@ import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.*;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsDto;
import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
@ -67,7 +73,8 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
private LoanRepaymentPlanDetailsService loanRepaymentPlanDetailsService;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private FinUncollectedReceivablesDetailedJRFeign finUncollectedReceivablesDetailedJRFeign;
public ResultBean<String> saveHistory(LoanRepaymentHistoryDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
@ -701,6 +708,7 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
public ResultBean updateState(String orgPath) {
ResultBean rb = ResultBean.fireFail();
QueryWrapper<LoanRepaymentHistory> qw = new QueryWrapper<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//=======================
String orgSidPath = orgPath;
orgSidPath = orgSidPath + "/";
@ -714,6 +722,9 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
qw.ne("h.buckleKey", "003");
qw.eq("h.updateState", "0");
List<String> histories = baseMapper.selUpdateStateList(qw);
HashSet<String> bankNames = new HashSet<>();
HashSet<String> pSids = new HashSet<>();
String useOrgSid = "";
if (!histories.isEmpty()) {
for (String historySid : histories) {
LoanRepaymentHistory repaymentHistory = fetchBySid(historySid);
@ -721,6 +732,89 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
repaymentHistory.setUpdateState("1");
repaymentHistory.setUpdateTime(new DateTime());
baseMapper.updateById(repaymentHistory);
LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsService.fetchBySid(repaymentHistory.getPlanDetailSid());
if (null != planDetails) {
bankNames.add(planDetails.getBankName());
pSids.add(planDetails.getSid());
useOrgSid = planDetails.getUseOrgSid();
}
}
}
Map<String, String> map = new HashMap<>();
if (!bankNames.isEmpty()) {
for (String bankName : bankNames) {
String updateTime = baseMapper.getMaxUpdateTimeByBankName(bankName);
if (StringUtils.isNotBlank(updateTime)) {
map.put(bankName, updateTime);
}
}
}
if (!map.isEmpty()) {
for (Map.Entry<String, String> entry : map.entrySet()) {
String updateTime = entry.getValue();
try {
Date u = sdf.parse(updateTime);
Date today = new Date();
String f = sdf.format(today);
Date date = sdf.parse(f);
if (u.compareTo(date) == 0) {
Calendar cal_1 = Calendar.getInstance();// 使用默认时区和语言环境获得一个日历
cal_1.setTime(date);
cal_1.add(Calendar.DAY_OF_MONTH, -1);
u = cal_1.getTime();
}
int i = loanRepaymentPlanDetailsService.updateTime(entry.getKey(), u, useOrgSid);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
//判断当期是否逾期
List<HistoryOverDueVo> overDueVoList = loanRepaymentPlanDetailsService.overDueVoList(useOrgSid);
if (!overDueVoList.isEmpty()) {
List<String> planSids = new ArrayList<>();
overDueVoList.stream().forEach(v -> {
if (v.getOverdueState().equals("0")) {
planSids.add(v.getPlanSid());
}
});
if (!planSids.isEmpty()) {
int i = loanRepaymentPlanDetailsService.updateOverDueState(planSids);
}
}
//对当前涉及的还款计划是否为中车类是否有垫款
if (!pSids.isEmpty()) {
for (String pSid : pSids) {
String reAdvances = loanRepaymentPlanDetailsService.reAdvancesOrPaymentMoney(pSid);
if (StringUtils.isNotBlank(reAdvances)) {
if (reAdvances.equals("0")) {
DifferenceVo difference = loanRepaymentPlanDetailsService.selDifference(pSid);
if (null != difference) {
if (StringUtils.isNotBlank(difference.getDifference())) {
BigDecimal amount = new BigDecimal(difference.getDifference());
if (amount.compareTo(BigDecimal.ZERO) > 0) {
LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsService.fetchBySid(pSid);
planDetails.setPaymentMoney(planDetails.getPaymentMoney().subtract(amount));
loanRepaymentPlanDetailsService.updateById(planDetails);
//生成平台资方退还垫款
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setBusSid(planDetails.getSid());
jr.setCurrentReceivableMoney(amount);
jr.setPayCostTitleKey("007");
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());
finUncollectedReceivablesDetailedJRFeign.save(jr);
}
}
}
}
}
}
}
} else {
@ -963,11 +1057,19 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
if (StringUtils.isNotBlank(pagerQuery.getBorrowerName())) {
qw.like("a.borrowerName", pagerQuery.getBorrowerName());
}
if (StringUtils.isNotBlank(pagerQuery.getDueOverdue())) {
qw.eq("a.dueOverdue", pagerQuery.getDueOverdue());
}
String dueStartDate = pagerQuery.getDueStartDate();
String dueEndDate = pagerQuery.getDueEndDate();
qw.apply(StringUtils.isNotEmpty(dueStartDate), "date_format (a.dueDate,'%Y-%m-%d') >= date_format('" + dueStartDate + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(dueEndDate), "date_format (a.dueDate,'%Y-%m-%d') <= date_format('" + dueEndDate + "','%Y-%m-%d')"
);
String updateStartDate = pagerQuery.getUpdateStartDate();
String updateEndDate = pagerQuery.getUpdateEndDate();
qw.apply(StringUtils.isNotEmpty(updateStartDate), "date_format (a.updateDate,'%Y-%m-%d') >= date_format('" + updateStartDate + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(updateEndDate), "date_format (a.updateDate,'%Y-%m-%d') <= date_format('" + updateEndDate + "','%Y-%m-%d')"
);
qw.eq("1", "1");
qw.orderBy(true, true, "a.useOrgName")
.orderBy(true, true, "a.vinNo")
@ -978,55 +1080,34 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
records.removeAll(Collections.singleton(null));
if (!records.isEmpty()) {
for (RepaymentStatisticsVo record : records) {
String sid = record.getSid();
List<String> updateTimes = baseMapper.selnewUpdateTimeByPlanSid(sid);
updateTimes.removeAll(Collections.singleton(null));
if (!updateTimes.isEmpty()) {
String updateTime = updateTimes.get(0);
if (StringUtils.isNotBlank(record.getUpdateDate())) {
try {
Date updateTimeParse = sdf.parse(updateTime);
Date dueDateParse = sdf.parse(record.getDueDate());
String format = sdf.format(new Date());
Date parseNewDate = sdf.parse(format);
if (updateTimeParse.compareTo(dueDateParse) > 0) {
Date u = sdf.parse(record.getUpdateDate());
Date d = sdf.parse(record.getDueDate());
if (d.compareTo(u) <= 0) {
BigDecimal sum = new BigDecimal(2);
if (StringUtils.isNotBlank(record.getOutstandingMoney())) {
sum = new BigDecimal(record.getOutstandingMoney());
}
if (StringUtils.isNotBlank(record.getFund())) {
sum = sum.add(new BigDecimal(record.getFund()));
}
if (StringUtils.isNotBlank(record.getBankBeInter())) {
sum = sum.add(new BigDecimal(record.getBankBeInter()));
}
if (sum.compareTo(BigDecimal.ZERO) > 0) {
record.setNowOverdue("0");
} else {
record.setNowOverdue("1");
}
if (updateTimeParse.compareTo(parseNewDate) == 0) {
Calendar cal_1 = Calendar.getInstance();// 使用默认时区和语言环境获得一个日历
cal_1.add(Calendar.DAY_OF_MONTH, -1);
record.setUpdateDate(sdf.format(cal_1.getTime()));
} else {
record.setUpdateDate(sdf.format(updateTimeParse));
}
for (String time : updateTimes) {
Date parseTime = sdf.parse(time);
if (parseTime.compareTo(dueDateParse) > 0) {
record.setDueOverdue("0");
}
}
if (StringUtils.isBlank(record.getDueOverdue())) {
record.setDueOverdue("1");
record.setNowOverdue("1");
}
} catch (ParseException e) {
e.printStackTrace();
}
} else {
String format = sdf.format(new Date());
try {
Date parseNewDate = sdf.parse(format);
Date dueDateParse = sdf.parse(record.getDueDate());
if (parseNewDate.compareTo(dueDateParse) > 0) {
record.setNowOverdue("0");
record.setDueOverdue("0");
} else {
record.setNowOverdue("1");
record.setDueOverdue("1");
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
}
@ -1034,58 +1115,6 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
records = records.stream().filter(r -> r.getNowOverdue().equals(pagerQuery.getNowOverdue()))
.collect(Collectors.toList());
}
if (StringUtils.isNotBlank(pagerQuery.getDueOverdue())) {
records = records.stream().filter(r -> r.getDueOverdue().equals(pagerQuery.getDueOverdue()))
.collect(Collectors.toList());
}
if (StringUtils.isNotBlank(pagerQuery.getUpdateStartDate()) || StringUtils.isNotBlank(pagerQuery.getUpdateEndDate())) {
records = records.stream().filter(new Predicate<RepaymentStatisticsVo>() {
@Override
public boolean test(RepaymentStatisticsVo v) {
if (StringUtils.isNotBlank(v.getUpdateDate())) {
if (StringUtils.isNotBlank(pagerQuery.getUpdateStartDate()) && StringUtils.isBlank(pagerQuery.getUpdateEndDate())) {
String updateStartDate = pagerQuery.getUpdateStartDate();
try {
Date parseUpdateTime = sdf.parse(v.getUpdateDate());
Date startTime = sdf.parse(updateStartDate);
if (parseUpdateTime.compareTo(startTime) >= 0) {
return true;
}
} catch (ParseException e) {
e.printStackTrace();
}
} else if (StringUtils.isBlank(pagerQuery.getUpdateStartDate()) && StringUtils.isNotBlank(pagerQuery.getUpdateEndDate())) {
String updateEndDate = pagerQuery.getUpdateEndDate();
try {
Date parseUpdateTime = sdf.parse(v.getUpdateDate());
Date endTime = sdf.parse(updateEndDate);
if (parseUpdateTime.compareTo(endTime) <= 0) {
return true;
}
} catch (ParseException e) {
e.printStackTrace();
}
} else {
String updateStartDate = pagerQuery.getUpdateStartDate();
String updateEndDate = pagerQuery.getUpdateEndDate();
try {
Date parseUpdateTime = sdf.parse(v.getUpdateDate());
Date endTime = sdf.parse(updateEndDate);
Date startTime = sdf.parse(updateStartDate);
if (parseUpdateTime.compareTo(endTime) <= 0 && parseUpdateTime.compareTo(startTime) >= 0) {
return true;
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
return false;
}
}).collect(Collectors.toList());
}
if (!records.isEmpty()) {
List<RepaymentStatisticsVo> lastList = this.pageBySubList(records, (int) pq.getSize(), (int) pq.getCurrent());
pagerVo.setRecords(lastList);

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

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.DifferenceVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.HistoryOverDueVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayPeriodDetails;
@ -14,6 +16,7 @@ import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformatio
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
@ -37,4 +40,14 @@ public interface LoanRepaymentPlanDetailsMapper extends BaseMapper<LoanRepayment
List<MonRepayPeriodDetails> periodDetails(String saleVehSid);
List<LoanRepaymentPlanDetails> planList();
int updateTime(@Param("bankName")String bankName,@Param("updateTime") Date updateTime,@Param("useOrgSid") String useOrgSid);
List<HistoryOverDueVo> overDueVoList(@Param("useOrgSid") String useOrgSid);
int updateOverDueState(@Param("planSids") List<String> planSids);
String reAdvancesOrPaymentMoney(@Param("pSid") String pSid);
DifferenceVo selDifference(@Param("pSid") String pSid);
}

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

@ -1,6 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsMapper">
<update id="updateTime">
UPDATE loan_repayment_plan_details
SET updateTime = #{updateTime}
WHERE bankName = #{bankName}
and useOrgSid = #{useOrgSid};
</update>
<update id="updateOverDueState">
update loan_repayment_plan_details
set overdue = 0
where sid in
<foreach collection="planSids" item="planSid" open="(" close=")" separator=",">
#{planSid}
</foreach>
</update>
<delete id="deletePlanDetails">
DELETE
FROM loan_repayment_plan_details
@ -31,8 +45,7 @@
</select>
<select id="details" resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayDetails">
SELECT
lrpd.useOrgName,
SELECT lrpd.useOrgName,
lrpd.dept,
lrpd.staffName,
RIGHT (lrpd.`vinNo`, 8) AS vinNo,
@ -61,7 +74,9 @@
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()
WHERE DATE_FORMAT(lrpd.dueDate
, '%Y-%m-%d')
&lt; CURDATE()
AND lrpd.busVinSid = #{saleVehSid}
GROUP BY lrpd.`sid`
HAVING (notRepaidMoney > 0)
@ -70,27 +85,22 @@
</select>
<select id="periodDetails" resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.MonRepayPeriodDetails">
SELECT
lrpd.period,
SELECT lrpd.period,
lrpd.dueMoney,
SUM(IFNULL(lrh.actualMoney, 0)) AS receiptMoney,
(
lrpd.`dueMoney` - SUM(IFNULL(lrh.actualMoney, 0))
) AS notRepaidMoney
FROM
`loan_repayment_plan_details` lrpd
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
(SELECT
saleVehSid,
(SELECT saleVehSid,
createTime
FROM
loan_be_collection_record
ORDER BY createTime DESC
LIMIT 1) lr
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
@ -102,6 +112,134 @@
</select>
<select id="planList" resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails">
select * from anrui_riskcenter.loan_repayment_plan_details where paymentMoney>0
select *
from anrui_riskcenter.loan_repayment_plan_details
where paymentMoney > 0
</select>
<select id="overDueVoList" resultType="com.yxt.anrui.riskcenter.api.loanrepaymenthistory.HistoryOverDueVo">
SELECT
b.sid as planSid,
CASE
WHEN ( b.outstandingMoney + b.bankBeInter + b.fund ) &gt; 0 THEN
'0'
WHEN ( b.outstandingMoney + b.bankBeInter + b.fund ) &lt;= 0 THEN
'1'
END AS overdueState
FROM
(
SELECT
a.*
FROM
(
SELECT
pd.dueDate,
pd.useOrgSid,
pd.sid,
IFNULL( pd.fund, 0 ) AS fund,
pd.dueMoney,
pd.overdue,
t.repaidMoney,
t.outstandingMoney,
IFNULL( v.bankBeInter, 0 ) AS bankBeInter,
pd.overdue AS dueOverdue,
pd.updateTime AS updateDate
FROM
loan_repayment_plan_details AS pd
LEFT JOIN anrui_buscenter.bus_sales_order AS s ON s.sid = pd.salesOrderSid
LEFT JOIN loan_be_padsincere_veh AS v ON v.saleVehSid = pd.busVinSid
LEFT JOIN (
SELECT
p.sid,
IFNULL((
SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'
),
0
) AS repaidMoney,
IFNULL(
(
p.dueMoney - IFNULL((
SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'
),
0
)),
0
) AS outstandingMoney
FROM
loan_repayment_plan_details AS p
) AS t ON pd.sid = t.sid
) AS a
WHERE
a.dueDate &lt;= a.updateDate
AND a.overdue = 1
and a.useOrgSid = #{useOrgSid}
) AS b
</select>
<select id="reAdvancesOrPaymentMoney" resultType="java.lang.String">
SELECT
CASE
WHEN p.paymentMoney > 0
AND b.reAdvances = 1
THEN
'0'
ELSE '1'
END as h
FROM
loan_repayment_plan_details as p
LEFT JOIN loan_solutions as s ON p.salesOrderSid = s.salesOrderSid
LEFT JOIN loan_fin_policy as py ON s.policySid = py.sid
LEFT JOIN loan_fin_bank as b ON b.sid = py.bankSid
AND s.isDelete = 0
and p.sid =#{pSid}
</select>
<select id="selDifference" resultType="com.yxt.anrui.riskcenter.api.loanrepaymenthistory.DifferenceVo">
SELECT
a.*
FROM
(
SELECT
pd.sid,
t.difference
FROM
loan_repayment_plan_details AS pd
LEFT JOIN anrui_buscenter.bus_sales_order AS s ON s.sid = pd.salesOrderSid
LEFT JOIN loan_be_padsincere_veh AS v ON v.saleVehSid = pd.busVinSid
LEFT JOIN (
SELECT
p.sid,
IFNULL(
(
p.dueMoney - IFNULL((
SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'
),
0
)),
0
) AS difference
FROM
loan_repayment_plan_details AS p
) AS t ON pd.sid = t.sid
) AS a
WHERE a.sid = #{pSid}
</select>
</mapper>

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

@ -19,6 +19,8 @@ import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.DifferenceVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.HistoryOverDueVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryDto;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsDto;
@ -111,4 +113,24 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
public List<LoanRepaymentPlanDetails> planList() {
return baseMapper.planList();
}
public int updateTime(String bankName, Date updateTime,String useOrgSid) {
return baseMapper.updateTime(bankName,updateTime,useOrgSid);
}
public List<HistoryOverDueVo> overDueVoList(String useOrgSid) {
return baseMapper.overDueVoList(useOrgSid);
}
public int updateOverDueState(List<String> planSids) {
return baseMapper.updateOverDueState(planSids);
}
public String reAdvancesOrPaymentMoney(String pSid) {
return baseMapper.reAdvancesOrPaymentMoney(pSid);
}
public DifferenceVo selDifference(String pSid) {
return baseMapper.selDifference(pSid);
}
}

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

@ -2,6 +2,7 @@ package com.yxt.anrui.riskcenter.biz.loantransferpaymentapply;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
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;
@ -9,6 +10,10 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder;
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.fin.api.finmanufacturerbank.FinManufacturerBank;
import com.yxt.anrui.fin.api.finmanufacturerbank.FinManufacturerBankFeign;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordFeign;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery;
@ -48,6 +53,7 @@ import com.yxt.common.core.vo.PagerVo;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -57,6 +63,7 @@ import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
/**
@ -89,6 +96,10 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
private FlowTaskFeign flowTaskFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private FinPaymentrecordFeign finPaymentrecordFeign;
@Autowired
private FinManufacturerBankFeign finManufacturerBankFeign;
public ResultBean<LoanTransferPaymentApplyInit> paymentInit(String[] sids) {
ResultBean<LoanTransferPaymentApplyInit> rb = ResultBean.fireFail();
@ -585,6 +596,10 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
baseMapper.updateById(apply);
List<LoanTransferPaymentRecord> loanTransferPaymentRecords = loanTransferPaymentRecordService.selByMainSid(businessSid);
if (!loanTransferPaymentRecords.isEmpty()) {
String payFormKey = apply.getPayFormKey(); //01按资方合同编号单笔付款/02按收款账号合并付款
//按照合同号合并付款
Map<String, BigDecimal> map = new HashMap<>();
Set<String> setConOrNumber = new HashSet<>();
for (LoanTransferPaymentRecord applyRecord : loanTransferPaymentRecords) {
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid());
if (null != repaymentHistory) {
@ -602,11 +617,116 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
transfer.setDataTime(new DateTime());
transfer.setBuckleKey("001");
transfer.setBuckle("未申请");
String money = String.valueOf(applyRecord.getTransferPrincipal());
transfer.setActualMoney(new BigDecimal("-" + money));
transfer.setUpdateState("1");
transfer.setUpdateTime(new DateTime());
BigDecimal money = new BigDecimal(2);
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())) {
setConOrNumber.add(applyRecord.getBankContractNo());
}
} else if (payFormKey.equals("02")) {
if (StringUtils.isNotBlank(applyRecord.getAccountNumber())) {
setConOrNumber.add(applyRecord.getAccountNumber());
}
}
}
if (!setConOrNumber.isEmpty()) {
for (String c : setConOrNumber) {
BigDecimal decimal = new BigDecimal(0);
List<LoanTransferPaymentRecord> collect = loanTransferPaymentRecords.stream().filter(new Predicate<LoanTransferPaymentRecord>() {
@Override
public boolean test(LoanTransferPaymentRecord r) {
if (payFormKey.equals("01")) {
if (StringUtils.isNotBlank(r.getBankContractNo())) {
if (c.equals(r.getBankContractNo())) {
return true;
}
}
} else if (payFormKey.equals("02")) {
if (StringUtils.isNotBlank(r.getAccountNumber())) {
if (c.equals(r.getAccountNumber())) {
return true;
}
}
}
return false;
}
}).collect(Collectors.toList());
for (LoanTransferPaymentRecord p : collect) {
BigDecimal a = new BigDecimal(0);
BigDecimal b = new BigDecimal(0);
if (null != p.getTransferPrincipal()) {
a = p.getTransferPrincipal();
}
if (null != p.getDefaultInterest()) {
b = p.getDefaultInterest();
}
decimal = a.add(b).add(decimal);
}
map.put(c, decimal);
}
if (!map.isEmpty()) {
for (Map.Entry<String, BigDecimal> entry : map.entrySet()) {
FinPaymentrecordDto payDto = new FinPaymentrecordDto();
payDto.setBusSid(apply.getSid());
payDto.setCreateBySid(apply.getCreateBySid());
payDto.setCost(entry.getValue().intValue());
payDto.setAccountsReceive(entry.getValue().intValue());
payDto.setCostTitleKey("008");
payDto.setCostTitleValue("月还");
payDto.setCostTypeKey("006");
payDto.setCostTypeValue("月还代收");
if (StringUtils.isNotBlank(apply.getPayRemarks())) {
payDto.setBusRemarks(apply.getPayRemarks());
}
payDto.setUseOrgSid(apply.getUseOrgSid());
payDto.setCreateOrgSid(apply.getUseOrgSid());
List<LoanTransferPaymentRecord> collect = loanTransferPaymentRecords.stream().filter(new Predicate<LoanTransferPaymentRecord>() {
@Override
public boolean test(LoanTransferPaymentRecord r) {
if (payFormKey.equals("01")) {
if (StringUtils.isNotBlank(r.getBankContractNo())) {
if (entry.getKey().equals(r.getBankContractNo())) {
return true;
}
}
} else if (payFormKey.equals("02")) {
if (StringUtils.isNotBlank(r.getAccountNumber())) {
if (entry.getKey().equals(r.getAccountNumber())) {
return true;
}
}
}
return false;
}
}).collect(Collectors.toList());
if (!collect.isEmpty()) {
LoanTransferPaymentRecord paymentRecord = collect.get(0);
if (StringUtils.isNotBlank(paymentRecord.getAccountNumber())) {
payDto.setReceiveBankAccount(paymentRecord.getAccountNumber());
FinManufacturerBank bank = finManufacturerBankFeign.selOneByBankNo(paymentRecord.getAccountNumber(), apply.getUseOrgSid()).getData();
if (null != bank) {
if (StringUtils.isNotBlank(bank.getDepositBank())) {
payDto.setReceiveBank(bank.getDepositBank());
}
}
}
if (StringUtils.isNotBlank(paymentRecord.getAccount())) {
payDto.setReceiveCompany(paymentRecord.getAccount());
}
}
finPaymentrecordFeign.save(payDto);
}
}
}
}

6
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentrecord/LoanTransferPaymentRecordMapper.xml

@ -10,9 +10,9 @@
</delete>
<select id="selByMainSid"
resultType="com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord">
select *
FROM loan_transfer_payment_record
WHERE mainSid = #{mainSid}
select r.*
FROM loan_transfer_payment_record as r
WHERE r.mainSid = #{mainSid}
</select>
<select id="selByBankContractNo"
resultType="com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord">

Loading…
Cancel
Save