Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
feb08add
提交
feb08add
authored
6月 21, 2024
作者:
杨启发
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/v17.5_order_child_sync_broker_20240617'…
Merge remote-tracking branch 'origin/v17.5_order_child_sync_broker_20240617' into v17.5_order_child_sync_broker_20240617
上级
bbb1d867
92d83ed0
隐藏空白字符变更
内嵌
并排
正在显示
48 个修改的文件
包含
1043 行增加
和
199 行删除
+1043
-199
PerformanceResultEnum.java
...java/com/clx/performance/enums/PerformanceResultEnum.java
+5
-1
SettlementOwnerEnum.java
...com/clx/performance/enums/settle/SettlementOwnerEnum.java
+1
-0
OrderChildSaveParam.java
...va/com/clx/performance/param/app/OrderChildSaveParam.java
+3
-0
OpenOwnerTopUpParam.java
...a/com/clx/performance/param/open/OpenOwnerTopUpParam.java
+2
-0
PayPlatformFeeParam.java
...clx/performance/param/pc/payment/PayPlatformFeeParam.java
+1
-3
WalletParam.java
...ava/com/clx/performance/param/pc/payment/WalletParam.java
+24
-0
WalletResidueDTO.java
...om/clx/performance/param/pc/payment/WalletResidueDTO.java
+77
-0
OrderChildVO.java
...rc/main/java/com/clx/performance/vo/app/OrderChildVO.java
+3
-0
OrderGoodsVO.java
...src/main/java/com/clx/performance/vo/pc/OrderGoodsVO.java
+9
-0
OrderChildLoanComponent.java
...om/clx/performance/component/OrderChildLoanComponent.java
+43
-1
SettlementConfig.java
...ain/java/com/clx/performance/config/SettlementConfig.java
+19
-0
OpenOwnerAccountController.java
...rformance/controller/open/OpenOwnerAccountController.java
+1
-1
OrderChildDao.java
.../src/main/java/com/clx/performance/dao/OrderChildDao.java
+1
-0
OrderChildDaoImpl.java
.../java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
+14
-0
OrderPaymentDaoImpl.java
...clx/performance/dao/impl/payment/OrderPaymentDaoImpl.java
+9
-2
SettlementDriverDetailDaoImpl.java
...rmance/dao/impl/settle/SettlementDriverDetailDaoImpl.java
+4
-1
SettlementOwnerDaoImpl.java
...x/performance/dao/impl/settle/SettlementOwnerDaoImpl.java
+35
-3
SettlementOwnerDetailDaoImpl.java
...ormance/dao/impl/settle/SettlementOwnerDetailDaoImpl.java
+6
-0
OrderPaymentDao.java
...java/com/clx/performance/dao/payment/OrderPaymentDao.java
+4
-0
SettlementOwnerDao.java
...va/com/clx/performance/dao/settle/SettlementOwnerDao.java
+11
-0
PaymentDTO.java
...main/java/com/clx/performance/dto/payment/PaymentDTO.java
+24
-0
WalletResidueCardDTO.java
...com/clx/performance/dto/payment/WalletResidueCardDTO.java
+1
-1
WalletResidueDTO.java
...ava/com/clx/performance/dto/payment/WalletResidueDTO.java
+2
-3
HttpEnum.java
...web/src/main/java/com/clx/performance/enums/HttpEnum.java
+5
-2
EventListenerComponent.java
...ava/com/clx/performance/event/EventListenerComponent.java
+2
-18
InvoicingCompanyService.java
...x/performance/extranal/order/InvoicingCompanyService.java
+12
-0
InvoicingCompanyServiceImpl.java
...ance/extranal/order/impl/InvoicingCompanyServiceImpl.java
+32
-0
SettlementOwnerMontnJob.java
...java/com/clx/performance/job/SettlementOwnerMontnJob.java
+25
-1
OrderChildSyncTransportListener.java
...performance/listener/OrderChildSyncTransportListener.java
+75
-15
OrderGoods.java
...b/src/main/java/com/clx/performance/model/OrderGoods.java
+7
-0
SettlementDriver.java
...va/com/clx/performance/model/settle/SettlementDriver.java
+1
-0
SettlementDriverDetail.java
.../clx/performance/model/settle/SettlementDriverDetail.java
+2
-1
SettlementPlatformServiceFee.java
...erformance/model/settle/SettlementPlatformServiceFee.java
+3
-2
PaymentService.java
...main/java/com/clx/performance/service/PaymentService.java
+5
-0
OrderChildServiceImpl.java
...m/clx/performance/service/impl/OrderChildServiceImpl.java
+200
-11
OrderGoodsServiceImpl.java
...m/clx/performance/service/impl/OrderGoodsServiceImpl.java
+22
-0
PaymentServiceImpl.java
.../com/clx/performance/service/impl/PaymentServiceImpl.java
+73
-13
OrderGoodsPostServiceImpl.java
...ce/service/impl/ordergoods/OrderGoodsPostServiceImpl.java
+22
-0
OrderChildSyncTransportRecordServiceImpl.java
...impl/settle/OrderChildSyncTransportRecordServiceImpl.java
+30
-0
SettlementDriverDetailServiceImpl.java
...ervice/impl/settle/SettlementDriverDetailServiceImpl.java
+13
-0
SettlementMqHandlerServiceImpl.java
...e/service/impl/settle/SettlementMqHandlerServiceImpl.java
+88
-110
SettlementOwnerDetailServiceImpl.java
...service/impl/settle/SettlementOwnerDetailServiceImpl.java
+1
-0
SettlementServiceImpl.java
...erformance/service/impl/settle/SettlementServiceImpl.java
+73
-8
OrderGoodsPostService.java
...performance/service/ordergoods/OrderGoodsPostService.java
+11
-0
OrderGoodsSqlProvider.java
...om/clx/performance/sqlProvider/OrderGoodsSqlProvider.java
+4
-2
OwnGoodsOrderStrategy.java
.../clx/performance/strategy/impl/OwnGoodsOrderStrategy.java
+13
-0
PartGoodsOrderStrategy.java
...clx/performance/strategy/impl/PartGoodsOrderStrategy.java
+13
-0
PlatformGoodsOrderStrategy.java
...performance/strategy/impl/PlatformGoodsOrderStrategy.java
+12
-0
没有找到文件。
performance-api/src/main/java/com/clx/performance/enums/PerformanceResultEnum.java
浏览文件 @
feb08add
...
...
@@ -37,7 +37,7 @@ public enum PerformanceResultEnum implements ResultEnum {
ORDER_WEIGHT_LACK
(
1201
,
"剩余吨数不足,请联系客服"
),
ORDER_INVALID
(
1202
,
"无效的货单"
),
ORDER_INVALID1
(
1203
,
"当前运单的货源已完成或取消,请查看其他货源"
),
ORDER_DRIVER_LIMIT
(
1204
,
"该货单不支持车主抢单"
),
ORDER_CHILD_NO_FOUND
(
1301
,
"运单不存在"
),
ORDER_CHILD_STATUS_CHANGED
(
1302
,
"运单状态已变更,请重新刷新页面"
),
...
...
@@ -97,6 +97,10 @@ public enum PerformanceResultEnum implements ResultEnum {
INTEGRAL_RULE_NAME_EXIST
(
1703
,
"层级名称已存在"
),
APP_POP_UP_ERROR
(-
1000
,
"app弹窗提示"
),
/**司机提示语 **/
APP_POP_UP_DRIVER_RESIDUE_ERROR
(-
500
,
"app弹窗提示"
),
/**车主提示语 **/
APP_POP_UP_OWNER_RESIDUE_ERROR
(-
499
,
"app弹窗提示"
),
WALLET_CODE_IS_NULL
(
1704
,
"用户钱包不存在"
),
ORDER_GOODS_SAVE_FAIL
(
1801
,
"保存货单失败,请稍后再试"
),
...
...
performance-api/src/main/java/com/clx/performance/enums/settle/SettlementOwnerEnum.java
浏览文件 @
feb08add
...
...
@@ -100,6 +100,7 @@ public enum SettlementOwnerEnum {
IMMEDIATE
(
1
,
"拉运完成结算"
),
MONTH
(
2
,
"月结"
),
DAILY
(
3
,
"日结"
),
;
...
...
performance-api/src/main/java/com/clx/performance/param/app/OrderChildSaveParam.java
浏览文件 @
feb08add
...
...
@@ -25,4 +25,7 @@ public class OrderChildSaveParam extends PositionParam {
@NotNull
(
message
=
"司机用户编号空"
)
private
Long
driverUserNo
;
@ApiModelProperty
(
value
=
"支付方密码"
,
example
=
"2356"
,
dataType
=
"String"
)
private
String
pwd
;
}
performance-api/src/main/java/com/clx/performance/param/open/OpenOwnerTopUpParam.java
浏览文件 @
feb08add
...
...
@@ -9,6 +9,7 @@ import lombok.NoArgsConstructor;
import
lombok.Setter
;
import
lombok.ToString
;
import
javax.validation.constraints.DecimalMax
;
import
java.math.BigDecimal
;
...
...
@@ -24,6 +25,7 @@ public class OpenOwnerTopUpParam {
@ApiModelProperty
(
value
=
"充值金额(元)"
,
example
=
"1.23"
)
@MoneyInConvert
@DecimalMax
(
value
=
"9999999999.99"
,
message
=
"金额不得大于9999999999.99元"
)
private
BigDecimal
topUpBalance
;
@ApiModelProperty
(
value
=
"账户类型: 1:保证金 2:预付运费"
,
example
=
"1"
)
...
...
performance-api/src/main/java/com/clx/performance/param/pc/payment/PayPlatformFeeParam.java
浏览文件 @
feb08add
...
...
@@ -13,13 +13,11 @@ import javax.validation.constraints.NotBlank;
@Builder
@Accessors
(
chain
=
true
)
public
class
PayPlatformFeeParam
{
@NotBlank
(
message
=
"支付人不能为空"
)
@ApiModelProperty
(
value
=
"支付来源"
,
example
=
"2234"
,
dataType
=
"int"
)
Integer
from
;
@NotBlank
(
message
=
"支付密码不能为空"
)
@ApiModelProperty
(
value
=
"支付方密码"
,
example
=
"2356"
,
dataType
=
"String"
)
String
pwd
;
@NotBlank
(
message
=
"金额不能为空"
)
@ApiModelProperty
(
value
=
"金额"
,
example
=
"2356"
,
dataType
=
"int"
)
Integer
figure
;
@NotBlank
(
message
=
"交易单号不能为空"
)
...
...
performance-api/src/main/java/com/clx/performance/param/pc/payment/WalletParam.java
0 → 100644
浏览文件 @
feb08add
package
com
.
clx
.
performance
.
param
.
pc
.
payment
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@ApiModel
(
description
=
"钱包查询"
)
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
WalletParam
{
/**
* 用户编号从10000001开始
*/
@ApiModelProperty
(
value
=
"主钱包账号"
,
dataType
=
"int"
,
example
=
"1"
)
private
Integer
userCode
;
}
performance-api/src/main/java/com/clx/performance/param/pc/payment/WalletResidueDTO.java
0 → 100644
浏览文件 @
feb08add
package
com
.
clx
.
performance
.
param
.
pc
.
payment
;
import
com.fasterxml.jackson.annotation.JsonGetter
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.math.BigDecimal
;
public
class
WalletResidueDTO
{
//余额
@ApiModelProperty
(
value
=
"余额"
,
dataType
=
"double"
,
example
=
"11.10"
)
private
Long
residue
;
//冻结的资金
@ApiModelProperty
(
value
=
"冻结的资金"
,
dataType
=
"double"
,
example
=
"11.10"
)
private
Long
frozen
;
//保证金
@ApiModelProperty
(
value
=
"保证金"
,
dataType
=
"double"
,
example
=
"11.10"
)
private
Double
deposit
;
//状态0锁定1正常2异常
@ApiModelProperty
(
value
=
"状态0锁定1正常2异常"
,
dataType
=
"int"
,
example
=
"1"
)
private
Integer
status
;
//是否设置交易密码0没有1有
@ApiModelProperty
(
value
=
"是否设置交易密码0没有1有"
,
dataType
=
"String"
,
example
=
"1"
)
private
String
pwd
;
public
Long
getResidue
()
{
return
residue
;
}
public
void
setResidue
(
Long
residue
)
{
this
.
residue
=
residue
;
}
public
Long
getFrozen
()
{
return
frozen
;
}
public
void
setFrozen
(
Long
frozen
)
{
this
.
frozen
=
frozen
;
}
public
Integer
getStatus
()
{
return
status
;
}
public
void
setStatus
(
Integer
status
)
{
this
.
status
=
status
;
}
public
String
getPwd
()
{
return
pwd
;
}
public
void
setPwd
(
String
pwd
)
{
this
.
pwd
=
pwd
;
}
@JsonGetter
(
value
=
"frozen"
)
public
BigDecimal
frozenFormat
()
{
return
new
BigDecimal
(
new
Double
(
this
.
frozen
)/
100
);
}
@JsonGetter
(
value
=
"residue"
)
public
Double
residueFormat
()
{
return
new
Double
(
this
.
residue
)/
100
;
}
@JsonGetter
(
value
=
"deposit"
)
public
Double
depositFormat
()
{
return
new
Double
(
this
.
deposit
)/
100
;
}
public
Double
getDeposit
()
{
return
deposit
;
}
public
void
setDeposit
(
Double
deposit
)
{
this
.
deposit
=
deposit
;
}
@Override
public
String
toString
()
{
return
"WalletDTO [residue="
+
residue
+
", frozen="
+
frozen
+
", status="
+
status
+
"]"
;
}
}
performance-api/src/main/java/com/clx/performance/vo/app/OrderChildVO.java
浏览文件 @
feb08add
...
...
@@ -227,5 +227,7 @@ public class OrderChildVO {
@ApiModelProperty
(
value
=
"车辆未开启中交兴路的提示信息"
)
private
String
notOpenZJXLMsg
;
@ApiModelProperty
(
"接单保证金 平台服务费费率 弹窗和文案显示 0 不显示 1 显示"
)
private
Integer
goodsOrderDetailShow
=
0
;
}
\ No newline at end of file
performance-api/src/main/java/com/clx/performance/vo/pc/OrderGoodsVO.java
浏览文件 @
feb08add
...
...
@@ -145,6 +145,9 @@ public class OrderGoodsVO {
@ApiModelProperty
(
"可装车时间段结束"
)
private
String
loadEndTime
;
@ApiModelProperty
(
"平台运费报价税类型:0未税 1含税"
)
private
Integer
platformFreightQuotationTaxType
;
@ApiModelProperty
(
"平台服务费费率%"
)
private
BigDecimal
platformServiceFeeRate
;
...
...
@@ -152,4 +155,9 @@ public class OrderGoodsVO {
@ApiModelProperty
(
"接单保证金(分/车)"
)
private
BigDecimal
deposit
;
@ApiModelProperty
(
"结算方式 1装车净重 2卸车净重"
)
private
Integer
settlementWay
;
@ApiModelProperty
(
"接单保证金 平台服务费费率 弹窗和文案显示 0 不显示 1 显示"
)
private
Integer
goodsOrderDetailShow
=
0
;
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/component/OrderChildLoanComponent.java
浏览文件 @
feb08add
...
...
@@ -34,6 +34,8 @@ import com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord;
import
com.clx.performance.model.loan.OwnerRepayment
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.param.pc.payment.PayPlatformFeeParam
;
import
com.clx.performance.service.PaymentService
;
import
com.clx.performance.service.loan.OwnerLoanRecordService
;
import
com.clx.performance.service.settle.NetworkDriverRunningWaterRecordService
;
import
com.clx.user.vo.feign.OwnerInfoFeignVO
;
...
...
@@ -42,6 +44,7 @@ import lombok.AllArgsConstructor;
import
lombok.extern.slf4j.Slf4j
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationEventPublisher
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -84,7 +87,7 @@ public class OrderChildLoanComponent {
private
final
NetworkDriverRunningWaterRecordService
networkDriverRunningWaterRecordService
;
private
final
PaymentService
paymentService
;
/**
* 接单校验判断
...
...
@@ -338,6 +341,45 @@ public class OrderChildLoanComponent {
networkDriverRunningWaterRecordService
.
generateNetworkCaseOutRecord
(
settlementDriverDetail
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
orderChildCancelAfter
(
String
childNo
){
//运单取消
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
BigDecimal
platformServiceFee
=
orderChild
.
getPlatformServiceFee
();
//平台服务费
List
<
OwnerLoanAccountRunningWaterRecord
>
runningWaterRecordList
=
ownerLoanAccountRunningWaterRecordDao
.
getListByChildNoAndRunningWaterType
(
childNo
,
OwnerLoanAccountRunningWaterRecordEnum
.
RunWaterType
.
APPROVE_FROZEN
.
getCode
());
if
(
CollectionUtil
.
isEmpty
(
runningWaterRecordList
))
{
if
(
Objects
.
nonNull
(
platformServiceFee
)
&&
platformServiceFee
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
){
PayPlatformFeeParam
payPlatformFeeParam
=
new
PayPlatformFeeParam
();
payPlatformFeeParam
.
setTradeNo
(
childNo
);
payPlatformFeeParam
.
setFigure
(
platformServiceFee
.
intValue
());
paymentService
.
paymentCancelPlatformFee
(
payPlatformFeeParam
);
}
return
;
}
Long
ownerUserNo
=
runningWaterRecordList
.
get
(
0
).
getOwnerUserNo
();
log
.
info
(
"当前解冻货主:{},流水记录长度{},流水记录{}"
,
ownerUserNo
,
runningWaterRecordList
.
size
(),
JSONUtil
.
parse
(
runningWaterRecordList
));
for
(
OwnerLoanAccountRunningWaterRecord
record
:
runningWaterRecordList
)
{
Long
loanNo
=
record
.
getLoanNo
();
Integer
loanType
=
record
.
getLoanType
();
String
ownerUserName
=
record
.
getOwnerUserName
();
BigDecimal
balance
=
record
.
getAlterationBalance
();
//解冻借款
thawOwnerLoanAccount
(
loanNo
,
loanType
,
ownerUserNo
,
ownerUserName
,
record
.
getMobile
(),
childNo
,
balance
);
}
if
(
Objects
.
nonNull
(
platformServiceFee
)
&&
platformServiceFee
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
){
PayPlatformFeeParam
payPlatformFeeParam
=
new
PayPlatformFeeParam
();
payPlatformFeeParam
.
setTradeNo
(
childNo
);
payPlatformFeeParam
.
setFigure
(
platformServiceFee
.
intValue
());
paymentService
.
paymentCancelPlatformFee
(
payPlatformFeeParam
);
}
}
//归还借款单的剩余金额+解冻流水
public
void
thawOwnerLoanAccount
(
Long
loanNo
,
Integer
loanType
,
Long
userNo
,
String
userName
,
String
mobile
,
String
childNo
,
BigDecimal
balance
)
{
log
.
info
(
"归还借款单的剩余金额+解冻流水,loanNo:{},loanType:{},userNo:{},childNo:{}, balance:{}"
,
loanNo
,
loanType
,
userNo
,
childNo
,
balance
);
...
...
performance-web/src/main/java/com/clx/performance/config/SettlementConfig.java
0 → 100644
浏览文件 @
feb08add
package
com
.
clx
.
performance
.
config
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
@ConfigurationProperties
(
prefix
=
"settlement"
)
@Data
@Component
public
class
SettlementConfig
{
// 普通单开票公司
private
InvoiceCompany
invoiceCompanyDefault
;
@Data
public
class
InvoiceCompany
{
String
companyGroupCode
;
}
}
performance-web/src/main/java/com/clx/performance/controller/open/OpenOwnerAccountController.java
浏览文件 @
feb08add
...
...
@@ -44,7 +44,7 @@ public class OpenOwnerAccountController {
@ApiOperation
(
value
=
"账户充值"
,
notes
=
"<br>By:胡宇帆"
)
@PostMapping
(
"/accountTopUp"
)
@UnitCovert
(
param
=
false
)
public
Result
<
Long
>
openAccountTopUp
(
@RequestBody
OpenOwnerTopUpParam
param
)
{
public
Result
<
Long
>
openAccountTopUp
(
@RequestBody
@Validated
OpenOwnerTopUpParam
param
)
{
Long
id
=
ownerAccountService
.
openAccountTopUp
(
param
);
return
Result
.
ok
(
id
);
}
...
...
performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java
浏览文件 @
feb08add
...
...
@@ -40,6 +40,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
boolean
updateSettlement
(
OrderChild
item
);
boolean
updateCancel
(
OrderChild
item
);
boolean
updatePlatformServiceFee
(
OrderChild
item
);
Optional
<
OrderChild
>
getByChildNo
(
String
childNo
);
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
浏览文件 @
feb08add
...
...
@@ -66,6 +66,8 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.
set
(
OrderChild:
:
getWeight
,
item
.
getWeight
())
.
set
(
OrderChild:
:
getFreight
,
item
.
getFreight
())
.
set
(
OrderChild:
:
getStatus
,
item
.
getStatus
())
.
set
(
OrderChild:
:
getDeposit
,
item
.
getDeposit
())
.
set
(
OrderChild:
:
getPlatformServiceFee
,
item
.
getPlatformServiceFee
())
);
}
...
...
@@ -83,6 +85,8 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.
set
(
OrderChild:
:
getWeight
,
item
.
getWeight
())
.
set
(
OrderChild:
:
getFreight
,
item
.
getFreight
())
.
set
(
OrderChild:
:
getStatus
,
item
.
getStatus
())
.
set
(
OrderChild:
:
getDeposit
,
item
.
getDeposit
())
.
set
(
OrderChild:
:
getPlatformServiceFee
,
item
.
getPlatformServiceFee
())
);
}
...
...
@@ -103,6 +107,8 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.
set
(
OrderChild:
:
getWeight
,
item
.
getWeight
())
.
set
(
OrderChild:
:
getFreight
,
item
.
getFreight
())
.
set
(
OrderChild:
:
getPoundStatus
,
item
.
getPoundStatus
())
.
set
(
OrderChild:
:
getDeposit
,
item
.
getDeposit
())
.
set
(
OrderChild:
:
getPlatformServiceFee
,
item
.
getPlatformServiceFee
())
);
}
...
...
@@ -154,6 +160,14 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
);
}
@Override
public
boolean
updatePlatformServiceFee
(
OrderChild
item
)
{
return
update
(
lUdWrapper
()
.
eq
(
OrderChild:
:
getId
,
item
.
getId
())
.
set
(
OrderChild:
:
getPlatformServiceFee
,
item
.
getPlatformServiceFee
())
);
}
@Override
public
Optional
<
OrderChild
>
getByChildNo
(
String
childNo
)
{
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/payment/OrderPaymentDaoImpl.java
浏览文件 @
feb08add
...
...
@@ -2,12 +2,13 @@ package com.clx.performance.dao.impl.payment;
import
com.clx.performance.dao.payment.OrderPaymentDao
;
import
com.clx.performance.mapper.payment.OrderPaymentMapper
;
import
com.clx.performance.model.IntegralStatistics
;
import
com.clx.performance.model.payment.OrderPayment
;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author huningning
* Date 2024-06-18
...
...
@@ -48,5 +49,11 @@ public class OrderPaymentDaoImpl extends BaseDaoImpl<OrderPaymentMapper, OrderPa
.
map
(
super
::
getOne
);
}
@Override
public
List
<
OrderPayment
>
listByOrderNo
(
String
orderNo
,
String
paymentItem
)
{
return
list
(
lQrWrapper
()
.
eq
(
OrderPayment:
:
getOrderNo
,
orderNo
)
.
eq
(
OrderPayment:
:
getPaymentItem
,
paymentItem
)
);
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementDriverDetailDaoImpl.java
浏览文件 @
feb08add
...
...
@@ -18,7 +18,6 @@ import org.springframework.stereotype.Repository;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Set
;
/**
* @Author: aiqinguo
...
...
@@ -37,6 +36,10 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD
.
set
(
SettlementDriverDetail:
:
getPrepayFreightFlag
,
item
.
getPrepayFreightFlag
())
.
set
(
SettlementDriverDetail:
:
getLoanFlag
,
item
.
getLoanFlag
())
.
set
(
SettlementDriverDetail:
:
getLoanTypeFlag
,
item
.
getLoanTypeFlag
())
.
set
(
SettlementDriverDetail:
:
getInvoicingCompanyId
,
item
.
getInvoicingCompanyId
())
.
set
(
SettlementDriverDetail:
:
getInvoicingCompanyShorterName
,
item
.
getInvoicingCompanyShorterName
())
.
set
(
SettlementDriverDetail:
:
getInvoicingCompanyGroupCode
,
item
.
getInvoicingCompanyGroupCode
())
);
}
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementOwnerDaoImpl.java
浏览文件 @
feb08add
...
...
@@ -40,6 +40,7 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
.
set
(
SettlementOwner:
:
getInvoiceFreight
,
item
.
getInvoiceFreight
())
.
set
(
SettlementOwner:
:
getLoanFreight
,
item
.
getLoanFreight
())
.
set
(
SettlementOwner:
:
getPrepayFreight
,
item
.
getPrepayFreight
())
.
set
(
SettlementOwner:
:
getInvoiceServiceFee
,
item
.
getInvoiceServiceFee
())
);
}
...
...
@@ -172,10 +173,29 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
}
@Override
public
Optional
<
SettlementOwner
>
selectUnlockOfSettlementPeriodMonth
(
String
orderNo
,
LocalDateTime
settlementPeriodTime
,
Integer
invoiceType
)
{
public
Optional
<
SettlementOwner
>
selectUnlockOfSettlementPeriodMonth
(
String
orderNo
,
Integer
invoicingCompanyId
,
LocalDateTime
settlementPeriodTime
,
Integer
invoiceType
)
{
return
Optional
.
of
(
lQrWrapper
()
.
eq
(
SettlementOwner:
:
getOrderNo
,
orderNo
)
.
eq
(
SettlementOwner:
:
getSettlementPeriodType
,
SettlementOwnerEnum
.
SettlementPeriodType
.
MONTH
.
getCode
())
.
eq
(
SettlementOwner:
:
getInvoicingCompanyId
,
invoicingCompanyId
)
.
eq
(
SettlementOwner:
:
getSettlementPeriodType
,
SettlementOwnerEnum
.
SettlementPeriodType
.
MONTH
.
getCode
())
.
eq
(
SettlementOwner:
:
getSettlementPeriodTime
,
settlementPeriodTime
)
.
eq
(
SettlementOwner:
:
getInvoiceType
,
invoiceType
)
.
eq
(
SettlementOwner:
:
getStatus
,
SettlementOwnerEnum
.
Status
.
TO_BE_LOCKED
.
getCode
())
)
.
map
(
super
::
getOne
);
}
@Override
public
Optional
<
SettlementOwner
>
selectUnlockOfSettlementPeriodDaily
(
String
orderNo
,
Integer
invoicingCompanyId
,
LocalDateTime
settlementPeriodTime
,
Integer
invoiceType
)
{
return
Optional
.
of
(
lQrWrapper
()
.
eq
(
SettlementOwner:
:
getOrderNo
,
orderNo
)
.
eq
(
SettlementOwner:
:
getInvoicingCompanyId
,
invoicingCompanyId
)
.
eq
(
SettlementOwner:
:
getSettlementPeriodType
,
SettlementOwnerEnum
.
SettlementPeriodType
.
DAILY
.
getCode
())
.
eq
(
SettlementOwner:
:
getSettlementPeriodTime
,
settlementPeriodTime
)
.
eq
(
SettlementOwner:
:
getInvoiceType
,
invoiceType
)
.
eq
(
SettlementOwner:
:
getStatus
,
SettlementOwnerEnum
.
Status
.
TO_BE_LOCKED
.
getCode
())
...
...
@@ -184,9 +204,12 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
}
@Override
public
Optional
<
SettlementOwner
>
selectUnlockOfSettlementPeriodImmediate
(
String
orderNo
,
Integer
invoiceType
)
{
public
Optional
<
SettlementOwner
>
selectUnlockOfSettlementPeriodImmediate
(
String
orderNo
,
Integer
invoicingCompanyId
,
Integer
invoiceType
)
{
return
Optional
.
of
(
lQrWrapper
()
.
eq
(
SettlementOwner:
:
getOrderNo
,
orderNo
)
.
eq
(
SettlementOwner:
:
getInvoicingCompanyId
,
invoicingCompanyId
)
.
eq
(
SettlementOwner:
:
getSettlementPeriodType
,
SettlementOwnerEnum
.
SettlementPeriodType
.
IMMEDIATE
.
getCode
())
.
eq
(
SettlementOwner:
:
getInvoiceType
,
invoiceType
)
.
eq
(
SettlementOwner:
:
getStatus
,
SettlementOwnerEnum
.
Status
.
TO_BE_LOCKED
.
getCode
())
...
...
@@ -250,6 +273,15 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
.
set
(
SettlementOwner:
:
getStatus
,
toStatus
)
);
}
@Override
public
boolean
updateDailyLock
(
Integer
settlementPeriodType
,
LocalDateTime
settlementPeriodTime
,
Integer
fromStatus
,
Integer
toStatus
){
return
update
(
lUdWrapper
()
.
eq
(
SettlementOwner:
:
getSettlementPeriodType
,
settlementPeriodType
)
.
eq
(
SettlementOwner:
:
getSettlementPeriodTime
,
settlementPeriodTime
)
.
eq
(
SettlementOwner:
:
getStatus
,
fromStatus
)
.
set
(
SettlementOwner:
:
getStatus
,
toStatus
)
);
}
@Override
public
void
updateSettlementMerge
(
@Param
(
"settlementNo"
)
String
settlementNo
,
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementOwnerDetailDaoImpl.java
浏览文件 @
feb08add
...
...
@@ -37,6 +37,12 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
.
set
(
SettlementOwnerDetail:
:
getFinalPaymentStatus
,
item
.
getFinalPaymentStatus
())
.
set
(
SettlementOwnerDetail:
:
getPrepayFreight
,
item
.
getPrepayFreight
())
.
set
(
SettlementOwnerDetail:
:
getLoanFreight
,
item
.
getLoanFreight
())
.
set
(
SettlementOwnerDetail:
:
getInvoicingCompanyId
,
item
.
getInvoicingCompanyId
())
.
set
(
SettlementOwnerDetail:
:
getInvoicingCompanyShorterName
,
item
.
getInvoicingCompanyShorterName
())
.
set
(
SettlementOwnerDetail:
:
getInvoicingCompanyGroupCode
,
item
.
getInvoicingCompanyGroupCode
())
.
set
(
SettlementOwnerDetail:
:
getInvoiceServiceFeeRate
,
item
.
getInvoiceServiceFeeRate
())
.
set
(
SettlementOwnerDetail:
:
getInvoiceServiceFee
,
item
.
getInvoiceServiceFee
())
);
}
...
...
performance-web/src/main/java/com/clx/performance/dao/payment/OrderPaymentDao.java
浏览文件 @
feb08add
...
...
@@ -6,6 +6,8 @@ import com.msl.common.base.Optional;
import
com.msl.common.dao.BaseDao
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* @author huningning
* Date 2024-06-18
...
...
@@ -24,4 +26,6 @@ public interface OrderPaymentDao extends BaseDao<OrderPaymentMapper, OrderPaymen
@Param
(
"paymentItem"
)
String
paymentItem
,
@Param
(
"operation"
)
Integer
operation
);
List
<
OrderPayment
>
listByOrderNo
(
@Param
(
"orderNo"
)
String
orderNo
,
@Param
(
"paymentItem"
)
String
paymentItem
);
}
performance-web/src/main/java/com/clx/performance/dao/settle/SettlementOwnerDao.java
浏览文件 @
feb08add
...
...
@@ -36,9 +36,17 @@ public interface SettlementOwnerDao extends BaseDao<SettlementOwnerMapper, Settl
IPage
<
SettlementOwner
>
pageSettlementOwner
(
Long
userNo
,
PageOwnerSettlementParam
param
);
Optional
<
SettlementOwner
>
selectUnlockOfSettlementPeriodMonth
(
@Param
(
"orderNo"
)
String
orderNo
,
@Param
(
"invoicingCompanyId"
)
Integer
invoicingCompanyId
,
@Param
(
"settlementPeriodTime"
)
LocalDateTime
settlementPeriodTime
,
@Param
(
"invoiceType"
)
Integer
invoiceType
);
Optional
<
SettlementOwner
>
selectUnlockOfSettlementPeriodDaily
(
String
orderNo
,
Integer
invoicingCompanyId
,
LocalDateTime
settlementPeriodTime
,
Integer
invoiceType
);
Optional
<
SettlementOwner
>
selectUnlockOfSettlementPeriodImmediate
(
@Param
(
"orderNo"
)
String
orderNo
,
@Param
(
"invoicingCompanyId"
)
Integer
invoicingCompanyId
,
@Param
(
"invoiceType"
)
Integer
invoiceType
);
List
<
SettlementOwner
>
listToBeLockOfSettlementPeriodMonth
(
@Param
(
"settlementPeriodTime"
)
LocalDateTime
settlementPeriodTime
);
...
...
@@ -61,6 +69,9 @@ public interface SettlementOwnerDao extends BaseDao<SettlementOwnerMapper, Settl
@Param
(
"fromStatus"
)
Integer
fromStatus
,
@Param
(
"toStatus"
)
Integer
toStatus
);
boolean
updateDailyLock
(
Integer
settlementPeriodType
,
LocalDateTime
settlementPeriodTime
,
Integer
fromStatus
,
Integer
toStatus
);
void
updateSettlementMerge
(
@Param
(
"settlementNo"
)
String
settlementNo
,
@Param
(
"settlementNos"
)
List
<
String
>
settlementNos
,
@Param
(
"mergedBy"
)
String
mergedBy
,
...
...
performance-web/src/main/java/com/clx/performance/dto/payment/PaymentDTO.java
0 → 100644
浏览文件 @
feb08add
package
com
.
clx
.
performance
.
dto
.
payment
;
import
com.fasterxml.jackson.annotation.JsonGetter
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Builder
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
*
* @author 胡宁宁
* @date 2024年06
* @description
*/
@Data
@Builder
public
class
PaymentDTO
{
/** 本次调整金额 **/
BigDecimal
changeDeposit
;
/** 最新的保证金**/
BigDecimal
platformServiceFeeNew
;
}
performance-web/src/main/java/com/clx/performance/dto/payment/WalletResidueCardDTO.java
浏览文件 @
feb08add
...
...
@@ -9,7 +9,7 @@ import java.math.BigDecimal;
/**
*
* @author 胡宁宁
* @date 202
3年11月12日
* @date 202
4年06
* @description
*/
public
class
WalletResidueCardDTO
extends
WalletResidueDTO
{
...
...
performance-web/src/main/java/com/clx/performance/dto/payment/WalletResidueDTO.java
浏览文件 @
feb08add
...
...
@@ -7,12 +7,11 @@ import java.math.BigDecimal;
/**
*
*
* @author 胡宁宁
* @date 202
3年11月12日
* @date 202
4年06
* @description
*/
public
class
WalletResidueDTO
{
@ApiModelProperty
(
value
=
"余额"
,
dataType
=
"double"
,
example
=
"11.10"
)
...
...
performance-web/src/main/java/com/clx/performance/enums/HttpEnum.java
浏览文件 @
feb08add
...
...
@@ -10,11 +10,14 @@ public enum HttpEnum {
PERFORMANCE_PAY_CLX_PAYMENT
(
10000
,
"履约服务向老马上来发起钱包转账"
,
"/payment-service/performance/payUserWalletTransfer"
),
PERFORMANCE_PAY_CLX_DRIVER_FREEZE
(
1000
0
,
"履约服务向老马上来发起司机押金冻结"
,
PERFORMANCE_PAY_CLX_DRIVER_FREEZE
(
1000
1
,
"履约服务向老马上来发起司机押金冻结"
,
"/payment-service/performance/freezeUserMQ"
),
PERFORMANCE_PAY_CLX_ADJUST_DRIVER_FREEZE
(
1000
0
,
"履约服务向老马上来发起司机押金冻结调整"
,
PERFORMANCE_PAY_CLX_ADJUST_DRIVER_FREEZE
(
1000
2
,
"履约服务向老马上来发起司机押金冻结调整"
,
"/payment-service/performance/completeFreezeBatchMQ"
),
PERFORMANCE_PAY_CLX_WALLET
(
10003
,
"履约服务向老马上来发起司机余额查询"
,
"/payment-service/performance/getWalletAndCard"
),
;
private
final
int
code
;
...
...
performance-web/src/main/java/com/clx/performance/event/EventListenerComponent.java
浏览文件 @
feb08add
...
...
@@ -140,6 +140,7 @@ public class EventListenerComponent {
throw
e
;
}
log
.
info
(
"处理货主借款监听器执行成功"
);
settlementOwnerDetailDao
.
updateInvoiceType
(
settlementOwnerDetail
);
settlementDriverDetailDao
.
updateInvoiceTypeAndPrepayFreightFlag
(
settlementDriverDetail
);
...
...
@@ -210,24 +211,7 @@ public class EventListenerComponent {
String
childNo
=
event
.
getChildNo
();
log
.
info
(
"需要解冻借款的的运单号:{}"
,
childNo
);
List
<
OwnerLoanAccountRunningWaterRecord
>
runningWaterRecordList
=
ownerLoanAccountRunningWaterRecordDao
.
getListByChildNoAndRunningWaterType
(
childNo
,
OwnerLoanAccountRunningWaterRecordEnum
.
RunWaterType
.
APPROVE_FROZEN
.
getCode
());
if
(
CollectionUtil
.
isEmpty
(
runningWaterRecordList
))
{
return
;
}
Long
ownerUserNo
=
runningWaterRecordList
.
get
(
0
).
getOwnerUserNo
();
log
.
info
(
"当前解冻货主:{},流水记录长度{},流水记录{}"
,
ownerUserNo
,
runningWaterRecordList
.
size
(),
JSONUtil
.
parse
(
runningWaterRecordList
));
for
(
OwnerLoanAccountRunningWaterRecord
record
:
runningWaterRecordList
)
{
Long
loanNo
=
record
.
getLoanNo
();
Integer
loanType
=
record
.
getLoanType
();
String
ownerUserName
=
record
.
getOwnerUserName
();
BigDecimal
balance
=
record
.
getAlterationBalance
();
//解冻借款
orderChildLoanComponent
.
thawOwnerLoanAccount
(
loanNo
,
loanType
,
ownerUserNo
,
ownerUserName
,
record
.
getMobile
(),
childNo
,
balance
);
}
orderChildLoanComponent
.
orderChildCancelAfter
(
childNo
);
}
@EventListener
(
classes
=
{
OwnerLoanThawEvent
.
class
})
...
...
performance-web/src/main/java/com/clx/performance/extranal/order/InvoicingCompanyService.java
0 → 100644
浏览文件 @
feb08add
package
com
.
clx
.
performance
.
extranal
.
order
;
import
com.clx.order.vo.pc.carrier.InvoicingCompanyVO
;
import
com.msl.common.base.Optional
;
public
interface
InvoicingCompanyService
{
Optional
<
InvoicingCompanyVO
>
getInvoicingCompany
(
int
id
);
InvoicingCompanyVO
getInvoicingCompanyByGroupCode
(
String
companyGroupCode
);
}
performance-web/src/main/java/com/clx/performance/extranal/order/impl/InvoicingCompanyServiceImpl.java
0 → 100644
浏览文件 @
feb08add
package
com
.
clx
.
performance
.
extranal
.
order
.
impl
;
import
com.clx.order.feign.InvoicingCompanyFeign
;
import
com.clx.order.vo.pc.carrier.InvoicingCompanyVO
;
import
com.clx.performance.extranal.order.InvoicingCompanyService
;
import
com.msl.common.base.Optional
;
import
com.msl.common.result.Result
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
@Slf4j
@Service
public
class
InvoicingCompanyServiceImpl
implements
InvoicingCompanyService
{
@Autowired
private
InvoicingCompanyFeign
invoicingCompanyFeign
;
@Override
public
Optional
<
InvoicingCompanyVO
>
getInvoicingCompany
(
int
id
)
{
return
Optional
.
ofNullable
(
invoicingCompanyFeign
.
getInvoicingCompany
(
id
))
.
filter
(
Result:
:
succeed
)
.
map
(
Result:
:
getData
);
}
@Override
public
InvoicingCompanyVO
getInvoicingCompanyByGroupCode
(
String
companyGroupCode
)
{
return
Optional
.
of
(
invoicingCompanyFeign
.
getInvoicingCompanyByGroupCode
(
companyGroupCode
))
.
filter
(
Result:
:
succeed
)
.
map
(
Result:
:
getData
)
.
orNull
();
}
}
performance-web/src/main/java/com/clx/performance/job/SettlementOwnerMontnJob.java
浏览文件 @
feb08add
package
com
.
clx
.
performance
.
job
;
import
com.clx.performance.dao.settle.SettlementOwnerDao
;
import
com.clx.performance.enums.settle.SettlementOwnerEnum
;
import
com.clx.performance.service.settle.SettlementOwnerService
;
import
com.clx.performance.utils.LocalDateTimeUtils
;
import
com.msl.common.job.JobLog
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
@Slf4j
@Component
public
class
SettlementOwnerMontnJob
{
@Autowired
SettlementOwnerService
settlementOwnerService
;
@Autowired
private
SettlementOwnerDao
settlementOwnerDao
;
/**
* 月结货主结算单状态变更为锁定
...
...
@@ -32,7 +38,25 @@ public class SettlementOwnerMontnJob {
}
}
/**
* 日结货主结算单状态变更为锁定
*/
@XxlJob
(
"settlementOwnerDailyInit"
)
public
void
settlementOwnerDailyInit
()
{
try
{
// 锁定前一天数据
LocalDateTime
settlementPeriodTime
=
LocalDateTimeUtils
.
getDayStart
().
minusDays
(
1
);
//所有日结的待锁定的货主结算单修改状态为锁定
settlementOwnerDao
.
updateDailyLock
(
SettlementOwnerEnum
.
SettlementPeriodType
.
DAILY
.
getCode
(),
settlementPeriodTime
,
SettlementOwnerEnum
.
Status
.
TO_BE_LOCKED
.
getCode
(),
SettlementOwnerEnum
.
Status
.
TO_BE_ACCOUNT
.
getCode
());
}
catch
(
Exception
e
)
{
log
.
warn
(
"日结货主结算单状态变更为锁定,异常原因:{}"
,
e
);
JobLog
.
error
(
"日结货主结算单状态变更为锁定,异常原因====================="
,
e
);
}
}
}
performance-web/src/main/java/com/clx/performance/listener/OrderChildSyncTransportListener.java
浏览文件 @
feb08add
package
com
.
clx
.
performance
.
listener
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.order.vo.pc.carrier.InvoicingCompanyVO
;
import
com.clx.performance.component.IdGenerateSnowFlake
;
import
com.clx.performance.component.OrderChildLoanComponent
;
import
com.clx.performance.component.ThirdComponent
;
import
com.clx.performance.config.SettlementConfig
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
...
...
@@ -19,7 +20,7 @@ import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import
com.clx.performance.enums.settle.SettlementOwnerEnum
;
import
com.clx.performance.enums.settle.SettlementWayEnum
;
import
com.clx.performance.event.OwnerLoanEvent
;
import
com.clx.performance.e
vent.SettlementUpdateEvent
;
import
com.clx.performance.e
xtranal.order.InvoicingCompanyService
;
import
com.clx.performance.feign.TransportFeignService
;
import
com.clx.performance.model.*
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
...
...
@@ -27,19 +28,16 @@ import com.clx.performance.model.settle.SettlementOwnerDetail;
import
com.clx.performance.param.feign.transport.ThirdOrderChildBrokerParam
;
import
com.clx.performance.service.TransportSyncService
;
import
com.clx.performance.service.settle.NetworkDriverRunningWaterRecordService
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.msl.common.dto.HttpDTO
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.exception.ExceptionUtils
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.context.ApplicationEventPublisher
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -72,7 +70,12 @@ public class OrderChildSyncTransportListener {
private
final
OrderChildSyncTransportInvoiceRecordDao
orderChildSyncTransportInvoiceRecordDao
;
private
final
ApplicationEventPublisher
applicationEventPublisher
;
private
final
InvoicingCompanyService
invoicingCompanyService
;
private
final
SettlementConfig
settlementConfig
;
/**
* 承运同步网络货运运单
*/
@RabbitListener
(
queues
=
RabbitKeyConstants
.
ORDER_CHILD_SYNC_TRANSPORT_QUEUE
)
public
void
onMessage
(
String
message
)
{
OrderChild
orderChild
=
JSONUtil
.
toBean
(
message
,
OrderChild
.
class
);
...
...
@@ -93,12 +96,15 @@ public class OrderChildSyncTransportListener {
public
void
transportOrderChildProcess
(
OrderChild
orderChild
)
{
Integer
invoiceType
=
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
();
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
get
();
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
orderChild
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementDriverDetail
settlementDriverDetail
=
settlementDriverDetailDao
.
getByChildNo
(
orderChild
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
settlementOwnerDetail
.
setInvoiceFreight
(
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
settlementOwnerDetail
.
setInvoiceFreight
(
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
orderGoods
.
getInvoiceServiceFeeRate
(),
settlementOwnerDetail
));
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
get
();
ThirdOrderChildBrokerParam
param
=
transportSyncService
.
generateOrderChildSync
(
orderChild
,
orderGoods
,
settlementOwnerDetail
,
settlementDriverDetail
);
// 同步网络货运
HttpDTO
httpDTOResult
=
transportFeignService
.
orderChildSync
(
param
);
String
decrypt
=
ThirdComponent
.
decrypt
(
httpDTOResult
.
getData
());
OrderChildSyncDTO
bean
=
JSONUtil
.
toBean
(
decrypt
,
OrderChildSyncDTO
.
class
);
...
...
@@ -109,7 +115,7 @@ public class OrderChildSyncTransportListener {
public
void
extracted
(
OrderChild
orderChild
,
OrderChildSyncDTO
bean
,
String
remark
,
SettlementOwnerDetail
settlementOwnerDetail
,
Integer
invoiceType
,
SettlementDriverDetail
settlementDriverDetail
)
{
settlementOwnerDetail
.
setInvoiceFreight
(
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
)
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
get
(
);
if
(
null
!=
bean
&&
bean
.
getCode
()
==
0
)
{
log
.
info
(
"当前OrderChildSyncTransportListener监听同步网络货运成功,运单号为{}"
,
orderChild
.
getChildNo
());
...
...
@@ -159,32 +165,57 @@ public class OrderChildSyncTransportListener {
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
}
}
}
else
{
}
else
{
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO
.
getCode
());
}
}
else
{
}
else
{
log
.
info
(
"当前OrderChildSyncTransportListener监听同步网络货运失败,变为普通单,运单号{}, 错误信息{}"
,
orderChild
.
getChildNo
(),
remark
);
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO
.
getCode
());
}
settlementOwnerDetail
.
setSettlementFreight
(
settlementFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
// 结算金额
settlementOwnerDetail
.
setSettlementFreight
(
settlementFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
if
(
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
().
equals
(
invoiceType
))
{
if
(
settlementOwnerDetail
.
getSettlementFreight
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO_REQUIRE
.
getCode
());
}
// 如果开票标识为“普通单”时,开票费率从开票公司“五寨华祥”中获取
settlementOwnerDetail
.
setInvoiceServiceFeeRate
(
BigDecimal
.
ZERO
);
InvoicingCompanyVO
invoiceCompany
=
invoicingCompanyService
.
getInvoicingCompanyByGroupCode
(
settlementConfig
.
getInvoiceCompanyDefault
().
getCompanyGroupCode
());
//设置开票公司信息
settlementOwnerDetail
.
setInvoicingCompanyId
(
invoiceCompany
.
getId
());
settlementOwnerDetail
.
setInvoicingCompanyShorterName
(
invoiceCompany
.
getCompanyShorterName
());
settlementOwnerDetail
.
setInvoicingCompanyGroupCode
(
invoiceCompany
.
getCompanyGroupCode
());
settlementDriverDetail
.
setInvoicingCompanyId
(
invoiceCompany
.
getId
());
settlementDriverDetail
.
setInvoicingCompanyShorterName
(
invoiceCompany
.
getCompanyShorterName
());
settlementDriverDetail
.
setInvoicingCompanyGroupCode
(
invoiceCompany
.
getCompanyGroupCode
());
}
else
{
if
(
settlementDriverDetail
.
getSettlementFreight
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO_REQUIRE
.
getCode
());
}
// 如果开票标识为“网运单”时,开票费率取货单单所记录的开票费率
settlementOwnerDetail
.
setInvoiceServiceFeeRate
(
orderGoods
.
getInvoiceServiceFeeRate
()==
null
?
BigDecimal
.
ZERO
:
orderGoods
.
getInvoiceServiceFeeRate
());
}
settlementOwnerDetail
.
setInvoiceType
(
invoiceType
);
settlementDriverDetail
.
setInvoiceType
(
invoiceType
);
// 开票服务费
settlementOwnerDetail
.
setInvoiceServiceFee
(
invoiceServiceFeeCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
// 开票金额
settlementOwnerDetail
.
setInvoiceFreight
(
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
orderGoods
.
getInvoiceServiceFeeRate
(),
settlementOwnerDetail
));
//货主借款事件处理
OwnerLoanMqDTO
dto
=
new
OwnerLoanMqDTO
();
dto
.
setSettlementOwnerDetail
(
settlementOwnerDetail
);
...
...
@@ -261,20 +292,49 @@ public class OrderChildSyncTransportListener {
/**
* 开票金额
*/
private
BigDecimal
invoiceFreightCalc
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
private
BigDecimal
invoiceFreightCalc
(
Integer
settlementWay
,
BigDecimal
invoiceServiceFeeRate
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
LOAD
.
getCode
()))
{
//订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getLossFreight
());
}
else
{
//订单结算方式为“卸车净重”时,开票金额=实际净重*平台运费报价。
}
else
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
UNLOAD_LOSS
.
getCode
()))
{
if
(
invoiceServiceFeeRate
!=
null
){
//结算方式为“卸车净重(减货损)”,平台运费报价为“未税”时,开票金额=平台运费单价*实际净重-货损单价*货损吨数+开票服务费。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getLossPrice
())
.
add
(
settlementOwnerDetail
.
getInvoiceServiceFee
());
}
else
{
//结算方式为“卸车净重(减货损)”,平台运费报价为“含税”时 开票金额=平台运费单价*实际净重-货损单价*货损吨数
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getLossFreight
());
}
}
else
{
//订单结算方式为“卸车净重”时,开票金额=实际净重*平台运费报价。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
());
}
}
/**
* 开票服务费金额
*/
private
BigDecimal
invoiceServiceFeeCalc
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
return
settlementOwnerDetail
.
getFreight
().
subtract
(
settlementOwnerDetail
.
getLossFreight
())
.
divide
(
BigDecimal
.
ONE
.
subtract
(
settlementOwnerDetail
.
getInvoiceServiceFeeRate
()),
0
,
RoundingMode
.
HALF_UP
)
.
multiply
(
settlementOwnerDetail
.
getInvoiceServiceFeeRate
()).
setScale
(
0
,
RoundingMode
.
HALF_UP
);
}
private
BigDecimal
settlementFreightCalc
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
LOAD
.
getCode
()))
{
//订单结算方式为“装车净重”时,结算金额=实际净重*平台运费报价-预付运费-货损金额。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getPrepayFreight
()).
subtract
(
settlementOwnerDetail
.
getLossFreight
());
}
else
{
//订单结算方式为“卸车净重”时,结算金额=实际净重*平台运费报价-预付运费
}
else
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
UNLOAD_LOSS
.
getCode
()))
{
//结算方式为“卸车净重(减货损)“,结算金额=开票金额-预付运费金额-借款抵扣金额。
return
settlementOwnerDetail
.
getInvoiceFreight
()
.
subtract
(
settlementOwnerDetail
.
getPrepayFreight
())
.
subtract
(
settlementOwnerDetail
.
getLoanFreight
());
}
else
{
//订单结算方式为“卸车净重”时,结算金额=实际净重*平台运费报价-预付运费
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
()).
subtract
(
settlementOwnerDetail
.
getPrepayFreight
());
}
}
...
...
performance-web/src/main/java/com/clx/performance/model/OrderGoods.java
浏览文件 @
feb08add
...
...
@@ -189,8 +189,15 @@ public class OrderGoods implements HasKey<Integer> {
@ApiModelProperty
(
"批次号"
)
private
Long
batchNumber
;
@ApiModelProperty
(
"平台运费报价税类型:0未税 1含税"
)
private
Integer
platformFreightQuotationTaxType
;
@ApiModelProperty
(
"开票服务率%"
)
private
BigDecimal
invoiceServiceFeeRate
;
@TableField
(
"platform_service_fee_rate"
)
@ApiModelProperty
(
"平台服务费费率%"
)
private
BigDecimal
platformServiceFeeRate
;
@TableField
(
"deposit"
)
@ApiModelProperty
(
"接单保证金(分/车)"
)
private
BigDecimal
deposit
;
...
...
performance-web/src/main/java/com/clx/performance/model/settle/SettlementDriver.java
浏览文件 @
feb08add
...
...
@@ -50,6 +50,7 @@ public class SettlementDriver implements HasKey<Integer> {
private
String
payErrorMsg
;
//支付失败原因
private
Integer
invoicingCompanyId
;
//开票公司id
private
Integer
invoicingCompanyShorterName
;
//开票公司简称
private
String
invoicingCompanyGroupCode
;
//开票公司统一社会信用代码
private
BigDecimal
platformServiceFee
;
//平台服务费(分)
private
BigDecimal
platformServiceFeeRate
;
//平台服务费费率%
private
Integer
status
;
//状态
...
...
performance-web/src/main/java/com/clx/performance/model/settle/SettlementDriverDetail.java
浏览文件 @
feb08add
...
...
@@ -49,7 +49,8 @@ public class SettlementDriverDetail implements HasKey<Integer> {
private
BigDecimal
settlementFreight
;
//结算金额(分)
private
Integer
invoiceType
;
//开票标识:1网运单 2普通单
private
Integer
invoicingCompanyId
;
//开票公司id
private
Integer
invoicingCompanyShorterName
;
//开票公司简称
private
String
invoicingCompanyShorterName
;
//开票公司简称
private
String
invoicingCompanyGroupCode
;
//开票公司统一社会信用代码
private
BigDecimal
platformServiceFee
;
//平台服务费(分)
private
BigDecimal
platformServiceFeeRate
;
//平台服务费费率%
private
Integer
status
;
//状态
...
...
performance-web/src/main/java/com/clx/performance/model/settle/SettlementPlatformServiceFee.java
浏览文件 @
feb08add
...
...
@@ -28,8 +28,9 @@ public class SettlementPlatformServiceFee implements HasKey<Integer> {
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
//id
private
String
childNo
;
//运单编号
private
Long
driverUserNo
;
//车主用户编号
private
String
driverName
;
//车主名称
private
Long
driverUserNo
;
//司机用户编号
private
String
driverName
;
//司机名称
private
String
driverMobile
;
//司机手机号
private
Integer
sendAddressId
;
//发货地址id
private
String
sendAddress
;
//发货地址
private
Integer
receiveAddressId
;
//收货地址id
...
...
performance-web/src/main/java/com/clx/performance/service/PaymentService.java
浏览文件 @
feb08add
...
...
@@ -3,6 +3,7 @@ package com.clx.performance.service;
import
com.clx.performance.param.pc.payment.PayParam
;
import
com.clx.performance.param.pc.payment.PayPlatformFeeParam
;
import
com.clx.performance.param.pc.payment.WalletResidueDTO
;
import
com.msl.common.result.Result
;
public
interface
PaymentService
{
...
...
@@ -23,4 +24,8 @@ public interface PaymentService {
void
updateOrderPaymentSuccess
(
String
orderNo
,
Integer
operation
,
String
paymentItem
);
void
updateOrderPaymentSerialNoSuccess
(
String
orderNo
,
String
serialNo
,
Integer
operation
,
String
paymentItem
);
WalletResidueDTO
getWalletAndCard
(
Integer
userCode
);
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
浏览文件 @
feb08add
...
...
@@ -4,12 +4,15 @@ import cn.hutool.json.JSONUtil;
import
cn.hutool.core.util.ArrayUtil
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.order.enums.InvoicingCompanyEnum
;
import
com.clx.order.enums.OrderEnum
;
import
com.clx.order.enums.VehicleUsageEnum
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.vo.feign.FeignAddressVO
;
import
com.clx.order.vo.feign.FeignOrderInfoVO
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.order.vo.pc.carrier.InvoicingCompanyVO
;
import
com.clx.order.vo.pc.owner.OwnerQuotationDetailVO
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderChildLoanComponent
;
import
com.clx.performance.constant.RedisConstants
;
...
...
@@ -19,10 +22,14 @@ import com.clx.performance.dao.breakcontract.BreakContractDriverRecordDao;
import
com.clx.performance.dao.settle.SettlementOwnerDetailDao
;
import
com.clx.performance.dto.OrderChildExpectDTO
;
import
com.clx.performance.dto.gd.GdRouteDTO
;
import
com.clx.performance.dto.payment.PaymentDTO
;
import
com.clx.performance.dto.payment.WalletResidueCardDTO
;
import
com.clx.performance.dto.zjxl.TruckLocationDTO
;
import
com.clx.performance.dto.zjxl.TruckTraceDTO
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.enums.settle.SettlementWayEnum
;
import
com.clx.performance.extranal.order.InvoicingCompanyService
;
import
com.clx.performance.extranal.order.QuotationService
;
import
com.clx.performance.extranal.user.*
;
import
com.clx.performance.feign.FeignPaymentService
;
import
com.clx.performance.model.*
;
...
...
@@ -34,6 +41,7 @@ import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PageMonitorOrderChildQCParam
;
import
com.clx.performance.param.pc.PagePoundAuditParam
;
import
com.clx.performance.param.pc.payment.PayPlatformFeeParam
;
import
com.clx.performance.service.*
;
import
com.clx.performance.service.breakcontract.BreakContractDriverRecordService
;
import
com.clx.performance.service.child.OrderChildPostService
;
...
...
@@ -49,6 +57,7 @@ import com.clx.performance.utils.zjxl.ZjxlGpsService;
import
com.clx.performance.vo.app.*
;
import
com.clx.performance.vo.app.owner.OwnerOrderChildVO
;
import
com.clx.performance.vo.pc.*
;
import
com.clx.performance.vo.pc.carrier.settle.CarrierPagePlatformServiceFeeConfigVO
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
import
com.clx.user.vo.feign.DriverTruckInfoFeignVo
;
import
com.clx.user.vo.feign.OwnerInfoFeignVO
;
...
...
@@ -188,8 +197,15 @@ public class OrderChildServiceImpl implements OrderChildService {
@Autowired
private
TruckTraceService
truckTraceService
;
@Autowired
private
PlatformServiceFeeConfigService
platformServiceFeeConfigService
;
@Autowired
private
InvoicingCompanyService
invoicingCompanyService
;
@Autowired
private
PaymentService
paymentService
;
@Autowired
private
QuotationService
quotationService
;
@Override
public
SaveOrderChildVO
saveOrderChild
(
OrderChildSaveParam
param
)
{
...
...
@@ -269,8 +285,10 @@ public class OrderChildServiceImpl implements OrderChildService {
// 司机接单限制
driverTakeOrderLimit
(
driverTruckInfo
.
getUserNo
());
//接单钱包限制
driverTakeOrderPaymentLimit
(
driverTruckInfo
.
getWalletCode
(),
driverTruckInfo
.
getTruckOwnWalletCode
());
/** 判断当前用户是否为车主 true 车主 */
boolean
truckOwnerFlag
=
Objects
.
equals
(
driverTruckInfo
.
getWalletCode
(),
driverTruckInfo
.
getTruckOwnWalletCode
());
/** 冻结的钱包账户**/
Integer
checkWalletCode
=
truckOwnerFlag
?
driverTruckInfo
.
getWalletCode
()
:
driverTruckInfo
.
getTruckOwnWalletCode
();
LocalDateTime
now
=
LocalDateTime
.
now
();
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
param
.
getOrderGoodsNo
()).
orElseThrow
(
...
...
@@ -280,6 +298,13 @@ public class OrderChildServiceImpl implements OrderChildService {
log
.
warn
(
"货单已暂停"
);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_INVALID
,
"当前货单无效"
);
}
//获取平台 接单保证金 和服务费率
BigDecimal
deposit
=
BigDecimal
.
ZERO
;
if
(
Objects
.
nonNull
(
orderGoods
.
getDeposit
())){
deposit
=
orderGoods
.
getDeposit
();
//接单保证金
}
//接单钱包限制
driverTakeOrderPaymentLimit
(
driverTruckInfo
.
getWalletCode
(),
driverTruckInfo
.
getTruckOwnWalletCode
(),
deposit
);
// 状态验证
if
(!
Objects
.
equals
(
orderGoods
.
getOrderGoodsStatus
(),
OrderGoodsStatusEnum
.
Status
.
PAYING
.
getCode
())
&&
...
...
@@ -288,6 +313,24 @@ public class OrderChildServiceImpl implements OrderChildService {
}
FeignOrderInfoVO
orderInfo
=
orderService
.
getOrderInfo
(
orderGoods
.
getOrderNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_INVALID
);
log
.
info
(
"开票公司id {} "
,
orderInfo
.
getInvoicingCompanyId
());
/** 存在开票公司 **/
if
(
Objects
.
nonNull
(
orderInfo
.
getInvoicingCompanyId
())
&&
orderInfo
.
getInvoicingCompanyId
()
>
0
)
{
InvoicingCompanyVO
invoicingCompanyVO
=
invoicingCompanyService
.
getInvoicingCompany
(
orderInfo
.
getInvoicingCompanyId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
/** 是否支持车主接单,0:否,1:是,默认是
* 逻辑:如果结算方式是 卸车净重(减货损),开票公司支持车主模式 , 那么都可以接单 如果不支持车主模式 ,只能车主接单**/
log
.
info
(
"是否支持车主模式 {} "
,
invoicingCompanyVO
.
getSupportOwnerOrder
());
log
.
info
(
"结算方式 {} "
,
orderGoods
.
getSettlementWay
());
log
.
info
(
"是否是车主 {} "
,
truckOwnerFlag
);
if
(
Objects
.
equals
(
invoicingCompanyVO
.
getSupportOwnerOrder
(),
0
)
&&
Objects
.
equals
(
orderGoods
.
getSettlementWay
(),
SettlementWayEnum
.
WayType
.
UNLOAD_LOSS
.
getCode
()))
{
if
(!
truckOwnerFlag
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_DRIVER_LIMIT
);
}
}
}
OwnerInfoFeignVO
ownerInfo
=
ownerInfoService
.
getOwnerInfo
(
orderInfo
.
getOwnerUserNo
());
// // 车型限制
...
...
@@ -418,9 +461,7 @@ public class OrderChildServiceImpl implements OrderChildService {
// 平台服务费
orderChild
.
setPlatformServiceFeeRate
(
orderGoods
.
getPlatformServiceFeeRate
());
orderChild
.
setPlatformServiceFee
(
orderChild
.
getPlatformServiceFeeRate
()!=
null
?
orderChild
.
getFreight
().
multiply
(
orderChild
.
getPlatformServiceFeeRate
())
:
null
);
orderChild
.
setPlatformServiceFee
(
orderGoods
.
getDeposit
());
orderChild
.
setDeposit
(
orderGoods
.
getDeposit
());
// 更新货单数据
...
...
@@ -432,7 +473,16 @@ public class OrderChildServiceImpl implements OrderChildService {
// 新增运单
orderChildDao
.
saveEntity
(
orderChild
);
// 冻结司机保证金
if
(
deposit
.
compareTo
(
BigDecimal
.
ZERO
)
==
1
){
PayPlatformFeeParam
payPlatformFeeParam
=
new
PayPlatformFeeParam
();
payPlatformFeeParam
.
setTradeNo
(
childNo
);
payPlatformFeeParam
.
setFrom
(
checkWalletCode
);
payPlatformFeeParam
.
setFigure
(
orderGoods
.
getDeposit
().
intValue
());
payPlatformFeeParam
.
setPwd
(
param
.
getPwd
());
//冻结司机押金
paymentService
.
paymentPlatformFee
(
payPlatformFeeParam
);
}
// 更新出车状态
updateDriverOrderStatusLock
(
orderChild
.
getDriverUserNo
(),
orderChild
.
getTruckId
());
...
...
@@ -749,18 +799,77 @@ public class OrderChildServiceImpl implements OrderChildService {
if
(
orderChild
.
getLoadTime
()
==
null
&&
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()))
{
//计算司机保证金
BigDecimal
net
=
param
.
getLoadRough
().
subtract
(
param
.
getLoadTare
());
PaymentDTO
paymentDTO
=
getPaymentDTO
(
net
,
orderChild
);
if
(
Objects
.
nonNull
(
paymentDTO
.
getPlatformServiceFeeNew
())
&&
paymentDTO
.
getPlatformServiceFeeNew
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
orderChild
.
setPlatformServiceFee
(
paymentDTO
.
getPlatformServiceFeeNew
());
}
updateLoadFirst
(
param
,
orderChild
,
orderGoods
);
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
LOAD
.
getCode
(),
OrderChildLogEnum
.
Type
.
LOAD
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
//判断是否平衡冻结金额
if
(
Objects
.
nonNull
(
paymentDTO
.
getChangeDeposit
())
&&
paymentDTO
.
getChangeDeposit
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
){
paymentChangePlatformFee
(
childNo
,
paymentDTO
.
getChangeDeposit
());
}
}
else
{
//计算司机保证金
BigDecimal
net
=
param
.
getLoadRough
().
subtract
(
param
.
getLoadTare
());
PaymentDTO
paymentDTO
=
getPaymentDTO
(
net
,
orderChild
);
if
(
Objects
.
nonNull
(
paymentDTO
.
getPlatformServiceFeeNew
())
&&
paymentDTO
.
getPlatformServiceFeeNew
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
orderChild
.
setPlatformServiceFee
(
paymentDTO
.
getPlatformServiceFeeNew
());
}
updateReload
(
param
,
orderChild
,
orderGoods
);
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
RELOAD
.
getCode
(),
OrderChildLogEnum
.
Type
.
RELOAD
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
//判断是否平衡冻结金额
if
(
Objects
.
nonNull
(
paymentDTO
.
getChangeDeposit
())
&&
paymentDTO
.
getChangeDeposit
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
){
paymentChangePlatformFee
(
childNo
,
paymentDTO
.
getChangeDeposit
());
}
}
}
/***
* 获取最新的保证金金额和本次调增的金额
*/
public
PaymentDTO
getPaymentDTO
(
BigDecimal
net
,
OrderChild
orderChild
){
//计算司机保证金
BigDecimal
freightPrice
=
orderChild
.
getFreightPrice
();
BigDecimal
deposit
=
orderChild
.
getDeposit
();
BigDecimal
platformServiceFeeRate
=
orderChild
.
getPlatformServiceFeeRate
();
BigDecimal
platformServiceFee
=
orderChild
.
getPlatformServiceFee
();
//平台服务费
//本次调整金额
BigDecimal
changeDeposit
=
BigDecimal
.
ZERO
;
//本次调整金额
BigDecimal
platformServiceFeeNew
=
BigDecimal
.
ZERO
;
/**
* 如果之前未冻结保证金,本次不调整
* 如果 平台服务费率 为0 本次不处理
* 如果 本次吨数为 0 本次不处理
* 如果 本次调整金额为 0 本次不处理
* **/
if
(
Objects
.
nonNull
(
deposit
)
&&
deposit
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
&&
Objects
.
nonNull
(
platformServiceFee
)
&&
platformServiceFee
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
&&
Objects
.
nonNull
(
platformServiceFeeRate
)
&&
platformServiceFeeRate
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
&&
Objects
.
nonNull
(
net
)
&&
net
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
platformServiceFeeNew
=
net
.
multiply
(
freightPrice
).
setScale
(
2
,
RoundingMode
.
HALF_UP
).
multiply
(
platformServiceFeeRate
).
setScale
(
2
,
RoundingMode
.
HALF_UP
);
changeDeposit
=
platformServiceFeeNew
.
subtract
(
platformServiceFee
);
}
return
PaymentDTO
.
builder
().
changeDeposit
(
changeDeposit
).
platformServiceFeeNew
(
platformServiceFeeNew
).
build
();
}
private
void
updateLoadFirst
(
OrderChildLoadParam
param
,
OrderChild
orderChild
,
OrderGoods
orderGoods
)
{
String
childNo
=
param
.
getChildNo
();
BigDecimal
loadNet
=
param
.
getLoadRough
().
subtract
(
param
.
getLoadTare
());
...
...
@@ -877,16 +986,38 @@ public class OrderChildServiceImpl implements OrderChildService {
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_WEIGHT_ERROR);
// }
if
(
orderChild
.
getUnloadTime
()
==
null
&&
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_RECEIVE
.
getCode
()))
{
//计算司机保证金
BigDecimal
net
=
param
.
getUnloadRough
().
subtract
(
param
.
getUnloadTare
());
PaymentDTO
paymentDTO
=
getPaymentDTO
(
net
,
orderChild
);
if
(
Objects
.
nonNull
(
paymentDTO
.
getPlatformServiceFeeNew
())
&&
paymentDTO
.
getPlatformServiceFeeNew
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
orderChild
.
setPlatformServiceFee
(
paymentDTO
.
getPlatformServiceFeeNew
());
}
updateUnloadFirst
(
param
,
orderChild
);
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
UNLOAD
.
getCode
(),
OrderChildLogEnum
.
Type
.
UNLOAD
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
orderChildPoundLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getMsg
(),
OrderChildLogEnum
.
CreateType
.
DRIVER
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
//判断是否平衡冻结金额
if
(
Objects
.
nonNull
(
paymentDTO
.
getChangeDeposit
())
&&
paymentDTO
.
getChangeDeposit
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
){
paymentChangePlatformFee
(
childNo
,
paymentDTO
.
getChangeDeposit
());
}
}
else
{
//计算司机保证金
BigDecimal
net
=
param
.
getUnloadRough
().
subtract
(
param
.
getUnloadTare
());
PaymentDTO
paymentDTO
=
getPaymentDTO
(
net
,
orderChild
);
if
(
Objects
.
nonNull
(
paymentDTO
.
getPlatformServiceFeeNew
())
&&
paymentDTO
.
getPlatformServiceFeeNew
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
orderChild
.
setPlatformServiceFee
(
paymentDTO
.
getPlatformServiceFeeNew
());
}
updateReUnload
(
param
,
orderChild
);
// 日志
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
REUNLOAD
.
getCode
(),
...
...
@@ -894,6 +1025,24 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildPoundLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getMsg
(),
OrderChildLogEnum
.
CreateType
.
DRIVER
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
//判断是否平衡冻结金额
if
(
Objects
.
nonNull
(
paymentDTO
.
getChangeDeposit
())
&&
paymentDTO
.
getChangeDeposit
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
){
paymentChangePlatformFee
(
childNo
,
paymentDTO
.
getChangeDeposit
());
}
}
}
/***
* 平衡司机冻结保证金
*/
public
void
paymentChangePlatformFee
(
String
childNo
,
BigDecimal
changeDeposite
){
if
(
changeDeposite
.
compareTo
(
BigDecimal
.
ZERO
)
==
1
){
PayPlatformFeeParam
payPlatformFeeParam
=
new
PayPlatformFeeParam
();
payPlatformFeeParam
.
setTradeNo
(
childNo
);
payPlatformFeeParam
.
setFigure
(
changeDeposite
.
intValue
());
//冻结司机押金
paymentService
.
paymentChangePlatformFee
(
payPlatformFeeParam
);
}
}
...
...
@@ -1110,6 +1259,13 @@ public class OrderChildServiceImpl implements OrderChildService {
audit
.
setLoadRough
(
orderChild
.
getLoadRough
());
audit
.
setLoadTare
(
orderChild
.
getLoadTare
());
//计算司机保证金
BigDecimal
net
=
param
.
getLoadRough
().
subtract
(
param
.
getLoadTare
());
PaymentDTO
paymentDTO
=
getPaymentDTO
(
net
,
orderChild
);
if
(
Objects
.
nonNull
(
paymentDTO
.
getPlatformServiceFeeNew
())
&&
paymentDTO
.
getPlatformServiceFeeNew
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
orderChild
.
setPlatformServiceFee
(
paymentDTO
.
getPlatformServiceFeeNew
());
}
// 更新装车净重
updateOrderGoodsAmountLoad
(
orderGoods
,
childNo
,
dif
,
OrderGoodsStatusEnum
.
Status
.
GO_TO_SEND
.
getCode
());
...
...
@@ -1128,6 +1284,12 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildPoundLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getCode
(),
OrderChildPoundAuditEnum
.
Status
.
AUDIT
.
getMsg
(),
OrderChildLogEnum
.
CreateType
.
DRIVER
.
getCode
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
//判断是否平衡冻结金额
if
(
Objects
.
nonNull
(
paymentDTO
.
getChangeDeposit
())
&&
paymentDTO
.
getChangeDeposit
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
){
paymentChangePlatformFee
(
childNo
,
paymentDTO
.
getChangeDeposit
());
}
}
@Override
...
...
@@ -1168,7 +1330,6 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild
.
setStatus
(
OrderChildEnum
.
Status
.
UNSETTLE
.
getCode
());
orderChild
.
setConfirmTime
(
LocalDateTime
.
now
());
orderChildDao
.
updateDriverConfirm
(
orderChild
);
// 更新车辆状态
...
...
@@ -1452,7 +1613,20 @@ public class OrderChildServiceImpl implements OrderChildService {
result
.
setPrepayFreight
(
settlementOwnerDetail
.
getPrepayFreight
());
result
.
setSettlementFreight
(
settlementOwnerDetail
.
getSettlementFreight
());
}
//获取订单配置的违约金方案
OwnerQuotationDetailVO
quotationDetailVO
=
quotationService
.
getQuotationByOrderNo
(
orderChild
.
getOrderNo
())
.
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
if
(
Objects
.
isNull
(
quotationDetailVO
.
getLiquidatedDamagesPlanId
())){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
}
//货源详情页面 是否显示弹窗和显示平台服务费率
/** 订单结算方式为“卸车净重(减货损)”且平台运费报价为“未税”时 显示平台服务费率和弹窗提示司机平台服务费率**/
if
(
Objects
.
equals
(
orderGoods
.
getSettlementWay
(),
SettlementWayEnum
.
WayType
.
UNLOAD_LOSS
.
getCode
())
&&
Objects
.
equals
(
quotationDetailVO
.
getPlatformFreightQuotationTaxType
(),
InvoicingCompanyEnum
.
TaxType
.
TAX_EXCLUDED
.
getCode
()))
{
result
.
setGoodsOrderDetailShow
(
1
);
}
//查询进行中的运单车辆是否开启了中交兴路
result
.
setNotOpenZJXLMsg
(
isOpenZJXL
(
orderChild
.
getStatus
(),
orderChild
.
getTruckNo
()));
return
result
;
...
...
@@ -1810,7 +1984,7 @@ public class OrderChildServiceImpl implements OrderChildService {
/**
* 司机接单支付校验
*/
private
void
driverTakeOrderPaymentLimit
(
Integer
driverWallCode
,
Integer
truckWalletCode
)
{
private
void
driverTakeOrderPaymentLimit
(
Integer
driverWallCode
,
Integer
truckWalletCode
,
BigDecimal
deposit
)
{
//判断是司机还是车主 接单校验 必须两个都有钱包
if
(
Objects
.
isNull
(
driverWallCode
)
||
Objects
.
isNull
(
truckWalletCode
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
WALLET_CODE_IS_NULL
);
...
...
@@ -1822,10 +1996,25 @@ public class OrderChildServiceImpl implements OrderChildService {
if
(
result
!=
null
&&
Objects
.
equals
(
result
.
getCode
(),
0
)
&&
result
.
getData
()
!=
null
)
{
WalletResidueCardDTO
data
=
result
.
getData
();
//钱包不能为负
if
(
Objects
.
isNull
(
data
.
getResidue
())
||
data
.
getResidue
()
<
0L
)
{
if
(
Objects
.
isNull
(
data
.
getResidue
()))
{
String
remark
=
truckOwnerFlag
?
"钱包余额不足"
:
"车主钱包余额不足"
;
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
APP_POP_UP_ERROR
,
remark
);
}
//目前支付返回的是元 所以乘以100
data
.
setResidue
(
data
.
getResidue
()*
100
);
if
(
data
.
getResidue
()
<
0L
)
{
String
remark
=
truckOwnerFlag
?
"钱包余额不足"
:
"车主钱包余额不足"
;
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
APP_POP_UP_ERROR
,
remark
);
}
//判断余额是否能够缴纳保证金
if
(
data
.
getResidue
()
<
deposit
.
longValue
())
{
String
remark
=
truckOwnerFlag
?
"账户可用余额不足,接单保证金冻结失败,请尽快充值,本次需重置"
+
deposit
.
movePointLeft
(
2
)
+
"元"
:
"车主钱包余额不足,保证金冻结失败请联系车主充值"
;
if
(
truckOwnerFlag
){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
APP_POP_UP_OWNER_RESIDUE_ERROR
,
remark
);
}
else
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
APP_POP_UP_DRIVER_RESIDUE_ERROR
,
remark
);
}
}
//有效银行卡数量 不能为空
if
(
Objects
.
isNull
(
data
.
getCardCount
())
||
data
.
getCardCount
()
<=
0
)
{
...
...
performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java
浏览文件 @
feb08add
...
...
@@ -5,12 +5,14 @@ import cn.hutool.json.JSONUtil;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.order.enums.InvoicingCompanyEnum
;
import
com.clx.order.enums.UpdateEnum
;
import
com.clx.order.enums.VehicleUsageEnum
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.param.feign.OrderCancelReasonParam
;
import
com.clx.order.param.feign.RollbackOrderWeightParam
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.order.vo.pc.owner.OwnerQuotationDetailVO
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderCancelComponent
;
import
com.clx.performance.component.OrderGoodsStatusLazyComponent
;
...
...
@@ -21,6 +23,8 @@ import com.clx.performance.dao.OrderGoodsDriverTruckDao;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.dto.OrderGoodsCancelDTO
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.enums.settle.SettlementWayEnum
;
import
com.clx.performance.extranal.order.QuotationService
;
import
com.clx.performance.extranal.user.DriverService
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
...
...
@@ -43,6 +47,7 @@ import com.clx.performance.vo.pc.OrderGoodsEditVO;
import
com.clx.performance.vo.pc.OrderGoodsVO
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
import
com.clx.user.feign.UserClxFeign
;
import
com.github.mustachejava.ObjectHandler
;
import
com.msl.common.base.Optional
;
import
com.msl.common.enums.ResultCodeEnum
;
import
com.msl.common.exception.ServiceSystemException
;
...
...
@@ -115,6 +120,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
private
OrderChildPostService
orderChildPostService
;
@Autowired
private
RabbitTemplate
rabbitTemplate
;
@Autowired
private
QuotationService
quotationService
;
private
static
Map
<
Integer
,
Consumer
<
OrderGoodsCancelDTO
>>
orderGoodsCancelMap
=
new
HashMap
<>();
...
...
@@ -142,6 +149,21 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
orderGoodsVO
.
setLoadBeginTime
(
orderInfoFeign
.
getLoadBeginTime
());
orderGoodsVO
.
setLoadEndTime
(
orderInfoFeign
.
getLoadEndTime
());
orderGoodsVO
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
.
compareTo
(
orderGoodsVO
.
getResidueTransportWeight
())
>
0
?
BigDecimal
.
ZERO
:
orderGoodsVO
.
getResidueTransportWeight
());
//获取订单配置的违约金方案
OwnerQuotationDetailVO
quotationDetailVO
=
quotationService
.
getQuotationByOrderNo
(
orderNo
).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
if
(
Objects
.
isNull
(
quotationDetailVO
.
getLiquidatedDamagesPlanId
())){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
}
//货源详情页面 是否显示弹窗和显示平台服务费率
/** 订单结算方式为“卸车净重(减货损)”且平台运费报价为“未税”时 显示平台服务费率和弹窗提示司机平台服务费率**/
if
(
Objects
.
equals
(
orderGoodsVO
.
getSettlementWay
(),
SettlementWayEnum
.
WayType
.
UNLOAD_LOSS
.
getCode
())
&&
Objects
.
equals
(
quotationDetailVO
.
getPlatformFreightQuotationTaxType
(),
InvoicingCompanyEnum
.
TaxType
.
TAX_EXCLUDED
.
getCode
()))
{
orderGoodsVO
.
setGoodsOrderDetailShow
(
1
);
}
return
orderGoodsVO
;
}
...
...
performance-web/src/main/java/com/clx/performance/service/impl/PaymentServiceImpl.java
浏览文件 @
feb08add
...
...
@@ -2,6 +2,7 @@ package com.clx.performance.service.impl;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.baomidou.mybatisplus.core.toolkit.CollectionUtils
;
import
com.clx.performance.config.MslPaymentConfig
;
import
com.clx.performance.constant.ActionConstants
;
import
com.clx.performance.dao.ThirdPartRequestLogDao
;
...
...
@@ -13,6 +14,7 @@ import com.clx.performance.enums.*;
import
com.clx.performance.enums.payment.PayOperationStatusEnum
;
import
com.clx.performance.enums.payment.PaymentActionEnum
;
import
com.clx.performance.enums.payment.PaymentStatusEnum
;
import
com.clx.performance.model.OrderGoodsTruckBind
;
import
com.clx.performance.model.ThirdPartRequestLog
;
import
com.clx.performance.model.payment.OrderPayment
;
import
com.clx.performance.param.pc.payment.*
;
...
...
@@ -26,8 +28,10 @@ import com.msl.common.result.Result;
import
com.msl.common.utils.EncryptUtil
;
import
com.msl.common.utils.HttpUtil
;
import
com.msl.common.utils.LocalDateTimeUtils
;
import
io.swagger.models.auth.In
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
...
...
@@ -40,6 +44,7 @@ import java.time.LocalDateTime;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
import
static
com
.
clx
.
performance
.
enums
.
HttpEnum
.
PERFORMANCE_PAY_CLX_PAYMENT
;
...
...
@@ -255,14 +260,25 @@ public class PaymentServiceImpl implements PaymentService {
@Override
public
Result
paymentCompletePlatformFee
(
PayPlatformFeeParam
param
)
{
//查询冻结记录
OrderPayment
orderPaymentOptional
=
orderPaymentDao
.
selectByOrderNoAndItemIdAndOperation
(
param
.
getTradeNo
(),
PayUnitTypeEnum
.
FREEZE_PLATFORM_FEE
.
getCode
()
+
""
,
PayOperationStatusEnum
.
FREEZE
.
getValue
()).
orNull
();
if
(
null
==
orderPaymentOptional
){
List
<
OrderPayment
>
orderPaymentList
=
checkOrderPaymentExit
(
param
);
//如果没有冻结记录
List
<
OrderPayment
>
orderPaymentFreezeList
=
orderPaymentList
.
stream
()
.
filter
(
i
->
i
.
getOperation
().
equals
(
PayOperationStatusEnum
.
FREEZE
.
getValue
()))
.
filter
(
i
->
i
.
getStatus
().
equals
(
PaymentStatusEnum
.
SUCCESS
.
getValue
()))
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
orderPaymentFreezeList
)){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
DATA_NOT_FIND
,
"数据不存在"
)
;
}
//冻结记录是否已经处理
List
<
OrderPayment
>
orderPaymentUnFreezeList
=
orderPaymentList
.
stream
()
.
filter
(
i
->
i
.
getOperation
().
equals
(
PayOperationStatusEnum
.
UNFREEZE
.
getValue
()))
.
filter
(
i
->
i
.
getStatus
().
equals
(
PaymentStatusEnum
.
SUCCESS
.
getValue
()))
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
orderPaymentUnFreezeList
)){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
DATA_NOT_FIND
,
"冻结记录已处理"
)
;
}
OrderPayment
orderPaymentOptional
=
orderPaymentFreezeList
.
get
(
0
);
/** 创建记录 新的调整记录 **/
OrderPayment
orderPayment
=
new
OrderPayment
()
.
setAmount
(
param
.
getFigure
())
...
...
@@ -291,16 +307,37 @@ public class PaymentServiceImpl implements PaymentService {
return
notify
;
}
public
List
<
OrderPayment
>
checkOrderPaymentExit
(
PayPlatformFeeParam
param
){
//查询冻结记录
List
<
OrderPayment
>
orderPaymentList
=
orderPaymentDao
.
listByOrderNo
(
param
.
getTradeNo
(),
PayUnitTypeEnum
.
FREEZE_PLATFORM_FEE
.
getCode
()
+
""
);
if
(
CollectionUtils
.
isEmpty
(
orderPaymentList
)){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
DATA_NOT_FIND
,
"数据不存在"
)
;
}
return
orderPaymentList
;
}
@Override
public
Result
paymentCancelPlatformFee
(
PayPlatformFeeParam
param
)
{
//查询冻结记录
OrderPayment
orderPaymentOptional
=
orderPaymentDao
.
selectByOrderNoAndItemIdAndOperation
(
param
.
getTradeNo
(),
PayUnitTypeEnum
.
FREEZE_PLATFORM_FEE
.
getCode
()
+
""
,
PayOperationStatusEnum
.
FREEZE
.
getValue
()).
orNull
();
if
(
null
==
orderPaymentOptional
){
List
<
OrderPayment
>
orderPaymentList
=
checkOrderPaymentExit
(
param
);
//如果没有冻结记录
List
<
OrderPayment
>
orderPaymentFreezeList
=
orderPaymentList
.
stream
()
.
filter
(
i
->
i
.
getOperation
().
equals
(
PayOperationStatusEnum
.
FREEZE
.
getValue
()))
.
filter
(
i
->
i
.
getStatus
().
equals
(
PaymentStatusEnum
.
SUCCESS
.
getValue
()))
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
orderPaymentFreezeList
)){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
DATA_NOT_FIND
,
"数据不存在"
)
;
}
//冻结记录是否已经处理
List
<
OrderPayment
>
orderPaymentUnFreezeList
=
orderPaymentList
.
stream
()
.
filter
(
i
->
i
.
getOperation
().
equals
(
PayOperationStatusEnum
.
UNFREEZE
.
getValue
()))
.
filter
(
i
->
i
.
getStatus
().
equals
(
PaymentStatusEnum
.
SUCCESS
.
getValue
()))
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
orderPaymentUnFreezeList
)){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
DATA_NOT_FIND
,
"冻结记录已处理"
)
;
}
OrderPayment
orderPaymentOptional
=
orderPaymentFreezeList
.
get
(
0
);
/** 创建记录 新的调整记录 **/
OrderPayment
orderPayment
=
new
OrderPayment
()
.
setAmount
(
param
.
getFigure
())
...
...
@@ -367,6 +404,8 @@ public class PaymentServiceImpl implements PaymentService {
}
/**
* post请求
*/
...
...
@@ -441,7 +480,7 @@ public class PaymentServiceImpl implements PaymentService {
PayEncryptTools
.
sign
(
payUnitDTO
,
PrivateKeyConfig
.
privateKeyByte
);
/** 构建支付支付 ***/
PayUserDTO
payUserDTO
=
PayUserDTO
.
builder
()
.
pwd
(
payDTO
.
getPwd
())
.
pwd
(
"noCheckPwd"
)
// 暂时不校验用户密码
.
system
(
SystemCodeEnum
.
PERFORMANCE_SERVICE
.
getCode
())
.
userCode
(
payDTO
.
getFrom
())
.
orderNo
(
orderPayment
.
getRelationNo
())
...
...
@@ -537,4 +576,25 @@ public class PaymentServiceImpl implements PaymentService {
return
freezeBatchDTO
;
}
/***
* 获取用户的钱包
* @param userCode
* @return
*/
@Override
public
WalletResidueDTO
getWalletAndCard
(
Integer
userCode
)
{
WalletParam
walletParam
=
new
WalletParam
();
walletParam
.
setUserCode
(
userCode
);
Result
<
Object
>
notify
=
(
Result
<
Object
>)
postRequest
(
mslPaymentConfig
.
getHost
()
+
HttpEnum
.
PERFORMANCE_PAY_CLX_WALLET
.
getUrl
(),
JSON
.
toJSONString
(
walletParam
));
log
.
info
(
"获取司机钱包 {} 返回日志 {}"
,
userCode
,
notify
);
if
(
notify
==
null
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
);
}
if
(
notify
.
getCode
()
!=
0
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
notify
.
getMsg
());
}
return
JSON
.
parseObject
(
notify
.
getData
().
toString
(),
WalletResidueDTO
.
class
);
}
}
performance-web/src/main/java/com/clx/performance/service/impl/ordergoods/OrderGoodsPostServiceImpl.java
0 → 100644
浏览文件 @
feb08add
package
com
.
clx
.
performance
.
service
.
impl
.
ordergoods
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.service.ordergoods.OrderGoodsPostService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Slf4j
@Service
public
class
OrderGoodsPostServiceImpl
implements
OrderGoodsPostService
{
@Override
public
void
orderGoodsAdd
(
OrderGoods
orderGoods
)
{
}
@Override
public
void
orderGoodsAdd
(
List
<
OrderGoods
>
orderGoodsList
)
{
}
}
performance-web/src/main/java/com/clx/performance/service/impl/settle/OrderChildSyncTransportRecordServiceImpl.java
浏览文件 @
feb08add
package
com
.
clx
.
performance
.
service
.
impl
.
settle
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.settle.NetworkCaseOutRecordDao
;
import
com.clx.performance.dao.settle.OrderChildSyncTransportRecordDao
;
import
com.clx.performance.dto.PayStatusNotifyDTO
;
import
com.clx.performance.enums.NetworkDriverAccountEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.settle.OrderChildSyncTransportRecord
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.param.pc.payment.PayPlatformFeeParam
;
import
com.clx.performance.service.PaymentService
;
import
com.clx.performance.service.settle.NetworkDriverRunningWaterRecordService
;
import
com.clx.performance.service.settle.OrderChildSyncTransportRecordService
;
import
com.clx.performance.service.settle.SettlementDriverDetailService
;
import
com.clx.performance.service.settle.SettlementDriverService
;
import
com.clx.performance.struct.settle.SettlementDriverDetailStruct
;
import
com.msl.common.result.Result
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Objects
;
/**
* @author kavin
...
...
@@ -36,6 +46,9 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT
private
final
SettlementDriverDetailService
settlementDriverDetailService
;
private
final
OrderChildDao
orderChildDao
;
private
final
PaymentService
paymentService
;
@Override
public
void
addOrderChildSyncTransportRecord
(
SettlementDriverDetail
detail
)
{
OrderChildSyncTransportRecord
record
=
struct
.
convertRecord
(
detail
);
...
...
@@ -44,6 +57,7 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT
orderChildSyncTransportRecordDao
.
saveEntity
(
record
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
updateStatus
(
PayStatusNotifyDTO
payStatusNotifyDTO
)
{
String
childNo
=
payStatusNotifyDTO
.
getChildNo
();
...
...
@@ -54,5 +68,21 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT
);
SettlementDriverDetail
driverDetail
=
settlementDriverDetailService
.
selectOneByChildNo
(
childNo
);
networkDriverRunningWaterRecordService
.
generateCaseOutSuccessRunningWaterRecord
(
driverDetail
);
try
{
//支付平台服务费
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
if
(
Objects
.
nonNull
(
orderChild
.
getPlatformServiceFee
())
&&
!
Objects
.
equals
(
orderChild
.
getPlatformServiceFee
().
intValue
(),
0
))
{
PayPlatformFeeParam
payPlatformFeeParam
=
PayPlatformFeeParam
.
builder
()
.
figure
(
orderChild
.
getPlatformServiceFee
().
intValue
())
.
tradeNo
(
childNo
)
.
build
();
Result
result
=
paymentService
.
paymentCompletePlatformFee
(
payPlatformFeeParam
);
log
.
info
(
"运单完成 第三方回调 {} ,{} "
,
childNo
,
result
);
}
}
catch
(
Exception
e
){
log
.
error
(
"支付平台服务费异常 {}"
,
e
);
}
}
}
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementDriverDetailServiceImpl.java
浏览文件 @
feb08add
...
...
@@ -63,6 +63,19 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
// 结算金额
settlementDriverDetail
.
setSettlementFreight
(
settlementFreightCalc
(
settlementDriverDetail
.
getFreight
(),
settlementDriverDetail
.
getLossFreight
()));
settlementDriverDetail
.
setInvoicingCompanyId
(
orderChild
.
getInvoicingCompanyId
());
settlementDriverDetail
.
setInvoicingCompanyShorterName
(
orderChild
.
getInvoicingCompanyShorterName
());
settlementDriverDetail
.
setInvoicingCompanyGroupCode
(
orderChild
.
getInvoicingCompanyGroupCode
());
// 平台服务费: 司机结算金额*平台服务费费率
settlementDriverDetail
.
setPlatformServiceFeeRate
(
orderChild
.
getPlatformServiceFeeRate
()==
null
?
BigDecimal
.
ZERO
:
orderChild
.
getPlatformServiceFeeRate
());
settlementDriverDetail
.
setPlatformServiceFee
(
settlementDriverDetail
.
getSettlementFreight
()
.
multiply
(
settlementDriverDetail
.
getPlatformServiceFeeRate
()
.
setScale
(
0
,
RoundingMode
.
HALF_UP
)));
settlementDriverDetailDao
.
saveEntity
(
settlementDriverDetail
);
return
settlementDriverDetail
.
getId
();
...
...
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqHandlerServiceImpl.java
浏览文件 @
feb08add
...
...
@@ -6,10 +6,7 @@ import com.clx.performance.config.MslPaymentConfig;
import
com.clx.performance.constant.RedissonConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.settle.SettlementDriverDao
;
import
com.clx.performance.dao.settle.SettlementDriverDetailDao
;
import
com.clx.performance.dao.settle.SettlementOwnerDao
;
import
com.clx.performance.dao.settle.SettlementOwnerDetailDao
;
import
com.clx.performance.dao.settle.*
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.OrderChildLogEnum
;
import
com.clx.performance.enums.PayRemarkEnum
;
...
...
@@ -20,11 +17,9 @@ import com.clx.performance.extranal.user.OrderService;
import
com.clx.performance.extranal.user.OwnerInfoService
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.model.settle.SettlementDriver
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementOwner
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.model.settle.*
;
import
com.clx.performance.param.pc.payment.PayParam
;
import
com.clx.performance.param.pc.payment.PayPlatformFeeParam
;
import
com.clx.performance.service.OrderChildLogService
;
import
com.clx.performance.service.PaymentService
;
import
com.clx.performance.service.impl.UniqueOrderNumService
;
...
...
@@ -94,6 +89,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Autowired
private
OrderChildDao
orderChildDao
;
@Autowired
private
SettlementPlatformServiceFeeDao
settlementPlatformServiceFeeDao
;
@Autowired
private
OrderChildLogService
orderChildLogService
;
...
...
@@ -131,24 +129,46 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
if
(
Objects
.
equals
(
orderGoods
.
getSettlementAccountPeriod
(),
2
)){
//月结
log
.
info
(
"月结初始化货主结算单"
);
LocalDateTime
settlementPeriodTime
=
LocalDateTimeUtils
.
getBeginMonthDate
();
settlementOwner
=
settlementOwnerDao
.
selectUnlockOfSettlementPeriodMonth
(
settlementOwnerDetail
.
getOrderNo
(),
settlementPeriodTime
,
settlementOwnerDetail
.
getInvoiceType
()).
orNull
();
settlementOwner
=
settlementOwnerDao
.
selectUnlockOfSettlementPeriodMonth
(
settlementOwnerDetail
.
getOrderNo
(),
settlementOwnerDetail
.
getInvoicingCompanyId
(),
settlementPeriodTime
,
settlementOwnerDetail
.
getInvoiceType
()).
orNull
();
if
(
settlementOwner
==
null
){
// 月结初始化
settlementNo
=
settlementPeriodMonthInit
(
settlementOwnerDetail
,
settlementPeriodTime
,
ownerInfo
);
settlementNo
=
settlementPeriodMonthInit
(
settlementOwnerDetail
,
settlementPeriodTime
,
SettlementOwnerEnum
.
SettlementPeriodType
.
MONTH
.
getCode
(),
ownerInfo
);
}
else
{
// 月结更新
settlementPeriodMonthUpdate
(
settlementOwner
,
settlementOwnerDetail
);
settlementNo
=
settlementOwner
.
getSettlementNo
();
}
}
else
if
(
Objects
.
equals
(
orderGoods
.
getSettlementAccountPeriod
(),
SettlementOwnerEnum
.
SettlementPeriodType
.
DAILY
.
getCode
())){
//日结
log
.
info
(
"日结初始化货主结算单"
);
LocalDateTime
settlementPeriodTime
=
LocalDateTimeUtils
.
getDayStart
();
settlementOwner
=
settlementOwnerDao
.
selectUnlockOfSettlementPeriodDaily
(
settlementOwnerDetail
.
getOrderNo
(),
settlementOwnerDetail
.
getInvoicingCompanyId
(),
settlementPeriodTime
,
settlementOwnerDetail
.
getInvoiceType
()).
orNull
();
if
(
settlementOwner
==
null
){
// 日结初始化
settlementNo
=
settlementPeriodMonthInit
(
settlementOwnerDetail
,
settlementPeriodTime
,
SettlementOwnerEnum
.
SettlementPeriodType
.
DAILY
.
getCode
(),
ownerInfo
);
}
else
{
// 日结更新
settlementPeriodMonthUpdate
(
settlementOwner
,
settlementOwnerDetail
);
settlementNo
=
settlementOwner
.
getSettlementNo
();
}
}
else
{
log
.
info
(
"拉运完成结初始化货主结算单"
);
settlementOwner
=
settlementOwnerDao
.
selectUnlockOfSettlementPeriodImmediate
(
settlementOwnerDetail
.
getOrderNo
(),
settlementOwnerDetail
.
getInvoiceType
()).
orNull
();
settlementOwner
=
settlementOwnerDao
.
selectUnlockOfSettlementPeriodImmediate
(
settlementOwnerDetail
.
getOrderNo
(),
settlementOwnerDetail
.
getInvoicingCompanyId
(),
settlementOwnerDetail
.
getInvoiceType
()).
orNull
();
if
(
settlementOwner
==
null
){
// 拉运完成初始化
settlementNo
=
settlementPeriodImmediateInit
(
settlementOwnerDetail
,
ownerInfo
);
settlementNo
=
settlementPeriodMonthInit
(
settlementOwnerDetail
,
null
,
SettlementOwnerEnum
.
SettlementPeriodType
.
IMMEDIATE
.
getCode
(),
ownerInfo
);
}
else
{
// 拉运完成更新
settlementPeriod
Immediate
Update
(
settlementOwner
,
settlementOwnerDetail
);
settlementPeriod
Month
Update
(
settlementOwner
,
settlementOwnerDetail
);
settlementNo
=
settlementOwner
.
getSettlementNo
();
}
}
...
...
@@ -178,8 +198,31 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
settlementDetailAdd
(
SettlementDetailAddMqParam
mq
)
{
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getEntityByKey
(
mq
.
getSettlementOwnerDetailId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
//SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getEntityByKey(mq.getSettlementDriverDetailId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriverDetail
settlementDriverDetail
=
settlementDriverDetailDao
.
getEntityByKey
(
mq
.
getSettlementDriverDetailId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
settlementDriverDetail
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementPlatformServiceFee
settlementPlatformServiceFee
=
new
SettlementPlatformServiceFee
();
settlementPlatformServiceFee
.
setChildNo
(
settlementDriverDetail
.
getChildNo
());
settlementPlatformServiceFee
.
setDriverUserNo
(
settlementDriverDetail
.
getDriverUserNo
());
settlementPlatformServiceFee
.
setDriverName
(
settlementDriverDetail
.
getDriverName
());
settlementPlatformServiceFee
.
setDriverMobile
(
orderChild
.
getDriverMobile
());
settlementPlatformServiceFee
.
setSendAddressId
(
orderChild
.
getSendAddressId
());
settlementPlatformServiceFee
.
setSendAddress
(
orderChild
.
getSendAddress
());
settlementPlatformServiceFee
.
setReceiveAddressId
(
orderChild
.
getReceiveAddressId
());
settlementPlatformServiceFee
.
setReceiveAddress
(
orderChild
.
getReceiveAddress
());
settlementPlatformServiceFee
.
setTruckNo
(
orderChild
.
getTruckNo
());
settlementPlatformServiceFee
.
setSettlementFreight
(
settlementDriverDetail
.
getSettlementFreight
());
settlementPlatformServiceFee
.
setInvoiceServiceFeeRate
(
settlementDriverDetail
.
getPlatformServiceFeeRate
());
settlementPlatformServiceFee
.
setInvoiceServiceFee
(
settlementDriverDetail
.
getPlatformServiceFee
());
// 平台服务费
orderChild
.
setPlatformServiceFee
(
settlementDriverDetail
.
getPlatformServiceFee
());
orderChildDao
.
updatePlatformServiceFee
(
orderChild
);
settlementPlatformServiceFeeDao
.
saveEntity
(
settlementPlatformServiceFee
);
// 更新网络标识
settlementService
.
updateSettlementDetailInvoiceType
(
settlementOwnerDetail
.
getChildNo
(),
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
());
}
...
...
@@ -275,7 +318,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
.
remark
(
PayRemarkEnum
.
toString
(
PayRemarkEnum
.
FREIGHT_TO_OWNER
.
getValue
()))
.
build
();
}
//支付司机运费
Result
result
=
null
;
String
msg
=
null
;
try
{
...
...
@@ -284,6 +327,20 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementDriverNotify
(
detail
.
getChildNo
(),
0
,
e
.
getMessage
());
msg
=
e
.
getMessage
();
}
//支付平台服务费
try
{
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
detail
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
if
(
Objects
.
nonNull
(
orderChild
.
getPlatformServiceFee
())
&&
!
Objects
.
equals
(
orderChild
.
getPlatformServiceFee
().
intValue
(),
0
))
{
PayPlatformFeeParam
payPlatformFeeParam
=
PayPlatformFeeParam
.
builder
()
.
figure
(
orderChild
.
getPlatformServiceFee
().
intValue
())
.
tradeNo
(
detail
.
getChildNo
())
.
build
();
result
=
paymentService
.
paymentCompletePlatformFee
(
payPlatformFeeParam
);
}
}
catch
(
Exception
e
){
log
.
error
(
"支付平台服务费异常 {}"
,
e
);
}
if
(
Objects
.
nonNull
(
result
)){
settlementDriverNotify
(
detail
.
getChildNo
(),
0
,
result
.
getMsg
());
}
...
...
@@ -299,10 +356,14 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
/**
* 月结初始化
*/
private
String
settlementPeriodMonthInit
(
SettlementOwnerDetail
settlementOwnerDetail
,
LocalDateTime
settlementPeriodTime
,
OwnerInfoFeignVO
ownerInfo
){
private
String
settlementPeriodMonthInit
(
SettlementOwnerDetail
settlementOwnerDetail
,
LocalDateTime
settlementPeriodTime
,
Integer
settlementPeriodType
,
OwnerInfoFeignVO
ownerInfo
){
FeignOrderInfoVO
orderInfo
=
orderService
.
getOrderInfo
(
settlementOwnerDetail
.
getOrderNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_INVALID
);
FeignOrderInfoVO
orderInfo
=
orderService
.
getOrderInfo
(
settlementOwnerDetail
.
getOrderNo
())
.
orElseThrow
(
PerformanceResultEnum
.
ORDER_INVALID
);
//获取所有detail
...
...
@@ -315,7 +376,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwner
.
setOwnerName
(
settlementOwnerDetail
.
getOwnerName
());
settlementOwner
.
setOrderNo
(
settlementOwnerDetail
.
getOrderNo
());
settlementOwner
.
setSettlementPeriodType
(
SettlementOwnerEnum
.
SettlementPeriodType
.
MONTH
.
getCode
()
);
settlementOwner
.
setSettlementPeriodType
(
settlementPeriodType
);
settlementOwner
.
setSettlementPeriodTime
(
settlementPeriodTime
);
settlementOwner
.
setWeight
(
settlementOwnerDetail
.
getWeight
());
...
...
@@ -344,10 +405,12 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwner
.
setCompanyContactAddress
(
ownerInfo
.
getContactsAddress
());
settlementOwner
.
setSettlementWay
(
settlementOwnerDetail
.
getSettlementWay
());
//设置开票公司
settlementOwner
.
setInvoicingCompanyId
(
orderInfo
.
getInvoicingCompanyId
());
settlementOwner
.
setInvoicingCompanyShorterName
(
orderInfo
.
getInvoicingCompanyShorterName
());
settlementOwner
.
setInvoicingCompanyGroupCode
(
orderInfo
.
getInvoicingCompanyGroupCode
());
settlementOwner
.
setInvoicingCompanyId
(
settlementOwnerDetail
.
getInvoicingCompanyId
());
settlementOwner
.
setInvoicingCompanyShorterName
(
settlementOwnerDetail
.
getInvoicingCompanyShorterName
());
settlementOwner
.
setInvoicingCompanyGroupCode
(
settlementOwnerDetail
.
getInvoicingCompanyGroupCode
());
settlementOwner
.
setReportFlag
(
orderInfo
.
getReportFlag
());
// 开票服务费
settlementOwner
.
setInvoiceServiceFee
(
settlementOwnerDetail
.
getInvoiceServiceFee
());
settlementOwnerDao
.
saveEntity
(
settlementOwner
);
//保存结算单日志----创建结算单
...
...
@@ -371,6 +434,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwner
.
setSettlementFreight
(
settlementOwnerDetail
.
getSettlementFreight
());
settlementOwner
.
setLoanFreight
(
settlementOwnerDetail
.
getLoanFreight
());
settlementOwner
.
setInvoiceFreight
(
settlementOwnerDetail
.
getInvoiceFreight
());
settlementOwner
.
setInvoiceServiceFee
(
settlementOwnerDetail
.
getInvoiceServiceFee
());
List
<
SettlementOwnerDetail
>
details
=
settlementOwnerDetailDao
.
getBySettlementNo
(
settlementOwner
.
getSettlementNo
());
...
...
@@ -383,103 +447,17 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwner
.
setPrepayFreight
(
settlementOwner
.
getPrepayFreight
().
add
(
item
.
getPrepayFreight
()));
settlementOwner
.
setSettlementFreight
(
settlementOwner
.
getSettlementFreight
().
add
(
item
.
getSettlementFreight
()));
settlementOwner
.
setInvoiceFreight
(
settlementOwner
.
getInvoiceFreight
().
add
(
item
.
getInvoiceFreight
()));
settlementOwner
.
setInvoiceServiceFee
(
settlementOwner
.
getInvoiceServiceFee
().
add
(
item
.
getInvoiceServiceFee
()));
});
settlementOwnerDao
.
updateSettlementPeriodMonth
(
settlementOwner
);
}
/**
* 拉运完成结 初始化
*/
private
String
settlementPeriodImmediateInit
(
SettlementOwnerDetail
settlementOwnerDetail
,
OwnerInfoFeignVO
ownerInfo
){
FeignOrderInfoVO
orderInfo
=
orderService
.
getOrderInfo
(
settlementOwnerDetail
.
getOrderNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_INVALID
);
SettlementOwner
settlementOwner
=
new
SettlementOwner
();
String
settlementNo
=
settlementNoGenerate
();
settlementOwner
.
setSettlementNo
(
settlementNo
);
settlementOwner
.
setOwnerUserNo
(
settlementOwnerDetail
.
getOwnerUserNo
());
settlementOwner
.
setOwnerName
(
settlementOwnerDetail
.
getOwnerName
());
settlementOwner
.
setOrderNo
(
settlementOwnerDetail
.
getOrderNo
());
settlementOwner
.
setSettlementPeriodType
(
SettlementOwnerEnum
.
SettlementPeriodType
.
IMMEDIATE
.
getCode
());
settlementOwner
.
setWeight
(
settlementOwnerDetail
.
getWeight
());
settlementOwner
.
setFreight
(
settlementOwnerDetail
.
getFreight
());
settlementOwner
.
setLossWeight
(
settlementOwnerDetail
.
getLossWeight
());
settlementOwner
.
setLossFreight
(
settlementOwnerDetail
.
getLossFreight
());
settlementOwner
.
setSettlementFreight
(
settlementOwnerDetail
.
getSettlementFreight
());
settlementOwner
.
setLoanFreight
(
settlementOwnerDetail
.
getLoanFreight
());
settlementOwner
.
setInvoiceType
(
settlementOwnerDetail
.
getInvoiceType
());
settlementOwner
.
setInvoiceFreight
(
settlementOwnerDetail
.
getInvoiceFreight
());
settlementOwner
.
setPrepayFreight
(
settlementOwnerDetail
.
getPrepayFreight
());
settlementOwner
.
setStatus
(
SettlementOwnerEnum
.
Status
.
TO_BE_LOCKED
.
getCode
());
settlementOwner
.
setCompanyName
(
ownerInfo
.
getCompanyName
());
settlementOwner
.
setCompanyTaxCode
(
ownerInfo
.
getCompanyTaxCode
());
settlementOwner
.
setCompanyAddress
(
ownerInfo
.
getCompanyAddress
());
settlementOwner
.
setCompanyMobile
(
ownerInfo
.
getCompanyTelephone
());
settlementOwner
.
setCompanyBankNo
(
ownerInfo
.
getCompanyBankAccount
());
settlementOwner
.
setCompanyBankName
(
ownerInfo
.
getCompanyOpenBank
());
settlementOwner
.
setCompanyContact
(
ownerInfo
.
getContactsName
());
settlementOwner
.
setCompanyContactMobile
(
ownerInfo
.
getContactsTelephone
());
settlementOwner
.
setCompanyContactAddress
(
ownerInfo
.
getContactsAddress
());
settlementOwner
.
setSettlementWay
(
settlementOwnerDetail
.
getSettlementWay
());
settlementOwner
.
setInvoiceStatus
(
SettlementOwnerEnum
.
InvoiceStatus
.
NOT_INVOICE
.
getCode
());
//设置开票公司
settlementOwner
.
setInvoicingCompanyId
(
orderInfo
.
getInvoicingCompanyId
());
settlementOwner
.
setInvoicingCompanyShorterName
(
orderInfo
.
getInvoicingCompanyShorterName
());
settlementOwner
.
setInvoicingCompanyGroupCode
(
orderInfo
.
getInvoicingCompanyGroupCode
());
settlementOwner
.
setReportFlag
(
orderInfo
.
getReportFlag
());
settlementOwnerDao
.
saveEntity
(
settlementOwner
);
//保存结算单日志----创建结算单
settlementLogService
.
saveSettlementLog
(
settlementNo
,
SettlementLogEnum
.
Type
.
CREATE_SETTLEMENT
.
getCode
(),
SettlementLogEnum
.
Type
.
CREATE_SETTLEMENT
.
getMsg
(),
OrderChildLogEnum
.
CreateType
.
PLATFORM
.
getCode
(),
0L
,
"系统"
);
return
settlementNo
;
}
/**
* 拉运完成结 更新
*/
private
void
settlementPeriodImmediateUpdate
(
SettlementOwner
settlementOwner
,
SettlementOwnerDetail
settlementOwnerDetail
){
settlementOwner
.
setWeight
(
settlementOwnerDetail
.
getWeight
());
settlementOwner
.
setFreight
(
settlementOwnerDetail
.
getFreight
());
settlementOwner
.
setLossWeight
(
settlementOwnerDetail
.
getLossWeight
());
settlementOwner
.
setLoanFreight
(
settlementOwnerDetail
.
getLoanFreight
());
settlementOwner
.
setLossFreight
(
settlementOwnerDetail
.
getLossFreight
());
settlementOwner
.
setPrepayFreight
(
settlementOwnerDetail
.
getPrepayFreight
());
settlementOwner
.
setSettlementFreight
(
settlementOwnerDetail
.
getSettlementFreight
());
settlementOwner
.
setInvoiceFreight
(
settlementOwnerDetail
.
getInvoiceFreight
());
List
<
SettlementOwnerDetail
>
details
=
settlementOwnerDetailDao
.
getBySettlementNo
(
settlementOwner
.
getSettlementNo
());
details
.
forEach
(
item
->{
settlementOwner
.
setWeight
(
settlementOwner
.
getWeight
().
add
(
item
.
getWeight
()));
settlementOwner
.
setFreight
(
settlementOwner
.
getFreight
().
add
(
item
.
getFreight
()));
settlementOwner
.
setLossWeight
(
settlementOwner
.
getLossWeight
().
add
(
item
.
getLossWeight
()));
settlementOwner
.
setLossFreight
(
settlementOwner
.
getLossFreight
().
add
(
item
.
getLossFreight
()));
settlementOwner
.
setPrepayFreight
(
settlementOwner
.
getPrepayFreight
().
add
(
item
.
getPrepayFreight
()));
settlementOwner
.
setLoanFreight
(
settlementOwner
.
getLoanFreight
().
add
(
item
.
getLoanFreight
()));
settlementOwner
.
setSettlementFreight
(
settlementOwner
.
getSettlementFreight
().
add
(
item
.
getSettlementFreight
()));
settlementOwner
.
setInvoiceFreight
(
settlementOwner
.
getInvoiceFreight
().
add
(
item
.
getInvoiceFreight
()));
});
settlementOwnerDao
.
updateSettlementPeriodMonth
(
settlementOwner
);
}
/**
* 创建结算单号
*/
@Override
public
String
settlementNoGenerate
(){
return
uniqueOrderNumService
.
getUniqueOrderNum
(
com
.
msl
.
common
.
utils
.
LocalDateTimeUtils
.
convertLocalDateTimeToString
(
LocalDateTime
.
now
(),
com
.
msl
.
common
.
utils
.
LocalDateTimeUtils
.
DATE_DAY
));
}
...
...
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementOwnerDetailServiceImpl.java
浏览文件 @
feb08add
...
...
@@ -102,6 +102,7 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
settlementOwnerDetail
.
setInvoicingCompanyShorterName
(
orderChild
.
getInvoicingCompanyShorterName
());
settlementOwnerDetail
.
setInvoicingCompanyGroupCode
(
orderChild
.
getInvoicingCompanyGroupCode
());
settlementOwnerDetail
.
setReportFlag
(
orderChild
.
getReportFlag
());
settlementOwnerDetailDao
.
saveEntity
(
settlementOwnerDetail
);
return
settlementOwnerDetail
.
getId
();
}
...
...
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementServiceImpl.java
浏览文件 @
feb08add
...
...
@@ -2,9 +2,12 @@ package com.clx.performance.service.impl.settle;
import
cn.hutool.json.JSONUtil
;
import
com.clx.order.enums.OrderEnum
;
import
com.clx.order.vo.pc.carrier.InvoicingCompanyVO
;
import
com.clx.performance.component.IdGenerateSnowFlake
;
import
com.clx.performance.config.SettlementConfig
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OwnerAccountDao
;
import
com.clx.performance.dao.OwnerRunningWaterRecordDao
;
import
com.clx.performance.dao.settle.SettlementDriverDetailDao
;
...
...
@@ -17,7 +20,9 @@ import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import
com.clx.performance.enums.settle.SettlementOwnerEnum
;
import
com.clx.performance.enums.settle.SettlementWayEnum
;
import
com.clx.performance.event.OwnerLoanThawEvent
;
import
com.clx.performance.extranal.order.InvoicingCompanyService
;
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.settle.SettlementDriverDetail
;
...
...
@@ -34,6 +39,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.Objects
;
@Slf4j
...
...
@@ -43,6 +49,8 @@ public class SettlementServiceImpl implements SettlementService {
@Autowired
private
OrderChildDao
orderChildDao
;
@Autowired
private
OrderGoodsDao
orderGoodsDao
;
@Autowired
private
SettlementOwnerDetailDao
settlementOwnerDetailDao
;
@Autowired
private
SettlementDriverDetailDao
settlementDriverDetailDao
;
...
...
@@ -59,21 +67,29 @@ public class SettlementServiceImpl implements SettlementService {
@Autowired
private
ApplicationEventPublisher
applicationEventPublisher
;
@Autowired
private
InvoicingCompanyService
invoicingCompanyService
;
@Autowired
private
SettlementConfig
settlementConfig
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updateSettlementDetailInvoiceType
(
String
childNo
,
Integer
invoiceType
)
{
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
get
();
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementDriverDetail
settlementDriverDetail
=
settlementDriverDetailDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
// 开票金额
settlementOwnerDetail
.
setInvoiceFreight
(
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
// 结算金额
settlementOwnerDetail
.
setSettlementFreight
(
settlementFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
if
(
settlementDriverDetail
.
getSettlementFreight
().
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
}
else
{
// 发mq (同步网络货运)
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
orderChild
).
toString
().
getBytes
()).
build
();
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_CHILD_SYNC_TRANSPORT_EXCHANGE
,
RabbitKeyConstants
.
ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY
,
message
...
...
@@ -81,20 +97,40 @@ public class SettlementServiceImpl implements SettlementService {
return
;
}
// 结算金额
settlementOwnerDetail
.
setSettlementFreight
(
settlementFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
if
(
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
().
equals
(
invoiceType
))
{
if
(
settlementOwnerDetail
.
getSettlementFreight
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO_REQUIRE
.
getCode
());
}
// 如果开票标识为“普通单”时,开票费率从开票公司“五寨华祥”中获取
settlementOwnerDetail
.
setInvoiceServiceFeeRate
(
BigDecimal
.
ZERO
);
InvoicingCompanyVO
invoiceCompany
=
invoicingCompanyService
.
getInvoicingCompanyByGroupCode
(
settlementConfig
.
getInvoiceCompanyDefault
().
getCompanyGroupCode
());
//设置开票公司信息
settlementOwnerDetail
.
setInvoicingCompanyId
(
invoiceCompany
.
getId
());
settlementOwnerDetail
.
setInvoicingCompanyShorterName
(
invoiceCompany
.
getCompanyShorterName
());
settlementOwnerDetail
.
setInvoicingCompanyGroupCode
(
invoiceCompany
.
getCompanyGroupCode
());
settlementDriverDetail
.
setInvoicingCompanyId
(
invoiceCompany
.
getId
());
settlementDriverDetail
.
setInvoicingCompanyShorterName
(
invoiceCompany
.
getCompanyShorterName
());
settlementDriverDetail
.
setInvoicingCompanyGroupCode
(
invoiceCompany
.
getCompanyGroupCode
());
}
else
{
if
(
settlementDriverDetail
.
getSettlementFreight
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO_REQUIRE
.
getCode
());
}
// 如果开票标识为“网运单”时,开票费率取货单单所记录的开票费率
settlementOwnerDetail
.
setInvoiceServiceFeeRate
(
orderGoods
.
getInvoiceServiceFeeRate
()==
null
?
BigDecimal
.
ZERO
:
orderGoods
.
getInvoiceServiceFeeRate
());
}
settlementOwnerDetail
.
setInvoiceType
(
invoiceType
);
settlementDriverDetail
.
setInvoiceType
(
invoiceType
);
// 开票服务费
settlementOwnerDetail
.
setInvoiceServiceFee
(
invoiceServiceFeeCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
// 开票金额
settlementOwnerDetail
.
setInvoiceFreight
(
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
orderGoods
.
getInvoiceServiceFeeRate
(),
settlementOwnerDetail
));
log
.
info
(
"当前货主结算信息{},车主结算信息:{}"
,
JSONUtil
.
parse
(
settlementOwnerDetail
),
JSONUtil
.
parse
(
settlementDriverDetail
));
settlementOwnerDetailDao
.
updateInvoiceType
(
settlementOwnerDetail
);
settlementDriverDetailDao
.
updateInvoiceTypeAndPrepayFreightFlag
(
settlementDriverDetail
);
...
...
@@ -185,15 +221,37 @@ public class SettlementServiceImpl implements SettlementService {
}
}
/**
* 开票服务费金额
*/
private
BigDecimal
invoiceServiceFeeCalc
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
return
settlementOwnerDetail
.
getFreight
().
subtract
(
settlementOwnerDetail
.
getLossFreight
())
.
divide
(
BigDecimal
.
ONE
.
subtract
(
settlementOwnerDetail
.
getInvoiceServiceFeeRate
()),
0
,
RoundingMode
.
HALF_UP
)
.
multiply
(
settlementOwnerDetail
.
getInvoiceServiceFeeRate
()).
setScale
(
0
,
RoundingMode
.
HALF_UP
);
}
/**
* 开票金额
*/
private
BigDecimal
invoiceFreightCalc
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
private
BigDecimal
invoiceFreightCalc
(
Integer
settlementWay
,
BigDecimal
invoiceServiceFeeRate
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
LOAD
.
getCode
()))
{
//订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getLossFreight
());
}
else
{
//订单结算方式为“卸车净重”时,开票金额=实际净重*平台运费报价。
}
else
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
UNLOAD_LOSS
.
getCode
()))
{
if
(
invoiceServiceFeeRate
!=
null
){
//结算方式为“卸车净重(减货损)”,平台运费报价为“未税”时,开票金额=平台运费单价*实际净重-货损单价*货损吨数+开票服务费。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getLossPrice
())
.
add
(
settlementOwnerDetail
.
getInvoiceServiceFee
());
}
else
{
//结算方式为“卸车净重(减货损)”,平台运费报价为“含税”时 开票金额=平台运费单价*实际净重-货损单价*货损吨数
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getLossFreight
());
}
}
else
{
//订单结算方式为“卸车净重”时,开票金额=实际净重*平台运费报价。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
());
}
}
...
...
@@ -205,7 +263,14 @@ public class SettlementServiceImpl implements SettlementService {
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
LOAD
.
getCode
()))
{
//订单结算方式为“装车净重”时,结算金额=实际净重*平台运费报价-预付运费-货损金额。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getPrepayFreight
()).
subtract
(
settlementOwnerDetail
.
getLossFreight
());
}
else
{
//订单结算方式为“卸车净重”时,结算金额=实际净重*平台运费报价-预付运费
}
else
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
UNLOAD_LOSS
.
getCode
()))
{
//结算方式为“卸车净重(减货损)“,结算金额=开票金额-预付运费金额-借款抵扣金额。
return
settlementOwnerDetail
.
getInvoiceFreight
()
.
subtract
(
settlementOwnerDetail
.
getPrepayFreight
())
.
subtract
(
settlementOwnerDetail
.
getLoanFreight
());
}
else
{
//订单结算方式为“卸车净重”时,结算金额=实际净重*平台运费报价-预付运费
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
()).
subtract
(
settlementOwnerDetail
.
getPrepayFreight
());
}
}
...
...
performance-web/src/main/java/com/clx/performance/service/ordergoods/OrderGoodsPostService.java
0 → 100644
浏览文件 @
feb08add
package
com
.
clx
.
performance
.
service
.
ordergoods
;
import
com.clx.performance.model.OrderGoods
;
import
java.util.List
;
public
interface
OrderGoodsPostService
{
void
orderGoodsAdd
(
OrderGoods
orderGoods
);
void
orderGoodsAdd
(
List
<
OrderGoods
>
orderGoodsList
);
}
performance-web/src/main/java/com/clx/performance/sqlProvider/OrderGoodsSqlProvider.java
浏览文件 @
feb08add
...
...
@@ -151,7 +151,8 @@ public class OrderGoodsSqlProvider {
"need_truck_num,vehicle_usage,pending_order_way,pending_order_time,pending_order_freight,last_arrive_send_time,senior_logistics_manager_id,"
+
"senior_logistics_manager_name,order_no,order_goods_no,order_goods_status,send_address_id,send_address_shorter,send_system_address_id,send_longitude,"
+
"send_latitude,receive_latitude,receive_longitude,receive_address_id,receive_address_shorter,receive_system_address_id,goods_name,goods_id,create_time,modified_time,"
+
"user_name,user_no,batch_number,last_arrive_receive_time,last_load_time,last_order_time,settlement_account_period,settlement_way) VALUES "
);
"user_name,user_no,batch_number,last_arrive_receive_time,last_load_time,last_order_time,settlement_account_period,settlement_way,"
+
"platform_freight_quotation_tax_type, platform_service_fee_rate, deposit, invoice_service_fee_rate) VALUES "
);
for
(
int
i
=
0
;
i
<
orderGoodsList
.
size
();
i
++)
{
OrderGoods
o
=
orderGoodsList
.
get
(
i
);
...
...
@@ -166,7 +167,8 @@ public class OrderGoodsSqlProvider {
.
append
(
o
.
getReceiveAddressId
()).
append
(
"','"
).
append
(
o
.
getReceiveAddressShorter
()).
append
(
"',"
).
append
(
o
.
getReceiveSystemAddressId
()).
append
(
",'"
).
append
(
o
.
getGoodsName
()).
append
(
"','"
)
.
append
(
o
.
getGoodsId
()).
append
(
"','"
).
append
(
o
.
getCreateTime
()).
append
(
"','"
).
append
(
o
.
getModifiedTime
()).
append
(
"','"
).
append
(
o
.
getUserName
()).
append
(
"','"
)
.
append
(
o
.
getUserNo
()).
append
(
"','"
).
append
(
o
.
getBatchNumber
()).
append
(
"','"
).
append
(
o
.
getLastArriveReceiveTime
()).
append
(
"','"
)
.
append
(
o
.
getLastLoadTime
()).
append
(
"','"
).
append
(
o
.
getLastOrderTime
()).
append
(
"','"
).
append
(
o
.
getSettlementAccountPeriod
()).
append
(
"','"
).
append
(
o
.
getSettlementWay
())
.
append
(
o
.
getLastLoadTime
()).
append
(
"','"
).
append
(
o
.
getLastOrderTime
()).
append
(
"','"
).
append
(
o
.
getSettlementAccountPeriod
()).
append
(
"','"
).
append
(
o
.
getSettlementWay
()).
append
(
"','"
)
.
append
(
o
.
getPlatformFreightQuotationTaxType
()).
append
(
"','"
).
append
(
o
.
getPlatformServiceFeeRate
()).
append
(
"','"
).
append
(
o
.
getDeposit
()).
append
(
"','"
).
append
(
o
.
getInvoiceServiceFeeRate
())
.
append
(
"')"
);
if
(
i
<
orderGoodsList
.
size
()
-
1
)
{
...
...
performance-web/src/main/java/com/clx/performance/strategy/impl/OwnGoodsOrderStrategy.java
浏览文件 @
feb08add
...
...
@@ -17,6 +17,7 @@ import com.clx.performance.enums.PendingOrderWayStatusEnum;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.TruckDemandEnum
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.service.ordergoods.OrderGoodsPostService
;
import
com.clx.performance.strategy.GoodsOrderStrategy
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.utils.DateUtils
;
...
...
@@ -66,6 +67,8 @@ public class OwnGoodsOrderStrategy extends GoodsOrderStrategy implements Initial
private
final
IdGenerateSnowFlake
idGenerateSnowFlake
;
private
final
OrderGoodsPostService
orderGoodsPostService
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
LocalDateTime
goodsOrderProcess
(
OrderGoodsParams
orderGoodsParams
,
FeignOrderVO
orderInfo
,
LocalDateTime
now
)
{
...
...
@@ -173,6 +176,13 @@ public class OwnGoodsOrderStrategy extends GoodsOrderStrategy implements Initial
orderGoods
.
setSettlementAccountPeriod
(
orderInfo
.
getSettlementAccountPeriod
());
//设置结算方式
orderGoods
.
setSettlementWay
(
orderInfo
.
getSettlementWay
());
// 平台服务费
orderGoods
.
setPlatformFreightQuotationTaxType
(
orderInfoFeign
.
getPlatformFreightQuotationTaxType
());
orderGoods
.
setInvoiceServiceFeeRate
(
orderInfoFeign
.
getPlatformFreightQuotationTaxRate
());
orderGoods
.
setPlatformServiceFeeRate
(
orderInfoFeign
.
getPlatformServiceFeeRate
());
orderGoods
.
setDeposit
(
orderInfoFeign
.
getDeposit
());
List
<
OrderOwnTruckVo
>
orderOwnTruckVos
=
orderFeign
.
selectTruckListFeign
(
orderNo
);
if
(
orderOwnTruckVos
==
null
||
orderOwnTruckVos
.
isEmpty
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"全部自由车辆列表数据为空"
);
...
...
@@ -197,6 +207,9 @@ public class OwnGoodsOrderStrategy extends GoodsOrderStrategy implements Initial
}
orderGoodsDao
.
saveBatchEntity
(
orderGoodsList
);
// 货单新增后置逻辑
orderGoodsPostService
.
orderGoodsAdd
(
orderGoodsList
);
UpdateOrderInfoResidueWeightParam
param
=
new
UpdateOrderInfoResidueWeightParam
();
param
.
setOrderId
(
orderInfo
.
getId
());
param
.
setUpdateType
(
"1"
);
...
...
performance-web/src/main/java/com/clx/performance/strategy/impl/PartGoodsOrderStrategy.java
浏览文件 @
feb08add
...
...
@@ -13,6 +13,7 @@ import com.clx.performance.dao.OrderGoodsDao;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.service.ordergoods.OrderGoodsPostService
;
import
com.clx.performance.strategy.GoodsOrderStrategy
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.utils.DateUtils
;
...
...
@@ -60,6 +61,7 @@ public class PartGoodsOrderStrategy extends GoodsOrderStrategy implements Initia
private
final
GoodsOrderTruckRecordComponent
goodsOrderTruckRecordComponent
;
private
final
IdGenerateSnowFlake
idGenerateSnowFlake
;
private
final
OrderGoodsPostService
orderGoodsPostService
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -177,6 +179,13 @@ public class PartGoodsOrderStrategy extends GoodsOrderStrategy implements Initia
orderGoods
.
setSettlementAccountPeriod
(
orderInfo
.
getSettlementAccountPeriod
());
//设置结算方式
orderGoods
.
setSettlementWay
(
orderInfo
.
getSettlementWay
());
// 平台服务费
orderGoods
.
setPlatformFreightQuotationTaxType
(
orderInfoFeign
.
getPlatformFreightQuotationTaxType
());
orderGoods
.
setInvoiceServiceFeeRate
(
orderInfoFeign
.
getPlatformFreightQuotationTaxRate
());
orderGoods
.
setPlatformServiceFeeRate
(
orderInfoFeign
.
getPlatformServiceFeeRate
());
orderGoods
.
setDeposit
(
orderInfoFeign
.
getDeposit
());
if
(
CollectionUtil
.
isNotEmpty
(
child
.
getTruckList
()))
{
orderGoodsTruckBindDao
.
saveBatchEntity
(
orderNo
,
orderGoodsNo
,
child
.
getTruckList
(),
now
);
goodsOrderTruckRecordComponent
.
saveTruckRecord
(
orderGoodsNo
,
child
.
getTruckList
());
...
...
@@ -189,6 +198,10 @@ public class PartGoodsOrderStrategy extends GoodsOrderStrategy implements Initia
orderGoodsList
.
add
(
orderGoods
);
}
orderGoodsDao
.
saveBatchEntity
(
orderGoodsList
);
// 货单新增后置逻辑
orderGoodsPostService
.
orderGoodsAdd
(
orderGoodsList
);
BigDecimal
residueWeight
=
new
BigDecimal
(
orderInfo
.
getResidueWeight
());
if
(
platSum
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
&&
ownSum
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
BigDecimal
residuePlatSum
=
new
BigDecimal
(
orderInfo
.
getPlatformResidueCarryWeight
());
...
...
performance-web/src/main/java/com/clx/performance/strategy/impl/PlatformGoodsOrderStrategy.java
浏览文件 @
feb08add
...
...
@@ -13,6 +13,7 @@ import com.clx.performance.dao.OrderGoodsDao;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.service.ordergoods.OrderGoodsPostService
;
import
com.clx.performance.strategy.GoodsOrderStrategy
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.utils.DateUtils
;
...
...
@@ -62,6 +63,7 @@ public class PlatformGoodsOrderStrategy extends GoodsOrderStrategy implements In
private
final
IdGenerateSnowFlake
idGenerateSnowFlake
;
private
final
OrderGoodsPostService
orderGoodsPostService
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -172,6 +174,12 @@ public class PlatformGoodsOrderStrategy extends GoodsOrderStrategy implements In
//设置结算方式
orderGoods
.
setSettlementWay
(
orderInfo
.
getSettlementWay
());
// 平台服务费
orderGoods
.
setPlatformFreightQuotationTaxType
(
orderInfoFeign
.
getPlatformFreightQuotationTaxType
());
orderGoods
.
setInvoiceServiceFeeRate
(
orderInfoFeign
.
getPlatformFreightQuotationTaxRate
());
orderGoods
.
setPlatformServiceFeeRate
(
orderInfoFeign
.
getPlatformServiceFeeRate
());
orderGoods
.
setDeposit
(
orderInfoFeign
.
getDeposit
());
if
(
CollectionUtil
.
isNotEmpty
(
child
.
getTruckList
()))
{
orderGoodsTruckBindDao
.
saveBatchEntity
(
orderNo
,
orderGoodsNo
,
child
.
getTruckList
(),
now
);
goodsOrderTruckRecordComponent
.
saveTruckRecord
(
orderGoodsNo
,
child
.
getTruckList
());
...
...
@@ -183,6 +191,10 @@ public class PlatformGoodsOrderStrategy extends GoodsOrderStrategy implements In
orderGoodsList
.
add
(
orderGoods
);
}
orderGoodsDao
.
saveBatchEntity
(
orderGoodsList
);
// 货单新增后置逻辑
orderGoodsPostService
.
orderGoodsAdd
(
orderGoodsList
);
UpdateOrderInfoResidueWeightParam
param
=
new
UpdateOrderInfoResidueWeightParam
();
param
.
setOrderId
(
orderInfo
.
getId
());
param
.
setUpdateType
(
"1"
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论