Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
33f09f63
提交
33f09f63
authored
2月 20, 2024
作者:
liuhaiquan
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/v10.7_borrowing_and_repayment_20240118'…
Merge remote-tracking branch 'origin/v10.7_borrowing_and_repayment_20240118' into v10.7_borrowing_and_repayment_20240118
上级
94294701
dd5868d0
隐藏空白字符变更
内嵌
并排
正在显示
30 个修改的文件
包含
704 行增加
和
106 行删除
+704
-106
PerformanceResultEnum.java
...java/com/clx/performance/enums/PerformanceResultEnum.java
+6
-0
BankTradeEnum.java
...in/java/com/clx/performance/enums/loan/BankTradeEnum.java
+51
-0
OwnerLoanAccountRunningWaterRecordEnum.java
...ce/enums/loan/OwnerLoanAccountRunningWaterRecordEnum.java
+4
-4
OwnerLoanRecordEnum.java
...a/com/clx/performance/enums/loan/OwnerLoanRecordEnum.java
+20
-0
CarrierOwnerLoanRecordApproveParam.java
...m/pc/loan/carrier/CarrierOwnerLoanRecordApproveParam.java
+4
-0
CarrierOwnerLoanRecordPayCancelParam.java
...pc/loan/carrier/CarrierOwnerLoanRecordPayCancelParam.java
+15
-0
CarrierOwnerLoanRecordPayParam.java
...param/pc/loan/carrier/CarrierOwnerLoanRecordPayParam.java
+18
-0
CarrierOwnerLoanRecordRepayParam.java
...ram/pc/loan/carrier/CarrierOwnerLoanRecordRepayParam.java
+18
-0
OwnerLoanRecordVO.java
...clx/performance/vo/pc/loan/carrier/OwnerLoanRecordVO.java
+3
-1
OrderChildLoanComponent.java
...om/clx/performance/component/OrderChildLoanComponent.java
+67
-19
PaymentFromConfig.java
...va/com/clx/performance/config/loan/PaymentFromConfig.java
+4
-4
RedissonConstants.java
.../java/com/clx/performance/constant/RedissonConstants.java
+2
-0
CarrierOwnerLoanRecordController.java
...ler/pc/loan/carrier/CarrierOwnerLoanRecordController.java
+22
-3
BankTradeDaoImpl.java
...a/com/clx/performance/dao/impl/loan/BankTradeDaoImpl.java
+37
-0
OwnerLoanRecordDaoImpl.java
...clx/performance/dao/impl/loan/OwnerLoanRecordDaoImpl.java
+36
-0
SettlementDriverDetailDaoImpl.java
...rmance/dao/impl/settle/SettlementDriverDetailDaoImpl.java
+1
-0
SettlementOwnerDetailDaoImpl.java
...ormance/dao/impl/settle/SettlementOwnerDetailDaoImpl.java
+1
-0
BankTradeDao.java
.../main/java/com/clx/performance/dao/loan/BankTradeDao.java
+21
-0
OwnerLoanRecordDao.java
...java/com/clx/performance/dao/loan/OwnerLoanRecordDao.java
+6
-0
LoanBalanceDTO.java
...src/main/java/com/clx/performance/dto/LoanBalanceDTO.java
+21
-0
OrderChildSyncTransportListener.java
...performance/listener/OrderChildSyncTransportListener.java
+5
-3
BankTradeMapper.java
...java/com/clx/performance/mapper/loan/BankTradeMapper.java
+18
-0
OwnerLoanAccountMapper.java
...m/clx/performance/mapper/loan/OwnerLoanAccountMapper.java
+7
-5
BankTrade.java
...c/main/java/com/clx/performance/model/loan/BankTrade.java
+47
-0
OwnerLoanRecord.java
.../java/com/clx/performance/model/loan/OwnerLoanRecord.java
+8
-0
OwnerLoanRecordServiceImpl.java
...ormance/service/impl/loan/OwnerLoanRecordServiceImpl.java
+212
-56
OwnerRepaymentServiceImpl.java
...formance/service/impl/loan/OwnerRepaymentServiceImpl.java
+2
-2
NbBankServiceImpl.java
...nce/service/impl/thirdparty/nbbank/NbBankServiceImpl.java
+34
-1
OwnerLoanRecordService.java
.../clx/performance/service/loan/OwnerLoanRecordService.java
+13
-7
OwnerLoanRecordSqlProvider.java
...formance/sqlProvider/loan/OwnerLoanRecordSqlProvider.java
+1
-1
没有找到文件。
performance-api/src/main/java/com/clx/performance/enums/PerformanceResultEnum.java
浏览文件 @
33f09f63
...
@@ -117,12 +117,18 @@ public enum PerformanceResultEnum implements ResultEnum {
...
@@ -117,12 +117,18 @@ public enum PerformanceResultEnum implements ResultEnum {
BORROWER_DELETE_ENABLE_ERROR
(
1702
,
"无法删除启用数据"
),
BORROWER_DELETE_ENABLE_ERROR
(
1702
,
"无法删除启用数据"
),
BORROWER_CONFIG_BORROWER_ID_EXIST
(
1703
,
"数据重复,请核实后重新提交"
),
BORROWER_CONFIG_BORROWER_ID_EXIST
(
1703
,
"数据重复,请核实后重新提交"
),
BORROWER_CONFIG_DELETE_ENABLE_ERROR
(
1704
,
"无法删除启用数据"
),
BORROWER_CONFIG_DELETE_ENABLE_ERROR
(
1704
,
"无法删除启用数据"
),
BORROWER_CONFIG_TYPE_NOT_SUPPORT_ERROR
(
1705
,
"借款类型不支持"
),
NB_BANK_API_ERROR
(
1800
,
"宁波银行api调用失败"
),
NB_BANK_API_ERROR
(
1800
,
"宁波银行api调用失败"
),
NB_BANK_NOTIFY_ERROR
(
1801
,
"宁波银行回调失败"
),
NB_BANK_NOTIFY_ERROR
(
1801
,
"宁波银行回调失败"
),
NB_BANK_PAY_TYPE_ERROR
(
1802
,
"支付方式不支持"
),
NB_BANK_PAY_TYPE_ERROR
(
1802
,
"支付方式不支持"
),
NB_BANK_ORDER_PAY_ERROR
(
1803
,
"宁波银行订单支付失败"
),
NB_BANK_ORDER_PAY_ERROR
(
1803
,
"宁波银行订单支付失败"
),
GET_LOAN_RECORD
(
1901
,
"货主借款失败"
),
OWNER_LOAN_RECORD_PAY_STATUS_ERROR
(
1850
,
"状态已变更无法支付"
),
;
;
private
final
int
code
;
private
final
int
code
;
private
final
String
msg
;
private
final
String
msg
;
...
...
performance-api/src/main/java/com/clx/performance/enums/loan/BankTradeEnum.java
0 → 100644
浏览文件 @
33f09f63
package
com
.
clx
.
performance
.
enums
.
loan
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.Objects
;
import
java.util.Optional
;
public
enum
BankTradeEnum
{
;
@Getter
@AllArgsConstructor
public
enum
TradeType
{
ORDER_DIRECT_PAY
(
1
,
"订单支付"
),
ORDER_TRANSFER_PAY
(
2
,
"转账支付"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
TradeType
>
getByCode
(
Integer
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
Objects
.
equals
(
e
.
code
,
code
)).
findFirst
();
}
public
static
String
getMsgByCode
(
Integer
code
)
{
return
getByCode
(
code
).
map
(
TradeType:
:
getMsg
).
orElse
(
null
);
}
}
@Getter
@AllArgsConstructor
public
enum
OrderType
{
OWNER_LOAN_RECORD
(
1
,
"货主借款"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
OrderType
>
getByCode
(
Integer
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
Objects
.
equals
(
e
.
code
,
code
)).
findFirst
();
}
public
static
String
getMsgByCode
(
Integer
code
)
{
return
getByCode
(
code
).
map
(
OrderType:
:
getMsg
).
orElse
(
null
);
}
}
}
performance-api/src/main/java/com/clx/performance/enums/loan/OwnerLoanAccountRunningWaterRecordEnum.java
浏览文件 @
33f09f63
...
@@ -14,10 +14,10 @@ public enum OwnerLoanAccountRunningWaterRecordEnum {
...
@@ -14,10 +14,10 @@ public enum OwnerLoanAccountRunningWaterRecordEnum {
@Getter
@Getter
@AllArgsConstructor
@AllArgsConstructor
public
enum
RunWaterType
{
public
enum
RunWaterType
{
APPROVE_WAIT
(
1
0
,
"借款"
),
APPROVE_WAIT
(
8
0
,
"借款"
),
APPROVE_FROZEN
(
2
0
,
"冻结"
),
APPROVE_FROZEN
(
9
0
,
"冻结"
),
APPROVE_CHILD_WRITE_OFF
(
3
0
,
"运单核销"
),
APPROVE_CHILD_WRITE_OFF
(
10
0
,
"运单核销"
),
APPROVE_THAW
(
4
0
,
"解冻"
),
APPROVE_THAW
(
11
0
,
"解冻"
),
;
;
private
final
Integer
code
;
private
final
Integer
code
;
...
...
performance-api/src/main/java/com/clx/performance/enums/loan/OwnerLoanRecordEnum.java
浏览文件 @
33f09f63
...
@@ -54,4 +54,24 @@ public enum OwnerLoanRecordEnum {
...
@@ -54,4 +54,24 @@ public enum OwnerLoanRecordEnum {
}
}
}
}
@Getter
@AllArgsConstructor
public
enum
PayChannel
{
ORDER_DIRECT_PAY
(
1
,
"订单支付"
),
ORDER_TRANSFER_PAY
(
2
,
"转账支付"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
PayChannel
>
getByCode
(
Integer
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
Objects
.
equals
(
e
.
code
,
code
)).
findFirst
();
}
public
static
String
getMsgByCode
(
Integer
code
)
{
return
getByCode
(
code
).
map
(
PayChannel:
:
getMsg
).
orElse
(
null
);
}
}
}
}
performance-api/src/main/java/com/clx/performance/param/pc/loan/carrier/CarrierOwnerLoanRecordApproveParam.java
浏览文件 @
33f09f63
...
@@ -20,4 +20,8 @@ public class CarrierOwnerLoanRecordApproveParam {
...
@@ -20,4 +20,8 @@ public class CarrierOwnerLoanRecordApproveParam {
@ApiModelProperty
(
"1:虚拟货币 2:资金"
)
@ApiModelProperty
(
"1:虚拟货币 2:资金"
)
private
Integer
loanType
;
private
Integer
loanType
;
@ApiModelProperty
(
"支付通道:1订单支付 2转账支付"
)
private
Integer
payChannel
;
}
}
performance-api/src/main/java/com/clx/performance/param/pc/loan/carrier/CarrierOwnerLoanRecordPayCancelParam.java
0 → 100644
浏览文件 @
33f09f63
package
com
.
clx
.
performance
.
param
.
pc
.
loan
.
carrier
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
CarrierOwnerLoanRecordPayCancelParam
{
@ApiModelProperty
(
"借款单号"
)
private
Long
loanNo
;
}
performance-api/src/main/java/com/clx/performance/param/pc/loan/carrier/CarrierOwnerLoanRecordPayParam.java
0 → 100644
浏览文件 @
33f09f63
package
com
.
clx
.
performance
.
param
.
pc
.
loan
.
carrier
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
CarrierOwnerLoanRecordPayParam
{
@ApiModelProperty
(
"借款单号"
)
private
Long
loanNo
;
@ApiModelProperty
(
"支付通道:1订单支付 2转账支付"
)
private
Integer
payChannel
;
}
performance-api/src/main/java/com/clx/performance/param/pc/loan/carrier/CarrierOwnerLoanRecordRepayParam.java
0 → 100644
浏览文件 @
33f09f63
package
com
.
clx
.
performance
.
param
.
pc
.
loan
.
carrier
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
@Getter
@Setter
public
class
CarrierOwnerLoanRecordRepayParam
{
@ApiModelProperty
(
"借款单号"
)
private
Long
loanNo
;
@ApiModelProperty
(
"支付通道:1订单支付 2转账支付"
)
private
Integer
payChannel
;
}
performance-api/src/main/java/com/clx/performance/vo/pc/loan/carrier/OwnerLoanRecordVO.java
浏览文件 @
33f09f63
...
@@ -66,7 +66,9 @@ public class OwnerLoanRecordVO {
...
@@ -66,7 +66,9 @@ public class OwnerLoanRecordVO {
@ApiModelProperty
(
"借款方"
)
@ApiModelProperty
(
"借款方"
)
private
String
borrower
;
private
String
borrower
;
@ApiModelProperty
(
"借出方ID"
)
private
String
lendingPartyId
;
@ApiModelProperty
(
"借出方"
)
@ApiModelProperty
(
"借出方"
)
private
String
lendingParty
;
private
String
lendingParty
;
...
...
performance-web/src/main/java/com/clx/performance/component/OrderChildLoanComponent.java
浏览文件 @
33f09f63
...
@@ -6,11 +6,13 @@ import cn.hutool.json.JSONUtil;
...
@@ -6,11 +6,13 @@ import cn.hutool.json.JSONUtil;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.vo.feign.FeignOrderInfoVO
;
import
com.clx.order.vo.feign.FeignOrderInfoVO
;
import
com.clx.order.vo.pc.owner.OwnerQuotationDetailVO
;
import
com.clx.order.vo.pc.owner.OwnerQuotationDetailVO
;
import
com.clx.performance.constant.RedissonConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OwnerRunningWaterRecordDao
;
import
com.clx.performance.dao.OwnerRunningWaterRecordDao
;
import
com.clx.performance.dao.loan.OwnerLoanAccountDao
;
import
com.clx.performance.dao.loan.OwnerLoanAccountDao
;
import
com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao
;
import
com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao
;
import
com.clx.performance.dao.loan.OwnerRepaymentDao
;
import
com.clx.performance.dao.loan.OwnerRepaymentDao
;
import
com.clx.performance.dto.LoanBalanceDTO
;
import
com.clx.performance.enums.OrderGoodsOverWeightEnum
;
import
com.clx.performance.enums.OrderGoodsOverWeightEnum
;
import
com.clx.performance.enums.OwnerAccountEnum
;
import
com.clx.performance.enums.OwnerAccountEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
...
@@ -32,12 +34,16 @@ import com.msl.common.base.Optional;
...
@@ -32,12 +34,16 @@ import com.msl.common.base.Optional;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.exception.ServiceSystemException
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.LinkedList
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.concurrent.TimeUnit
;
@Component
@Component
@AllArgsConstructor
@AllArgsConstructor
...
@@ -60,6 +66,8 @@ public class OrderChildLoanComponent {
...
@@ -60,6 +66,8 @@ public class OrderChildLoanComponent {
private
final
OwnerLoanRecordService
ownerLoanRecordService
;
private
final
OwnerLoanRecordService
ownerLoanRecordService
;
private
final
RedissonClient
redissonClient
;
/**
/**
* 接单校验判断
* 接单校验判断
*
*
...
@@ -121,7 +129,7 @@ public class OrderChildLoanComponent {
...
@@ -121,7 +129,7 @@ public class OrderChildLoanComponent {
orderChildSum
=
orderGoods
.
getPendingOrderFreight
().
multiply
(
new
BigDecimal
(
50
)).
multiply
(
new
BigDecimal
(
size
));
orderChildSum
=
orderGoods
.
getPendingOrderFreight
().
multiply
(
new
BigDecimal
(
50
)).
multiply
(
new
BigDecimal
(
size
));
}
}
BigDecimal
ans
=
subtract
.
subtract
(
orderChildSum
);
BigDecimal
ans
=
subtract
.
subtract
(
orderChildSum
);
log
.
info
(
"6.当前订单冻结的预付运费还有剩余, 查询查询未结算的运单(没有产生扣除流水的运单)总计{},
账户
剩余{}"
,
orderChildSum
,
subtract
);
log
.
info
(
"6.当前订单冻结的预付运费还有剩余, 查询查询未结算的运单(没有产生扣除流水的运单)总计{},
订单冻结预付运费
剩余{}"
,
orderChildSum
,
subtract
);
if
(
ans
.
compareTo
(
BigDecimal
.
ZERO
)
>=
0
)
{
if
(
ans
.
compareTo
(
BigDecimal
.
ZERO
)
>=
0
)
{
//预付运费够
//预付运费够
...
@@ -147,19 +155,21 @@ public class OrderChildLoanComponent {
...
@@ -147,19 +155,21 @@ public class OrderChildLoanComponent {
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SAVE_FAIL
,
"货主已欠款"
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SAVE_FAIL
,
"货主已欠款"
);
}
}
//TODO 加锁
//查询审批通过并且未用完的借款
//查询审批通过并且未用完的借款
ownerLoanRecordService
.
getLoanBalance
(
orderChildPrice
,
ownerInfoFeignVO
.
getUserNo
(),
childNo
);
LoanBalanceDTO
param
=
new
LoanBalanceDTO
();
param
.
setOrderChildPrice
(
orderChildPrice
);
param
.
setOwnerUserNo
(
ownerLoanAccount
.
getOwnerUserNo
());
param
.
setChildNo
(
childNo
);
getLoanBalanceLock
(
param
);
}
}
/**
/**
* 运单确认人借款相关处理执行
* 运单确认借款相关处理执行
*
* @param settlementDriverDetail
* @param settlementDriverDetail
* @param settlementOwnerDetail
* @param settlementOwnerDetail
*/
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
childLoanConfirmAfterProcess
(
SettlementDriverDetail
settlementDriverDetail
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
public
void
childLoanConfirmAfterProcess
(
SettlementDriverDetail
settlementDriverDetail
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
log
.
info
(
"1.运单确认收货后借款相关处理执行"
);
log
.
info
(
"1.运单确认收货后借款相关处理执行"
);
if
(
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
().
equals
(
settlementDriverDetail
.
getInvoiceType
()))
{
if
(
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
().
equals
(
settlementDriverDetail
.
getInvoiceType
()))
{
...
@@ -181,11 +191,16 @@ public class OrderChildLoanComponent {
...
@@ -181,11 +191,16 @@ public class OrderChildLoanComponent {
log
.
info
(
"4.查询当前运单号:{}, 当前货主,{}, 此运单借款冻结记录:{}"
,
childNo
,
settlementOwnerDetail
.
getOwnerUserNo
(),
JSONUtil
.
parse
(
runningWaterRecordList
));
log
.
info
(
"4.查询当前运单号:{}, 当前货主,{}, 此运单借款冻结记录:{}"
,
childNo
,
settlementOwnerDetail
.
getOwnerUserNo
(),
JSONUtil
.
parse
(
runningWaterRecordList
));
if
(
CollectionUtil
.
isEmpty
(
runningWaterRecordList
))
{
if
(
CollectionUtil
.
isEmpty
(
runningWaterRecordList
))
{
//说明当初没借款,预付运费够,但是真实结算后,预付运费不够,走此逻辑
//说明当初没借款,预付运费够,但是真实结算后,预付运费不够,走此逻辑
try
{
log
.
info
(
"4.1 说明当初没借款,预付运费够,但是真实结算后,预付运费不够,走此逻辑"
);
ownerLoanRecordService
.
getLoanBalance
(
settlementOwnerDetail
.
getSettlementFreight
(),
settlementDriverDetail
.
getDriverUserNo
(),
childNo
);
LoanBalanceDTO
param
=
new
LoanBalanceDTO
();
}
catch
(
Exception
e
)
{
param
.
setOrderChildPrice
(
settlementOwnerDetail
.
getSettlementFreight
());
//TODO 钱不够需要流程卡死
param
.
setOwnerUserNo
(
settlementOwnerDetail
.
getOwnerUserNo
());
}
param
.
setChildNo
(
childNo
);
param
.
setSettlementDriverDetail
(
settlementDriverDetail
);
param
.
setSettlementOwnerDetail
(
settlementOwnerDetail
);
//扣钱,获取锁,此处有可能钱不够,抛异常,走网络货运重试
getLoanBalanceLock
(
param
);
runningWaterRecordList
=
ownerLoanAccountRunningWaterRecordDao
.
getListByOrderNoAndRunningWaterType
runningWaterRecordList
=
ownerLoanAccountRunningWaterRecordDao
.
getListByOrderNoAndRunningWaterType
(
childNo
,
OwnerLoanAccountRunningWaterRecordEnum
.
RunWaterType
.
APPROVE_FROZEN
.
getCode
());
(
childNo
,
OwnerLoanAccountRunningWaterRecordEnum
.
RunWaterType
.
APPROVE_FROZEN
.
getCode
());
childWriteOffOwnerLoanAccount
(
runningWaterRecordList
);
childWriteOffOwnerLoanAccount
(
runningWaterRecordList
);
...
@@ -193,10 +208,14 @@ public class OrderChildLoanComponent {
...
@@ -193,10 +208,14 @@ public class OrderChildLoanComponent {
BigDecimal
alterationBalance
=
runningWaterRecordList
.
stream
().
map
(
OwnerLoanAccountRunningWaterRecord:
:
getAlterationBalance
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
BigDecimal
alterationBalance
=
runningWaterRecordList
.
stream
().
map
(
OwnerLoanAccountRunningWaterRecord:
:
getAlterationBalance
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
if
(
alterationBalance
.
compareTo
(
settlementOwnerDetail
.
getSettlementFreight
())
==
0
)
{
if
(
alterationBalance
.
compareTo
(
settlementOwnerDetail
.
getSettlementFreight
())
==
0
)
{
log
.
info
(
"4.2 相等直接生成运单核销"
);
//相等直接生成运单核销
//相等直接生成运单核销
childWriteOffOwnerLoanAccount
(
runningWaterRecordList
);
childWriteOffOwnerLoanAccount
(
runningWaterRecordList
);
}
else
if
(
alterationBalance
.
compareTo
(
settlementOwnerDetail
.
getSettlementFreight
())
>
0
)
{
}
else
if
(
alterationBalance
.
compareTo
(
settlementOwnerDetail
.
getSettlementFreight
())
>
0
)
{
//大于,则生成核销后,释放冻结的借款
//大于,则生成核销后,释放冻结的借款
log
.
info
(
"4.3 大于,则生成核销后,释放冻结的借款"
);
BigDecimal
thawBigdecimal
=
settlementOwnerDetail
.
getSettlementFreight
().
subtract
(
alterationBalance
);
BigDecimal
thawBigdecimal
=
settlementOwnerDetail
.
getSettlementFreight
().
subtract
(
alterationBalance
);
OwnerLoanAccountRunningWaterRecord
entity
=
runningWaterRecordList
.
get
(
runningWaterRecordList
.
size
()
-
1
);
OwnerLoanAccountRunningWaterRecord
entity
=
runningWaterRecordList
.
get
(
runningWaterRecordList
.
size
()
-
1
);
Long
loanNo
=
entity
.
getLoanNo
();
Long
loanNo
=
entity
.
getLoanNo
();
...
@@ -207,15 +226,23 @@ public class OrderChildLoanComponent {
...
@@ -207,15 +226,23 @@ public class OrderChildLoanComponent {
//多余的金额需要生成解冻流水
//多余的金额需要生成解冻流水
thawOwnerLoanAccount
(
loanNo
,
loanType
,
entity
.
getOwnerUserNo
(),
entity
.
getOwnerUserName
(),
entity
.
getMobile
(),
entity
.
getChildNo
(),
thawBigdecimal
.
negate
());
thawOwnerLoanAccount
(
loanNo
,
loanType
,
entity
.
getOwnerUserNo
(),
entity
.
getOwnerUserName
(),
entity
.
getMobile
(),
entity
.
getChildNo
(),
thawBigdecimal
.
negate
());
}
else
{
}
else
{
log
.
info
(
"4.4 冻结的借款不够了"
);
BigDecimal
subtract
=
alterationBalance
.
subtract
(
settlementOwnerDetail
.
getSettlementFreight
());
BigDecimal
subtract
=
alterationBalance
.
subtract
(
settlementOwnerDetail
.
getSettlementFreight
());
// 冻结的借款不够了
// 冻结的借款不够了
try
{
ownerLoanRecordService
.
getLoanBalance
(
subtract
.
negate
(),
settlementDriverDetail
.
getDriverUserNo
(),
childNo
);
LoanBalanceDTO
param
=
new
LoanBalanceDTO
();
}
catch
(
Exception
e
)
{
param
.
setOrderChildPrice
(
subtract
.
negate
());
//TODO 钱不够需要流程卡死
param
.
setOwnerUserNo
(
settlementOwnerDetail
.
getOwnerUserNo
());
}
param
.
setChildNo
(
childNo
);
param
.
setSettlementDriverDetail
(
settlementDriverDetail
);
param
.
setSettlementOwnerDetail
(
settlementOwnerDetail
);
//扣钱,获取锁,此处有可能钱不够,抛异常,走网络货运重试
getLoanBalanceLock
(
param
);
runningWaterRecordList
=
ownerLoanAccountRunningWaterRecordDao
.
getListByOrderNoAndRunningWaterType
runningWaterRecordList
=
ownerLoanAccountRunningWaterRecordDao
.
getListByOrderNoAndRunningWaterType
(
childNo
,
OwnerLoanAccountRunningWaterRecordEnum
.
RunWaterType
.
APPROVE_FROZEN
.
getCode
());
(
childNo
,
OwnerLoanAccountRunningWaterRecordEnum
.
RunWaterType
.
APPROVE_FROZEN
.
getCode
());
log
.
info
(
"4.5新查询出冻结借款记录:{}"
,
JSONUtil
.
parse
(
runningWaterRecordList
));
childWriteOffOwnerLoanAccount
(
runningWaterRecordList
);
childWriteOffOwnerLoanAccount
(
runningWaterRecordList
);
}
}
...
@@ -260,7 +287,7 @@ public class OrderChildLoanComponent {
...
@@ -260,7 +287,7 @@ public class OrderChildLoanComponent {
waterRecord
.
setLoanType
(
loanType
);
waterRecord
.
setLoanType
(
loanType
);
waterRecord
.
setRunningWaterNo
(
idGenerateSnowFlake
.
nextId
(
1L
));
waterRecord
.
setRunningWaterNo
(
idGenerateSnowFlake
.
nextId
(
1L
));
waterRecord
.
setChildNo
(
childNo
);
waterRecord
.
setChildNo
(
childNo
);
waterRecord
.
setRunningWaterType
(
OwnerLoanAccountRunningWaterRecordEnum
.
RunWaterType
.
APPROVE_
CHILD_WRITE_OFF
.
getCode
());
waterRecord
.
setRunningWaterType
(
OwnerLoanAccountRunningWaterRecordEnum
.
RunWaterType
.
APPROVE_
THAW
.
getCode
());
waterRecord
.
setAlterationBalance
(
balance
);
waterRecord
.
setAlterationBalance
(
balance
);
account
=
ownerLoanAccountDao
.
getOneByField
(
OwnerLoanAccount:
:
getOwnerUserNo
,
account
=
ownerLoanAccountDao
.
getOneByField
(
OwnerLoanAccount:
:
getOwnerUserNo
,
...
@@ -277,6 +304,7 @@ public class OrderChildLoanComponent {
...
@@ -277,6 +304,7 @@ public class OrderChildLoanComponent {
}
}
public
void
childWriteOffOwnerLoanAccount
(
List
<
OwnerLoanAccountRunningWaterRecord
>
frozenList
)
{
public
void
childWriteOffOwnerLoanAccount
(
List
<
OwnerLoanAccountRunningWaterRecord
>
frozenList
)
{
log
.
info
(
"5. 执行核销扣除,相关流水{}"
,
JSONUtil
.
parse
(
frozenList
));
while
(
true
)
{
while
(
true
)
{
int
flag
=
0
;
int
flag
=
0
;
List
<
OwnerLoanAccountRunningWaterRecord
>
saveList
=
new
LinkedList
<>();
List
<
OwnerLoanAccountRunningWaterRecord
>
saveList
=
new
LinkedList
<>();
...
@@ -304,7 +332,7 @@ public class OrderChildLoanComponent {
...
@@ -304,7 +332,7 @@ public class OrderChildLoanComponent {
update
.
setVirtuallyFrozenBalance
(
BigDecimal
.
ZERO
);
update
.
setVirtuallyFrozenBalance
(
BigDecimal
.
ZERO
);
update
.
setVirtuallyUsableBalance
(
BigDecimal
.
ZERO
);
update
.
setVirtuallyUsableBalance
(
BigDecimal
.
ZERO
);
}
}
//核
心
抵扣
//核
销
抵扣
Integer
i
=
ownerLoanAccountDao
.
childWriteOffOwnerLoanAccountCAS
(
update
,
LocalDateTime
.
now
());
Integer
i
=
ownerLoanAccountDao
.
childWriteOffOwnerLoanAccountCAS
(
update
,
LocalDateTime
.
now
());
if
(
i
<=
0
)
{
if
(
i
<=
0
)
{
...
@@ -338,4 +366,24 @@ public class OrderChildLoanComponent {
...
@@ -338,4 +366,24 @@ public class OrderChildLoanComponent {
}
}
}
}
public
void
getLoanBalanceLock
(
LoanBalanceDTO
dto
)
{
RLock
lock
=
null
;
try
{
lock
=
redissonClient
.
getLock
(
RedissonConstants
.
ORDER_CHILD_LOAN_OWNER_USERID_LOCK
+
dto
.
getOwnerUserNo
());
boolean
flag
=
lock
.
tryLock
(
15
,
30
,
TimeUnit
.
SECONDS
);
if
(!
flag
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
GET_LOAN_RECORD
);
}
ownerLoanRecordService
.
getLoanBalance
(
dto
);
}
catch
(
Exception
e
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
GET_LOAN_RECORD
,
e
.
getMessage
());
}
finally
{
if
(
lock
!=
null
&&
lock
.
isLocked
()
&&
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
}
}
}
}
}
performance-web/src/main/java/com/clx/performance/config/loan/PaymentFromConfig.java
浏览文件 @
33f09f63
...
@@ -12,13 +12,13 @@ import org.springframework.context.annotation.Configuration;
...
@@ -12,13 +12,13 @@ import org.springframework.context.annotation.Configuration;
public
class
PaymentFromConfig
{
public
class
PaymentFromConfig
{
//借款订单模版编号
//借款订单模版编号
private
Lo
ng
loanOrderTemplateNo
;
private
Stri
ng
loanOrderTemplateNo
;
//借款转账模版编号
//借款转账模版编号
private
Lo
ng
loanTransferTemplateNo
;
private
Stri
ng
loanTransferTemplateNo
;
//还款订单模版编号
//还款订单模版编号
private
Lo
ng
repaymentOrderTemplateNo
;
private
Stri
ng
repaymentOrderTemplateNo
;
//还款转账模版编号
//还款转账模版编号
private
Lo
ng
repaymentTransferTemplateNo
;
private
Stri
ng
repaymentTransferTemplateNo
;
}
}
performance-web/src/main/java/com/clx/performance/constant/RedissonConstants.java
浏览文件 @
33f09f63
...
@@ -10,4 +10,6 @@ public class RedissonConstants {
...
@@ -10,4 +10,6 @@ public class RedissonConstants {
//货主违约结算单支付锁
//货主违约结算单支付锁
public
static
final
String
BREAK_CONTRACT_SETTLEMENT_OWNER_BATCH_PAY_ID_LOCK
=
"clx-performance:breakContractSettlementOwner:batchPay:id:"
;
public
static
final
String
BREAK_CONTRACT_SETTLEMENT_OWNER_BATCH_PAY_ID_LOCK
=
"clx-performance:breakContractSettlementOwner:batchPay:id:"
;
public
static
final
String
ORDER_CHILD_LOAN_OWNER_USERID_LOCK
=
"clx-performance:orderChild:loan:ownerUserId:"
;
}
}
performance-web/src/main/java/com/clx/performance/controller/pc/loan/carrier/CarrierOwnerLoanRecordController.java
浏览文件 @
33f09f63
package
com
.
clx
.
performance
.
controller
.
pc
.
loan
.
carrier
;
package
com
.
clx
.
performance
.
controller
.
pc
.
loan
.
carrier
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.param.pc.loan.carrier.CarrierOwnerLoanRecordApproveParam
;
import
com.clx.performance.param.pc.loan.carrier.*
;
import
com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner
;
import
com.clx.performance.param.pc.loan.owner.ExportPaymentApplicationFormParam
;
import
com.clx.performance.param.pc.loan.owner.ExportPaymentApplicationFormParam
;
import
com.clx.performance.service.loan.OwnerLoanRecordService
;
import
com.clx.performance.service.loan.OwnerLoanRecordService
;
import
com.clx.performance.vo.pc.loan.carrier.CarrierCashierInfoVO
;
import
com.clx.performance.vo.pc.loan.carrier.CarrierCashierInfoVO
;
...
@@ -90,4 +88,25 @@ public class CarrierOwnerLoanRecordController {
...
@@ -90,4 +88,25 @@ public class CarrierOwnerLoanRecordController {
return
Result
.
ok
(
url
);
return
Result
.
ok
(
url
);
}
}
@ApiOperation
(
value
=
"借款支付"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/updateOwnerLoanRecordPay"
)
public
Result
<
Object
>
updateOwnerLoanRecordPay
(
@RequestBody
@Validated
CarrierOwnerLoanRecordPayParam
param
)
{
ownerLoanRecordService
.
updateOwnerLoanRecordPay
(
param
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"借款重新支付"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/updateOwnerLoanRecordRepay"
)
public
Result
<
Object
>
updateOwnerLoanRecordRepay
(
@RequestBody
@Validated
CarrierOwnerLoanRecordRepayParam
param
)
{
ownerLoanRecordService
.
updateOwnerLoanRecordRepay
(
param
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"借款支付取消"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/updateOwnerLoanRecordPayCancel"
)
public
Result
<
Object
>
updateOwnerLoanRecordPayCancel
(
@RequestBody
@Validated
CarrierOwnerLoanRecordPayCancelParam
param
)
{
ownerLoanRecordService
.
updateOwnerLoanRecordPayCancel
(
param
);
return
Result
.
ok
();
}
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/loan/BankTradeDaoImpl.java
0 → 100644
浏览文件 @
33f09f63
package
com
.
clx
.
performance
.
dao
.
impl
.
loan
;
import
com.clx.performance.dao.loan.BankTradeDao
;
import
com.clx.performance.mapper.loan.BankTradeMapper
;
import
com.clx.performance.model.loan.BankTrade
;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
/**
* @Author: aiqinguo
* @Description:
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Repository
public
class
BankTradeDaoImpl
extends
BaseDaoImpl
<
BankTradeMapper
,
BankTrade
,
Integer
>
implements
BankTradeDao
{
@Override
public
boolean
updateStatus
(
BankTrade
item
)
{
return
update
(
lUdWrapper
()
.
eq
(
BankTrade:
:
getId
,
item
.
getId
())
.
set
(
BankTrade:
:
getStatus
,
item
.
getStatus
())
);
}
@Override
public
Optional
<
BankTrade
>
selectByMerchantRunningWaterNo
(
String
merchantRunningWaterNo
)
{
return
Optional
.
of
(
merchantRunningWaterNo
)
.
map
(
item
->
lQrWrapper
()
.
eq
(
BankTrade:
:
getMerchantRunningWaterNo
,
item
)
.
last
(
"limit 1"
)
)
.
map
(
super
::
getOne
);
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/loan/OwnerLoanRecordDaoImpl.java
浏览文件 @
33f09f63
...
@@ -10,6 +10,7 @@ import com.clx.performance.model.loan.OwnerLoanRecord;
...
@@ -10,6 +10,7 @@ import com.clx.performance.model.loan.OwnerLoanRecord;
import
com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam
;
import
com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO
;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
...
@@ -70,5 +71,40 @@ public class OwnerLoanRecordDaoImpl extends BaseDaoImpl<OwnerLoanRecordMapper, O
...
@@ -70,5 +71,40 @@ public class OwnerLoanRecordDaoImpl extends BaseDaoImpl<OwnerLoanRecordMapper, O
);
);
}
}
@Override
public
Optional
<
OwnerLoanRecord
>
selectByMerchantRunningWaterNo
(
String
merchantRunningWaterNo
)
{
return
Optional
.
of
(
merchantRunningWaterNo
)
.
map
(
item
->
lQrWrapper
()
.
eq
(
OwnerLoanRecord:
:
getMerchantRunningWaterNo
,
item
)
)
.
map
(
super
::
getOne
);
}
@Override
public
boolean
updatePay
(
OwnerLoanRecord
item
)
{
return
update
(
lUdWrapper
()
.
eq
(
OwnerLoanRecord:
:
getId
,
item
.
getId
())
.
set
(
OwnerLoanRecord:
:
getStatus
,
item
.
getStatus
())
.
set
(
OwnerLoanRecord:
:
getRunningWaterOpenNo
,
item
.
getRunningWaterOpenNo
())
.
set
(
OwnerLoanRecord:
:
getMerchantRunningWaterNo
,
item
.
getMerchantRunningWaterNo
())
.
set
(
OwnerLoanRecord:
:
getRemittanceIdentificationCode
,
item
.
getRemittanceIdentificationCode
())
.
set
(
OwnerLoanRecord:
:
getLoanResidueBalance
,
item
.
getLoanResidueBalance
())
.
set
(
OwnerLoanRecord:
:
getLendingParty
,
item
.
getLendingParty
())
.
set
(
OwnerLoanRecord:
:
getLendingPartyAccount
,
item
.
getLendingPartyAccount
())
);
}
@Override
public
boolean
updatePaySuccess
(
OwnerLoanRecord
item
)
{
return
false
;
}
@Override
public
boolean
updatePayFail
(
OwnerLoanRecord
item
)
{
return
false
;
}
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementDriverDetailDaoImpl.java
浏览文件 @
33f09f63
...
@@ -31,6 +31,7 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD
...
@@ -31,6 +31,7 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD
.
set
(
SettlementDriverDetail:
:
getInvoiceType
,
item
.
getInvoiceType
())
.
set
(
SettlementDriverDetail:
:
getInvoiceType
,
item
.
getInvoiceType
())
.
set
(
SettlementDriverDetail:
:
getPrepayFreight
,
item
.
getPrepayFreight
())
.
set
(
SettlementDriverDetail:
:
getPrepayFreight
,
item
.
getPrepayFreight
())
.
set
(
SettlementDriverDetail:
:
getPrepayFreightFlag
,
item
.
getPrepayFreightFlag
())
.
set
(
SettlementDriverDetail:
:
getPrepayFreightFlag
,
item
.
getPrepayFreightFlag
())
.
set
(
SettlementDriverDetail:
:
getLoanFlag
,
item
.
getLoanFlag
())
);
);
}
}
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementOwnerDetailDaoImpl.java
浏览文件 @
33f09f63
...
@@ -36,6 +36,7 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
...
@@ -36,6 +36,7 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
.
set
(
SettlementOwnerDetail:
:
getSettlementFreight
,
item
.
getSettlementFreight
())
.
set
(
SettlementOwnerDetail:
:
getSettlementFreight
,
item
.
getSettlementFreight
())
.
set
(
SettlementOwnerDetail:
:
getFinalPaymentStatus
,
item
.
getFinalPaymentStatus
())
.
set
(
SettlementOwnerDetail:
:
getFinalPaymentStatus
,
item
.
getFinalPaymentStatus
())
.
set
(
SettlementOwnerDetail:
:
getPrepayFreight
,
item
.
getPrepayFreight
())
.
set
(
SettlementOwnerDetail:
:
getPrepayFreight
,
item
.
getPrepayFreight
())
.
set
(
SettlementOwnerDetail:
:
getLoanFreight
,
item
.
getLoanFreight
())
);
);
}
}
...
...
performance-web/src/main/java/com/clx/performance/dao/loan/BankTradeDao.java
0 → 100644
浏览文件 @
33f09f63
package
com
.
clx
.
performance
.
dao
.
loan
;
import
com.clx.performance.mapper.loan.BankTradeMapper
;
import
com.clx.performance.model.loan.BankTrade
;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.BaseDao
;
/**
* @Author: aiqinguo
* @Description:
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
public
interface
BankTradeDao
extends
BaseDao
<
BankTradeMapper
,
BankTrade
,
Integer
>
{
boolean
updateStatus
(
BankTrade
item
);
Optional
<
BankTrade
>
selectByMerchantRunningWaterNo
(
String
merchantRunningWaterNo
);
}
performance-web/src/main/java/com/clx/performance/dao/loan/OwnerLoanRecordDao.java
浏览文件 @
33f09f63
...
@@ -6,6 +6,7 @@ import com.clx.performance.model.loan.OwnerLoanRecord;
...
@@ -6,6 +6,7 @@ import com.clx.performance.model.loan.OwnerLoanRecord;
import
com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam
;
import
com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO
;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.BaseDao
;
import
com.msl.common.dao.BaseDao
;
import
java.util.List
;
import
java.util.List
;
...
@@ -23,5 +24,10 @@ public interface OwnerLoanRecordDao extends BaseDao<OwnerLoanRecordMapper, Owner
...
@@ -23,5 +24,10 @@ public interface OwnerLoanRecordDao extends BaseDao<OwnerLoanRecordMapper, Owner
List
<
OwnerLoanRecord
>
selectLoanBalance
(
Long
userNo
);
List
<
OwnerLoanRecord
>
selectLoanBalance
(
Long
userNo
);
Optional
<
OwnerLoanRecord
>
selectByMerchantRunningWaterNo
(
String
merchantRunningWaterNo
);
boolean
updatePay
(
OwnerLoanRecord
item
);
boolean
updatePaySuccess
(
OwnerLoanRecord
item
);
boolean
updatePayFail
(
OwnerLoanRecord
item
);
}
}
performance-web/src/main/java/com/clx/performance/dto/LoanBalanceDTO.java
0 → 100644
浏览文件 @
33f09f63
package
com
.
clx
.
performance
.
dto
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
lombok.Data
;
import
java.math.BigDecimal
;
@Data
public
class
LoanBalanceDTO
{
private
BigDecimal
orderChildPrice
;
private
Long
ownerUserNo
;
private
String
childNo
;
private
SettlementDriverDetail
settlementDriverDetail
;
private
SettlementOwnerDetail
settlementOwnerDetail
;
}
performance-web/src/main/java/com/clx/performance/listener/OrderChildSyncTransportListener.java
浏览文件 @
33f09f63
...
@@ -28,6 +28,7 @@ import com.clx.performance.service.settle.SettlementMqService;
...
@@ -28,6 +28,7 @@ import com.clx.performance.service.settle.SettlementMqService;
import
com.msl.common.dto.HttpDTO
;
import
com.msl.common.dto.HttpDTO
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.exception.ExceptionUtils
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -74,7 +75,7 @@ public class OrderChildSyncTransportListener {
...
@@ -74,7 +75,7 @@ public class OrderChildSyncTransportListener {
try
{
try
{
transportOrderChildProcess
(
orderChild
);
transportOrderChildProcess
(
orderChild
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
info
(
"当前OrderChildSyncTransportListener监听同步网络货运失败,运单号{}, 错误信息{}"
,
orderChild
.
getChildNo
(),
e
.
getMessage
(
));
log
.
info
(
"当前OrderChildSyncTransportListener监听同步网络货运失败,运单号{}, 错误信息{}"
,
orderChild
.
getChildNo
(),
ExceptionUtils
.
getStackTrace
(
e
));
OrderChildSyncTransportInvoiceRecord
entity
=
new
OrderChildSyncTransportInvoiceRecord
();
OrderChildSyncTransportInvoiceRecord
entity
=
new
OrderChildSyncTransportInvoiceRecord
();
entity
.
setChildNo
(
orderChild
.
getChildNo
());
entity
.
setChildNo
(
orderChild
.
getChildNo
());
...
@@ -103,8 +104,6 @@ public class OrderChildSyncTransportListener {
...
@@ -103,8 +104,6 @@ public class OrderChildSyncTransportListener {
public
void
extracted
(
OrderChild
orderChild
,
OrderChildSyncDTO
bean
,
String
remark
,
public
void
extracted
(
OrderChild
orderChild
,
OrderChildSyncDTO
bean
,
String
remark
,
SettlementOwnerDetail
settlementOwnerDetail
,
SettlementOwnerDetail
settlementOwnerDetail
,
Integer
invoiceType
,
SettlementDriverDetail
settlementDriverDetail
)
{
Integer
invoiceType
,
SettlementDriverDetail
settlementDriverDetail
)
{
// 结算金额
settlementOwnerDetail
.
setSettlementFreight
(
settlementFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
if
(
null
!=
bean
&&
bean
.
getCode
()
==
0
)
{
if
(
null
!=
bean
&&
bean
.
getCode
()
==
0
)
{
log
.
info
(
"当前OrderChildSyncTransportListener监听同步网络货运成功,运单号为{}"
,
orderChild
.
getChildNo
());
log
.
info
(
"当前OrderChildSyncTransportListener监听同步网络货运成功,运单号为{}"
,
orderChild
.
getChildNo
());
...
@@ -165,6 +164,8 @@ public class OrderChildSyncTransportListener {
...
@@ -165,6 +164,8 @@ public class OrderChildSyncTransportListener {
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO
.
getCode
());
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO
.
getCode
());
}
}
// 结算金额
settlementOwnerDetail
.
setSettlementFreight
(
settlementFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
if
(
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
().
equals
(
invoiceType
))
{
if
(
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
().
equals
(
invoiceType
))
{
if
(
settlementOwnerDetail
.
getSettlementFreight
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
if
(
settlementOwnerDetail
.
getSettlementFreight
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
...
@@ -177,6 +178,7 @@ public class OrderChildSyncTransportListener {
...
@@ -177,6 +178,7 @@ public class OrderChildSyncTransportListener {
}
}
settlementOwnerDetail
.
setInvoiceType
(
invoiceType
);
settlementOwnerDetail
.
setInvoiceType
(
invoiceType
);
settlementDriverDetail
.
setInvoiceType
(
invoiceType
);
settlementDriverDetail
.
setInvoiceType
(
invoiceType
);
//生成借款标识
//生成借款标识
orderChildLoanComponent
.
childLoanConfirmAfterProcess
(
settlementDriverDetail
,
settlementOwnerDetail
);
orderChildLoanComponent
.
childLoanConfirmAfterProcess
(
settlementDriverDetail
,
settlementOwnerDetail
);
...
...
performance-web/src/main/java/com/clx/performance/mapper/loan/BankTradeMapper.java
0 → 100644
浏览文件 @
33f09f63
package
com
.
clx
.
performance
.
mapper
.
loan
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.clx.performance.model.loan.BankTrade
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @Author: aiqinguo
* @Description:
* @Date: 2024/01/17 13:42:57
* @Version: 1.0
*/
@Mapper
public
interface
BankTradeMapper
extends
BaseMapper
<
BankTrade
>
{
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/mapper/loan/OwnerLoanAccountMapper.java
浏览文件 @
33f09f63
...
@@ -18,9 +18,11 @@ import org.apache.ibatis.annotations.Update;
...
@@ -18,9 +18,11 @@ import org.apache.ibatis.annotations.Update;
*/
*/
public
interface
OwnerLoanAccountMapper
extends
BaseMapper
<
OwnerLoanAccount
>
{
public
interface
OwnerLoanAccountMapper
extends
BaseMapper
<
OwnerLoanAccount
>
{
@Update
(
"update owner_loan_account set funding_amount = funding_amount + #{account.fundingAmount}"
@Update
(
"update owner_loan_account set funding_account_balance = funding_account_balance + #{account.fundingAccountBalance}"
+
+
",virtually_amount = virtually_amount + #{account.virtuallyAmount}"
",funding_usable_balance = funding_usable_balance + #{account.fundingUsableBalance},funding_frozen_balance = funding_frozen_balance + #{account.fundingFrozenBalance}"
+
+
",modified_time= #{now}"
",virtually_account_balance = virtually_account_balance + #{account.virtuallyAccountBalance},virtually_usable_balance = virtually_usable_balance + #{account.virtuallyUsableBalance}"
+
",virtually_frozen_balance = virtually_frozen_balance + #{account.virtuallyFrozenBalance}"
+
",modified_time=#{now}"
+
"where id = #{account.id} and modified_time = #{account.modifiedTime}"
+
"where id = #{account.id} and modified_time = #{account.modifiedTime}"
)
)
Integer
addAccount
(
@Param
(
"account"
)
OwnerLoanAccount
account
,
@Param
(
"now"
)
String
nowStr
);
Integer
addAccount
(
@Param
(
"account"
)
OwnerLoanAccount
account
,
@Param
(
"now"
)
String
nowStr
);
...
@@ -47,7 +49,7 @@ public interface OwnerLoanAccountMapper extends BaseMapper<OwnerLoanAccount> {
...
@@ -47,7 +49,7 @@ public interface OwnerLoanAccountMapper extends BaseMapper<OwnerLoanAccount> {
",modified_time=#{now}"
",modified_time=#{now}"
+
"where id = #{account.id} and modified_time = #{account.modifiedTime}"
+
"where id = #{account.id} and modified_time = #{account.modifiedTime}"
)
)
Integer
childWriteOffOwnerLoanAccountCAS
(
OwnerLoanAccount
account
,
String
nowStr
);
Integer
childWriteOffOwnerLoanAccountCAS
(
@Param
(
"account"
)
OwnerLoanAccount
account
,
@Param
(
"now"
)
String
nowStr
);
@Update
(
"update owner_loan_account set funding_account_balance = funding_account_balance + #{account.fundingAccountBalance}"
+
@Update
(
"update owner_loan_account set funding_account_balance = funding_account_balance + #{account.fundingAccountBalance}"
+
",funding_usable_balance = funding_usable_balance + #{account.fundingUsableBalance},funding_frozen_balance = funding_frozen_balance - #{account.fundingFrozenBalance}"
+
",funding_usable_balance = funding_usable_balance + #{account.fundingUsableBalance},funding_frozen_balance = funding_frozen_balance - #{account.fundingFrozenBalance}"
+
...
@@ -56,5 +58,5 @@ public interface OwnerLoanAccountMapper extends BaseMapper<OwnerLoanAccount> {
...
@@ -56,5 +58,5 @@ public interface OwnerLoanAccountMapper extends BaseMapper<OwnerLoanAccount> {
",modified_time=#{now}"
",modified_time=#{now}"
+
"where id = #{account.id} and modified_time = #{account.modifiedTime}"
+
"where id = #{account.id} and modified_time = #{account.modifiedTime}"
)
)
Integer
thawOwnerLoanAccountCAS
(
OwnerLoanAccount
account
,
String
nowStr
);
Integer
thawOwnerLoanAccountCAS
(
@Param
(
"account"
)
OwnerLoanAccount
account
,
@Param
(
"now"
)
String
nowStr
);
}
}
performance-web/src/main/java/com/clx/performance/model/loan/BankTrade.java
0 → 100644
浏览文件 @
33f09f63
package
com
.
clx
.
performance
.
model
.
loan
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.msl.common.config.KeyColumn
;
import
com.msl.common.model.HasKey
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
/**
* @Author: aiqinguo
* @Description:
* @Date: 2024/02/06 15:31:16
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName
(
autoResultMap
=
true
)
public
class
BankTrade
implements
HasKey
<
Integer
>
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
//id
private
Integer
orderType
;
//订单类型
private
Integer
tradeType
;
//交易类型
private
String
merchantRunningWaterNo
;
//商户流水号
private
String
runningWaterOpenNo
;
//交易流水号(第三方)
private
BigDecimal
amount
;
//金额
private
Integer
status
;
//状态
private
String
remark
;
//备注
private
LocalDateTime
createTime
;
//创建时间
private
LocalDateTime
modifiedTime
;
//修改时间
@KeyColumn
(
"id"
)
@Override
public
Integer
gainKey
()
{
return
id
;
}
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/model/loan/OwnerLoanRecord.java
浏览文件 @
33f09f63
...
@@ -68,6 +68,10 @@ public class OwnerLoanRecord implements HasKey<Integer> {
...
@@ -68,6 +68,10 @@ public class OwnerLoanRecord implements HasKey<Integer> {
@ApiModelProperty
(
"借款剩余金额"
)
@ApiModelProperty
(
"借款剩余金额"
)
private
BigDecimal
loanResidueBalance
;
private
BigDecimal
loanResidueBalance
;
@TableField
(
"borrower_id"
)
@ApiModelProperty
(
"借款方Id"
)
private
Integer
borrowerId
;
@TableField
(
"borrower"
)
@TableField
(
"borrower"
)
@ApiModelProperty
(
"借款方"
)
@ApiModelProperty
(
"借款方"
)
private
String
borrower
;
private
String
borrower
;
...
@@ -80,6 +84,10 @@ public class OwnerLoanRecord implements HasKey<Integer> {
...
@@ -80,6 +84,10 @@ public class OwnerLoanRecord implements HasKey<Integer> {
@ApiModelProperty
(
"汇款识别码"
)
@ApiModelProperty
(
"汇款识别码"
)
private
String
remittanceIdentificationCode
;
private
String
remittanceIdentificationCode
;
@TableField
(
"lending_party_id"
)
@ApiModelProperty
(
"借出方ID"
)
private
String
lendingPartyId
;
@TableField
(
"lending_party"
)
@TableField
(
"lending_party"
)
@ApiModelProperty
(
"借出方"
)
@ApiModelProperty
(
"借出方"
)
private
String
lendingParty
;
private
String
lendingParty
;
...
...
performance-web/src/main/java/com/clx/performance/service/impl/loan/OwnerLoanRecordServiceImpl.java
浏览文件 @
33f09f63
...
@@ -14,19 +14,17 @@ import com.clx.performance.dao.loan.OwnerLoanAccountDao;
...
@@ -14,19 +14,17 @@ import com.clx.performance.dao.loan.OwnerLoanAccountDao;
import
com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao
;
import
com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao
;
import
com.clx.performance.dao.loan.OwnerLoanRecordDao
;
import
com.clx.performance.dao.loan.OwnerLoanRecordDao
;
import
com.clx.performance.dao.loan.OwnerRepaymentDao
;
import
com.clx.performance.dao.loan.OwnerRepaymentDao
;
import
com.clx.performance.dto.LoanBalanceDTO
;
import
com.clx.performance.dao.loan.*
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.RunningWaterTypeEnum
;
import
com.clx.performance.enums.RunningWaterTypeEnum
;
import
com.clx.performance.enums.loan.BankTradeEnum
;
import
com.clx.performance.enums.loan.OwnerLoanAccountRunningWaterRecordEnum
;
import
com.clx.performance.enums.loan.OwnerLoanAccountRunningWaterRecordEnum
;
import
com.clx.performance.enums.loan.OwnerLoanRecordEnum
;
import
com.clx.performance.enums.loan.OwnerLoanRecordEnum
;
import
com.clx.performance.enums.loan.OwnerRePaymentEnum
;
import
com.clx.performance.enums.loan.OwnerRePaymentEnum
;
import
com.clx.performance.model.OwnerBindCardRecord
;
import
com.clx.performance.model.OwnerBindCardRecord
;
import
com.clx.performance.model.loan.OwnerLoanAccount
;
import
com.clx.performance.model.loan.*
;
import
com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord
;
import
com.clx.performance.param.pc.loan.carrier.*
;
import
com.clx.performance.model.loan.OwnerLoanRecord
;
import
com.clx.performance.model.loan.OwnerRepayment
;
import
com.clx.performance.param.pc.loan.carrier.CarrierOwnerLoanRecordApproveParam
;
import
com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner
;
import
com.clx.performance.param.pc.loan.owner.ExportPaymentApplicationFormParam
;
import
com.clx.performance.param.pc.loan.owner.ExportPaymentApplicationFormParam
;
import
com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam
;
import
com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam
;
import
com.clx.performance.service.loan.OwnerLoanRecordService
;
import
com.clx.performance.service.loan.OwnerLoanRecordService
;
...
@@ -52,13 +50,17 @@ import com.msl.user.data.UserSessionData;
...
@@ -52,13 +50,17 @@ import com.msl.user.data.UserSessionData;
import
com.msl.user.utils.TokenUtil
;
import
com.msl.user.utils.TokenUtil
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.ss.formula.functions.T
;
import
org.apache.commons.lang3.exception.ExceptionUtils
;
import
org.springframework.jdbc.datasource.DataSourceTransactionManager
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.TransactionDefinition
;
import
org.springframework.transaction.TransactionStatus
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.*
;
import
java.util.*
;
import
java.util.function.Consumer
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -69,8 +71,9 @@ import java.util.stream.Collectors;
...
@@ -69,8 +71,9 @@ import java.util.stream.Collectors;
@Service
@Service
@Slf4j
@Slf4j
@AllArgsConstructor
@AllArgsConstructor
public
class
OwnerLoanRecordServiceImpl
implements
OwnerLoanRecordService
{
public
class
OwnerLoanRecordServiceImpl
implements
OwnerLoanRecordService
{
private
final
BorrowerConfigDao
borrowerConfigDao
;
private
final
OwnerLoanRecordDao
ownerLoanRecordDao
;
private
final
OwnerLoanRecordDao
ownerLoanRecordDao
;
private
final
OwnerLoanRecordStruct
ownerLoanRecordStruct
;
private
final
OwnerLoanRecordStruct
ownerLoanRecordStruct
;
...
@@ -84,11 +87,13 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
...
@@ -84,11 +87,13 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
private
final
OwnerBindCardRecordDao
ownerBindCardRecordDao
;
private
final
OwnerBindCardRecordDao
ownerBindCardRecordDao
;
private
final
NbBankService
bankService
;
private
final
NbBankService
bankService
;
private
final
OwnerLoanAccountRunningWaterRecordDao
ownerLoanAccountRunningWaterRecordDao
;
private
final
OwnerLoanAccountRunningWaterRecordDao
ownerLoanAccountRunningWaterRecordDao
;
private
final
BorrowerDao
borrowerDao
;
private
final
BorrowerDao
borrowerDao
;
private
final
BankTradeDao
bankTradeDao
;
private
final
OwnerFeign
ownerFeign
;
private
final
OwnerFeign
ownerFeign
;
private
final
ContractEvidenceFeign
contractEvidenceFeign
;
private
final
ContractEvidenceFeign
contractEvidenceFeign
;
...
@@ -107,8 +112,6 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
...
@@ -107,8 +112,6 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
}
}
@Override
@Override
public
void
ownerLoanRecordSubmit
(
OwnerLoanRecordParam
param
)
{
public
void
ownerLoanRecordSubmit
(
OwnerLoanRecordParam
param
)
{
...
@@ -140,37 +143,75 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
...
@@ -140,37 +143,75 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
public
void
ownerLoanRecordApprove
(
CarrierOwnerLoanRecordApproveParam
param
)
{
public
void
ownerLoanRecordApprove
(
CarrierOwnerLoanRecordApproveParam
param
)
{
OwnerLoanRecord
ownerLoanRecord
=
ownerLoanRecordDao
.
getOneByField
(
OwnerLoanRecord:
:
getLoanNo
,
param
.
getLoanNo
()).
get
();
OwnerLoanRecord
ownerLoanRecord
=
ownerLoanRecordDao
.
getOneByField
(
OwnerLoanRecord:
:
getLoanNo
,
param
.
getLoanNo
()).
get
();
if
(
param
.
getStatus
())
{
if
(
param
.
getStatus
())
{
borrowerConfigDao
.
selectByBorrowerIdAndType
(
ownerLoanRecord
.
getBorrowerId
(),
param
.
getLoanType
())
.
orElseThrow
(
PerformanceResultEnum
.
BORROWER_CONFIG_TYPE_NOT_SUPPORT_ERROR
);
Borrower
borrower
=
borrowerDao
.
getEntityByKey
(
ownerLoanRecord
.
getBorrowerId
())
.
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
//同意
//同意
ownerLoanRecord
.
setLoanType
(
param
.
getLoanType
());
ownerLoanRecord
.
setLoanType
(
param
.
getLoanType
());
if
(
OwnerLoanRecordEnum
.
LoanType
.
FUND
.
getCode
().
equals
(
param
.
getLoanType
()))
{
if
(
OwnerLoanRecordEnum
.
LoanType
.
FUND
.
getCode
().
equals
(
param
.
getLoanType
()))
{
//资金 TODO 调宁波银企直连的产品,从诚联信账户中给鑫祥和执行转账
//资金
NbBankOrderPayResultVO
orderPayResultVO
=
bankService
.
orderDirectPay
(
param
.
getLoanNo
()
,
BankTrade
bankTrade
=
new
BankTrade
();
ownerLoanRecord
.
getLoanBalance
().
intValue
(),
""
,
""
,
""
);
if
(
OwnerLoanRecordEnum
.
PayChannel
.
ORDER_DIRECT_PAY
.
getCode
().
equals
(
param
.
getPayChannel
()))
{
ownerLoanRecord
.
setRunningWaterOpenNo
(
orderPayResultVO
.
getTransSeqNo
());
// 订单支付
ownerLoanRecord
.
setMerchantRunningWaterNo
(
orderPayResultVO
.
getMerSeqNo
());
NbBankOrderPayResultVO
orderPayResultVO
=
bankService
.
orderDirectPay
(
param
.
getLoanNo
(),
ownerLoanRecord
.
setStatus
(
OwnerLoanRecordEnum
.
Status
.
PAYING
.
getCode
());
ownerLoanRecord
.
getLoanBalance
().
intValue
(),
borrower
.
getOpenBankId
(),
borrower
.
getBankCardNo
(),
borrower
.
getName
());
ownerLoanRecord
.
setLoanResidueBalance
(
ownerLoanRecord
.
getLoanBalance
());
ownerLoanRecord
.
setRunningWaterOpenNo
(
orderPayResultVO
.
getTransSeqNo
());
ownerLoanRecord
.
setMerchantRunningWaterNo
(
orderPayResultVO
.
getMerSeqNo
());
ownerLoanRecord
.
setStatus
(
OwnerLoanRecordEnum
.
Status
.
PAYING
.
getCode
());
ownerLoanRecord
.
setLoanResidueBalance
(
ownerLoanRecord
.
getLoanBalance
());
ownerLoanRecord
.
setLendingParty
(
borrower
.
getName
());
ownerLoanRecord
.
setLendingPartyAccount
(
borrower
.
getBankCardNo
());
bankTrade
.
setTradeType
(
BankTradeEnum
.
TradeType
.
ORDER_DIRECT_PAY
.
getCode
());
}
else
{
// 转账支付
NbBankOrderPayResultVO
orderPayResultVO
=
bankService
.
orderTransferPay
(
ownerLoanRecord
.
getLoanBalance
().
intValue
());
ownerLoanRecord
.
setRunningWaterOpenNo
(
orderPayResultVO
.
getTransSeqNo
());
ownerLoanRecord
.
setMerchantRunningWaterNo
(
orderPayResultVO
.
getMerSeqNo
());
ownerLoanRecord
.
setRemittanceIdentificationCode
(
orderPayResultVO
.
getSignNo
());
ownerLoanRecord
.
setStatus
(
OwnerLoanRecordEnum
.
Status
.
PAYING
.
getCode
());
ownerLoanRecord
.
setLoanResidueBalance
(
ownerLoanRecord
.
getLoanBalance
());
bankTrade
.
setTradeType
(
BankTradeEnum
.
TradeType
.
ORDER_TRANSFER_PAY
.
getCode
());
}
// 更新借款支付信息
ownerLoanRecordDao
.
updatePay
(
ownerLoanRecord
);
bankTrade
.
setOrderType
(
BankTradeEnum
.
OrderType
.
OWNER_LOAN_RECORD
.
getCode
());
bankTrade
.
setAmount
(
ownerLoanRecord
.
getLoanBalance
());
bankTrade
.
setMerchantRunningWaterNo
(
ownerLoanRecord
.
getMerchantRunningWaterNo
());
bankTrade
.
setRunningWaterOpenNo
(
ownerLoanRecord
.
getRunningWaterOpenNo
());
// 保存银行交易记录
bankTradeDao
.
saveEntity
(
bankTrade
);
}
else
{
}
else
{
// 虚拟币 直接增加 更改状态审批通过
// 虚拟币 直接增加 更改状态审批通过
ownerLoanRecord
.
setStatus
(
OwnerLoanRecordEnum
.
Status
.
APPROVE_PASS
.
getCode
());
ownerLoanRecord
.
setStatus
(
OwnerLoanRecordEnum
.
Status
.
APPROVE_PASS
.
getCode
());
}
while
(
true
)
{
OwnerLoanAccount
ownerLoanAccount
=
ownerLoanAccountDao
.
getOneByField
(
OwnerLoanAccount:
:
getOwnerUserNo
,
while
(
true
)
{
ownerLoanRecord
.
getOwnerUserNo
()).
get
();
OwnerLoanAccount
ownerLoanAccount
=
ownerLoanAccountDao
.
getOneByField
(
OwnerLoanAccount:
:
getOwnerUserNo
,
OwnerLoanAccount
entity
=
new
OwnerLoanAccount
();
ownerLoanRecord
.
getOwnerUserNo
()).
get
();
entity
.
setId
(
ownerLoanAccount
.
getId
());
OwnerLoanAccount
entity
=
new
OwnerLoanAccount
();
entity
.
setFundingAccountBalance
(
BigDecimal
.
ZERO
);
entity
.
setId
(
ownerLoanAccount
.
getId
());
entity
.
setFundingFrozenBalance
(
BigDecimal
.
ZERO
);
/* entity.setVirtuallyAmount(ownerLoanRecord.getLoanBalance());
entity
.
setFundingUsableBalance
(
BigDecimal
.
ZERO
);
entity.setFundingAmount(BigDecimal.ZERO);*/
entity
.
setVirtuallyAccountBalance
(
ownerLoanRecord
.
getLoanBalance
());
entity
.
setModifiedTime
(
ownerLoanAccount
.
getModifiedTime
());
entity
.
setVirtuallyFrozenBalance
(
BigDecimal
.
ZERO
);
Integer
flag
=
ownerLoanAccountDao
.
updateAccountCAS
(
entity
,
LocalDateTime
.
now
(),
true
);
entity
.
setVirtuallyUsableBalance
(
ownerLoanRecord
.
getLoanBalance
());
if
(
flag
==
1
)
{
entity
.
setModifiedTime
(
ownerLoanAccount
.
getModifiedTime
());
//生成借款流水
Integer
flag
=
ownerLoanAccountDao
.
updateAccountCAS
(
entity
,
LocalDateTime
.
now
(),
true
);
initOwnerLoanRunningWaterRecord
(
ownerLoanRecord
);
if
(
flag
==
1
)
{
//生成还款记录
//生成借款流水
initOwnerRepayment
(
ownerLoanRecord
);
initOwnerLoanRunningWaterRecord
(
ownerLoanRecord
);
break
;
//生成还款记录
initOwnerRepayment
(
ownerLoanRecord
);
break
;
}
}
}
}
}
...
@@ -192,6 +233,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
...
@@ -192,6 +233,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
/**
/**
* 生成借款流水
* 生成借款流水
*
* @param ownerLoanRecord
* @param ownerLoanRecord
*/
*/
private
void
initOwnerLoanRunningWaterRecord
(
OwnerLoanRecord
ownerLoanRecord
)
{
private
void
initOwnerLoanRunningWaterRecord
(
OwnerLoanRecord
ownerLoanRecord
)
{
...
@@ -213,6 +255,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
...
@@ -213,6 +255,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
/**
/**
* 生成还款记录
* 生成还款记录
*
* @param ownerLoanRecord
* @param ownerLoanRecord
*/
*/
private
void
initOwnerRepayment
(
OwnerLoanRecord
ownerLoanRecord
)
{
private
void
initOwnerRepayment
(
OwnerLoanRecord
ownerLoanRecord
)
{
...
@@ -241,14 +284,14 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
...
@@ -241,14 +284,14 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
@Override
@Override
public
OwnerLoanRecordDetail
getOwnerLoanRecordDetail
()
{
public
OwnerLoanRecordDetail
getOwnerLoanRecordDetail
()
{
List
<
BorrowerSelectVO
>
borrowerList
=
borrowerDao
.
selectAllBorrowConfig
();
List
<
BorrowerSelectVO
>
borrowerList
=
borrowerDao
.
selectAllBorrowConfig
();
Map
<
String
,
BorrowerSelectVO
>
map
=
new
TreeMap
<>();
Map
<
String
,
BorrowerSelectVO
>
map
=
new
TreeMap
<>();
for
(
BorrowerSelectVO
item
:
borrowerList
)
{
for
(
BorrowerSelectVO
item
:
borrowerList
)
{
if
(
map
.
containsKey
(
item
.
getName
()))
{
if
(
map
.
containsKey
(
item
.
getName
()))
{
if
(
Objects
.
equals
(
item
.
getType
(),
OwnerLoanRecordEnum
.
LoanType
.
VIRTUAL_CURRENCY
.
getCode
()))
{
if
(
Objects
.
equals
(
item
.
getType
(),
OwnerLoanRecordEnum
.
LoanType
.
VIRTUAL_CURRENCY
.
getCode
()))
{
map
.
put
(
item
.
getName
(),
item
);
map
.
put
(
item
.
getName
(),
item
);
}
}
}
else
{
}
else
{
map
.
put
(
item
.
getName
(),
item
);
map
.
put
(
item
.
getName
(),
item
);
}
}
}
}
OwnerLoanRecordDetail
detail
=
new
OwnerLoanRecordDetail
();
OwnerLoanRecordDetail
detail
=
new
OwnerLoanRecordDetail
();
...
@@ -262,8 +305,8 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
...
@@ -262,8 +305,8 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
detail
.
setCompanyName
(
ownerInfoFeignVO
.
getCompanyName
());
detail
.
setCompanyName
(
ownerInfoFeignVO
.
getCompanyName
());
//收款方
//收款方
List
<
PayeeVO
>
payeeList
=
ClxPayeeConfig
.
payeeList
.
stream
().
map
(
List
<
PayeeVO
>
payeeList
=
ClxPayeeConfig
.
payeeList
.
stream
().
map
(
item
->
PayeeVO
.
builder
().
name
(
item
.
getName
()).
account
(
item
.
getAccount
()).
id
(
item
.
getId
()).
build
()
item
->
PayeeVO
.
builder
().
name
(
item
.
getName
()).
account
(
item
.
getAccount
()).
id
(
item
.
getId
()).
build
()
).
collect
(
Collectors
.
toList
());
).
collect
(
Collectors
.
toList
());
detail
.
setPayeeList
(
payeeList
);
detail
.
setPayeeList
(
payeeList
);
...
@@ -271,8 +314,6 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
...
@@ -271,8 +314,6 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
}
}
@Override
@Override
public
CarrierCashierInfoVO
getCashierInfo
(
Integer
id
)
{
public
CarrierCashierInfoVO
getCashierInfo
(
Integer
id
)
{
OwnerLoanRecord
ownerLoanRecord
=
ownerLoanRecordDao
.
getEntityByKey
(
id
).
orElseThrow
(
OwnerLoanRecord
ownerLoanRecord
=
ownerLoanRecordDao
.
getEntityByKey
(
id
).
orElseThrow
(
...
@@ -312,13 +353,14 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
...
@@ -312,13 +353,14 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
PerformanceResultEnum
.
DATA_NOT_FIND
);
PerformanceResultEnum
.
DATA_NOT_FIND
);
ExportOwnerLoanRecordVO
exportOwnerLoanRecordVO
=
ownerLoanRecordStruct
.
convert
(
ownerLoanRecord
);
ExportOwnerLoanRecordVO
exportOwnerLoanRecordVO
=
ownerLoanRecordStruct
.
convert
(
ownerLoanRecord
);
//货主借款: 收款方鑫祥和 付款方为诚联信 借款方为货主
//货主借款: 收款方鑫祥和 付款方为诚联信 借款方为货主
Map
<
String
,
String
>
map
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
exportOwnerLoanRecordVO
),
new
TypeReference
<
Map
<
String
,
String
>>(){});
Map
<
String
,
String
>
map
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
exportOwnerLoanRecordVO
),
new
TypeReference
<
Map
<
String
,
String
>>()
{
});
// 创建合同
// 创建合同
GenerateContractParam
feignParam
=
new
GenerateContractParam
();
GenerateContractParam
feignParam
=
new
GenerateContractParam
();
if
(
Objects
.
equals
(
OwnerRePaymentEnum
.
Channel
.
ORDER
.
getCode
(),
param
.
getPayWay
()))
{
if
(
Objects
.
equals
(
OwnerRePaymentEnum
.
Channel
.
ORDER
.
getCode
(),
param
.
getPayWay
()))
{
feignParam
.
setTemplateNo
(
paymentFromConfig
.
getLoanOrderTemplateNo
(
));
feignParam
.
setTemplateNo
(
Long
.
valueOf
(
paymentFromConfig
.
getLoanOrderTemplateNo
()
));
}
else
{
}
else
{
feignParam
.
setTemplateNo
(
paymentFromConfig
.
getLoanTransferTemplateNo
(
));
feignParam
.
setTemplateNo
(
Long
.
valueOf
(
paymentFromConfig
.
getLoanTransferTemplateNo
()
));
}
}
feignParam
.
setParametersValueMap
(
map
);
feignParam
.
setParametersValueMap
(
map
);
...
@@ -329,31 +371,38 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
...
@@ -329,31 +371,38 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
getLoanBalance
(
BigDecimal
orderChildPrice
,
Long
userNo
,
String
childNo
)
{
public
void
getLoanBalance
(
LoanBalanceDTO
param
)
{
BigDecimal
orderChildPrice
=
param
.
getOrderChildPrice
();
Long
userNo
=
param
.
getOwnerUserNo
();
String
childNo
=
param
.
getChildNo
();
log
.
info
(
"执行借款,借款金额{}, 货主编号:{}, 运单号:{}"
,
orderChildPrice
,
userNo
,
childNo
);
log
.
info
(
"执行借款,借款金额{}, 货主编号:{}, 运单号:{}"
,
orderChildPrice
,
userNo
,
childNo
);
//TODO 需要加锁处理
List
<
OwnerLoanRecord
>
updateList
=
new
LinkedList
<>();
List
<
OwnerLoanRecord
>
updateList
=
new
LinkedList
<>();
List
<
OwnerLoanRecord
>
ownerLoanRecords
=
ownerLoanRecordDao
.
selectLoanBalance
(
userNo
);
List
<
OwnerLoanRecord
>
ownerLoanRecords
=
ownerLoanRecordDao
.
selectLoanBalance
(
userNo
);
BigDecimal
orderChildPriceTemp
=
orderChildPrice
;
BigDecimal
orderChildPriceTemp
=
orderChildPrice
;
log
.
info
(
"查询ownerLoanRecords:{}"
,
JSONUtil
.
parse
(
ownerLoanRecords
));
for
(
OwnerLoanRecord
ownerLoanRecord
:
ownerLoanRecords
)
{
for
(
OwnerLoanRecord
ownerLoanRecord
:
ownerLoanRecords
)
{
BigDecimal
loanResidueBalance
=
ownerLoanRecord
.
getLoanResidueBalance
();
BigDecimal
loanResidueBalance
=
ownerLoanRecord
.
getLoanResidueBalance
();
log
.
info
(
"当前借款金额:{},借款单号{},借款剩余金额{}"
,
orderChildPriceTemp
,
ownerLoanRecord
.
getLoanNo
(),
loanResidueBalance
);
log
.
info
(
"当前借款金额:{},借款单号{},借款剩余金额{}"
,
orderChildPriceTemp
,
ownerLoanRecord
.
getLoanNo
(),
loanResidueBalance
);
if
(
loanResidueBalance
.
compareTo
(
orderChildPriceTemp
)
>=
0
)
{
if
(
loanResidueBalance
.
compareTo
(
orderChildPriceTemp
)
>=
0
)
{
log
.
info
(
"当前借款单的剩余金额足够借款金额"
);
log
.
info
(
"当前借款单的剩余金额足够借款金额"
);
generateFrozenOwnerLoanRunningWater
(
ownerLoanRecord
,
childNo
,
orderChildPrice
);
generateFrozenOwnerLoanRunningWater
(
ownerLoanRecord
,
childNo
,
orderChildPrice
Temp
);
updateList
.
add
(
ownerLoanRecord
.
setLoanResidueBalance
(
loanResidueBalance
.
subtract
(
orderChildPriceTemp
)));
updateList
.
add
(
ownerLoanRecord
.
setLoanResidueBalance
(
loanResidueBalance
.
subtract
(
orderChildPriceTemp
)));
orderChildPriceTemp
=
BigDecimal
.
ZERO
;
orderChildPriceTemp
=
BigDecimal
.
ZERO
;
break
;
break
;
}
else
{
}
else
{
log
.
info
(
"当前借款单的剩余金额不够抵扣借款金额,先进行扣除当前借款所有剩余"
);
log
.
info
(
"当前借款单的剩余金额不够抵扣借款金额,先进行扣除当前借款所有剩余"
);
generateFrozenOwnerLoanRunningWater
(
ownerLoanRecord
,
childNo
,
orderChildPri
ce
);
generateFrozenOwnerLoanRunningWater
(
ownerLoanRecord
,
childNo
,
loanResidueBalan
ce
);
updateList
.
add
(
ownerLoanRecord
.
setLoanResidueBalance
(
BigDecimal
.
ZERO
));
updateList
.
add
(
ownerLoanRecord
.
setLoanResidueBalance
(
BigDecimal
.
ZERO
));
orderChildPriceTemp
=
orderChildPriceTemp
.
subtract
(
loanResidueBalance
);
orderChildPriceTemp
=
orderChildPriceTemp
.
subtract
(
loanResidueBalance
);
}
}
log
.
info
(
"当前orderChildPriceTemp:{}"
,
orderChildPriceTemp
);
}
}
if
(
orderChildPriceTemp
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
if
(
orderChildPriceTemp
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SAVE_FAIL
,
"货主货款不足"
);
//当前钱不够,需要记录,流程卡死,不往下走
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"执行借款发现:货主货款不足"
);
}
}
for
(
OwnerLoanRecord
update
:
updateList
)
{
for
(
OwnerLoanRecord
update
:
updateList
)
{
...
@@ -362,6 +411,111 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
...
@@ -362,6 +411,111 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
log
.
info
(
"执行借款成功,借款金额{}, 货主编号:{}, 运单号:{}"
,
orderChildPrice
,
userNo
,
childNo
);
log
.
info
(
"执行借款成功,借款金额{}, 货主编号:{}, 运单号:{}"
,
orderChildPrice
,
userNo
,
childNo
);
}
}
@Override
public
void
updateOwnerLoanRecordPay
(
CarrierOwnerLoanRecordPayParam
param
)
{
}
@Override
public
void
updateOwnerLoanRecordRepay
(
CarrierOwnerLoanRecordRepayParam
param
)
{
OwnerLoanRecord
ownerLoanRecord
=
ownerLoanRecordDao
.
getOneByField
(
OwnerLoanRecord:
:
getLoanNo
,
param
.
getLoanNo
())
.
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
if
(!
Objects
.
equals
(
ownerLoanRecord
.
getStatus
(),
OwnerLoanRecordEnum
.
Status
.
PAY_FAIL
.
getCode
())){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
OWNER_LOAN_RECORD_PAY_STATUS_ERROR
);
}
borrowerConfigDao
.
selectByBorrowerIdAndType
(
ownerLoanRecord
.
getBorrowerId
(),
OwnerLoanRecordEnum
.
LoanType
.
FUND
.
getCode
())
.
orElseThrow
(
PerformanceResultEnum
.
BORROWER_CONFIG_TYPE_NOT_SUPPORT_ERROR
);
Borrower
borrower
=
borrowerDao
.
getEntityByKey
(
ownerLoanRecord
.
getBorrowerId
())
.
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
BankTrade
bankTrade
=
new
BankTrade
();
if
(
OwnerLoanRecordEnum
.
PayChannel
.
ORDER_DIRECT_PAY
.
getCode
().
equals
(
param
.
getPayChannel
()))
{
//资金 TODO 调宁波银企直连的产品,从诚联信账户中给鑫祥和执行转账
// 订单支付
NbBankOrderPayResultVO
orderPayResultVO
=
bankService
.
orderDirectPay
(
param
.
getLoanNo
(),
ownerLoanRecord
.
getLoanBalance
().
intValue
(),
borrower
.
getOpenBankId
(),
borrower
.
getBankCardNo
(),
borrower
.
getName
());
ownerLoanRecord
.
setRunningWaterOpenNo
(
orderPayResultVO
.
getTransSeqNo
());
ownerLoanRecord
.
setMerchantRunningWaterNo
(
orderPayResultVO
.
getMerSeqNo
());
ownerLoanRecord
.
setRemittanceIdentificationCode
(
null
);
ownerLoanRecord
.
setStatus
(
OwnerLoanRecordEnum
.
Status
.
PAYING
.
getCode
());
ownerLoanRecord
.
setLoanResidueBalance
(
ownerLoanRecord
.
getLoanBalance
());
ownerLoanRecord
.
setLendingParty
(
borrower
.
getName
());
ownerLoanRecord
.
setLendingPartyAccount
(
borrower
.
getBankCardNo
());
bankTrade
.
setTradeType
(
BankTradeEnum
.
TradeType
.
ORDER_DIRECT_PAY
.
getCode
());
}
else
{
//资金 TODO 调宁波银企直连的产品,从诚联信账户中给鑫祥和执行转账
// 转账支付
NbBankOrderPayResultVO
orderPayResultVO
=
bankService
.
orderTransferPay
(
ownerLoanRecord
.
getLoanBalance
().
intValue
());
ownerLoanRecord
.
setRunningWaterOpenNo
(
orderPayResultVO
.
getTransSeqNo
());
ownerLoanRecord
.
setMerchantRunningWaterNo
(
orderPayResultVO
.
getMerSeqNo
());
ownerLoanRecord
.
setRemittanceIdentificationCode
(
orderPayResultVO
.
getSignNo
());
ownerLoanRecord
.
setStatus
(
OwnerLoanRecordEnum
.
Status
.
PAYING
.
getCode
());
ownerLoanRecord
.
setLoanResidueBalance
(
ownerLoanRecord
.
getLoanBalance
());
ownerLoanRecord
.
setLendingParty
(
null
);
ownerLoanRecord
.
setLendingPartyAccount
(
null
);
bankTrade
.
setTradeType
(
BankTradeEnum
.
TradeType
.
ORDER_TRANSFER_PAY
.
getCode
());
}
// 更新借款支付信息
ownerLoanRecordDao
.
updatePay
(
ownerLoanRecord
);
bankTrade
.
setOrderType
(
BankTradeEnum
.
OrderType
.
OWNER_LOAN_RECORD
.
getCode
());
bankTrade
.
setAmount
(
ownerLoanRecord
.
getLoanBalance
());
bankTrade
.
setMerchantRunningWaterNo
(
ownerLoanRecord
.
getMerchantRunningWaterNo
());
bankTrade
.
setRunningWaterOpenNo
(
ownerLoanRecord
.
getRunningWaterOpenNo
());
// 保存银行交易记录
bankTradeDao
.
saveEntity
(
bankTrade
);
}
@Override
public
void
updateOwnerLoanRecordPayCancel
(
CarrierOwnerLoanRecordPayCancelParam
param
)
{
}
@Override
public
void
payFail
(
String
loanNo
){
OwnerLoanRecord
ownerLoanRecord
=
ownerLoanRecordDao
.
getOneByField
(
OwnerLoanRecord:
:
getLoanNo
,
loanNo
)
.
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
if
(
Objects
.
equals
(
ownerLoanRecord
.
getStatus
(),
OwnerLoanRecordEnum
.
Status
.
PAYING
.
getCode
())){
log
.
info
(
"借款单非支付中状态, loanNo:{}"
,
loanNo
);
return
;
}
ownerLoanRecord
.
setStatus
(
OwnerLoanRecordEnum
.
Status
.
PAY_FAIL
.
getCode
());
ownerLoanRecordDao
.
updatePaySuccess
(
ownerLoanRecord
);
}
@Override
public
void
paySuccess
(
String
loanNo
){
OwnerLoanRecord
ownerLoanRecord
=
ownerLoanRecordDao
.
getOneByField
(
OwnerLoanRecord:
:
getLoanNo
,
loanNo
)
.
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
if
(
Objects
.
equals
(
ownerLoanRecord
.
getStatus
(),
OwnerLoanRecordEnum
.
Status
.
PAYING
.
getCode
())){
log
.
info
(
"借款单非支付中状态, loanNo:{}"
,
loanNo
);
return
;
}
ownerLoanRecord
.
setStatus
(
OwnerLoanRecordEnum
.
Status
.
PAY_SUCCESS
.
getCode
());
ownerLoanRecordDao
.
updatePaySuccess
(
ownerLoanRecord
);
}
public
void
generateFrozenOwnerLoanRunningWater
(
OwnerLoanRecord
ownerLoanRecord
,
String
childNo
,
BigDecimal
orderChildPrice
)
{
public
void
generateFrozenOwnerLoanRunningWater
(
OwnerLoanRecord
ownerLoanRecord
,
String
childNo
,
BigDecimal
orderChildPrice
)
{
log
.
info
(
"13.生成借款冻结流水"
);
log
.
info
(
"13.生成借款冻结流水"
);
OwnerLoanAccount
update
=
new
OwnerLoanAccount
();
OwnerLoanAccount
update
=
new
OwnerLoanAccount
();
...
@@ -386,7 +540,9 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
...
@@ -386,7 +540,9 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
waterRecord
.
setUseAbleBalance
(
account
.
getVirtuallyUsableBalance
().
add
(
account
.
getFundingUsableBalance
()));
waterRecord
.
setUseAbleBalance
(
account
.
getVirtuallyUsableBalance
().
add
(
account
.
getFundingUsableBalance
()));
waterRecord
.
setFrozenBalance
(
account
.
getVirtuallyFrozenBalance
().
add
(
account
.
getFundingFrozenBalance
()));
waterRecord
.
setFrozenBalance
(
account
.
getVirtuallyFrozenBalance
().
add
(
account
.
getFundingFrozenBalance
()));
waterRecord
.
setCreateBy
(
"系统"
);
waterRecord
.
setCreateBy
(
"系统"
);
log
.
info
(
"开始生成流水"
);
ownerLoanAccountRunningWaterRecordDao
.
saveEntity
(
waterRecord
);
ownerLoanAccountRunningWaterRecordDao
.
saveEntity
(
waterRecord
);
log
.
info
(
"生成流水成功"
);
break
;
break
;
}
}
}
}
...
...
performance-web/src/main/java/com/clx/performance/service/impl/loan/OwnerRepaymentServiceImpl.java
浏览文件 @
33f09f63
...
@@ -108,9 +108,9 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
...
@@ -108,9 +108,9 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
// 创建合同
// 创建合同
GenerateContractParam
feignParam
=
new
GenerateContractParam
();
GenerateContractParam
feignParam
=
new
GenerateContractParam
();
if
(
Objects
.
equals
(
OwnerRePaymentEnum
.
Channel
.
ORDER
.
getCode
(),
param
.
getPayWay
())){
if
(
Objects
.
equals
(
OwnerRePaymentEnum
.
Channel
.
ORDER
.
getCode
(),
param
.
getPayWay
())){
feignParam
.
setTemplateNo
(
paymentFromConfig
.
getRepaymentOrderTemplateNo
(
));
feignParam
.
setTemplateNo
(
Long
.
valueOf
(
paymentFromConfig
.
getRepaymentOrderTemplateNo
()
));
}
else
{
}
else
{
feignParam
.
setTemplateNo
(
paymentFromConfig
.
getRepaymentTransferTemplateNo
(
));
feignParam
.
setTemplateNo
(
Long
.
valueOf
(
paymentFromConfig
.
getRepaymentTransferTemplateNo
()
));
}
}
feignParam
.
setParametersValueMap
(
map
);
feignParam
.
setParametersValueMap
(
map
);
...
...
performance-web/src/main/java/com/clx/performance/service/impl/thirdparty/nbbank/NbBankServiceImpl.java
浏览文件 @
33f09f63
...
@@ -2,11 +2,16 @@ package com.clx.performance.service.impl.thirdparty.nbbank;
...
@@ -2,11 +2,16 @@ package com.clx.performance.service.impl.thirdparty.nbbank;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.clx.performance.component.IdGenerateSnowFlake
;
import
com.clx.performance.component.IdGenerateSnowFlake
;
import
com.clx.performance.dao.loan.BankTradeDao
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.loan.BankTradeEnum
;
import
com.clx.performance.enums.nbbank.NbBankStatusEnum
;
import
com.clx.performance.enums.nbbank.NbBankStatusEnum
;
import
com.clx.performance.model.loan.BankTrade
;
import
com.clx.performance.service.loan.OwnerLoanRecordService
;
import
com.clx.performance.service.thirdparty.nbbank.NbBankService
;
import
com.clx.performance.service.thirdparty.nbbank.NbBankService
;
import
com.clx.performance.service.thirdparty.nbbank.NbBankThirdpartyService
;
import
com.clx.performance.service.thirdparty.nbbank.NbBankThirdpartyService
;
import
com.clx.performance.utils.LocalDateTimeUtils
;
import
com.clx.performance.utils.LocalDateTimeUtils
;
import
com.clx.performance.utils.SpringContextUtils
;
import
com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO
;
import
com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO
;
import
com.clx.performance.vo.pc.nbbank.NbBankOrderResultVO
;
import
com.clx.performance.vo.pc.nbbank.NbBankOrderResultVO
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.exception.ServiceSystemException
;
...
@@ -16,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -16,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.Objects
;
/**
/**
* 易付通
* 易付通
...
@@ -24,6 +30,9 @@ import java.math.BigDecimal;
...
@@ -24,6 +30,9 @@ import java.math.BigDecimal;
@Service
@Service
public
class
NbBankServiceImpl
implements
NbBankService
{
public
class
NbBankServiceImpl
implements
NbBankService
{
@Autowired
private
BankTradeDao
bankTradeDao
;
@Autowired
@Autowired
private
NbBankThirdpartyService
bankThirdpartyService
;
private
NbBankThirdpartyService
bankThirdpartyService
;
...
@@ -69,7 +78,7 @@ public class NbBankServiceImpl implements NbBankService {
...
@@ -69,7 +78,7 @@ public class NbBankServiceImpl implements NbBankService {
@Override
@Override
public
NbBankOrderPayResultVO
orderDirectPay
(
Long
loanNo
,
Integer
amount
,
public
NbBankOrderPayResultVO
orderDirectPay
(
Long
loanNo
,
Integer
amount
,
String
payAcctOpenBankId
,
String
payAcctNo
,
String
payAcctNm
)
{
String
payAcctOpenBankId
,
String
payAcctNo
,
String
payAcctNm
)
{
String
merSeqNo
=
idGenerateSnowFlake
.
nextIdToString
(
3L
);
String
merSeqNo
=
String
.
valueOf
(
loanNo
);
String
merDtTm
=
LocalDateTimeUtils
.
formatTime
();
String
merDtTm
=
LocalDateTimeUtils
.
formatTime
();
String
closeDtTm
=
LocalDateTimeUtils
.
formatTime
(
LocalDateTimeUtils
.
parseTime
(
merDtTm
).
plusDays
(
30
));
String
closeDtTm
=
LocalDateTimeUtils
.
formatTime
(
LocalDateTimeUtils
.
parseTime
(
merDtTm
).
plusDays
(
30
));
...
@@ -214,6 +223,30 @@ public class NbBankServiceImpl implements NbBankService {
...
@@ -214,6 +223,30 @@ public class NbBankServiceImpl implements NbBankService {
log
.
info
(
"宁波银行支付回调, merSeqNo:{}, transSeqNo:{}, trxAmt:{}, realTrxAmt:{}, transSeqNo:{}, signNo:{}"
,
log
.
info
(
"宁波银行支付回调, merSeqNo:{}, transSeqNo:{}, trxAmt:{}, realTrxAmt:{}, transSeqNo:{}, signNo:{}"
,
merSeqNo
,
transSeqNo
,
trxAmt
,
realTrxAmt
,
transStatus
,
signNo
);
merSeqNo
,
transSeqNo
,
trxAmt
,
realTrxAmt
,
transStatus
,
signNo
);
BankTrade
bankTrade
=
bankTradeDao
.
selectByMerchantRunningWaterNo
(
merSeqNo
).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
bankTrade
.
setStatus
(
transStatus
);
// 更新状态
bankTradeDao
.
updateStatus
(
bankTrade
);
// 货主借款支付回调
if
(
Objects
.
equals
(
bankTrade
.
getOrderType
(),
BankTradeEnum
.
OrderType
.
OWNER_LOAN_RECORD
.
getCode
())){
if
(
Objects
.
equals
(
transStatus
,
NbBankStatusEnum
.
Status
.
SUCCESS
.
getCode
()))
{
SpringContextUtils
.
getBeanByClass
(
OwnerLoanRecordService
.
class
).
paySuccess
(
merSeqNo
);
}
else
if
(
Objects
.
equals
(
transStatus
,
NbBankStatusEnum
.
Status
.
FAIL
.
getCode
()))
{
SpringContextUtils
.
getBeanByClass
(
OwnerLoanRecordService
.
class
).
payFail
(
merSeqNo
);
}
else
{
// TODO 其它情况
}
}
else
{
}
}
}
/**
/**
...
...
performance-web/src/main/java/com/clx/performance/service/loan/OwnerLoanRecordService.java
浏览文件 @
33f09f63
package
com
.
clx
.
performance
.
service
.
loan
;
package
com
.
clx
.
performance
.
service
.
loan
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.param.pc.loan.carrier.CarrierOwnerLoanRecordApproveParam
;
import
com.clx.performance.dto.LoanBalanceDTO
;
import
com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam
;
import
com.clx.performance.param.pc.loan.carrier.*
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner
;
import
com.clx.performance.param.pc.loan.owner.ExportPaymentApplicationFormParam
;
import
com.clx.performance.param.pc.loan.owner.ExportPaymentApplicationFormParam
;
import
com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam
;
import
com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO
;
import
com.clx.performance.vo.pc.loan.carrier.CarrierCashierInfoVO
;
import
com.clx.performance.vo.pc.loan.carrier.CarrierCashierInfoVO
;
import
com.clx.performance.vo.pc.loan.carrier.CarrierTransferPaymentDetailVO
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerOrderPaymentDetailVO
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerOrderPaymentDetailVO
;
import
com.clx.performance.vo.pc.loan.owner.OwnerLoanRecordDetail
;
import
com.clx.performance.vo.pc.loan.owner.OwnerLoanRecordDetail
;
import
com.clx.performance.vo.pc.loan.carrier.CarrierTransferPaymentDetailVO
;
import
java.math.BigDecimal
;
/**
/**
* @author kavin
* @author kavin
...
@@ -38,5 +37,12 @@ public interface OwnerLoanRecordService {
...
@@ -38,5 +37,12 @@ public interface OwnerLoanRecordService {
String
savePaymentApplicationForm
(
ExportPaymentApplicationFormParam
param
);
String
savePaymentApplicationForm
(
ExportPaymentApplicationFormParam
param
);
void
getLoanBalance
(
BigDecimal
orderChildPrice
,
Long
userNo
,
String
childNo
);
void
getLoanBalance
(
LoanBalanceDTO
param
);
void
updateOwnerLoanRecordPay
(
CarrierOwnerLoanRecordPayParam
param
);
void
updateOwnerLoanRecordRepay
(
CarrierOwnerLoanRecordRepayParam
param
);
void
updateOwnerLoanRecordPayCancel
(
CarrierOwnerLoanRecordPayCancelParam
param
);
void
payFail
(
String
loanNo
);
void
paySuccess
(
String
loanNo
);
}
}
performance-web/src/main/java/com/clx/performance/sqlProvider/loan/OwnerLoanRecordSqlProvider.java
浏览文件 @
33f09f63
...
@@ -19,7 +19,7 @@ public class OwnerLoanRecordSqlProvider {
...
@@ -19,7 +19,7 @@ public class OwnerLoanRecordSqlProvider {
" running_water_open_no as runningWaterOpenNo, merchant_running_water_no as merchantRunningWaterNo, "
+
" running_water_open_no as runningWaterOpenNo, merchant_running_water_no as merchantRunningWaterNo, "
+
" loan_no as loanNo, loan_type as loanType, loan_balance as loanBalance, "
+
" loan_no as loanNo, loan_type as loanType, loan_balance as loanBalance, "
+
" borrower, borrower_account as borrowerAccount, remittance_identification_code as remittanceIdentificationCode, "
+
" borrower, borrower_account as borrowerAccount, remittance_identification_code as remittanceIdentificationCode, "
+
" lending_party as lendingParty, lending_party_account as lendingPartyAccount, "
+
" lending_party
_id as lendingPartyId, lending_party
as lendingParty, lending_party_account as lendingPartyAccount, "
+
" payee, payee_account as payeeAccount, "
+
" payee, payee_account as payeeAccount, "
+
" status, "
+
" status, "
+
" date_format(approve_time, '%Y-%m-%d %H:%i:%s') as approveTime, approve_by as approveBy, "
+
" date_format(approve_time, '%Y-%m-%d %H:%i:%s') as approveTime, approve_by as approveBy, "
+
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论