Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
96d9834e
提交
96d9834e
authored
2月 04, 2024
作者:
huyufan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
借款判断
上级
0e7da6d2
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
137 行增加
和
14 行删除
+137
-14
OwnerLoanAccountRunningWaterRecordEnum.java
...ce/enums/loan/OwnerLoanAccountRunningWaterRecordEnum.java
+4
-2
OrderChildLoanComponent.java
...om/clx/performance/component/OrderChildLoanComponent.java
+101
-5
OwnerLoanRecordDaoImpl.java
...clx/performance/dao/impl/loan/OwnerLoanRecordDaoImpl.java
+12
-0
OwnerLoanRecordDao.java
...java/com/clx/performance/dao/loan/OwnerLoanRecordDao.java
+3
-0
OrderChildSyncTransportListener.java
...performance/listener/OrderChildSyncTransportListener.java
+3
-0
OwnerLoanAccountMapper.java
...m/clx/performance/mapper/loan/OwnerLoanAccountMapper.java
+8
-6
OwnerLoanRecord.java
.../java/com/clx/performance/model/loan/OwnerLoanRecord.java
+4
-0
OwnerLoanRecordServiceImpl.java
...ormance/service/impl/loan/OwnerLoanRecordServiceImpl.java
+2
-1
没有找到文件。
performance-api/src/main/java/com/clx/performance/enums/loan/OwnerLoanAccountRunningWaterRecordEnum.java
浏览文件 @
96d9834e
...
...
@@ -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-web/src/main/java/com/clx/performance/component/OrderChildLoanComponent.java
浏览文件 @
96d9834e
...
...
@@ -7,24 +7,36 @@ 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.OwnerAccount
;
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
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
@Component
@AllArgsConstructor
...
...
@@ -40,7 +52,13 @@ 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
;
public
void
getChildDetermine
(
FeignOrderInfoVO
orderInfoVO
,
OwnerInfoFeignVO
ownerInfoFeignVO
,
OrderGoods
orderGoods
,
String
childNo
)
{
OwnerQuotationDetailVO
quotationDetailVO
=
orderFeign
.
getQuotationByOrderNo
(
orderInfoVO
.
getOrderNo
()).
getData
();
BigDecimal
freightFreezeRate
=
quotationDetailVO
.
getFreightFreezeRate
();
...
...
@@ -52,13 +70,14 @@ public class OrderChildLoanComponent {
Integer
overWeight
=
orderInfoVO
.
getOverWeight
();
if
(
OrderGoodsOverWeightEnum
.
NO
.
getCode
().
equals
(
overWeight
))
{
determine
(
orderGoods
.
getPendingOrderFreight
().
multiply
(
new
BigDecimal
(
35
)));
determine
(
orderGoods
.
getPendingOrderFreight
().
multiply
(
new
BigDecimal
(
35
))
,
ownerInfoFeignVO
,
childNo
);
}
else
{
determine
(
orderGoods
.
getPendingOrderFreight
().
multiply
(
new
BigDecimal
(
50
)));
determine
(
orderGoods
.
getPendingOrderFreight
().
multiply
(
new
BigDecimal
(
50
))
,
ownerInfoFeignVO
,
childNo
);
}
}
public
void
determine
(
BigDecimal
orderChildPrice
)
{
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
determine
(
BigDecimal
orderChildPrice
,
OwnerInfoFeignVO
ownerInfoFeignVO
,
String
childNo
)
{
List
<
OwnerRunningWaterRecord
>
runningWaterRecordList
=
ownerRunningWaterRecordDao
.
getOwnerRunningWaterRecord
(
""
);
BigDecimal
frozen
=
runningWaterRecordList
.
stream
().
filter
(
item
->
{
return
item
.
getRunningWaterType
().
equals
(
OwnerAccountEnum
.
RunningWaterStatus
.
FROZEN
.
getCode
())
...
...
@@ -84,7 +103,7 @@ public class OrderChildLoanComponent {
}
}
// 进行借款判断
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
)
{
...
...
@@ -96,6 +115,83 @@ public class OrderChildLoanComponent {
//逾期:不允许
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
();
if
(
loanResidueBalance
.
compareTo
(
orderChildPriceTemp
)
>=
0
)
{
generateFrozenOwnerLoanRunningWater
(
ownerLoanRecord
,
childNo
,
orderChildPrice
);
updateList
.
add
(
ownerLoanRecord
.
setLoanResidueBalance
(
loanResidueBalance
.
subtract
(
orderChildPriceTemp
)));
break
;
}
else
{
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
)
{
OwnerLoanAccount
update
=
new
OwnerLoanAccount
();
while
(
true
)
{
ownerLoanAccountUpdate
(
ownerLoanRecord
,
orderChildPrice
,
update
);
Integer
i
=
ownerLoanAccountDao
.
updateAccountCAS
(
update
,
LocalDateTime
.
now
(),
false
);
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
(
"系统"
);
ownerLoanAccountRunningWaterRecordDao
.
saveEntity
(
waterRecord
);
break
;
}
}
}
public
void
ownerLoanAccountUpdate
(
OwnerLoanRecord
ownerLoanRecord
,
BigDecimal
orderChildPrice
,
OwnerLoanAccount
update
)
{
Integer
loanType
=
ownerLoanRecord
.
getLoanType
();
OwnerLoanAccount
account
=
ownerLoanAccountDao
.
getOneByField
(
OwnerLoanAccount:
:
getOwnerUserNo
,
ownerLoanRecord
.
getOwnerUserNo
()).
get
();
if
(
OwnerLoanRecordEnum
.
LoanType
.
VIRTUAL_CURRENCY
.
getCode
().
equals
(
loanType
))
{
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
{
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/OwnerLoanRecordDaoImpl.java
浏览文件 @
96d9834e
...
...
@@ -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,14 @@ public class OwnerLoanRecordDaoImpl extends BaseDaoImpl<OwnerLoanRecordMapper, O
return
baseMapper
.
pageByParam
(
page
,
param
);
}
@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
浏览文件 @
96d9834e
...
...
@@ -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
浏览文件 @
96d9834e
...
...
@@ -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/OwnerLoanAccountMapper.java
浏览文件 @
96d9834e
...
...
@@ -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/model/loan/OwnerLoanRecord.java
浏览文件 @
96d9834e
...
...
@@ -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/loan/OwnerLoanRecordServiceImpl.java
浏览文件 @
96d9834e
...
...
@@ -140,12 +140,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
());
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论