Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
94b45f9e
提交
94b45f9e
authored
2月 04, 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
上级
81c9d39f
447715a2
隐藏空白字符变更
内嵌
并排
正在显示
23 个修改的文件
包含
241 行增加
和
84 行删除
+241
-84
OwnerLoanAccountRunningWaterRecordEnum.java
...ce/enums/loan/OwnerLoanAccountRunningWaterRecordEnum.java
+4
-2
OwnerLoanAccountVO.java
...lx/performance/vo/pc/loan/carrier/OwnerLoanAccountVO.java
+22
-5
OrderChildLoanComponent.java
...om/clx/performance/component/OrderChildLoanComponent.java
+135
-8
OwnerLoanAccountDaoImpl.java
...lx/performance/dao/impl/loan/OwnerLoanAccountDaoImpl.java
+1
-2
OwnerLoanRecordDaoImpl.java
...clx/performance/dao/impl/loan/OwnerLoanRecordDaoImpl.java
+17
-0
OwnerLoanRecordDao.java
...java/com/clx/performance/dao/loan/OwnerLoanRecordDao.java
+3
-0
OrderChildSyncTransportListener.java
...performance/listener/OrderChildSyncTransportListener.java
+3
-0
BorrowerConfigMapper.java
...com/clx/performance/mapper/loan/BorrowerConfigMapper.java
+1
-1
BorrowerMapper.java
.../java/com/clx/performance/mapper/loan/BorrowerMapper.java
+1
-1
OwnerLoanAccountMapper.java
...m/clx/performance/mapper/loan/OwnerLoanAccountMapper.java
+9
-7
OwnerLoanAccountRunningWaterRecordMapper.java
...mapper/loan/OwnerLoanAccountRunningWaterRecordMapper.java
+1
-1
OwnerLoanRecordMapper.java
...om/clx/performance/mapper/loan/OwnerLoanRecordMapper.java
+1
-1
OwnerRepaymentMapper.java
...com/clx/performance/mapper/loan/OwnerRepaymentMapper.java
+1
-1
OwnerLoanRecord.java
.../java/com/clx/performance/model/loan/OwnerLoanRecord.java
+4
-0
OrderChildServiceImpl.java
...m/clx/performance/service/impl/OrderChildServiceImpl.java
+4
-14
OwnerLoanRecordServiceImpl.java
...ormance/service/impl/loan/OwnerLoanRecordServiceImpl.java
+2
-1
OwnerLoanAccountSqlProvider.java
...nce/sqlProvider/borrower/OwnerLoanAccountSqlProvider.java
+0
-35
BorrowerConfigSqlProvider.java
...rformance/sqlProvider/loan/BorrowerConfigSqlProvider.java
+1
-1
BorrowerSqlProvider.java
...clx/performance/sqlProvider/loan/BorrowerSqlProvider.java
+1
-1
OwnerLoanAccountRunningWaterRecordSqlProvider.java
...r/loan/OwnerLoanAccountRunningWaterRecordSqlProvider.java
+1
-1
OwnerLoanAccountSqlProvider.java
...ormance/sqlProvider/loan/OwnerLoanAccountSqlProvider.java
+27
-0
OwnerLoanRecordSqlProvider.java
...formance/sqlProvider/loan/OwnerLoanRecordSqlProvider.java
+1
-1
OwnerRepaymentSqlProvider.java
...rformance/sqlProvider/loan/OwnerRepaymentSqlProvider.java
+1
-1
没有找到文件。
performance-api/src/main/java/com/clx/performance/enums/loan/OwnerLoanAccountRunningWaterRecordEnum.java
浏览文件 @
94b45f9e
...
...
@@ -14,8 +14,10 @@ public enum OwnerLoanAccountRunningWaterRecordEnum {
@Getter
@AllArgsConstructor
public
enum
RunWaterType
{
APPROVE_WAIT
(
10
,
"运单核销"
),
APPROVE_PASS
(
20
,
"借款"
),
APPROVE_WAIT
(
10
,
"借款"
),
APPROVE_FROZEN
(
20
,
"冻结"
),
APPROVE_CHILD_WRITE_OFF
(
30
,
"运单核销"
),
APPROVE_THAW
(
40
,
"解冻"
),
;
private
final
Integer
code
;
...
...
performance-api/src/main/java/com/clx/performance/vo/pc/loan/carrier/OwnerLoanAccountVO.java
浏览文件 @
94b45f9e
...
...
@@ -37,7 +37,7 @@ public class OwnerLoanAccountVO {
@ApiModelProperty
(
value
=
"账户余额 (元) "
,
example
=
"1.23"
)
private
BigDecimal
amount
;
public
BigDecimal
getAmount
()
{
return
BigDecimal
.
ZERO
.
add
(
fundingA
mount
==
null
?
BigDecimal
.
ZERO
:
fundingAmount
).
add
(
virtuallyAmount
==
null
?
BigDecimal
.
ZERO
:
virtuallyAmount
);
return
BigDecimal
.
ZERO
.
add
(
fundingA
ccountBalance
==
null
?
BigDecimal
.
ZERO
:
fundingAccountBalance
).
add
(
virtuallyAccountBalance
==
null
?
BigDecimal
.
ZERO
:
virtuallyAccountBalance
);
}
@ApiModelProperty
(
value
=
"欠款金额 (元)"
,
example
=
"1.23"
)
...
...
@@ -52,13 +52,30 @@ public class OwnerLoanAccountVO {
private
String
createTime
;
@JsonIgnore
@ApiModelProperty
(
value
=
"资金
金额"
,
example
=
"1.23
"
,
hidden
=
true
)
@ApiModelProperty
(
value
=
"资金
账户余额"
,
example
=
"
"
,
hidden
=
true
)
@MoneyOutConvert
private
BigDecimal
fundingA
mount
;
private
BigDecimal
fundingA
ccountBalance
;
@JsonIgnore
@ApiModelProperty
(
value
=
"
虚拟币金额"
,
example
=
"1.23
"
,
hidden
=
true
)
@ApiModelProperty
(
value
=
"
资金可用余额"
,
example
=
"
"
,
hidden
=
true
)
@MoneyOutConvert
private
BigDecimal
virtuallyAmount
;
private
BigDecimal
fundingUsableBalance
;
@JsonIgnore
@ApiModelProperty
(
value
=
"资金冻结余额"
,
example
=
""
,
hidden
=
true
)
@MoneyOutConvert
private
BigDecimal
fundingFrozenBalance
;
@JsonIgnore
@ApiModelProperty
(
value
=
"虚拟币账户余额"
,
example
=
""
,
hidden
=
true
)
@MoneyOutConvert
private
BigDecimal
virtuallyAccountBalance
;
@JsonIgnore
@ApiModelProperty
(
value
=
"虚拟币可用余额"
,
example
=
""
,
hidden
=
true
)
@MoneyOutConvert
private
BigDecimal
virtuallyUsableBalance
;
@JsonIgnore
@ApiModelProperty
(
value
=
"虚拟币冻结余额"
,
example
=
""
,
hidden
=
true
)
@MoneyOutConvert
private
BigDecimal
virtuallyFrozenBalance
;
@JsonIgnore
@ApiModelProperty
(
value
=
"资金欠款"
,
example
=
"1.23"
,
hidden
=
true
)
@MoneyOutConvert
...
...
performance-web/src/main/java/com/clx/performance/component/OrderChildLoanComponent.java
浏览文件 @
94b45f9e
package
com
.
clx
.
performance
.
component
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.vo.feign.FeignOrderInfoVO
;
import
com.clx.order.vo.pc.owner.OwnerQuotationDetailVO
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OwnerRunningWaterRecordDao
;
import
com.clx.performance.dao.loan.OwnerLoanAccountDao
;
import
com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao
;
import
com.clx.performance.dao.loan.OwnerLoanRecordDao
;
import
com.clx.performance.dao.loan.OwnerRepaymentDao
;
import
com.clx.performance.enums.OrderGoodsOverWeightEnum
;
import
com.clx.performance.enums.OwnerAccountEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.loan.OwnerLoanAccountRunningWaterRecordEnum
;
import
com.clx.performance.enums.loan.OwnerLoanRecordEnum
;
import
com.clx.performance.enums.loan.OwnerRePaymentEnum
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.model.OwnerRunningWaterRecord
;
import
com.clx.performance.model.loan.OwnerLoanAccount
;
import
com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord
;
import
com.clx.performance.model.loan.OwnerLoanRecord
;
import
com.clx.performance.model.loan.OwnerRepayment
;
import
com.clx.user.vo.feign.OwnerInfoFeignVO
;
import
com.msl.common.base.Optional
;
import
com.msl.common.exception.ServiceSystemException
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.LinkedList
;
import
java.util.List
;
@Component
@AllArgsConstructor
@Slf4j
public
class
OrderChildLoanComponent
{
private
final
OrderFeign
orderFeign
;
...
...
@@ -40,26 +52,46 @@ public class OrderChildLoanComponent {
private
final
OwnerRepaymentDao
ownerRepaymentDao
;
public
void
getChildDetermine
(
FeignOrderInfoVO
orderInfoVO
,
OwnerInfoFeignVO
ownerInfoFeignVO
,
OrderGoods
orderGoods
)
{
private
final
OwnerLoanRecordDao
ownerLoanRecordDao
;
private
final
IdGenerateSnowFlake
idGenerateSnowFlake
;
private
final
OwnerLoanAccountRunningWaterRecordDao
ownerLoanAccountRunningWaterRecordDao
;
/**
* 接单校验判断
* @param orderInfoVO
* @param ownerInfoFeignVO
* @param orderGoods
* @param childNo
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
getChildDetermine
(
FeignOrderInfoVO
orderInfoVO
,
OwnerInfoFeignVO
ownerInfoFeignVO
,
OrderGoods
orderGoods
,
String
childNo
)
{
log
.
info
(
"1.接单校验判断"
);
OwnerQuotationDetailVO
quotationDetailVO
=
orderFeign
.
getQuotationByOrderNo
(
orderInfoVO
.
getOrderNo
()).
getData
();
BigDecimal
freightFreezeRate
=
quotationDetailVO
.
getFreightFreezeRate
();
if
(
freightFreezeRate
.
compareTo
(
BigDecimal
.
ONE
)
==
0
)
{
//百分百预付不需要考虑借款账户
log
.
info
(
"2.百分百预付不需要考虑借款账户"
);
return
;
}
//发货-是否可超标准 0 否 1 是
Integer
overWeight
=
orderInfoVO
.
getOverWeight
();
if
(
OrderGoodsOverWeightEnum
.
NO
.
getCode
().
equals
(
overWeight
))
{
determine
(
orderGoods
.
getPendingOrderFreight
().
multiply
(
new
BigDecimal
(
35
)));
log
.
info
(
"3.进行标吨判断"
);
determine
(
orderGoods
.
getPendingOrderFreight
().
multiply
(
new
BigDecimal
(
35
)),
ownerInfoFeignVO
,
orderGoods
.
getOrderNo
(),
childNo
);
}
else
{
determine
(
orderGoods
.
getPendingOrderFreight
().
multiply
(
new
BigDecimal
(
50
)));
log
.
info
(
"3.进行超吨判断"
);
determine
(
orderGoods
.
getPendingOrderFreight
().
multiply
(
new
BigDecimal
(
50
)),
ownerInfoFeignVO
,
orderGoods
.
getOrderNo
(),
childNo
);
}
}
public
void
determine
(
BigDecimal
orderChildPrice
)
{
List
<
OwnerRunningWaterRecord
>
runningWaterRecordList
=
ownerRunningWaterRecordDao
.
getOwnerRunningWaterRecord
(
""
);
public
void
determine
(
BigDecimal
orderChildPrice
,
OwnerInfoFeignVO
ownerInfoFeignVO
,
String
orderNo
,
String
childNo
)
{
log
.
info
(
"4.预估运费{},货主{},订单号{},运单号{}"
,
orderChildPrice
,
ownerInfoFeignVO
.
getUserNo
(),
orderNo
,
childNo
);
List
<
OwnerRunningWaterRecord
>
runningWaterRecordList
=
ownerRunningWaterRecordDao
.
getOwnerRunningWaterRecord
(
orderNo
);
BigDecimal
frozen
=
runningWaterRecordList
.
stream
().
filter
(
item
->
{
return
item
.
getRunningWaterType
().
equals
(
OwnerAccountEnum
.
RunningWaterStatus
.
FROZEN
.
getCode
())
&&
item
.
getAccountType
().
equals
(
OwnerAccountEnum
.
AccountTypeStatus
.
PREPAID_FREIGHT_ACCOUNT
.
getCode
())
...
...
@@ -72,30 +104,125 @@ public class OrderChildLoanComponent {
;
}).
map
(
OwnerRunningWaterRecord:
:
getAlterationBalance
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
BigDecimal
subtract
=
frozen
.
subtract
(
takeOut
);
log
.
info
(
"5.查询预付运费相关流水:订单冻结预付运费{}, 扣除流水{}"
,
frozen
,
takeOut
);
if
(
subtract
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
//查询未结算的运单(没有产生扣除流水的运单)
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
selectInTransitOrderChildLtUnsettle
(
""
);
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
selectInTransitOrderChildLtUnsettle
(
orderNo
);
BigDecimal
orderChildSum
=
orderChildList
.
stream
().
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
BigDecimal
ans
=
subtract
.
subtract
(
orderChildSum
);
log
.
info
(
"6.当前订单冻结的预付运费还有剩余, 查询查询未结算的运单(没有产生扣除流水的运单)总计{},账户剩余{}"
,
orderChildSum
,
subtract
);
if
(
ans
.
compareTo
(
BigDecimal
.
ZERO
)
>=
0
&&
ans
.
compareTo
(
orderChildPrice
)
>=
0
)
{
//预付运费够
log
.
info
(
"7.预付运费足够,不限制"
);
return
;
}
}
log
.
info
(
"8.预付运费不够,开始进行借款判断"
);
// 进行借款判断
OwnerLoanAccount
ownerLoanAccount
=
ownerLoanAccountDao
.
getOneByField
(
OwnerLoanAccount:
:
getOwnerUserNo
,
null
).
get
();
OwnerLoanAccount
ownerLoanAccount
=
ownerLoanAccountDao
.
getOneByField
(
OwnerLoanAccount:
:
getOwnerUserNo
,
ownerInfoFeignVO
.
getUserNo
()
).
get
();
BigDecimal
ownerLoanAccountSum
=
ownerLoanAccount
.
getVirtuallyUsableBalance
().
add
(
ownerLoanAccount
.
getFundingUsableBalance
());
if
(
ownerLoanAccountSum
.
compareTo
(
orderChildPrice
)
<
0
)
{
log
.
info
(
"9.当前货主借款账户总计{},小于预估运费{}"
,
ownerLoanAccountSum
,
orderChildPrice
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SAVE_FAIL
,
"货主已欠款"
);
}
//借款账户钱够,判断是否逾期
log
.
info
(
"10.借款账户钱够,判断是否逾期"
);
Optional
<
OwnerRepayment
>
optional
=
ownerRepaymentDao
.
getLimitOneByField
(
OwnerRepayment:
:
getBeOverdue
,
OwnerRePaymentEnum
.
BeOverdue
.
YES
.
getCode
());
if
(
optional
.
isPresent
())
{
//逾期:不允许
log
.
info
(
"11.当前货主存在逾期借款"
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_SAVE_FAIL
,
"货主已欠款"
);
}
List
<
OwnerLoanRecord
>
updateList
=
new
LinkedList
<>();
//查询审批通过并且未用完的借款
List
<
OwnerLoanRecord
>
ownerLoanRecords
=
ownerLoanRecordDao
.
selectLoanBalance
(
ownerInfoFeignVO
.
getUserNo
());
BigDecimal
orderChildPriceTemp
=
orderChildPrice
;
for
(
OwnerLoanRecord
ownerLoanRecord
:
ownerLoanRecords
)
{
BigDecimal
loanResidueBalance
=
ownerLoanRecord
.
getLoanResidueBalance
();
log
.
info
(
"12.当前预估运费金额:{},借款单号{},借款剩余金额{}"
,
orderChildPriceTemp
,
ownerLoanRecord
.
getLoanNo
(),
loanResidueBalance
);
if
(
loanResidueBalance
.
compareTo
(
orderChildPriceTemp
)
>=
0
)
{
log
.
info
(
"当前借款单的剩余金额足够预估运费金额"
);
generateFrozenOwnerLoanRunningWater
(
ownerLoanRecord
,
childNo
,
orderChildPrice
);
updateList
.
add
(
ownerLoanRecord
.
setLoanResidueBalance
(
loanResidueBalance
.
subtract
(
orderChildPriceTemp
)));
break
;
}
else
{
log
.
info
(
"当前借款单的剩余金额不够抵扣预估运费金额,先进行扣除当前借款所有剩余"
);
generateFrozenOwnerLoanRunningWater
(
ownerLoanRecord
,
childNo
,
orderChildPrice
);
updateList
.
add
(
ownerLoanRecord
.
setLoanResidueBalance
(
BigDecimal
.
ZERO
));
orderChildPriceTemp
=
orderChildPriceTemp
.
subtract
(
loanResidueBalance
);
}
}
for
(
OwnerLoanRecord
update
:
updateList
)
{
ownerLoanRecordDao
.
updateEntityByKey
(
update
);
}
}
//生成借款冻结流水
public
void
generateFrozenOwnerLoanRunningWater
(
OwnerLoanRecord
ownerLoanRecord
,
String
childNo
,
BigDecimal
orderChildPrice
)
{
log
.
info
(
"13.生成借款冻结流水"
);
OwnerLoanAccount
update
=
new
OwnerLoanAccount
();
while
(
true
)
{
ownerLoanAccountUpdate
(
ownerLoanRecord
,
orderChildPrice
,
update
);
Integer
i
=
ownerLoanAccountDao
.
updateAccountCAS
(
update
,
LocalDateTime
.
now
(),
false
);
log
.
info
(
"CAS更新结果:{}"
,
i
);
if
(
i
==
1
)
{
OwnerLoanAccountRunningWaterRecord
waterRecord
=
new
OwnerLoanAccountRunningWaterRecord
();
waterRecord
.
setLoanNo
(
ownerLoanRecord
.
getLoanNo
());
waterRecord
.
setOwnerUserName
(
ownerLoanRecord
.
getOwnerUserName
());
waterRecord
.
setOwnerUserNo
(
ownerLoanRecord
.
getOwnerUserNo
());
waterRecord
.
setMobile
(
ownerLoanRecord
.
getMobile
());
waterRecord
.
setRunningWaterNo
(
idGenerateSnowFlake
.
nextId
(
1L
));
waterRecord
.
setChildNo
(
childNo
);
waterRecord
.
setRunningWaterType
(
OwnerLoanAccountRunningWaterRecordEnum
.
RunWaterType
.
APPROVE_FROZEN
.
getCode
());
waterRecord
.
setAccountBalance
(
orderChildPrice
);
OwnerLoanAccount
account
=
ownerLoanAccountDao
.
getOneByField
(
OwnerLoanAccount:
:
getOwnerUserNo
,
ownerLoanRecord
.
getOwnerUserNo
()).
get
();
waterRecord
.
setAccountBalance
(
account
.
getVirtuallyAccountBalance
().
add
(
account
.
getFundingAccountBalance
()));
waterRecord
.
setUseableBalance
(
account
.
getVirtuallyUsableBalance
().
add
(
account
.
getFundingUsableBalance
()));
waterRecord
.
setCreateBy
(
"系统"
);
log
.
info
(
"14.生成借款账户流水信息:{}"
,
JSONUtil
.
parse
(
waterRecord
));
ownerLoanAccountRunningWaterRecordDao
.
saveEntity
(
waterRecord
);
break
;
}
}
}
//借款账户信息更新
public
void
ownerLoanAccountUpdate
(
OwnerLoanRecord
ownerLoanRecord
,
BigDecimal
orderChildPrice
,
OwnerLoanAccount
update
)
{
log
.
info
(
"执行CAS前置借款账户信息赋值"
);
Integer
loanType
=
ownerLoanRecord
.
getLoanType
();
OwnerLoanAccount
account
=
ownerLoanAccountDao
.
getOneByField
(
OwnerLoanAccount:
:
getOwnerUserNo
,
ownerLoanRecord
.
getOwnerUserNo
()).
get
();
if
(
OwnerLoanRecordEnum
.
LoanType
.
VIRTUAL_CURRENCY
.
getCode
().
equals
(
loanType
))
{
log
.
info
(
"进行虚拟货币信息赋值"
);
update
.
setId
(
account
.
getId
());
update
.
setModifiedTime
(
account
.
getModifiedTime
());
update
.
setVirtuallyFrozenBalance
(
orderChildPrice
);
update
.
setVirtuallyUsableBalance
(
orderChildPrice
);
update
.
setVirtuallyAccountBalance
(
BigDecimal
.
ZERO
);
update
.
setFundingAccountBalance
(
BigDecimal
.
ZERO
);
update
.
setFundingFrozenBalance
(
BigDecimal
.
ZERO
);
update
.
setFundingUsableBalance
(
BigDecimal
.
ZERO
);
}
else
{
log
.
info
(
"进行资金信息赋值"
);
update
.
setId
(
account
.
getId
());
update
.
setModifiedTime
(
account
.
getModifiedTime
());
update
.
setFundingFrozenBalance
(
orderChildPrice
);
update
.
setFundingUsableBalance
(
orderChildPrice
);
update
.
setFundingAccountBalance
(
BigDecimal
.
ZERO
);
update
.
setVirtuallyFrozenBalance
(
BigDecimal
.
ZERO
);
update
.
setVirtuallyUsableBalance
(
BigDecimal
.
ZERO
);
update
.
setVirtuallyAccountBalance
(
BigDecimal
.
ZERO
);
}
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/loan/OwnerLoanAccountDaoImpl.java
浏览文件 @
94b45f9e
...
...
@@ -27,8 +27,7 @@ public class OwnerLoanAccountDaoImpl extends BaseDaoImpl<OwnerLoanAccountMapper,
if
(
flag
)
{
return
baseMapper
.
addAccount
(
account
,
nowStr
);
}
else
{
return
null
;
// return baseMapper.subAccount(account, nowStr);
return
baseMapper
.
subAccount
(
account
,
nowStr
);
}
}
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/loan/OwnerLoanRecordDaoImpl.java
浏览文件 @
94b45f9e
...
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.dao.loan.OwnerLoanRecordDao
;
import
com.clx.performance.enums.loan.OwnerLoanRecordEnum
;
import
com.clx.performance.mapper.loan.OwnerLoanRecordMapper
;
import
com.clx.performance.model.loan.OwnerLoanRecord
;
import
com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerLoanRecordParam
;
...
...
@@ -13,6 +14,7 @@ import com.msl.common.dao.impl.BaseDaoImpl;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
import
java.util.Objects
;
/**
...
...
@@ -53,4 +55,19 @@ public class OwnerLoanRecordDaoImpl extends BaseDaoImpl<OwnerLoanRecordMapper, O
return
baseMapper
.
pageByParam
(
page
,
param
);
}
/**
* 查询审批通过并且未用完的借款
* @param userNo
* @return
*/
@Override
public
List
<
OwnerLoanRecord
>
selectLoanBalance
(
Long
userNo
)
{
return
baseMapper
.
selectList
(
lQrWrapper
().
eq
(
OwnerLoanRecord:
:
getStatus
,
OwnerLoanRecordEnum
.
Status
.
APPROVE_PASS
.
getCode
())
.
eq
(
OwnerLoanRecord:
:
getOwnerUserNo
,
userNo
)
.
gt
(
OwnerLoanRecord:
:
getLoanResidueBalance
,
0
)
.
orderByAsc
(
OwnerLoanRecord:
:
getId
)
);
}
}
performance-web/src/main/java/com/clx/performance/dao/loan/OwnerLoanRecordDao.java
浏览文件 @
94b45f9e
...
...
@@ -8,6 +8,8 @@ import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner;
import
com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO
;
import
com.msl.common.dao.BaseDao
;
import
java.util.List
;
/**
* @author kavin
...
...
@@ -19,4 +21,5 @@ public interface OwnerLoanRecordDao extends BaseDao<OwnerLoanRecordMapper, Owner
IPage
<
OwnerLoanRecordVO
>
pageByParam
(
PageOwnerLoanRecordOfOwner
param
);
List
<
OwnerLoanRecord
>
selectLoanBalance
(
Long
userNo
);
}
performance-web/src/main/java/com/clx/performance/listener/OrderChildSyncTransportListener.java
浏览文件 @
94b45f9e
...
...
@@ -127,6 +127,9 @@ public class OrderChildSyncTransportListener {
if
(
subtract
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
||
ans
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
BigDecimal
settlementFreight
=
settlementOwnerDetail
.
getSettlementFreight
();
//生成借款标识
}
else
{
if
(
subtract
.
subtract
(
ans
).
compareTo
(
BigDecimal
.
ZERO
)
>=
0
)
{
//账户扣钱并生成扣除流水
...
...
performance-web/src/main/java/com/clx/performance/mapper/loan/BorrowerConfigMapper.java
浏览文件 @
94b45f9e
...
...
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.model.loan.BorrowerConfig
;
import
com.clx.performance.param.pc.loan.carrier.PageBorrowerConfigParam
;
import
com.clx.performance.sqlProvider.
borrower
.BorrowerConfigSqlProvider
;
import
com.clx.performance.sqlProvider.
loan
.BorrowerConfigSqlProvider
;
import
com.clx.performance.vo.pc.loan.carrier.BorrowerConfigVO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
...
...
performance-web/src/main/java/com/clx/performance/mapper/loan/BorrowerMapper.java
浏览文件 @
94b45f9e
...
...
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.model.loan.Borrower
;
import
com.clx.performance.param.pc.loan.carrier.PageBorrowerParam
;
import
com.clx.performance.sqlProvider.
borrower
.BorrowerSqlProvider
;
import
com.clx.performance.sqlProvider.
loan
.BorrowerSqlProvider
;
import
com.clx.performance.vo.pc.loan.carrier.BorrowerVO
;
import
com.clx.performance.vo.pc.loan.owner.BorrowerSelectVO
;
import
org.apache.ibatis.annotations.Mapper
;
...
...
performance-web/src/main/java/com/clx/performance/mapper/loan/OwnerLoanAccountMapper.java
浏览文件 @
94b45f9e
...
...
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.model.loan.OwnerLoanAccount
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam
;
import
com.clx.performance.sqlProvider.
borrower
.OwnerLoanAccountSqlProvider
;
import
com.clx.performance.sqlProvider.
loan
.OwnerLoanAccountSqlProvider
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountVO
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.SelectProvider
;
...
...
@@ -25,12 +25,14 @@ public interface OwnerLoanAccountMapper extends BaseMapper<OwnerLoanAccount> {
)
Integer
addAccount
(
@Param
(
"account"
)
OwnerLoanAccount
account
,
@Param
(
"now"
)
String
nowStr
);
// @Update("update owner_account set funding_amount = funding_amount - #{account.fundingAmount}," +
// "frozen_balance = frozen_balance + #{account.frozenBalance},account_balance = account_balance - #{account.accountBalance}," +
// "modified_time=#{now}"
// + "where id = #{account.id} and modified_time = #{account.modifiedTime}"
// )
// Integer subAccount(@Param("account") OwnerAccount account, @Param("now") String now);
@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},"
+
",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}"
)
Integer
subAccount
(
@Param
(
"account"
)
OwnerLoanAccount
account
,
@Param
(
"now"
)
String
now
);
/**
* @see OwnerLoanAccountSqlProvider#pageByParam(Page, PageOwnerLoanAccountParam)
...
...
performance-web/src/main/java/com/clx/performance/mapper/loan/OwnerLoanAccountRunningWaterRecordMapper.java
浏览文件 @
94b45f9e
...
...
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountWaterRecordOfOwnerParam
;
import
com.clx.performance.sqlProvider.
borrower
.OwnerLoanAccountRunningWaterRecordSqlProvider
;
import
com.clx.performance.sqlProvider.
loan
.OwnerLoanAccountRunningWaterRecordSqlProvider
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountRunningWaterRecordVO
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.SelectProvider
;
...
...
performance-web/src/main/java/com/clx/performance/mapper/loan/OwnerLoanRecordMapper.java
浏览文件 @
94b45f9e
...
...
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.model.loan.OwnerLoanRecord
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner
;
import
com.clx.performance.sqlProvider.
borrower
.OwnerLoanRecordSqlProvider
;
import
com.clx.performance.sqlProvider.
loan
.OwnerLoanRecordSqlProvider
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerLoanRecordVO
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.SelectProvider
;
...
...
performance-web/src/main/java/com/clx/performance/mapper/loan/OwnerRepaymentMapper.java
浏览文件 @
94b45f9e
...
...
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.model.loan.OwnerRepayment
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerRepaymentOfOwner
;
import
com.clx.performance.sqlProvider.
borrower
.OwnerRepaymentSqlProvider
;
import
com.clx.performance.sqlProvider.
loan
.OwnerRepaymentSqlProvider
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerRepaymentVO
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.SelectProvider
;
...
...
performance-web/src/main/java/com/clx/performance/model/loan/OwnerLoanRecord.java
浏览文件 @
94b45f9e
...
...
@@ -64,6 +64,10 @@ public class OwnerLoanRecord implements HasKey<Integer> {
@ApiModelProperty
(
"借款金额"
)
private
BigDecimal
loanBalance
;
@TableField
(
"loan_residue_balance"
)
@ApiModelProperty
(
"借款剩余金额"
)
private
BigDecimal
loanResidueBalance
;
@TableField
(
"borrower"
)
@ApiModelProperty
(
"借款方"
)
private
String
borrower
;
...
...
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
浏览文件 @
94b45f9e
...
...
@@ -8,6 +8,7 @@ import com.clx.order.feign.OrderFeign;
import
com.clx.order.vo.feign.FeignAddressVO
;
import
com.clx.order.vo.feign.FeignOrderInfoVO
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderChildLoanComponent
;
import
com.clx.performance.constant.RedisConstants
;
import
com.clx.performance.constant.RedissonConstants
;
import
com.clx.performance.dao.*
;
...
...
@@ -153,17 +154,7 @@ public class OrderChildServiceImpl implements OrderChildService {
private
FeignPaymentService
feignPaymentService
;
@Autowired
private
TruckService
truckService
;
@Autowired
private
ZjxlGpsService
zjxlGpsService
;
@Autowired
private
UserService
userService
;
@Autowired
private
OwnerRunningWaterRecordDao
ownerRunningWaterRecordDao
;
private
OrderChildLoanComponent
orderChildLoanComponent
;
@Override
public
SaveOrderChildVO
saveOrderChild
(
OrderChildSaveParam
param
)
{
...
...
@@ -265,7 +256,6 @@ public class OrderChildServiceImpl implements OrderChildService {
FeignOrderInfoVO
orderInfo
=
orderService
.
getOrderInfo
(
orderGoods
.
getOrderNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_INVALID
);
OwnerInfoFeignVO
ownerInfo
=
ownerInfoService
.
getOwnerInfo
(
orderInfo
.
getOwnerUserNo
());
// // 车型限制
// FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderGoods.getOrderNo()).orElseThrow
// (PerformanceResultEnum.DATA_NOT_FIND);
...
...
@@ -312,8 +302,8 @@ public class OrderChildServiceImpl implements OrderChildService {
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_WEIGHT_LACK
);
}
//
TODO 借款账户相关限制
//
接单判断
orderChildLoanComponent
.
getChildDetermine
(
orderInfo
,
ownerInfo
,
orderGoods
,
childNo
);
OrderChild
orderChild
=
new
OrderChild
();
orderChild
.
setChildNo
(
childNo
);
...
...
performance-web/src/main/java/com/clx/performance/service/impl/loan/OwnerLoanRecordServiceImpl.java
浏览文件 @
94b45f9e
...
...
@@ -139,12 +139,13 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
ownerLoanRecord
.
setLoanType
(
param
.
getLoanType
());
if
(
OwnerLoanRecordEnum
.
LoanType
.
FUND
.
getCode
().
equals
(
param
.
getLoanType
()))
{
//资金 TODO 调
中信
银企直连的产品,从诚联信账户中给鑫祥和执行转账
//资金 TODO 调
宁波
银企直连的产品,从诚联信账户中给鑫祥和执行转账
NbBankOrderPayResultVO
orderPayResultVO
=
bankService
.
orderDirectPay
(
param
.
getLoanNo
()
,
ownerLoanRecord
.
getLoanBalance
().
intValue
(),
""
,
""
,
""
);
ownerLoanRecord
.
setRunningWaterOpenNo
(
orderPayResultVO
.
getTransSeqNo
());
ownerLoanRecord
.
setMerchantRunningWaterNo
(
orderPayResultVO
.
getMerSeqNo
());
ownerLoanRecord
.
setStatus
(
OwnerLoanRecordEnum
.
Status
.
PAYING
.
getCode
());
ownerLoanRecord
.
setLoanResidueBalance
(
ownerLoanRecord
.
getLoanBalance
());
}
else
{
// 虚拟币 直接增加 更改状态审批通过
ownerLoanRecord
.
setStatus
(
OwnerLoanRecordEnum
.
Status
.
APPROVE_PASS
.
getCode
());
...
...
performance-web/src/main/java/com/clx/performance/sqlProvider/borrower/OwnerLoanAccountSqlProvider.java
deleted
100644 → 0
浏览文件 @
81c9d39f
package
com
.
clx
.
performance
.
sqlProvider
.
borrower
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountVO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.jdbc.SQL
;
import
java.util.Objects
;
public
class
OwnerLoanAccountSqlProvider
{
public
String
pageByParam
(
@Param
(
"page"
)
Page
<
OwnerLoanAccountVO
>
page
,
@Param
(
"param"
)
PageOwnerLoanAccountParam
param
)
{
return
new
SQL
(){{
SELECT
(
" id, owner_user_no as ownerUserNo, owner_user_name as ownerUserName, mobile, "
+
" account_type as accountType, funding_amount as fundingAmount, virtually_amount as virtuallyAmount, "
+
" funding_arrears as fundingArrears, virtually_arrears as virtuallyArrears, "
+
" create_by as createBy, "
+
" date_format(create_time, '%Y-%m-%d %H:%i:%s') as createTime, "
+
" date_format(modified_time, '%Y-%m-%d %H:%i:%s') as modifiedTime "
);
FROM
(
"owner_loan_account"
);
if
(
Objects
.
nonNull
(
param
.
getOwnerUserNo
()))
{
WHERE
(
"owner_user_no = #{param.ownerUserNo}"
);}
if
(
StringUtils
.
isNotBlank
(
param
.
getOwnerUserName
()))
{
WHERE
(
"owner_user_name like CONCAT(#{param.ownerUserName},'%')"
);}
if
(
StringUtils
.
isNotBlank
(
param
.
getMobile
()))
{
WHERE
(
"mobile = #{param.mobile}"
);}
ORDER_BY
(
"create_time desc"
);
}}.
toString
();
}
}
performance-web/src/main/java/com/clx/performance/sqlProvider/
borrower
/BorrowerConfigSqlProvider.java
→
performance-web/src/main/java/com/clx/performance/sqlProvider/
loan
/BorrowerConfigSqlProvider.java
浏览文件 @
94b45f9e
package
com
.
clx
.
performance
.
sqlProvider
.
borrower
;
package
com
.
clx
.
performance
.
sqlProvider
.
loan
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.param.pc.loan.carrier.PageBorrowerConfigParam
;
...
...
performance-web/src/main/java/com/clx/performance/sqlProvider/
borrower
/BorrowerSqlProvider.java
→
performance-web/src/main/java/com/clx/performance/sqlProvider/
loan
/BorrowerSqlProvider.java
浏览文件 @
94b45f9e
package
com
.
clx
.
performance
.
sqlProvider
.
borrower
;
package
com
.
clx
.
performance
.
sqlProvider
.
loan
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.order.enums.StatusEnum
;
...
...
performance-web/src/main/java/com/clx/performance/sqlProvider/
borrower
/OwnerLoanAccountRunningWaterRecordSqlProvider.java
→
performance-web/src/main/java/com/clx/performance/sqlProvider/
loan
/OwnerLoanAccountRunningWaterRecordSqlProvider.java
浏览文件 @
94b45f9e
package
com
.
clx
.
performance
.
sqlProvider
.
borrower
;
package
com
.
clx
.
performance
.
sqlProvider
.
loan
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountWaterRecordOfOwnerParam
;
...
...
performance-web/src/main/java/com/clx/performance/sqlProvider/loan/OwnerLoanAccountSqlProvider.java
浏览文件 @
94b45f9e
package
com
.
clx
.
performance
.
sqlProvider
.
loan
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam
;
import
com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountVO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.jdbc.SQL
;
import
java.util.Objects
;
public
class
OwnerLoanAccountSqlProvider
{
public
String
getOwnerLoanAccountByOwnerUserId
(
@Param
(
"param"
)
Long
ownerUserNo
)
{
...
...
@@ -23,6 +28,28 @@ public class OwnerLoanAccountSqlProvider {
return
sql
;
}
public
String
pageByParam
(
@Param
(
"page"
)
Page
<
OwnerLoanAccountVO
>
page
,
@Param
(
"param"
)
PageOwnerLoanAccountParam
param
)
{
return
new
SQL
(){{
SELECT
(
" id, owner_user_no as ownerUserNo, owner_user_name as ownerUserName, mobile, "
+
" account_type as accountType, "
+
" funding_account_balance as fundingAccountBalance, funding_usable_balance as fundingUsableBalance, "
+
" funding_frozen_balance as fundingFrozenBalance, virtually_account_balance as virtuallyAccountBalance, "
+
" virtually_usable_balance as virtuallyUsableBalance, virtually_frozen_balance as virtuallyFrozenBalance, "
+
" funding_arrears as fundingArrears, virtually_arrears as virtuallyArrears, "
+
" create_by as createBy, "
+
" date_format(create_time, '%Y-%m-%d %H:%i:%s') as createTime, "
+
" date_format(modified_time, '%Y-%m-%d %H:%i:%s') as modifiedTime "
);
FROM
(
"owner_loan_account"
);
if
(
Objects
.
nonNull
(
param
.
getOwnerUserNo
()))
{
WHERE
(
"owner_user_no = #{param.ownerUserNo}"
);}
if
(
StringUtils
.
isNotBlank
(
param
.
getOwnerUserName
()))
{
WHERE
(
"owner_user_name like CONCAT(#{param.ownerUserName},'%')"
);}
if
(
StringUtils
.
isNotBlank
(
param
.
getMobile
()))
{
WHERE
(
"mobile = #{param.mobile}"
);}
ORDER_BY
(
"create_time desc"
);
}}.
toString
();
}
}
performance-web/src/main/java/com/clx/performance/sqlProvider/
borrower
/OwnerLoanRecordSqlProvider.java
→
performance-web/src/main/java/com/clx/performance/sqlProvider/
loan
/OwnerLoanRecordSqlProvider.java
浏览文件 @
94b45f9e
package
com
.
clx
.
performance
.
sqlProvider
.
borrower
;
package
com
.
clx
.
performance
.
sqlProvider
.
loan
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerLoanRecordOfOwner
;
...
...
performance-web/src/main/java/com/clx/performance/sqlProvider/
borrower
/OwnerRepaymentSqlProvider.java
→
performance-web/src/main/java/com/clx/performance/sqlProvider/
loan
/OwnerRepaymentSqlProvider.java
浏览文件 @
94b45f9e
package
com
.
clx
.
performance
.
sqlProvider
.
borrower
;
package
com
.
clx
.
performance
.
sqlProvider
.
loan
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.param.pc.loan.carrier.PageOwnerRepaymentOfOwner
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论