Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
4ffcb910
提交
4ffcb910
authored
6月 24, 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
上级
f785975f
440f7626
显示空白字符变更
内嵌
并排
正在显示
55 个修改的文件
包含
1789 行增加
和
204 行删除
+1789
-204
SettlementOwnerDetailEnum.java
...x/performance/enums/settle/SettlementOwnerDetailEnum.java
+16
-0
BrokerFeign.java
.../src/main/java/com/clx/performance/feign/BrokerFeign.java
+28
-0
SettlementInvoiceStatusSyncMqParam.java
...performance/vo/mq/SettlementInvoiceStatusSyncMqParam.java
+22
-0
SettlementInvoiceTypeSyncMqParam.java
...x/performance/vo/mq/SettlementInvoiceTypeSyncMqParam.java
+22
-0
SettlementPayStatusSyncMqParam.java
...clx/performance/vo/mq/SettlementPayStatusSyncMqParam.java
+22
-0
SettlementSettleMqParam.java
...va/com/clx/performance/vo/mq/SettlementSettleMqParam.java
+23
-0
SettlementStatisticsMqParam.java
...om/clx/performance/vo/mq/SettlementStatisticsMqParam.java
+2
-2
OpenOrderChildDTO.java
...a/com/clx/performance/vo/pc/broker/OpenOrderChildDTO.java
+66
-0
OpenOrderChildDriverDTO.java
...clx/performance/vo/pc/broker/OpenOrderChildDriverDTO.java
+73
-0
OpenOrderChildImageDTO.java
.../clx/performance/vo/pc/broker/OpenOrderChildImageDTO.java
+26
-0
OpenOrderChildTruckDTO.java
.../clx/performance/vo/pc/broker/OpenOrderChildTruckDTO.java
+57
-0
OpenOrderChildTruckOwnerDTO.java
...performance/vo/pc/broker/OpenOrderChildTruckOwnerDTO.java
+47
-0
OpenOrderDTO.java
...n/java/com/clx/performance/vo/pc/broker/OpenOrderDTO.java
+80
-0
TransportParam.java
...java/com/clx/performance/vo/pc/broker/TransportParam.java
+60
-0
TransportVO.java
...in/java/com/clx/performance/vo/pc/broker/TransportVO.java
+41
-0
CarrierPageSettlementDriverDetailVO.java
...c/carrier/settle/CarrierPageSettlementDriverDetailVO.java
+1
-1
NetworkSyncComponent.java
...a/com/clx/performance/component/NetworkSyncComponent.java
+16
-15
OrderChildLoanComponent.java
...om/clx/performance/component/OrderChildLoanComponent.java
+11
-0
RabbitSettlementConfig.java
...va/com/clx/performance/config/RabbitSettlementConfig.java
+50
-0
SettlementConfig.java
...ain/java/com/clx/performance/config/SettlementConfig.java
+7
-6
RabbitKeySettlementConstants.java
...lx/performance/constant/RabbitKeySettlementConstants.java
+24
-1
TempSettlementController.java
...performance/controller/temp/TempSettlementController.java
+71
-0
OrderChildSyncTransportInvoiceRecordDaoImpl.java
...dao/impl/OrderChildSyncTransportInvoiceRecordDaoImpl.java
+5
-3
OrderChildSyncTransportRecordDaoImpl.java
...dao/impl/settle/OrderChildSyncTransportRecordDaoImpl.java
+6
-1
SettlementOwnerDetailDaoImpl.java
...ormance/dao/impl/settle/SettlementOwnerDetailDaoImpl.java
+11
-0
SettlementOwnerDetailDao.java
.../clx/performance/dao/settle/SettlementOwnerDetailDao.java
+1
-0
EventListenerComponent.java
...ava/com/clx/performance/event/EventListenerComponent.java
+2
-7
BrokerService.java
...va/com/clx/performance/extranal/broker/BrokerService.java
+11
-0
BrokerServiceImpl.java
...x/performance/extranal/broker/impl/BrokerServiceImpl.java
+44
-0
OrderChildPaySyncTransportJob.java
...om/clx/performance/job/OrderChildPaySyncTransportJob.java
+5
-18
OrderChildSyncTransportInvoiceExceptionJob.java
...mance/job/OrderChildSyncTransportInvoiceExceptionJob.java
+2
-2
DriverSettlementJob.java
...m/clx/performance/job/settlement/DriverSettlementJob.java
+1
-1
SettlementJob.java
...ava/com/clx/performance/job/settlement/SettlementJob.java
+90
-0
SettlementOwnerMontnJob.java
...x/performance/job/settlement/SettlementOwnerMontnJob.java
+1
-1
OrderChildSyncTransportListener.java
...performance/listener/OrderChildSyncTransportListener.java
+33
-29
SettlementInvoiceStatusSyncListener.java
.../listener/settle/SettlementInvoiceStatusSyncListener.java
+43
-0
SettlementInvoiceTypeSyncListener.java
...ce/listener/settle/SettlementInvoiceTypeSyncListener.java
+8
-8
SettlementPayStatusSyncListener.java
...ance/listener/settle/SettlementPayStatusSyncListener.java
+43
-0
SettlementSettleListener.java
...performance/listener/settle/SettlementSettleListener.java
+43
-0
SettlementStatisticsListener.java
...ormance/listener/settle/SettlementStatisticsListener.java
+43
-0
OrderChild.java
...b/src/main/java/com/clx/performance/model/OrderChild.java
+1
-1
SettlementOwnerDetail.java
...m/clx/performance/model/settle/SettlementOwnerDetail.java
+1
-0
OrderChildBrokerService.java
...x/performance/service/broker/OrderChildBrokerService.java
+12
-0
OrderChildServiceImpl.java
...m/clx/performance/service/impl/OrderChildServiceImpl.java
+7
-2
OrderChildBrokerServiceImpl.java
...ance/service/impl/broker/OrderChildBrokerServiceImpl.java
+246
-0
SettlementCommonServiceImpl.java
...ance/service/impl/settle/SettlementCommonServiceImpl.java
+71
-0
SettlementDriverDetailServiceImpl.java
...ervice/impl/settle/SettlementDriverDetailServiceImpl.java
+0
-7
SettlementMqHandlerServiceImpl.java
...e/service/impl/settle/SettlementMqHandlerServiceImpl.java
+160
-18
SettlementMqServiceImpl.java
...formance/service/impl/settle/SettlementMqServiceImpl.java
+66
-8
SettlementOwnerDetailServiceImpl.java
...service/impl/settle/SettlementOwnerDetailServiceImpl.java
+16
-15
SettlementServiceImpl.java
...erformance/service/impl/settle/SettlementServiceImpl.java
+19
-52
SettlementCommonService.java
...x/performance/service/settle/SettlementCommonService.java
+13
-0
SettlementMqHandlerService.java
...erformance/service/settle/SettlementMqHandlerService.java
+10
-3
SettlementMqService.java
...m/clx/performance/service/settle/SettlementMqService.java
+8
-1
OrderGoodsSqlProvider.java
...om/clx/performance/sqlProvider/OrderGoodsSqlProvider.java
+2
-2
没有找到文件。
performance-api/src/main/java/com/clx/performance/enums/settle/SettlementOwnerDetailEnum.java
浏览文件 @
4ffcb910
...
...
@@ -49,6 +49,22 @@ public enum SettlementOwnerDetailEnum {
return
getByCode
(
code
).
map
(
FinalPaymentStatus:
:
getMsg
).
orElse
(
null
);
}
}
@Getter
@AllArgsConstructor
public
enum
InvoiceChannel
{
BROKER
(
1
,
"无车承运"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
InvoiceChannel
>
getByCode
(
int
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
Objects
.
equals
(
e
.
getCode
(),
code
)).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
InvoiceChannel:
:
getMsg
).
orElse
(
null
);
}
}
}
performance-api/src/main/java/com/clx/performance/feign/BrokerFeign.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
feign
;
import
com.clx.performance.vo.pc.broker.TransportParam
;
import
com.clx.performance.vo.pc.broker.TransportVO
;
import
com.msl.common.result.Result
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
@FeignClient
(
name
=
"broker-service"
,
configuration
=
PerformanceClientConfiguration
.
class
,
url
=
"${settlement.brokerHost}"
)
public
interface
BrokerFeign
{
/**
* 运单同步
*/
@RequestMapping
(
method
=
RequestMethod
.
POST
,
value
=
"/broker-service/open/transport/saveTransport"
)
Result
<
Object
>
saveTransport
(
@RequestBody
TransportParam
param
);
@RequestMapping
(
value
=
"/broker-service/open/transport/getTransportByChildNo"
,
method
=
RequestMethod
.
GET
)
Result
<
TransportVO
>
getTransportByChildNo
(
@RequestParam
@NotBlank
(
message
=
"运单编号不能为空"
)
String
childNo
,
@RequestParam
@NotNull
(
message
=
"userCode不能为空"
)
String
userCode
);
}
performance-api/src/main/java/com/clx/performance/vo/mq/SettlementInvoiceStatusSyncMqParam.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
vo
.
mq
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
/**
* @Author: aiqingguo
* @Description: 结算
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
SettlementInvoiceStatusSyncMqParam
{
private
String
childNo
;
//运单编号
}
performance-api/src/main/java/com/clx/performance/vo/mq/SettlementInvoiceTypeSyncMqParam.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
vo
.
mq
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
/**
* @Author: aiqingguo
* @Description: 结算
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
SettlementInvoiceTypeSyncMqParam
{
private
String
childNo
;
//运单编号
}
performance-api/src/main/java/com/clx/performance/vo/mq/SettlementPayStatusSyncMqParam.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
vo
.
mq
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
/**
* @Author: aiqingguo
* @Description: 结算
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
SettlementPayStatusSyncMqParam
{
private
String
childNo
;
//运单编号
}
performance-api/src/main/java/com/clx/performance/vo/mq/SettlementSettleMqParam.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
vo
.
mq
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
/**
* @Author: aiqingguo
* @Description: 结算
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
SettlementSettleMqParam
{
private
String
childNo
;
//运单编号
private
Integer
InvoiceType
;
//开票类型
}
performance-api/src/main/java/com/clx/performance/vo/mq/Settlement
DetailInvoiceTypeSync
MqParam.java
→
performance-api/src/main/java/com/clx/performance/vo/mq/Settlement
Statistics
MqParam.java
浏览文件 @
4ffcb910
...
...
@@ -7,7 +7,7 @@ import lombok.ToString;
/**
* @Author: aiqingguo
* @Description:
开票标识同步
* @Description:
结算统计
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
...
...
@@ -15,7 +15,7 @@ import lombok.ToString;
@Getter
@ToString
@NoArgsConstructor
public
class
Settlement
DetailInvoiceTypeSync
MqParam
{
public
class
Settlement
Statistics
MqParam
{
private
String
childNo
;
//运单编号
private
Integer
InvoiceType
;
//司机计费明细id
...
...
performance-api/src/main/java/com/clx/performance/vo/pc/broker/OpenOrderChildDTO.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
vo
.
pc
.
broker
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
java.math.BigDecimal
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
OpenOrderChildDTO
{
private
String
sourceChildNo
;
@ApiModelProperty
(
value
=
"源货单编号"
,
example
=
"1234"
,
required
=
true
,
dataType
=
"String"
)
private
String
sourceGoodsNo
;
@ApiModelProperty
(
value
=
"源订单编号"
,
example
=
"1234"
,
required
=
true
,
dataType
=
"String"
)
private
String
sourceOrderNo
;
@ApiModelProperty
(
value
=
"源结算单编号"
,
example
=
"1234"
,
required
=
true
,
dataType
=
"String"
)
private
String
sourceSettlementNo
;
@ApiModelProperty
(
value
=
"运费单价(分/吨)"
,
example
=
"162"
,
required
=
true
,
dataType
=
"Integer"
)
private
Integer
freightPrice
;
@ApiModelProperty
(
value
=
"运费(分)"
,
example
=
"162"
,
required
=
true
,
dataType
=
"Integer"
)
private
Integer
freight
;
@ApiModelProperty
(
value
=
"司机运费(分)"
,
example
=
"123"
,
dataType
=
"Integer"
)
private
Integer
driverFreight
;
@ApiModelProperty
(
value
=
"司机运费单价(分/吨)"
,
example
=
"123"
,
dataType
=
"Integer"
)
private
Integer
driverFreightPrice
;
@ApiModelProperty
(
value
=
"开票金额(分)"
,
example
=
"162"
,
required
=
true
,
dataType
=
"Integer"
)
private
Integer
invoiceFreight
;
@ApiModelProperty
(
value
=
"亏吨扣款(分)"
,
example
=
"123"
,
dataType
=
"Integer"
)
private
Integer
lossFee
;
@ApiModelProperty
(
value
=
"货损单价(分/吨)"
,
example
=
"123"
,
dataType
=
"Integer"
)
private
Integer
lossFeePrice
;
@ApiModelProperty
(
value
=
"发货皮重(吨)"
)
private
BigDecimal
sendTare
;
@ApiModelProperty
(
value
=
"发货毛重(吨)"
)
private
BigDecimal
sendRough
;
@ApiModelProperty
(
value
=
"发货净重(吨)"
)
private
BigDecimal
sendNet
;
@ApiModelProperty
(
value
=
"接单时间"
)
private
String
payTime
;
@ApiModelProperty
(
value
=
"装车时间"
)
private
String
loadTime
;
@ApiModelProperty
(
value
=
"卸车时间"
)
private
String
unloadTime
;
@ApiModelProperty
(
value
=
"运单完成时间"
,
example
=
"2020-02-02 10:10:10"
,
required
=
true
,
dataType
=
"String"
)
private
String
payFinishedTime
;
@ApiModelProperty
(
value
=
"收货皮重(吨)"
)
private
BigDecimal
receiveTare
;
@ApiModelProperty
(
value
=
"收货毛重(吨)"
)
private
BigDecimal
receiveRough
;
@ApiModelProperty
(
value
=
"收货净重(吨)"
)
private
BigDecimal
receiveNet
;
@ApiModelProperty
(
value
=
"备注"
,
example
=
""
,
required
=
true
,
dataType
=
"String"
)
private
String
remark
;
}
performance-api/src/main/java/com/clx/performance/vo/pc/broker/OpenOrderChildDriverDTO.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
vo
.
pc
.
broker
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
OpenOrderChildDriverDTO
{
@ApiModelProperty
(
value
=
"手机号"
,
dataType
=
"String"
)
private
String
mobile
;
@ApiModelProperty
(
value
=
"姓名"
,
dataType
=
"String"
)
private
String
name
;
@ApiModelProperty
(
value
=
"性别1男2女"
,
dataType
=
"Integer"
)
private
Integer
sex
;
@ApiModelProperty
(
value
=
"头像相对地址"
,
dataType
=
"String"
)
private
String
headImg
;
@ApiModelProperty
(
value
=
"身份证号"
,
dataType
=
"String"
)
private
String
cardNo
;
@ApiModelProperty
(
value
=
"身份证住址"
)
private
String
idCardAddress
;
@ApiModelProperty
(
value
=
"身份证有效期起始时间"
,
dataType
=
"String"
)
private
String
cardStartTime
;
@ApiModelProperty
(
value
=
"身份证有效期终止时间"
,
dataType
=
"String"
)
private
String
cardEndTime
;
@ApiModelProperty
(
value
=
"是否是长期 0-非长期 1-长期"
,
dataType
=
"Integer"
)
private
Integer
cardLongTerm
;
@ApiModelProperty
(
value
=
"身份证正面图片地址"
,
dataType
=
"String"
)
private
String
cardFrontImg
;
@ApiModelProperty
(
value
=
"身份证背面图片地址"
,
dataType
=
"String"
)
private
String
cardBackImg
;
@ApiModelProperty
(
value
=
"手持身份证照片地址"
,
dataType
=
"String"
)
private
String
faceCardImg
;
@ApiModelProperty
(
value
=
"驾驶证号码"
,
dataType
=
"String"
)
private
String
licenceNo
;
@ApiModelProperty
(
value
=
"驾驶证发证机关"
)
private
String
licenceIssueOrganization
;
@ApiModelProperty
(
value
=
"初次领证日期"
,
dataType
=
"String"
)
private
String
licenseTime
;
@ApiModelProperty
(
value
=
"驾照类型"
,
dataType
=
"String"
)
private
String
licenceClass
;
@ApiModelProperty
(
value
=
"驾驶证正面图片"
,
dataType
=
"String"
)
private
String
licenceImg
;
@ApiModelProperty
(
value
=
"驾驶证背面图片"
,
dataType
=
"String"
)
private
String
licenceBackImg
;
@ApiModelProperty
(
value
=
"驾驶证有效期起始时间"
,
dataType
=
"String"
)
private
String
licenceStartTime
;
@ApiModelProperty
(
value
=
"驾驶证有效期终止时间"
,
dataType
=
"String"
)
private
String
licenceEndTime
;
@ApiModelProperty
(
value
=
"道路运输许可证图片地址"
,
dataType
=
"String"
)
private
String
transportLicenceImg
;
@ApiModelProperty
(
value
=
"道路运输从业资格证号"
,
dataType
=
"String"
)
private
String
occupationalLicenceNo
;
@ApiModelProperty
(
value
=
"道路运输从业资格证图片地址"
,
dataType
=
"String"
)
private
String
occupationalLicenceImg
;
@ApiModelProperty
(
value
=
"从业资格证有效期起始时间"
,
dataType
=
"String"
)
private
String
occupationalStartTime
;
@ApiModelProperty
(
value
=
"从业资格证有效期终止时间"
,
dataType
=
"String"
)
private
String
occupationalEndTime
;
@ApiModelProperty
(
value
=
"银行卡卡号"
,
example
=
""
,
required
=
true
,
dataType
=
"String"
)
private
String
bankCardNo
;
@ApiModelProperty
(
value
=
"银行预留手机号"
,
example
=
""
,
required
=
true
,
dataType
=
"String"
)
private
String
bankMobile
;
@ApiModelProperty
(
value
=
"银行名称"
,
example
=
""
,
required
=
true
,
dataType
=
"String"
)
private
String
bankName
;
}
performance-api/src/main/java/com/clx/performance/vo/pc/broker/OpenOrderChildImageDTO.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
vo
.
pc
.
broker
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
OpenOrderChildImageDTO
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"图片类型"
,
example
=
"2: 装车磅单照片 21:收货过磅单"
,
required
=
true
,
dataType
=
"Integer"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"图片相对地址"
,
example
=
""
,
required
=
true
,
dataType
=
"String"
)
private
String
image
;
public
OpenOrderChildImageDTO
(
Integer
type
,
String
image
)
{
this
.
type
=
type
;
this
.
image
=
image
;
}
}
performance-api/src/main/java/com/clx/performance/vo/pc/broker/OpenOrderChildTruckDTO.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
vo
.
pc
.
broker
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
OpenOrderChildTruckDTO
{
@ApiModelProperty
(
value
=
"车牌号"
,
dataType
=
"String"
)
private
String
truckNo
;
@ApiModelProperty
(
value
=
"车头车牌颜色代码"
,
dataType
=
"Integer"
)
private
Integer
truckNoColorCode
;
@ApiModelProperty
(
value
=
"车头车牌颜色"
,
dataType
=
"String"
)
private
String
truckNoColor
;
@ApiModelProperty
(
value
=
"型号"
,
dataType
=
"String"
)
private
String
model
;
@ApiModelProperty
(
value
=
"载重单位吨"
,
dataType
=
"Integer"
)
private
Integer
load
;
@ApiModelProperty
(
value
=
"吨位 单位吨"
,
dataType
=
"Integer"
)
private
Integer
grossMass
;
@ApiModelProperty
(
value
=
"车辆识别代码"
)
private
String
identifyCode
;
@ApiModelProperty
(
value
=
"使用性质"
)
private
String
useNature
;
@ApiModelProperty
(
value
=
"注册日期"
)
private
String
registerDate
;
@ApiModelProperty
(
value
=
"行驶证发证机关"
)
private
String
licenceIssueOrganization
;
@ApiModelProperty
(
value
=
"行驶证发证日期"
)
private
String
licenceIssueDate
;
@ApiModelProperty
(
value
=
"业户名称"
)
private
String
businessName
;
@ApiModelProperty
(
value
=
"道路运输经营许可证号"
)
private
String
roadTransportPermitNumber
;
@ApiModelProperty
(
value
=
"挂车第二个车牌号"
)
private
String
truckNo2
;
@ApiModelProperty
(
value
=
"车头道路运输许可证编号"
,
dataType
=
"String"
)
private
String
roadTransportCertificateNo
;
@ApiModelProperty
(
value
=
"行驶证主页照片"
,
dataType
=
"String"
)
private
String
licenceImgMain
;
@ApiModelProperty
(
value
=
"行驶证副业正面照片"
,
dataType
=
"String"
)
private
String
licenceImgSecond
;
@ApiModelProperty
(
value
=
"行驶证副业背面照片"
,
dataType
=
"String"
)
private
String
licenceImgSecondBack
;
@ApiModelProperty
(
value
=
"道路运输许可证图片地址"
,
dataType
=
"String"
)
private
String
transportLicenceImg
;
@ApiModelProperty
(
value
=
"车辆燃料类型 1:柴油 2 天然气 3其他 4新能源/电"
,
dataType
=
"Integer"
)
private
Integer
powerType
;
}
performance-api/src/main/java/com/clx/performance/vo/pc/broker/OpenOrderChildTruckOwnerDTO.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
vo
.
pc
.
broker
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
OpenOrderChildTruckOwnerDTO
{
@ApiModelProperty
(
value
=
"手机号"
,
dataType
=
"String"
)
private
String
mobile
;
@ApiModelProperty
(
value
=
"姓名"
,
dataType
=
"String"
)
private
String
name
;
@ApiModelProperty
(
value
=
"性别1男2女"
,
dataType
=
"Integer"
)
private
Integer
sex
;
@ApiModelProperty
(
value
=
"头像相对地址"
,
dataType
=
"String"
)
private
String
headImg
;
@ApiModelProperty
(
value
=
"身份证号"
,
dataType
=
"String"
)
private
String
cardNo
;
@ApiModelProperty
(
value
=
"身份证住址"
)
private
String
idCardAddress
;
@ApiModelProperty
(
value
=
"身份证有效期起始时间"
,
dataType
=
"String"
)
private
String
cardStartTime
;
@ApiModelProperty
(
value
=
"身份证有效期终止时间"
,
dataType
=
"String"
)
private
String
cardEndTime
;
@ApiModelProperty
(
value
=
"是否是长期 0-非长期 1-长期"
,
dataType
=
"Integer"
)
private
Integer
cardLongTerm
;
@ApiModelProperty
(
value
=
"身份证正面图片地址"
,
dataType
=
"String"
)
private
String
cardFrontImg
;
@ApiModelProperty
(
value
=
"身份证背面图片地址"
,
dataType
=
"String"
)
private
String
cardBackImg
;
@ApiModelProperty
(
value
=
"手持身份证照片地址"
,
dataType
=
"String"
)
private
String
faceCardImg
;
@ApiModelProperty
(
value
=
"银行卡卡号"
,
example
=
""
,
required
=
true
,
dataType
=
"String"
)
private
String
bankCardNo
;
@ApiModelProperty
(
value
=
"银行预留手机号"
,
example
=
""
,
required
=
true
,
dataType
=
"String"
)
private
String
bankMobile
;
@ApiModelProperty
(
value
=
"银行名称"
,
example
=
""
,
required
=
true
,
dataType
=
"String"
)
private
String
bankName
;
}
performance-api/src/main/java/com/clx/performance/vo/pc/broker/OpenOrderDTO.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
vo
.
pc
.
broker
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
OpenOrderDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"货单编号"
,
example
=
"12020083116861267"
,
required
=
true
,
dataType
=
"String"
)
private
String
sourceOrderNo
;
@ApiModelProperty
(
value
=
"发布货源时间"
,
example
=
"2023-01-01 00:00:00"
,
required
=
true
,
dataType
=
"String"
)
private
String
publishTime
;
@ApiModelProperty
(
value
=
"最晚装货时间"
,
example
=
"2023-01-01 00:00:00"
,
required
=
true
,
dataType
=
"String"
)
private
String
extractTime
;
@ApiModelProperty
(
value
=
"司机最晚到达时间"
,
example
=
"2023-01-01 00:00:00"
,
required
=
true
,
dataType
=
"String"
)
private
String
arriveTime
;
@ApiModelProperty
(
value
=
"总货物数量"
,
example
=
"32.12"
,
required
=
true
,
dataType
=
"String"
)
private
BigDecimal
goodsAmount
;
@ApiModelProperty
(
value
=
"货物名称"
,
example
=
"原煤"
,
required
=
true
,
dataType
=
"String"
)
private
String
goodsName
;
@ApiModelProperty
(
value
=
"货物运费单价(分)"
,
example
=
"3212"
,
required
=
true
,
dataType
=
"Integer"
)
private
Integer
transPrice
;
@ApiModelProperty
(
value
=
"货物价值(分)"
,
example
=
"3212"
,
required
=
true
,
dataType
=
"Integer"
)
private
Integer
goodsPrice
;
@ApiModelProperty
(
value
=
"发货单位"
,
example
=
"发货单位"
,
required
=
true
,
dataType
=
"String"
)
private
String
sendCompany
;
@ApiModelProperty
(
value
=
"货源所在详细地址"
,
example
=
"货源所在详细地址"
,
required
=
true
,
dataType
=
"String"
)
private
String
sendAddress
;
@ApiModelProperty
(
value
=
"发货人姓名"
,
example
=
"张三"
,
required
=
true
,
dataType
=
"String"
)
private
String
sendName
;
@ApiModelProperty
(
value
=
"收货人所在详细地址"
,
example
=
"收货人所在详细地址"
,
required
=
true
,
dataType
=
"String"
)
private
String
receiveAddress
;
@ApiModelProperty
(
value
=
"收货单位"
,
example
=
"收货单位"
,
required
=
true
,
dataType
=
"String"
)
private
String
receiveCompany
;
@ApiModelProperty
(
value
=
"收货人姓名"
,
example
=
"张三"
,
required
=
true
,
dataType
=
"String"
)
private
String
receiveName
;
@ApiModelProperty
(
value
=
"发货所在省份"
,
required
=
true
)
private
String
sendProvince
;
@ApiModelProperty
(
value
=
"发货所在城市"
,
required
=
true
)
private
String
sendCity
;
@ApiModelProperty
(
value
=
"发货所在区县"
,
required
=
true
)
private
String
sendCounty
;
@ApiModelProperty
(
value
=
"发货所在乡镇"
,
required
=
true
)
private
String
sendTown
;
@ApiModelProperty
(
value
=
"发货联系人手机号"
,
required
=
true
)
private
String
sendMobile
;
@ApiModelProperty
(
value
=
"发货地址经度"
,
required
=
true
)
private
String
loadLongitude
;
@ApiModelProperty
(
value
=
"发货地址纬度"
,
required
=
true
)
private
String
loadLatitude
;
@ApiModelProperty
(
value
=
"收货人所在省"
,
required
=
true
)
private
String
receiveProvince
;
@ApiModelProperty
(
value
=
"收货人所在城市"
,
required
=
true
)
private
String
receiveCity
;
@ApiModelProperty
(
value
=
"收货人所在区县"
,
required
=
true
)
private
String
receiveCounty
;
@ApiModelProperty
(
value
=
"收货人所在乡镇"
,
required
=
true
)
private
String
receiveTown
;
@ApiModelProperty
(
value
=
"收货联系人手机号"
,
required
=
true
)
private
String
receiveMobile
;
@ApiModelProperty
(
value
=
"收货地址经度"
,
required
=
true
)
private
String
unloadLongitude
;
@ApiModelProperty
(
value
=
"收货地址纬度"
,
required
=
true
)
private
String
unloadLatitude
;
}
performance-api/src/main/java/com/clx/performance/vo/pc/broker/TransportParam.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
vo
.
pc
.
broker
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
TransportParam
{
@ApiModelProperty
(
value
=
"用户编号"
,
required
=
true
)
@NotNull
(
message
=
"用户编号不能为空"
)
private
String
userCode
;
@ApiModelProperty
(
value
=
"网络货运平台编码"
,
example
=
"123"
,
required
=
true
,
dataType
=
"String"
)
@NotBlank
(
message
=
"网络货运平台编码不能为空"
)
private
String
transportPlatformCode
;
@ApiModelProperty
(
value
=
"货主手机号(货主账号)"
,
example
=
""
,
required
=
true
,
dataType
=
"String"
)
@NotBlank
(
message
=
"货主手机号(货主账号)不能为空"
)
private
String
ownerMobile
;
@ApiModelProperty
(
value
=
"运单编号"
,
required
=
true
)
@NotBlank
(
message
=
"运单编号不能为空"
)
private
String
orderCode
;
@ApiModelProperty
(
value
=
"货单"
,
required
=
true
)
@NotNull
(
message
=
"货单不能为空"
)
private
OpenOrderDTO
orderInfo
;
@ApiModelProperty
(
value
=
"图片"
,
required
=
true
)
@NotEmpty
(
message
=
"运单图片不能为空"
)
private
List
<
OpenOrderChildImageDTO
>
imageList
;
@ApiModelProperty
(
value
=
"司机"
,
required
=
true
)
@NotNull
(
message
=
"司机不能为空"
)
private
OpenOrderChildDriverDTO
driverInfo
;
@ApiModelProperty
(
value
=
"车主"
,
required
=
true
)
@NotNull
(
message
=
"车主不能为空"
)
private
OpenOrderChildTruckOwnerDTO
ownerInfo
;
@ApiModelProperty
(
value
=
"车辆"
,
required
=
true
)
@NotNull
(
message
=
"车辆不能为空"
)
private
OpenOrderChildTruckDTO
truckInfo
;
@ApiModelProperty
(
value
=
"运单"
,
required
=
true
)
@NotNull
(
message
=
"运单不能为空"
)
private
OpenOrderChildDTO
orderChildInfo
;
}
performance-api/src/main/java/com/clx/performance/vo/pc/broker/TransportVO.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
vo
.
pc
.
broker
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
TransportVO
{
@ApiModelProperty
(
value
=
"源运单编号"
,
example
=
"1234"
,
required
=
true
,
dataType
=
"String"
)
private
String
sourceChildNo
;
@ApiModelProperty
(
value
=
"运单编号"
,
example
=
"1234"
,
required
=
true
,
dataType
=
"String"
)
private
String
childNo
;
@ApiModelProperty
(
value
=
"风控状态 0-正常,1-单项异常,2-多项异常"
,
example
=
"1"
,
dataType
=
"Integer"
)
private
Integer
riskStatus
;
@ApiModelProperty
(
value
=
"风控异常原因"
,
example
=
"1"
,
dataType
=
"String"
)
private
String
riskReason
;
@ApiModelProperty
(
value
=
"同步状态 0-未同步,1-已同步,2-同步失败"
,
example
=
"1"
,
dataType
=
"Integer"
)
private
Integer
syncStatus
;
@ApiModelProperty
(
value
=
"同步失败原因"
,
example
=
"1"
,
dataType
=
"String"
)
private
String
syncMsg
;
@ApiModelProperty
(
value
=
"结算状态 0 未结算 1 已结算 2结算中 "
,
example
=
"1234124"
,
dataType
=
"String"
)
private
Integer
settleStatus
;
@ApiModelProperty
(
value
=
"结算方"
,
example
=
"1"
,
dataType
=
"String"
)
private
Integer
settleOrg
;
@ApiModelProperty
(
value
=
"结算失败原因"
,
example
=
"1"
,
dataType
=
"String"
)
private
String
settleMsg
;
@ApiModelProperty
(
value
=
"开票状态 0 未开票 1 已开票 "
,
example
=
"1234124"
,
dataType
=
"String"
)
private
Integer
invoiceStatus
;
}
performance-api/src/main/java/com/clx/performance/vo/pc/carrier/settle/CarrierPageSettlementDriverDetailVO.java
浏览文件 @
4ffcb910
...
...
@@ -77,7 +77,7 @@ public class CarrierPageSettlementDriverDetailVO {
@ApiModelProperty
(
value
=
"开票公司id"
)
private
Integer
invoicingCompanyId
;
@ApiModelProperty
(
value
=
"开票公司简称"
)
private
Integer
invoicingCompanyShorterName
;
private
String
invoicingCompanyShorterName
;
@MoneyOutConvert
@ApiModelProperty
(
value
=
"平台服务费"
)
private
BigDecimal
platformServiceFee
;
...
...
performance-web/src/main/java/com/clx/performance/component/NetworkSyncComponent.java
浏览文件 @
4ffcb910
...
...
@@ -25,20 +25,21 @@ public class NetworkSyncComponent {
public
void
ownerSettlementSync
(
SettlementOwner
settlementOwner
,
List
<
SettlementOwnerDetail
>
settlementOwnerDetailList
){
//TODO 通知网络货运做货主计费开票标识通知
OwnerSettlementSyncParam
param
=
new
OwnerSettlementSyncParam
();
String
mobile
=
ownerFeign
.
getOwnerInfo
(
settlementOwner
.
getOwnerUserNo
()).
getData
().
getMobile
();
param
.
setOwnerMobile
(
mobile
);
List
<
OwnerSettlementSyncParam
.
SettlementItem
>
settlementList
=
new
LinkedList
<>();
for
(
SettlementOwnerDetail
settlementOwnerDetail
:
settlementOwnerDetailList
)
{
String
childNo
=
settlementOwnerDetail
.
getChildNo
();
OwnerSettlementSyncParam
.
SettlementItem
item
=
new
OwnerSettlementSyncParam
.
SettlementItem
();
item
.
setChildNo
(
childNo
);
item
.
setSettlementNo
(
settlementOwnerDetail
.
getSettlementNo
());
settlementList
.
add
(
item
);
}
param
.
setSettlementList
(
settlementList
);
HttpDTO
httpDTO
=
transportFeignService
.
ownerSettlementSync
(
param
);
String
decrypt
=
ThirdComponent
.
decrypt
(
httpDTO
.
getData
());
log
.
info
(
"通知网络货运做货主计费开票标识通知请求解密后:{}"
,
decrypt
);
// 禁用网络货运同步
// OwnerSettlementSyncParam param = new OwnerSettlementSyncParam();
// String mobile = ownerFeign.getOwnerInfo(settlementOwner.getOwnerUserNo()).getData().getMobile();
// param.setOwnerMobile(mobile);
// List<OwnerSettlementSyncParam.SettlementItem> settlementList = new LinkedList<>();
// for (SettlementOwnerDetail settlementOwnerDetail : settlementOwnerDetailList) {
// String childNo = settlementOwnerDetail.getChildNo();
// OwnerSettlementSyncParam.SettlementItem item = new OwnerSettlementSyncParam.SettlementItem();
// item.setChildNo(childNo);
// item.setSettlementNo(settlementOwnerDetail.getSettlementNo());
// settlementList.add(item);
// }
// param.setSettlementList(settlementList);
// HttpDTO httpDTO = transportFeignService.ownerSettlementSync(param);
// String decrypt = ThirdComponent.decrypt(httpDTO.getData());
// log.info("通知网络货运做货主计费开票标识通知请求解密后:{}", decrypt);
}
}
performance-web/src/main/java/com/clx/performance/component/OrderChildLoanComponent.java
浏览文件 @
4ffcb910
...
...
@@ -3,6 +3,7 @@ package com.clx.performance.component;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.order.enums.StatusEnum
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.vo.feign.FeignOrderInfoVO
;
import
com.clx.order.vo.pc.owner.OwnerQuotationDetailVO
;
...
...
@@ -25,6 +26,7 @@ import com.clx.performance.enums.settle.SettlementOwnerEnum;
import
com.clx.performance.enums.settle.SettlementWayEnum
;
import
com.clx.performance.event.OwnerLoanThawEvent
;
import
com.clx.performance.event.OwnerRepaymentUpdateEvent
;
import
com.clx.performance.extranal.user.OrderService
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.model.OwnerRunningWaterRecord
;
...
...
@@ -89,6 +91,8 @@ public class OrderChildLoanComponent {
private
final
PaymentService
paymentService
;
private
final
OrderService
orderService
;
/**
* 接单校验判断
*
...
...
@@ -201,6 +205,7 @@ public class OrderChildLoanComponent {
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
childLoanConfirmAfterProcess
(
SettlementDriverDetail
settlementDriverDetail
,
SettlementOwnerDetail
settlementOwnerDetail
,
OrderChild
orderChild
)
{
FeignOrderInfoVO
orderInfo
=
orderService
.
getOrderInfo
(
settlementDriverDetail
.
getOrderNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_INVALID
);
log
.
info
(
"1.运单确认收货后借款相关处理执行"
);
//临时结算金额,借款抵扣后需要重新赋值结算金额为0,如果不需要借款相关逻辑,正常设置结算金额
...
...
@@ -224,6 +229,12 @@ public class OrderChildLoanComponent {
log
.
info
(
"3.当前是网运单,但预付运费不为0,说明已经处理"
);
return
;
}
if
(!
Objects
.
equals
(
orderInfo
.
getSupportLoan
(),
StatusEnum
.
YES
.
getCode
())){
log
.
info
(
"3.2当前运单不支持货主借款"
);
return
;
}
Integer
loanTypeFlag
=
null
;
String
childNo
=
settlementDriverDetail
.
getChildNo
();
...
...
performance-web/src/main/java/com/clx/performance/config/RabbitSettlementConfig.java
浏览文件 @
4ffcb910
...
...
@@ -73,5 +73,55 @@ public class RabbitSettlementConfig {
return
BindingBuilder
.
bind
(
settlementDetailInvoiceTypeSyncQueue
()).
to
(
settlementDefaultExchange
()).
with
(
RabbitKeySettlementConstants
.
SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_ROUTING_KEY
);
}
/**
* 开票方式同步
*/
@Bean
public
Queue
settlementInvoiceTypeSyncQueue
()
{
return
new
Queue
(
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_TYPE_SYNC_QUEUE
);
}
@Bean
public
Binding
settlementInvoiceTypeSyncQueueBinding
()
{
return
BindingBuilder
.
bind
(
settlementInvoiceTypeSyncQueue
()).
to
(
settlementDefaultExchange
())
.
with
(
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_TYPE_SYNC_ROUTING_KEY
);
}
/**
* 结算
*/
@Bean
public
Queue
settlementSettleQueue
()
{
return
new
Queue
(
RabbitKeySettlementConstants
.
SETTLEMENT_SETTLE_QUEUE
);
}
@Bean
public
Binding
settlementSettleQueueBinding
()
{
return
BindingBuilder
.
bind
(
settlementSettleQueue
()).
to
(
settlementDefaultExchange
())
.
with
(
RabbitKeySettlementConstants
.
SETTLEMENT_SETTLE_ROUTING_KEY
);
}
/**
* 支付状态
*/
@Bean
public
Queue
settlementPayStatusSyncQueue
()
{
return
new
Queue
(
RabbitKeySettlementConstants
.
SETTLEMENT_PAY_STATUS_SYNC_QUEUE
);
}
@Bean
public
Binding
settlementPayStatusSyncQueueBinding
()
{
return
BindingBuilder
.
bind
(
settlementPayStatusSyncQueue
()).
to
(
settlementDefaultExchange
())
.
with
(
RabbitKeySettlementConstants
.
SETTLEMENT_PAY_STATUS_SYNC_ROUTING_KEY
);
}
/**
* 开票状态
*/
@Bean
public
Queue
settlementInvoiceSyncQueue
()
{
return
new
Queue
(
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_STATUS_SYNC_QUEUE
);
}
@Bean
public
Binding
settlementInvoiceSyncQueueBinding
()
{
return
BindingBuilder
.
bind
(
settlementInvoiceSyncQueue
()).
to
(
settlementDefaultExchange
())
.
with
(
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_STATUS_SYNC_ROUTING_KEY
);
}
}
performance-web/src/main/java/com/clx/performance/config/SettlementConfig.java
浏览文件 @
4ffcb910
...
...
@@ -9,11 +9,12 @@ import org.springframework.stereotype.Component;
@Component
public
class
SettlementConfig
{
// 普通单开票公司
private
InvoiceCompany
invoiceCompanyDefault
;
// broker host
private
String
brokerHost
;
// broker用户编号
private
String
brokerUserCode
;
// 普通单开票公司编号
private
String
ordinaryInvoiceCompanyGroupCode
;
@Data
public
class
InvoiceCompany
{
String
companyGroupCode
;
}
}
performance-web/src/main/java/com/clx/performance/constant/RabbitKeySettlementConstants.java
浏览文件 @
4ffcb910
...
...
@@ -40,9 +40,32 @@ public class RabbitKeySettlementConstants {
public
static
final
String
SETTLEMENT_DETAIL_ADD_ROUTING_KEY
=
PREFIX
+
"settlementDetail.add"
+
QUEUE_ROUTING_KEY
;
/**
*
同步开票标识
*
计费统计
*/
public
static
final
String
SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_QUEUE
=
PREFIX
+
"settlementDetailInvoiceType.sync"
+
QUEUE
;
public
static
final
String
SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_ROUTING_KEY
=
PREFIX
+
"settlementDetailInvoiceType.sync"
+
QUEUE_ROUTING_KEY
;
/**
* 同步开票标识
*/
public
static
final
String
SETTLEMENT_INVOICE_TYPE_SYNC_QUEUE
=
PREFIX
+
"settlementInvoiceType.sync"
+
QUEUE
;
public
static
final
String
SETTLEMENT_INVOICE_TYPE_SYNC_ROUTING_KEY
=
PREFIX
+
"settlementInvoiceType.sync"
+
QUEUE_ROUTING_KEY
;
/**
* 结算
*/
public
static
final
String
SETTLEMENT_SETTLE_QUEUE
=
PREFIX
+
"settlement.settle"
+
QUEUE
;
public
static
final
String
SETTLEMENT_SETTLE_ROUTING_KEY
=
PREFIX
+
"settlement.settle"
+
QUEUE_ROUTING_KEY
;
/**
* 开票状态同步
*/
public
static
final
String
SETTLEMENT_INVOICE_STATUS_SYNC_QUEUE
=
PREFIX
+
"settlementInvoiceStatus.sync"
+
QUEUE
;
public
static
final
String
SETTLEMENT_INVOICE_STATUS_SYNC_ROUTING_KEY
=
PREFIX
+
"settlementInvoiceStatus.sync"
+
QUEUE_ROUTING_KEY
;
/**
* 支付状态同步
*/
public
static
final
String
SETTLEMENT_PAY_STATUS_SYNC_QUEUE
=
PREFIX
+
"settlementPayStatus.sync"
+
QUEUE
;
public
static
final
String
SETTLEMENT_PAY_STATUS_SYNC_ROUTING_KEY
=
PREFIX
+
"settlementPayStatus.sync"
+
QUEUE_ROUTING_KEY
;
}
performance-web/src/main/java/com/clx/performance/controller/temp/TempSettlementController.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
controller
.
temp
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.listener.OrderChildSyncTransportListener
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @Author: aiqingguo
* @Description: 临时接口
* @Date: 2023-8-21 12:10:16
* @Version: 1.0
*/
@Slf4j
@RestController
@RequestMapping
(
value
=
"/temp/settlement"
)
public
class
TempSettlementController
{
@Autowired
private
OrderChildDao
orderChildDao
;
@Autowired
private
SettlementMqService
settlementMqService
;
@Autowired
private
OrderChildSyncTransportListener
orderChildSyncTransportListener
;
@ApiOperation
(
value
=
"运单同步broker"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/orderChildSync"
,
method
=
RequestMethod
.
GET
)
public
Result
orderChildSync
(
String
childNo
)
{
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
childNo
).
get
();
// 同步broker
orderChildSyncTransportListener
.
transportOrderChildProcess
(
orderChild
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"开票类型同步"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/invoiceTypeSync"
,
method
=
RequestMethod
.
GET
)
public
Result
invoiceTypeSync
(
String
childNo
)
{
settlementMqService
.
invoiceTypeSync
(
childNo
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"开票状态同步"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/invoiceStatusSync"
,
method
=
RequestMethod
.
GET
)
public
Result
invoiceStatusSync
(
String
childNo
)
{
settlementMqService
.
invoiceStatusSync
(
childNo
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"支付状态同步"
,
notes
=
"<br>By:艾庆国"
)
@RequestMapping
(
value
=
"/payStatusSync"
,
method
=
RequestMethod
.
GET
)
public
Result
payStatusSync
(
String
childNo
)
{
settlementMqService
.
payStatusSync
(
childNo
);
return
Result
.
ok
();
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildSyncTransportInvoiceRecordDaoImpl.java
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
dao
.
impl
;
import
com.clx.performance.enums.TransportSyncTypeEnum
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao
;
import
com.clx.performance.mapper.OrderChildSyncTransportInvoiceRecordMapper
;
import
com.clx.performance.model.OrderChildSyncTransportInvoiceRecord
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
...
...
@@ -19,6 +19,8 @@ public class OrderChildSyncTransportInvoiceRecordDaoImpl extends BaseDaoImpl<Ord
@Override
public
List
<
OrderChildSyncTransportInvoiceRecord
>
selectListForJob
()
{
return
baseMapper
.
selectList
(
null
);
return
list
(
lUdWrapper
()
.
le
(
OrderChildSyncTransportInvoiceRecord:
:
getCreateTime
,
LocalDateTime
.
now
().
minusMinutes
(
10
))
);
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/settle/OrderChildSyncTransportRecordDaoImpl.java
浏览文件 @
4ffcb910
...
...
@@ -4,9 +4,11 @@ package com.clx.performance.dao.impl.settle;
import
com.clx.performance.dao.settle.OrderChildSyncTransportRecordDao
;
import
com.clx.performance.mapper.settle.OrderChildSyncTransportRecordMapper
;
import
com.clx.performance.model.settle.OrderChildSyncTransportRecord
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
...
...
@@ -19,7 +21,10 @@ public class OrderChildSyncTransportRecordDaoImpl extends BaseDaoImpl<OrderChild
@Override
public
List
<
OrderChildSyncTransportRecord
>
selectListForJob
()
{
return
baseMapper
.
selectList
(
lQrWrapper
().
eq
(
OrderChildSyncTransportRecord:
:
getStatus
,
0
));
return
baseMapper
.
selectList
(
lQrWrapper
()
.
gt
(
OrderChildSyncTransportRecord:
:
getCreateTime
,
LocalDateTime
.
now
().
minusMonths
(
3
))
.
eq
(
OrderChildSyncTransportRecord:
:
getStatus
,
0
)
);
}
@Override
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/settle/SettlementOwnerDetailDaoImpl.java
浏览文件 @
4ffcb910
...
...
@@ -15,6 +15,7 @@ import com.msl.common.dao.impl.BaseDaoImpl;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Repository
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -161,4 +162,14 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
);
}
@Override
public
List
<
SettlementOwnerDetail
>
listInvoiceStatusSync
()
{
return
list
(
lUdWrapper
()
.
gt
(
SettlementOwnerDetail:
:
getCreateTime
,
LocalDateTime
.
now
().
minusMonths
(
3
))
.
eq
(
SettlementOwnerDetail:
:
getInvoiceChannel
,
SettlementOwnerDetailEnum
.
InvoiceChannel
.
BROKER
.
getCode
())
.
eq
(
SettlementOwnerDetail:
:
getInvoiceStatus
,
SettlementOwnerDetailEnum
.
InvoiceStatus
.
NO
.
getCode
())
.
eq
(
SettlementOwnerDetail:
:
getInvoiceType
,
SettlementOwnerEnum
.
InvoiceType
.
ONLINE
.
getCode
())
);
}
}
performance-web/src/main/java/com/clx/performance/dao/settle/SettlementOwnerDetailDao.java
浏览文件 @
4ffcb910
...
...
@@ -48,4 +48,5 @@ public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailM
void
updateSettlementMerge
(
String
settlementNo
,
List
<
String
>
settlementNos
);
List
<
SettlementOwnerDetail
>
listInvoiceStatusSync
();
}
performance-web/src/main/java/com/clx/performance/event/EventListenerComponent.java
浏览文件 @
4ffcb910
...
...
@@ -8,21 +8,17 @@ import com.clx.performance.constant.RabbitKeyConstants;
import
com.clx.performance.constant.RedissonConstants
;
import
com.clx.performance.dao.loan.OrderChildLoanRetryRecordDao
;
import
com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao
;
import
com.clx.performance.dao.loan.OwnerLoanRecordDao
;
import
com.clx.performance.dao.loan.OwnerRepaymentDao
;
import
com.clx.performance.dao.settle.SettlementDriverDao
;
import
com.clx.performance.dao.settle.SettlementDriverDetailDao
;
import
com.clx.performance.dao.settle.SettlementOwnerDetailDao
;
import
com.clx.performance.dto.LoanBalanceDTO
;
import
com.clx.performance.dto.OwnerLoanMqDTO
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.loan.OwnerLoanAccountRunningWaterRecordEnum
;
import
com.clx.performance.enums.loan.OwnerLoanRecordEnum
;
import
com.clx.performance.enums.loan.OwnerRePaymentEnum
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.loan.OrderChildLoanRetryRecord
;
import
com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord
;
import
com.clx.performance.model.loan.OwnerLoanRecord
;
import
com.clx.performance.model.loan.OwnerRepayment
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
...
...
@@ -43,7 +39,6 @@ import org.springframework.stereotype.Component;
import
org.springframework.transaction.event.TransactionPhase
;
import
org.springframework.transaction.event.TransactionalEventListener
;
import
java.math.BigDecimal
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -144,8 +139,8 @@ public class EventListenerComponent {
settlementOwnerDetailDao
.
updateInvoiceType
(
settlementOwnerDetail
);
settlementDriverDetailDao
.
updateInvoiceTypeAndPrepayFreightFlag
(
settlementDriverDetail
);
// 发送mq
通过开票标识
settlementMqService
.
invoiceTypeSync
(
settlementDriverDetail
.
getChildNo
(),
settlementDriverDetail
.
getInvoiceType
());
// 发送mq
结算统计
settlementMqService
.
settlementStatistics
(
settlementDriverDetail
.
getChildNo
(),
settlementDriverDetail
.
getInvoiceType
());
}
catch
(
Exception
e
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
GET_LOAN_RECORD
,
e
.
getMessage
());
}
finally
{
...
...
performance-web/src/main/java/com/clx/performance/extranal/broker/BrokerService.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
extranal
.
broker
;
import
com.clx.performance.vo.pc.broker.TransportParam
;
import
com.clx.performance.vo.pc.broker.TransportVO
;
public
interface
BrokerService
{
void
orderChildSync
(
TransportParam
param
);
TransportVO
getOrderChildStatus
(
String
childNo
);
}
performance-web/src/main/java/com/clx/performance/extranal/broker/impl/BrokerServiceImpl.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
extranal
.
broker
.
impl
;
import
com.clx.performance.config.SettlementConfig
;
import
com.clx.performance.enums.ResultEnum
;
import
com.clx.performance.extranal.broker.BrokerService
;
import
com.clx.performance.feign.BrokerFeign
;
import
com.clx.performance.vo.pc.broker.TransportParam
;
import
com.clx.performance.vo.pc.broker.TransportVO
;
import
com.msl.common.exception.ServiceSystemException
;
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
BrokerServiceImpl
implements
BrokerService
{
@Autowired
public
BrokerFeign
brokerFeign
;
@Autowired
private
SettlementConfig
settlementConfig
;
@Override
public
void
orderChildSync
(
TransportParam
param
)
{
param
.
setUserCode
(
settlementConfig
.
getBrokerUserCode
());
Result
<
Object
>
result
=
brokerFeign
.
saveTransport
(
param
);
if
(
result
.
getCode
()
!=
0
)
{
log
.
info
(
"运单同步网络货运失败, msg:{}"
,
result
.
getMsg
());
throw
new
ServiceSystemException
(
ResultEnum
.
FEIGN_ERROR
,
result
.
getMsg
());
}
}
@Override
public
TransportVO
getOrderChildStatus
(
String
childNo
)
{
Result
<
TransportVO
>
result
=
brokerFeign
.
getTransportByChildNo
(
childNo
,
settlementConfig
.
getBrokerUserCode
());
if
(
result
.
getCode
()
!=
0
)
{
log
.
info
(
"运单同步网络货运失败, msg:{}"
,
result
.
getMsg
());
}
return
result
.
getData
();
}
}
performance-web/src/main/java/com/clx/performance/job/OrderChildPaySyncTransportJob.java
浏览文件 @
4ffcb910
...
...
@@ -6,27 +6,17 @@ import com.clx.performance.component.ThirdComponent;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.settle.OrderChildSyncTransportRecordDao
;
import
com.clx.performance.dao.settle.SettlementDriverDetailDao
;
import
com.clx.performance.dto.OrderChildSyncDTO
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.settle.SettlementDriverEnum
;
import
com.clx.performance.enums.settle.SettlementOwnerEnum
;
import
com.clx.performance.extranal.user.OwnerInfoService
;
import
com.clx.performance.feign.TransportFeignService
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.model.settle.OrderChildSyncTransportRecord
;
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.param.feign.transport.OrderChildPaySyncParam
;
import
com.clx.performance.service.settle.SettlementDriverDetailService
;
import
com.clx.performance.service.settle.SettlementMqHandlerService
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.clx.performance.service.settle.SettlementOwnerDetailService
;
import
com.clx.performance.utils.LocalDateTimeUtils
;
import
com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam
;
import
com.clx.user.vo.feign.OwnerInfoFeignVO
;
import
com.clx.performance.vo.mq.SettlementStatisticsMqParam
;
import
com.msl.common.dto.HttpDTO
;
import
com.xxl.job.core.context.XxlJobHelper
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
...
...
@@ -34,10 +24,7 @@ import lombok.AllArgsConstructor;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
@Slf4j
...
...
@@ -62,9 +49,9 @@ public class OrderChildPaySyncTransportJob {
private
final
OrderGoodsDao
orderGoodsDao
;
/**
* 同步网络货运
* 同步网络货运
运单支付(禁用网络货运同步)
*/
@XxlJob
(
"orderChildPaySyncTransportJob"
)
//
@XxlJob("orderChildPaySyncTransportJob")
public
void
orderChildPaySyncTransportJob
()
{
List
<
OrderChildSyncTransportRecord
>
recordList
=
orderChildSyncTransportRecordDao
.
selectListForJob
();
if
(
CollectionUtil
.
isEmpty
(
recordList
))
{
...
...
@@ -96,9 +83,9 @@ public class OrderChildPaySyncTransportJob {
public
void
settlementDetailInvoiceTypeSyncJob
()
{
String
jobParam
=
XxlJobHelper
.
getJobParam
();
log
.
info
(
"XxlJobHelper jobParam:{}"
,
jobParam
);
Settlement
DetailInvoiceTypeSyncMqParam
mqParam
=
new
SettlementDetailInvoiceTypeSync
MqParam
();
Settlement
StatisticsMqParam
mqParam
=
new
SettlementStatistics
MqParam
();
mqParam
.
setChildNo
(
jobParam
);
settlementMqHandlerService
.
settlement
DetailInvoiceTypeSync
(
mqParam
);
settlementMqHandlerService
.
settlement
Statistics
(
mqParam
);
}
...
...
performance-web/src/main/java/com/clx/performance/job/OrderChildSyncTransportInvoiceExceptionJob.java
浏览文件 @
4ffcb910
...
...
@@ -49,9 +49,9 @@ public class OrderChildSyncTransportInvoiceExceptionJob {
private
final
SettlementDriverDetailDao
settlementDriverDetailDao
;
/**
* 同步网络货运
* 同步网络货运
(禁用网络货运同步)
*/
@XxlJob
(
"orderChildSyncTransportInvoiceExceptionJob"
)
//
@XxlJob("orderChildSyncTransportInvoiceExceptionJob")
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
orderChildSyncTransportInvoiceExceptionJob
()
{
//只查询同步异常的网络货运任务
...
...
performance-web/src/main/java/com/clx/performance/job/DriverSettlementJob.java
→
performance-web/src/main/java/com/clx/performance/job/
settlement/
DriverSettlementJob.java
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
job
;
package
com
.
clx
.
performance
.
job
.
settlement
;
import
com.clx.performance.dao.settle.SettlementDriverDetailDao
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
...
...
performance-web/src/main/java/com/clx/performance/job/settlement/SettlementJob.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
job
.
settlement
;
import
com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao
;
import
com.clx.performance.dao.settle.OrderChildSyncTransportRecordDao
;
import
com.clx.performance.dao.settle.SettlementOwnerDetailDao
;
import
com.clx.performance.model.OrderChildSyncTransportInvoiceRecord
;
import
com.clx.performance.model.settle.OrderChildSyncTransportRecord
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.msl.common.job.JobLog
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.exception.ExceptionUtils
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Slf4j
@Service
@AllArgsConstructor
public
class
SettlementJob
{
private
final
OrderChildSyncTransportInvoiceRecordDao
orderChildSyncTransportInvoiceRecordDao
;
private
final
SettlementMqService
settlementMqService
;
private
final
SettlementOwnerDetailDao
settlementOwnerDetailDao
;
private
final
OrderChildSyncTransportRecordDao
orderChildSyncTransportRecordDao
;
/**
* 同步无车承运运单开票类型
*/
@XxlJob
(
"settlementInvoiceTypeSync"
)
public
void
settlementInvoiceTypeSync
()
{
List
<
OrderChildSyncTransportInvoiceRecord
>
recordList
=
orderChildSyncTransportInvoiceRecordDao
.
selectListForJob
();
log
.
info
(
"待同步无车承运运单状态,size:{}"
,
recordList
.
size
());
if
(
recordList
.
isEmpty
())
{
return
;}
for
(
OrderChildSyncTransportInvoiceRecord
item
:
recordList
)
{
settlementMqService
.
invoiceTypeSync
(
item
.
getChildNo
());
}
orderChildSyncTransportInvoiceRecordDao
.
deleteByKeys
(
recordList
.
stream
().
map
(
item
->
item
.
getId
()).
collect
(
Collectors
.
toList
()));
}
/**
* 同步无车承运运单开票状态
*/
@XxlJob
(
"settlementInvoiceStatusSync"
)
public
void
settlementInvoiceStatusSync
()
{
try
{
List
<
SettlementOwnerDetail
>
list
=
settlementOwnerDetailDao
.
listInvoiceStatusSync
();
log
.
info
(
"待同步无车承运运单开票状态, size:{}"
,
list
.
size
());
if
(
list
.
isEmpty
())
{
return
;}
for
(
SettlementOwnerDetail
item
:
list
)
{
settlementMqService
.
invoiceStatusSync
(
item
.
getChildNo
());
}
}
catch
(
Exception
e
)
{
log
.
warn
(
"同步无车承运运单开票状态失败,异常原因:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
JobLog
.
error
(
"同步无车承运运单开票状态失败,异常原因====================="
,
e
);
}
}
/**
* 同步无车承运运单支付状态
*/
@XxlJob
(
"settlementPayStatusSync"
)
public
void
settlementPayStatusSync
()
{
try
{
List
<
OrderChildSyncTransportRecord
>
list
=
orderChildSyncTransportRecordDao
.
selectListForJob
();
log
.
info
(
"待同步无车承运运单支付状态, size:{}"
,
list
.
size
());
if
(
list
.
isEmpty
())
{
return
;}
for
(
OrderChildSyncTransportRecord
item
:
list
)
{
settlementMqService
.
payStatusSync
(
item
.
getChildNo
());
}
}
catch
(
Exception
e
)
{
log
.
warn
(
"同步无车承运运单支付状态失败,异常原因:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
JobLog
.
error
(
"同步无车承运运单支付状态失败,异常原因====================="
,
e
);
}
}
}
performance-web/src/main/java/com/clx/performance/job/SettlementOwnerMontnJob.java
→
performance-web/src/main/java/com/clx/performance/job/
settlement/
SettlementOwnerMontnJob.java
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
job
;
package
com
.
clx
.
performance
.
job
.
settlement
;
import
com.clx.performance.dao.settle.SettlementOwnerDao
;
import
com.clx.performance.enums.settle.SettlementOwnerEnum
;
...
...
performance-web/src/main/java/com/clx/performance/listener/OrderChildSyncTransportListener.java
浏览文件 @
4ffcb910
...
...
@@ -3,9 +3,9 @@ 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.ThirdComponent
;
import
com.clx.performance.config.SettlementConfig
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OwnerAccountDao
;
...
...
@@ -25,10 +25,9 @@ import com.clx.performance.feign.TransportFeignService;
import
com.clx.performance.model.*
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
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.broker.OrderChildBrokerService
;
import
com.clx.performance.service.settle.NetworkDriverRunningWaterRecordService
;
import
com.msl.common.dto.HttpDTO
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.exception.ExceptionUtils
;
...
...
@@ -72,7 +71,8 @@ public class OrderChildSyncTransportListener {
private
final
ApplicationEventPublisher
applicationEventPublisher
;
private
final
InvoicingCompanyService
invoicingCompanyService
;
private
final
SettlementConfig
settlementConfig
;
private
final
OrderChildBrokerService
orderChildBrokerService
;
private
final
OrderChildDao
orderChildDao
;
/**
* 承运同步网络货运运单
*/
...
...
@@ -81,7 +81,10 @@ public class OrderChildSyncTransportListener {
OrderChild
orderChild
=
JSONUtil
.
toBean
(
message
,
OrderChild
.
class
);
//是否通过风控,调用网络货运
try
{
transportOrderChildProcess
(
orderChild
);
OrderChild
orderChildBase
=
orderChildDao
.
getByChildNo
(
orderChild
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
log
.
info
(
"当前OrderChildSyncTransportListener监听同步网络货运,运单{}"
,
JSONUtil
.
parse
(
orderChildBase
).
toString
());
transportOrderChildProcess
(
orderChildBase
);
}
catch
(
Exception
e
)
{
log
.
info
(
"当前OrderChildSyncTransportListener监听同步网络货运失败,运单号{}, 错误信息{}"
,
orderChild
.
getChildNo
(),
ExceptionUtils
.
getStackTrace
(
e
));
...
...
@@ -100,26 +103,33 @@ public class OrderChildSyncTransportListener {
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
(),
orderGoods
.
getInvoiceServiceFeeRate
(),
settlementOwnerDetail
));
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
);
// // 同步网络货运(禁用网络货运同步)
// 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);
// extracted(orderChild, bean, JSONUtil.parse(bean).toString(), settlementOwnerDetail, invoiceType, settlementDriverDetail);
extracted
(
orderChild
,
bean
,
JSONUtil
.
parse
(
bean
).
toString
(),
settlementOwnerDetail
,
invoiceType
,
settlementDriverDetail
);
// 同步broker
orderChildBrokerService
.
orderChildSync
(
orderChild
,
orderGoods
,
settlementOwnerDetail
,
settlementDriverDetail
);
}
public
void
extracted
(
OrderChild
orderChild
,
OrderChildSyncDTO
bean
,
String
remark
,
SettlementOwnerDetail
settlementOwnerDetail
,
Integer
invoiceType
,
SettlementDriverDetail
settlementDriverDetail
)
{
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
get
();
if
(
null
!=
bean
&&
bean
.
getCode
()
==
0
)
{
log
.
info
(
"当前OrderChildSyncTransportListener监听同步网络货运成功,运单号为{}"
,
orderChild
.
getChildNo
());
if
(
null
!=
bean
.
getData
()
&&
bean
.
getData
().
getStatus
()
==
1
)
{
if
(
null
!=
bean
&&
bean
.
getCode
()
==
0
&&
null
!=
bean
.
getData
()
&&
bean
.
getData
().
getStatus
()
==
1
){
invoiceType
=
SettlementOwnerEnum
.
InvoiceType
.
ONLINE
.
getCode
();
}
extracted
(
orderChild
,
settlementOwnerDetail
,
settlementDriverDetail
,
invoiceType
);
}
public
void
extracted
(
OrderChild
orderChild
,
SettlementOwnerDetail
settlementOwnerDetail
,
SettlementDriverDetail
settlementDriverDetail
,
Integer
invoiceType
)
{
if
(
Objects
.
equals
(
invoiceType
,
SettlementOwnerEnum
.
InvoiceType
.
ONLINE
.
getCode
()))
{
//通过风控
List
<
OwnerRunningWaterRecord
>
runningWaterRecordList
=
ownerRunningWaterRecordDao
.
getOwnerRunningWaterRecord
(
orderChild
.
getOrderNo
());
BigDecimal
frozen
=
runningWaterRecordList
.
stream
().
filter
(
item
->
{
...
...
@@ -137,7 +147,6 @@ public class OrderChildSyncTransportListener {
BigDecimal
ans
=
getPrepayFreightPay
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
,
frozen
);
BigDecimal
subtract
=
frozen
.
subtract
(
takeOut
);
log
.
info
(
"冻结预付运费:{}, 扣除的流水总和:{}"
,
frozen
,
takeOut
);
invoiceType
=
SettlementOwnerEnum
.
InvoiceType
.
ONLINE
.
getCode
();
settlementDriverDetail
.
setPrepayFreight
(
ans
);
//冻结的预付运费为0 或者 此刻预付运费也可能为0,那么就不用生成扣除相关流水逻辑
if
(
subtract
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
||
ans
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
...
...
@@ -171,13 +180,8 @@ public class OrderChildSyncTransportListener {
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO
.
getCode
());
}
}
else
{
log
.
info
(
"当前OrderChildSyncTransportListener监听同步网络货运失败,变为普通单,运单号{}, 错误信息{}"
,
orderChild
.
getChildNo
(),
remark
);
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
settlementOwnerDetail
.
setFinalPaymentStatus
(
SettlementOwnerDetailEnum
.
FinalPaymentStatus
.
NO
.
getCode
());
}
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
get
();
// 结算金额
settlementOwnerDetail
.
setSettlementFreight
(
settlementFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
...
...
@@ -190,12 +194,15 @@ public class OrderChildSyncTransportListener {
settlementOwnerDetail
.
setInvoiceServiceFeeRate
(
BigDecimal
.
ZERO
);
InvoicingCompanyVO
invoiceCompany
=
invoicingCompanyService
.
getInvoicingCompanyByGroupCode
(
settlementConfig
.
get
InvoiceCompanyDefault
().
get
CompanyGroupCode
());
settlementConfig
.
get
OrdinaryInvoice
CompanyGroupCode
());
//设置开票公司信息
settlementOwnerDetail
.
setInvoicingCompanyId
(
invoiceCompany
.
getId
());
settlementOwnerDetail
.
setInvoicingCompanyShorterName
(
invoiceCompany
.
getCompanyShorterName
());
settlementOwnerDetail
.
setInvoicingCompanyGroupCode
(
invoiceCompany
.
getCompanyGroupCode
());
settlementOwnerDetail
.
setInvoiceServiceFeeRate
(
invoiceCompany
.
getServiceFeeRate
()==
null
?
BigDecimal
.
ZERO
:
orderGoods
.
getInvoiceServiceFeeRate
());
settlementDriverDetail
.
setInvoicingCompanyId
(
invoiceCompany
.
getId
());
settlementDriverDetail
.
setInvoicingCompanyShorterName
(
invoiceCompany
.
getCompanyShorterName
());
settlementDriverDetail
.
setInvoicingCompanyGroupCode
(
invoiceCompany
.
getCompanyGroupCode
());
...
...
@@ -203,9 +210,6 @@ public class OrderChildSyncTransportListener {
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
);
...
...
performance-web/src/main/java/com/clx/performance/listener/settle/SettlementInvoiceStatusSyncListener.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
listener
.
settle
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeySettlementConstants
;
import
com.clx.performance.service.settle.SettlementMqHandlerService
;
import
com.clx.performance.vo.mq.SettlementInvoiceStatusSyncMqParam
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @Author: 艾庆国
* @Description: 开票标识同步 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public
class
SettlementInvoiceStatusSyncListener
{
@Autowired
private
SettlementMqHandlerService
settlementMqHandlerService
;
@RabbitListener
(
queues
=
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_STATUS_SYNC_QUEUE
)
public
void
process
(
Message
message
)
{
try
{
log
.
info
(
"结算-开票状态同步, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
SettlementInvoiceStatusSyncMqParam
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"结算-开票状态同步 失败"
,
e
);
}
}
private
void
process
(
SettlementInvoiceStatusSyncMqParam
mq
){
settlementMqHandlerService
.
invoiceStatusSync
(
mq
);
}
}
performance-web/src/main/java/com/clx/performance/listener/settle/SettlementInvoiceTypeSyncListener.java
浏览文件 @
4ffcb910
...
...
@@ -5,7 +5,7 @@ import com.alibaba.fastjson.TypeReference;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeySettlementConstants
;
import
com.clx.performance.service.settle.SettlementMqHandlerService
;
import
com.clx.performance.vo.mq.Settlement
Detail
InvoiceTypeSyncMqParam
;
import
com.clx.performance.vo.mq.SettlementInvoiceTypeSyncMqParam
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
...
...
@@ -14,7 +14,7 @@ import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 开票
标识
同步 mq
* @Description: 开票
类型
同步 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
...
...
@@ -25,19 +25,19 @@ public class SettlementInvoiceTypeSyncListener {
@Autowired
private
SettlementMqHandlerService
settlementMqHandlerService
;
@RabbitListener
(
queues
=
RabbitKeySettlementConstants
.
SETTLEMENT_
DETAIL_INVOICE_TYPE_SY
C_QUEUE
)
@RabbitListener
(
queues
=
RabbitKeySettlementConstants
.
SETTLEMENT_
INVOICE_TYPE_SYN
C_QUEUE
)
public
void
process
(
Message
message
)
{
try
{
log
.
info
(
"结算-开票
标识
同步, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
Settlement
Detail
InvoiceTypeSyncMqParam
>>(){}).
getData
());
log
.
info
(
"结算-开票
类型
同步, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
SettlementInvoiceTypeSyncMqParam
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"结算-开票
标识
同步 失败"
,
e
);
log
.
info
(
"结算-开票
类型
同步 失败"
,
e
);
}
}
private
void
process
(
Settlement
Detail
InvoiceTypeSyncMqParam
mq
){
private
void
process
(
SettlementInvoiceTypeSyncMqParam
mq
){
settlementMqHandlerService
.
settlementDetailI
nvoiceTypeSync
(
mq
);
settlementMqHandlerService
.
i
nvoiceTypeSync
(
mq
);
}
}
performance-web/src/main/java/com/clx/performance/listener/settle/SettlementPayStatusSyncListener.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
listener
.
settle
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeySettlementConstants
;
import
com.clx.performance.service.settle.SettlementMqHandlerService
;
import
com.clx.performance.vo.mq.SettlementPayStatusSyncMqParam
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @Author: 艾庆国
* @Description: 开票标识同步 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public
class
SettlementPayStatusSyncListener
{
@Autowired
private
SettlementMqHandlerService
settlementMqHandlerService
;
@RabbitListener
(
queues
=
RabbitKeySettlementConstants
.
SETTLEMENT_PAY_STATUS_SYNC_QUEUE
)
public
void
process
(
Message
message
)
{
try
{
log
.
info
(
"结算-支付状态同步, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
SettlementPayStatusSyncMqParam
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"结算-支付状态同步 失败"
,
e
);
}
}
private
void
process
(
SettlementPayStatusSyncMqParam
mq
){
settlementMqHandlerService
.
payStatusSync
(
mq
);
}
}
performance-web/src/main/java/com/clx/performance/listener/settle/SettlementSettleListener.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
listener
.
settle
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeySettlementConstants
;
import
com.clx.performance.service.settle.SettlementMqHandlerService
;
import
com.clx.performance.vo.mq.SettlementSettleMqParam
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @Author: 艾庆国
* @Description: 结算 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public
class
SettlementSettleListener
{
@Autowired
private
SettlementMqHandlerService
settlementMqHandlerService
;
@RabbitListener
(
queues
=
RabbitKeySettlementConstants
.
SETTLEMENT_SETTLE_QUEUE
)
public
void
process
(
Message
message
)
{
try
{
log
.
info
(
"结算-结算, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
SettlementSettleMqParam
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"结算-结算 失败"
,
e
);
}
}
private
void
process
(
SettlementSettleMqParam
mq
){
settlementMqHandlerService
.
settle
(
mq
);
}
}
performance-web/src/main/java/com/clx/performance/listener/settle/SettlementStatisticsListener.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
listener
.
settle
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeySettlementConstants
;
import
com.clx.performance.service.settle.SettlementMqHandlerService
;
import
com.clx.performance.vo.mq.SettlementStatisticsMqParam
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @Author: 艾庆国
* @Description: 统计 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public
class
SettlementStatisticsListener
{
@Autowired
private
SettlementMqHandlerService
settlementMqHandlerService
;
@RabbitListener
(
queues
=
RabbitKeySettlementConstants
.
SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_QUEUE
)
public
void
process
(
Message
message
)
{
try
{
log
.
info
(
"结算-统计, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
SettlementStatisticsMqParam
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"结算-统计 失败"
,
e
);
}
}
private
void
process
(
SettlementStatisticsMqParam
mq
){
settlementMqHandlerService
.
settlementStatistics
(
mq
);
}
}
performance-web/src/main/java/com/clx/performance/model/OrderChild.java
浏览文件 @
4ffcb910
...
...
@@ -93,7 +93,7 @@ public class OrderChild implements HasKey<Integer> {
private
Integer
settlementAccountPeriod
;
//结算账期 1拉运完成结 2月结
private
Integer
settlementWay
;
//结算方式 1装车净重
private
Integer
settlementWay
;
//结算方式 1装车净重
2卸车净重 3卸车净重(减货损)
private
Integer
invoicingCompanyId
;
//开票公司id
private
String
invoicingCompanyShorterName
;
//开票公司简称
private
String
invoicingCompanyGroupCode
;
//开票公司统一社会信用代码
...
...
performance-web/src/main/java/com/clx/performance/model/settle/SettlementOwnerDetail.java
浏览文件 @
4ffcb910
...
...
@@ -60,6 +60,7 @@ public class SettlementOwnerDetail implements HasKey<Integer> {
private
String
invoicingCompanyShorterName
;
//开票公司简称
private
String
invoicingCompanyGroupCode
;
//开票公司统一社会信用代码
private
Integer
reportFlag
;
//是否上报 0-否;1-是
private
Integer
invoiceChannel
;
//开票渠道:1无车承运
private
Integer
status
;
//状态
private
LocalDateTime
createTime
;
//创建时间
private
LocalDateTime
modifiedTime
;
//修改时间
...
...
performance-web/src/main/java/com/clx/performance/service/broker/OrderChildBrokerService.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
service
.
broker
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
public
interface
OrderChildBrokerService
{
void
orderChildSync
(
OrderChild
orderChild
,
OrderGoods
orderGoods
,
SettlementOwnerDetail
settlementOwnerDetail
,
SettlementDriverDetail
settlementDriverDetail
);
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
浏览文件 @
4ffcb910
...
...
@@ -6,6 +6,7 @@ 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.QuotationEnum
;
import
com.clx.order.enums.VehicleUsageEnum
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.vo.feign.FeignAddressVO
;
...
...
@@ -459,10 +460,14 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild
.
setInvoicingCompanyGroupCode
(
orderInfo
.
getInvoicingCompanyGroupCode
());
orderChild
.
setReportFlag
(
orderInfo
.
getReportFlag
());
// 平台服务费
// 平台服务费 (订单运费报价为“未税”订单结算方式为“卸车净重(减货损))
if
(
Objects
.
equals
(
orderGoods
.
getPlatformFreightQuotationTaxType
(),
QuotationEnum
.
PlatformFreightQuotationTaxType
.
NO
.
getCode
())
&&
Objects
.
equals
(
orderChild
.
getSettlementWay
(),
SettlementWayEnum
.
WayType
.
UNLOAD_LOSS
.
getCode
()))
{
orderChild
.
setPlatformServiceFeeRate
(
orderGoods
.
getPlatformServiceFeeRate
());
orderChild
.
setPlatformServiceFee
(
orderGoods
.
getDeposit
());
orderChild
.
setDeposit
(
orderGoods
.
getDeposit
());
}
// 更新货单数据
updateOrderGoodsAmount
(
orderGoods
,
orderChild
);
...
...
@@ -1543,7 +1548,7 @@ public class OrderChildServiceImpl implements OrderChildService {
Integer
settlementDriverDetailId
=
settlementDriverDetailService
.
saveSettlementDetail
(
orderChild
);
Integer
settlementOwnerDetailId
=
settlementOwnerDetailService
.
saveSettlementDetail
(
orderChild
,
orderGoods
);
log
.
info
(
"生成计费单 {} "
,
orderChild
.
getChildNo
());
settlementMqService
.
settlementDetailAdd
(
settlementDriverDetailId
,
settlementOwnerDetailId
);
}
...
...
performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerServiceImpl.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
service
.
impl
.
broker
;
import
com.clx.order.feign.AddressFeign
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.vo.feign.FeignAddressVO
;
import
com.clx.order.vo.pc.carrier.InvoicingCompanyVO
;
import
com.clx.performance.dao.OrderChildImageDao
;
import
com.clx.performance.enums.PowerTypeEnum
;
import
com.clx.performance.extranal.broker.BrokerService
;
import
com.clx.performance.extranal.order.InvoicingCompanyService
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderChildImage
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.service.broker.OrderChildBrokerService
;
import
com.clx.performance.vo.pc.broker.*
;
import
com.clx.user.feign.DocumentFeign
;
import
com.clx.user.feign.DriverFeign
;
import
com.clx.user.feign.OwnerFeign
;
import
com.clx.user.feign.TruckFeign
;
import
com.clx.user.vo.feign.*
;
import
com.msl.common.utils.DateUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
@Slf4j
@Service
public
class
OrderChildBrokerServiceImpl
implements
OrderChildBrokerService
{
@Autowired
private
BrokerService
brokerService
;
@Autowired
private
OwnerFeign
ownerFeign
;
@Autowired
private
OrderFeign
orderFeign
;
@Autowired
private
AddressFeign
addressFeign
;
@Autowired
private
DriverFeign
driverFeign
;
@Autowired
private
DocumentFeign
documentFeign
;
@Autowired
private
TruckFeign
truckFeign
;
@Autowired
private
OrderChildImageDao
orderChildImageDao
;
@Autowired
private
InvoicingCompanyService
invoicingCompanyService
;
@Override
public
void
orderChildSync
(
OrderChild
orderChild
,
OrderGoods
orderGoods
,
SettlementOwnerDetail
settlementOwnerDetail
,
SettlementDriverDetail
settlementDriverDetail
)
{
String
host
=
documentFeign
.
getHost
().
getData
();
FeignAddressVO
data
=
addressFeign
.
getSendAndReceiveAddress
(
orderChild
.
getSendAddressId
(),
orderChild
.
getReceiveAddressId
()).
getData
();
FeignAddressVO
.
Address
receiveAddress
=
data
.
getReceiveAddress
();
FeignAddressVO
.
Address
sendAddress
=
data
.
getSendAddress
();
SyncOrderChildVO
syncOrderChildVO
=
driverFeign
.
getSyncOrderChild
(
orderChild
.
getDriverUserNo
(),
orderChild
.
getTruckOwnUserNo
()).
getData
();
DriverInfoFeignVo
truckOwnerInfo
=
syncOrderChildVO
.
getTruckOwnerInfo
();
DriverInfoFeignVo
diverInfo
=
syncOrderChildVO
.
getDiverInfo
();
BankCardVO
driverBankCard
=
syncOrderChildVO
.
getDriverBankCard
();
UserIdCardVO
driverUserIdCardVO
=
syncOrderChildVO
.
getDriverUserIdCardVO
();
BankCardVO
truckOwnerBankCard
=
syncOrderChildVO
.
getTruckOwnerBankCard
();
UserIdCardVO
truckOwnerUserIdCardVO
=
syncOrderChildVO
.
getTruckOwnerUserIdCardVO
();
DriverLicenceFeignVO
driverLicenceFeignVO
=
syncOrderChildVO
.
getDriverLicenceFeignVO
();
TruckInfoFeignVo
truckInfoFeignVo
=
truckFeign
.
getTruckInfoWithTransport
(
orderChild
.
getTruckId
()).
getData
();
InvoicingCompanyVO
invoicingCompanyByGroupCode
=
invoicingCompanyService
.
getInvoicingCompanyByGroupCode
(
orderChild
.
getInvoicingCompanyGroupCode
());
// 参数组装
TransportParam
transportParam
=
new
TransportParam
();
transportParam
.
setTransportPlatformCode
(
invoicingCompanyByGroupCode
.
getNetworkCargoCompanyCode
());
transportParam
.
setOrderCode
(
orderChild
.
getChildNo
());
transportParam
.
setOwnerMobile
(
truckOwnerInfo
.
getMobile
());
// 货单
OpenOrderDTO
orderInfo
=
new
OpenOrderDTO
();
orderInfo
.
setSourceOrderNo
(
orderChild
.
getOrderGoodsNo
());
orderInfo
.
setPublishTime
(
DateUtils
.
formatDateTime
(
orderGoods
.
getPendingOrderTime
()).
get
());
orderInfo
.
setExtractTime
(
DateUtils
.
formatDateTime
(
orderGoods
.
getLastLoadTime
()).
get
());
orderInfo
.
setArriveTime
(
DateUtils
.
formatDateTime
(
orderGoods
.
getLastArriveSendTime
()).
get
());
orderInfo
.
setGoodsAmount
(
orderGoods
.
getExtractWeight
());
orderInfo
.
setGoodsName
(
orderGoods
.
getGoodsName
());
orderInfo
.
setTransPrice
(
Integer
.
valueOf
(
orderChild
.
getFreightPrice
().
toString
()));
orderInfo
.
setGoodsPrice
(
Integer
.
valueOf
(
orderChild
.
getOrderFreightPrice
().
toString
()));
// orderInfo.setSendCompany();
orderInfo
.
setSendAddress
(
sendAddress
.
getAddress
());
orderInfo
.
setSendName
(
sendAddress
.
getContact
());
// orderInfo.setReceiveCompany();
orderInfo
.
setReceiveAddress
(
receiveAddress
.
getAddress
());
orderInfo
.
setReceiveName
(
receiveAddress
.
getContact
());
orderInfo
.
setSendProvince
(
sendAddress
.
getProvince
());
orderInfo
.
setSendCity
(
sendAddress
.
getCity
());
orderInfo
.
setSendCounty
(
sendAddress
.
getCounty
());
orderInfo
.
setSendTown
(
sendAddress
.
getTown
());
orderInfo
.
setSendMobile
(
sendAddress
.
getContactPhone
());
orderInfo
.
setLoadLongitude
(
sendAddress
.
getLongitude
().
toString
());
orderInfo
.
setLoadLatitude
(
sendAddress
.
getLatitude
().
toString
());
orderInfo
.
setReceiveProvince
(
receiveAddress
.
getProvince
());
orderInfo
.
setReceiveCity
(
receiveAddress
.
getCity
());
orderInfo
.
setReceiveCounty
(
receiveAddress
.
getCounty
());
orderInfo
.
setReceiveTown
(
receiveAddress
.
getTown
());
orderInfo
.
setReceiveMobile
(
receiveAddress
.
getContactPhone
());
orderInfo
.
setUnloadLongitude
(
receiveAddress
.
getLongitude
().
toString
());
orderInfo
.
setUnloadLatitude
(
receiveAddress
.
getLatitude
().
toString
());
// 图片
List
<
OpenOrderChildImageDTO
>
imageList
=
new
ArrayList
<>();
List
<
OrderChildImage
>
orderChildImages
=
orderChildImageDao
.
listLoadAndUnload
(
orderChild
.
getChildNo
()).
get
();
for
(
OrderChildImage
image
:
orderChildImages
)
{
if
(
image
.
getType
().
equals
(
OrderChildImage
.
Type
.
LOAD
.
getCode
()))
{
imageList
.
add
(
new
OpenOrderChildImageDTO
(
2
,
host
+
image
.
getImage
()));
}
else
if
(
image
.
getType
().
equals
(
OrderChildImage
.
Type
.
UNLOAD
.
getCode
()))
{
imageList
.
add
(
new
OpenOrderChildImageDTO
(
21
,
host
+
image
.
getImage
()));
}
}
// 司机
OpenOrderChildDriverDTO
driverInfo
=
new
OpenOrderChildDriverDTO
();
driverInfo
.
setMobile
(
diverInfo
.
getMobile
());
driverInfo
.
setName
(
diverInfo
.
getName
());
driverInfo
.
setSex
(
driverUserIdCardVO
.
getSex
());
driverInfo
.
setCardNo
(
driverUserIdCardVO
.
getCardNo
());
driverInfo
.
setIdCardAddress
(
driverUserIdCardVO
.
getAddress
());
driverInfo
.
setCardStartTime
(
driverUserIdCardVO
.
getCardStartTime
());
driverInfo
.
setCardEndTime
(
driverUserIdCardVO
.
getCardEndTime
());
driverInfo
.
setCardLongTerm
(
driverUserIdCardVO
.
getCardLongTerm
());
driverInfo
.
setCardFrontImg
(
host
+
driverUserIdCardVO
.
getCardFaceImg
());
driverInfo
.
setCardBackImg
(
host
+
driverUserIdCardVO
.
getCardBackImg
());
driverInfo
.
setFaceCardImg
(
host
+
driverUserIdCardVO
.
getCardInHandImg
());
driverInfo
.
setLicenceNo
(
driverLicenceFeignVO
.
getLicenceNo
());
driverInfo
.
setLicenceIssueOrganization
(
driverLicenceFeignVO
.
getLicenceIssueOrganization
());
driverInfo
.
setLicenseTime
(
DateUtils
.
formatDateTime
(
driverLicenceFeignVO
.
getLicenceTime
()).
get
());
driverInfo
.
setLicenceClass
(
driverLicenceFeignVO
.
getLicenceClass
());
driverInfo
.
setLicenceImg
(
host
+
driverLicenceFeignVO
.
getLicenceImg
());
driverInfo
.
setLicenceBackImg
(
host
+
driverLicenceFeignVO
.
getLicenceBackImg
());
driverInfo
.
setLicenceStartTime
(
DateUtils
.
formatDateTime
(
driverLicenceFeignVO
.
getLicenceStartTime
()).
get
());
driverInfo
.
setLicenceEndTime
(
DateUtils
.
formatDateTime
(
driverLicenceFeignVO
.
getLicenceEndTime
()).
get
());
// driverInfo.setTransportLicenceImg(truckInfoFeignVo.getTransportLicenceImg());
driverInfo
.
setOccupationalLicenceNo
(
driverLicenceFeignVO
.
getOccupationalLicenceNo
());
driverInfo
.
setOccupationalLicenceImg
(
host
+
driverLicenceFeignVO
.
getOccupationalLicenceImg
());
driverInfo
.
setOccupationalEndTime
(
DateUtils
.
formatDateTime
(
driverLicenceFeignVO
.
getOccupationalLicenceStartTime
()).
get
());
driverInfo
.
setOccupationalEndTime
(
DateUtils
.
formatDateTime
(
driverLicenceFeignVO
.
getOccupationalLicenceEndTime
()).
get
());
driverInfo
.
setBankCardNo
(
driverBankCard
.
getCardNo
());
driverInfo
.
setBankMobile
(
driverBankCard
.
getMobile
());
driverInfo
.
setBankName
(
driverBankCard
.
getBank
());
// 车主
OpenOrderChildTruckOwnerDTO
ownerInfo
=
new
OpenOrderChildTruckOwnerDTO
();
ownerInfo
.
setMobile
(
truckOwnerInfo
.
getMobile
());
ownerInfo
.
setName
(
truckOwnerInfo
.
getName
());
ownerInfo
.
setSex
(
truckOwnerUserIdCardVO
.
getSex
());
ownerInfo
.
setCardNo
(
truckOwnerUserIdCardVO
.
getCardNo
());
ownerInfo
.
setIdCardAddress
(
truckOwnerUserIdCardVO
.
getAddress
());
ownerInfo
.
setCardStartTime
(
truckOwnerUserIdCardVO
.
getCardStartTime
());
ownerInfo
.
setCardEndTime
(
truckOwnerUserIdCardVO
.
getCardEndTime
());
ownerInfo
.
setCardLongTerm
(
truckOwnerUserIdCardVO
.
getCardLongTerm
());
ownerInfo
.
setCardFrontImg
(
host
+
truckOwnerUserIdCardVO
.
getCardFaceImg
());
ownerInfo
.
setCardBackImg
(
host
+
truckOwnerUserIdCardVO
.
getCardBackImg
());
ownerInfo
.
setFaceCardImg
(
host
+
truckOwnerUserIdCardVO
.
getCardInHandImg
());
ownerInfo
.
setBankCardNo
(
truckOwnerBankCard
.
getCardNo
());
ownerInfo
.
setBankMobile
(
truckOwnerBankCard
.
getMobile
());
ownerInfo
.
setBankName
(
truckOwnerBankCard
.
getBank
());
// 车辆
OpenOrderChildTruckDTO
truckInfo
=
new
OpenOrderChildTruckDTO
();
truckInfo
.
setTruckNo
(
orderChild
.
getTruckNo
());
truckInfo
.
setTruckNoColor
(
truckInfoFeignVo
.
getTruckNoColor
());
// truckInfo.setTruckNoColorCode();
truckInfo
.
setModel
(
truckInfoFeignVo
.
getModel
());
truckInfo
.
setLoad
(
truckInfoFeignVo
.
getLoad
());
truckInfo
.
setGrossMass
(
truckInfoFeignVo
.
getGrossMass
().
intValue
());
truckInfo
.
setIdentifyCode
(
truckInfoFeignVo
.
getIdentifyCode
());
truckInfo
.
setUseNature
(
truckInfoFeignVo
.
getUseNature
());
truckInfo
.
setRegisterDate
(
DateUtils
.
formatDateTime
(
truckInfoFeignVo
.
getRegisterDate
()).
get
());
truckInfo
.
setLicenceIssueOrganization
(
truckInfoFeignVo
.
getLicenceIssueOrganization
());
truckInfo
.
setLicenceIssueDate
(
DateUtils
.
formatDateTime
(
truckInfoFeignVo
.
getLicenceIssueDate
()).
get
());
truckInfo
.
setBusinessName
(
truckInfoFeignVo
.
getBusinessName
());
truckInfo
.
setRoadTransportPermitNumber
(
truckInfoFeignVo
.
getRoadTransportPermitNumber
());
truckInfo
.
setTruckNo2
(
truckInfoFeignVo
.
getTruckNo2
());
truckInfo
.
setRoadTransportCertificateNo
(
truckInfoFeignVo
.
getRoadTransportCertificateNo
());
truckInfo
.
setLicenceImgMain
(
host
+
truckInfoFeignVo
.
getLicenceImgMain
());
truckInfo
.
setLicenceImgSecond
(
host
+
truckInfoFeignVo
.
getLicenceImgSecond
());
truckInfo
.
setLicenceImgSecondBack
(
host
+
truckInfoFeignVo
.
getLicenceImgSecondBack
());
truckInfo
.
setTransportLicenceImg
(
host
+
truckInfoFeignVo
.
getTransportLicenceImg
());
truckInfo
.
setPowerType
(
StringUtils
.
isBlank
(
truckInfoFeignVo
.
getPowerType
())
?
PowerTypeEnum
.
Type
.
OTHER
.
getCode
()
:
PowerTypeEnum
.
Type
.
getCodeByName
(
truckInfoFeignVo
.
getPowerType
()));
// 运单
OpenOrderChildDTO
orderChildInfo
=
new
OpenOrderChildDTO
();
orderChildInfo
.
setSourceChildNo
(
orderChild
.
getChildNo
());
orderChildInfo
.
setSourceGoodsNo
(
orderChild
.
getOrderGoodsNo
());
orderChildInfo
.
setSourceOrderNo
(
orderChild
.
getOrderNo
());
orderChildInfo
.
setSourceSettlementNo
(
settlementOwnerDetail
.
getSettlementNo
());
orderChildInfo
.
setFreightPrice
(
orderChild
.
getFreightPrice
().
intValue
());
orderChildInfo
.
setFreight
(
orderChild
.
getFreight
().
intValue
());
orderChildInfo
.
setDriverFreight
(
orderChild
.
getFreight
().
intValue
());
orderChildInfo
.
setDriverFreightPrice
(
settlementOwnerDetail
.
getFreightPrice
().
intValue
());
orderChildInfo
.
setInvoiceFreight
(
settlementOwnerDetail
.
getInvoiceFreight
().
intValue
());
orderChildInfo
.
setLossFee
(
settlementOwnerDetail
.
getLossFreight
().
intValue
());
orderChildInfo
.
setLossFeePrice
(
settlementOwnerDetail
.
getLossPrice
().
intValue
());
orderChildInfo
.
setSendTare
(
orderChild
.
getLoadTare
());
orderChildInfo
.
setSendRough
(
orderChild
.
getLoadRough
());
orderChildInfo
.
setSendNet
(
orderChild
.
getLoadNet
());
orderChildInfo
.
setPayFinishedTime
(
DateUtils
.
formatDateTime
(
orderChild
.
getPayTime
()).
get
());
orderChildInfo
.
setLoadTime
(
DateUtils
.
formatDateTime
(
orderChild
.
getLoadTime
()).
get
());
orderChildInfo
.
setUnloadTime
(
DateUtils
.
formatDateTime
(
orderChild
.
getUnloadTime
()).
get
());
orderChildInfo
.
setPayFinishedTime
(
DateUtils
.
formatDateTime
(
orderChild
.
getConfirmTime
()).
get
());
orderChildInfo
.
setReceiveTare
(
orderChild
.
getUnloadTare
());
orderChildInfo
.
setReceiveRough
(
orderChild
.
getUnloadRough
());
orderChildInfo
.
setReceiveNet
(
orderChild
.
getUnloadNet
());
transportParam
.
setOrderInfo
(
orderInfo
);
transportParam
.
setImageList
(
imageList
);
transportParam
.
setDriverInfo
(
driverInfo
);
transportParam
.
setOwnerInfo
(
ownerInfo
);
transportParam
.
setTruckInfo
(
truckInfo
);
transportParam
.
setOrderChildInfo
(
orderChildInfo
);
brokerService
.
orderChildSync
(
transportParam
);
}
}
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementCommonServiceImpl.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
service
.
impl
.
settle
;
import
com.clx.performance.enums.settle.SettlementWayEnum
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.service.settle.SettlementCommonService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.Objects
;
@Slf4j
@Service
public
class
SettlementCommonServiceImpl
implements
SettlementCommonService
{
/**
* 开票服务费金额
*/
@Override
public
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
);
}
/**
* 开票金额
*/
@Override
public
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
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
());
}
}
@Override
public
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
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/impl/settle/SettlementDriverDetailServiceImpl.java
浏览文件 @
4ffcb910
...
...
@@ -108,13 +108,6 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
}
/**
* 开票金额
*/
private
BigDecimal
invoiceFreightCalc
(
BigDecimal
freight
,
BigDecimal
lossFreight
){
return
freight
.
subtract
(
lossFreight
);
}
/**
* 结算金额
*/
...
...
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqHandlerServiceImpl.java
浏览文件 @
4ffcb910
...
...
@@ -5,17 +5,20 @@ import com.clx.order.vo.feign.FeignOrderInfoVO;
import
com.clx.performance.config.MslPaymentConfig
;
import
com.clx.performance.constant.RedissonConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.settle.*
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.OrderChildLogEnum
;
import
com.clx.performance.enums.PayRemarkEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.dto.InvoicingStatusNotifyDTO
;
import
com.clx.performance.dto.PayStatusNotifyDTO
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.enums.settle.*
;
import
com.clx.performance.extranal.broker.BrokerService
;
import
com.clx.performance.extranal.user.DriverService
;
import
com.clx.performance.extranal.user.OrderService
;
import
com.clx.performance.extranal.user.OwnerInfoService
;
import
com.clx.performance.listener.OrderChildSyncTransportListener
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderChildSyncTransportInvoiceRecord
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.model.settle.*
;
import
com.clx.performance.param.pc.payment.PayParam
;
...
...
@@ -23,14 +26,12 @@ 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
;
import
com.clx.performance.service.settle.OrderChildSyncTransportRecordService
;
import
com.clx.performance.service.settle.SettlementLogService
;
import
com.clx.performance.service.settle.SettlementMqHandlerService
;
import
com.clx.performance.service.settle.SettlementService
;
import
com.clx.performance.service.settle.*
;
import
com.clx.performance.utils.LocalDateTimeUtils
;
import
com.clx.performance.utils.RedisUtil
;
import
com.clx.performance.vo.mq.SettlementDetailAddMqParam
;
import
com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam
;
import
com.clx.performance.utils.spring.ApplicationContextUtils
;
import
com.clx.performance.vo.mq.*
;
import
com.clx.performance.vo.pc.broker.TransportVO
;
import
com.clx.user.vo.feign.DriverInfoFeignVo
;
import
com.clx.user.vo.feign.OwnerInfoFeignVO
;
import
com.msl.common.enums.ResultCodeEnum
;
...
...
@@ -44,6 +45,7 @@ import org.springframework.transaction.annotation.Transactional;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.UUID
;
...
...
@@ -92,6 +94,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Autowired
private
SettlementPlatformServiceFeeDao
settlementPlatformServiceFeeDao
;
@Autowired
private
OrderChildSyncTransportInvoiceRecordDao
orderChildSyncTransportInvoiceRecordDao
;
@Autowired
private
OrderChildLogService
orderChildLogService
;
...
...
@@ -104,17 +109,31 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Autowired
private
OrderService
orderService
;
@Autowired
private
OrderChildSyncTransportListener
orderChildSyncTransportListener
;
@Autowired
private
BrokerService
brokerService
;
@Autowired
private
OrderChildSyncTransportRecordService
orderChildSyncTransportRecordService
;
@Autowired
private
SettlementMqService
settlementMqService
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
settlementDetailInvoiceTypeSync
(
SettlementDetailInvoiceTypeSyncMqParam
mq
)
{
public
void
settlementStatistics
(
SettlementStatisticsMqParam
mq
)
{
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
mq
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
mq
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementDriverDetail
settlementDriverDetail
=
settlementDriverDetailDao
.
getByChildNo
(
mq
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
log
.
info
(
"当前车主计费信息{},司机计费信息:{}"
,
JSONUtil
.
parse
(
settlementOwnerDetail
),
JSONUtil
.
parse
(
settlementDriverDetail
));
if
(
settlementOwnerDetail
.
getInvoiceFreight
()
==
null
)
{
log
.
info
(
"当前车主计费信息开票金额为空,需要重新处理计算开票金额"
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
mq
.
getChildNo
()).
get
();
settlementOwnerDetail
.
setInvoiceFreight
(
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
settlementOwnerDetail
.
setInvoiceFreight
(
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
orderGoods
.
getInvoiceServiceFeeRate
(),
settlementOwnerDetail
));
SettlementOwnerDetail
update
=
new
SettlementOwnerDetail
();
update
.
setId
(
settlementOwnerDetail
.
getId
());
update
.
setInvoiceFreight
(
settlementOwnerDetail
.
getInvoiceFreight
());
...
...
@@ -125,7 +144,6 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
OwnerInfoFeignVO
ownerInfo
=
ownerInfoService
.
getOwnerInfo
(
settlementOwnerDetail
.
getOwnerUserNo
());
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
settlementOwnerDetail
.
getOrderGoodsNo
()).
get
();
if
(
Objects
.
equals
(
orderGoods
.
getSettlementAccountPeriod
(),
2
)){
//月结
log
.
info
(
"月结初始化货主结算单"
);
LocalDateTime
settlementPeriodTime
=
LocalDateTimeUtils
.
getBeginMonthDate
();
...
...
@@ -176,6 +194,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
//生成车主结算单
settlementDriverSave
(
settlementDriverDetail
,
settlementNo
);
//车主结算单自动支付
log
.
info
(
" 运单号 {}, 是否是普通单 {} "
,
settlementDriverDetail
.
getChildNo
(),
settlementDriverDetail
.
getInvoiceType
());
if
(!
settlementDriverDetail
.
getInvoiceType
().
equals
(
SettlementOwnerEnum
.
InvoiceType
.
ONLINE
.
getCode
()))
{
paySettlementDriver
(
settlementDriverDetail
);
}
else
{
...
...
@@ -194,6 +213,108 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementDriverDetailDao
.
updateSettlementNo
(
settlementDriverDetail
);
}
@Override
public
void
settle
(
SettlementSettleMqParam
mq
)
{
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
mq
.
getChildNo
()).
get
();
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
orderChild
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementDriverDetail
settlementDriverDetail
=
settlementDriverDetailDao
.
getByChildNo
(
orderChild
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
orderChildSyncTransportListener
.
extracted
(
orderChild
,
settlementOwnerDetail
,
settlementDriverDetail
,
mq
.
getInvoiceType
());
}
@Override
public
void
invoiceTypeSync
(
SettlementInvoiceTypeSyncMqParam
mq
)
{
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
mq
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
orderChild
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
if
(!
Objects
.
equals
(
settlementOwnerDetail
.
getInvoiceChannel
(),
SettlementOwnerDetailEnum
.
InvoiceChannel
.
BROKER
.
getCode
())){
return
;
}
try
{
// 获取状态
TransportVO
result
=
brokerService
.
getOrderChildStatus
(
mq
.
getChildNo
());
if
(
result
==
null
){
log
.
info
(
"运单号 {} 未找到运单信息"
,
mq
.
getChildNo
());
return
;
}
Integer
invoiceType
;
if
(
Objects
.
equals
(
result
.
getRiskStatus
(),
1
)
||
Objects
.
equals
(
result
.
getRiskStatus
(),
2
))
{
invoiceType
=
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
();
}
else
if
(
Objects
.
equals
(
result
.
getSyncStatus
(),
2
))
{
invoiceType
=
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
();
}
else
if
(
Objects
.
equals
(
result
.
getSyncStatus
(),
0
))
{
OrderChildSyncTransportInvoiceRecord
entity
=
new
OrderChildSyncTransportInvoiceRecord
();
entity
.
setChildNo
(
orderChild
.
getChildNo
());
entity
.
setType
(
TransportSyncTypeEnum
.
Type
.
EXCEPTION
.
getCode
());
entity
.
setRemark
(
"处理中"
);
orderChildSyncTransportInvoiceRecordDao
.
saveEntity
(
entity
);
return
;
}
else
{
invoiceType
=
SettlementOwnerEnum
.
InvoiceType
.
ONLINE
.
getCode
();
}
// 发送mq (结算)
settlementMqService
.
settle
(
orderChild
.
getChildNo
(),
invoiceType
);
}
catch
(
Exception
e
){
OrderChildSyncTransportInvoiceRecord
entity
=
new
OrderChildSyncTransportInvoiceRecord
();
entity
.
setChildNo
(
orderChild
.
getChildNo
());
entity
.
setType
(
TransportSyncTypeEnum
.
Type
.
EXCEPTION
.
getCode
());
entity
.
setRemark
(
"接口调用失败"
);
orderChildSyncTransportInvoiceRecordDao
.
saveEntity
(
entity
);
}
}
@Override
public
void
invoiceStatusSync
(
SettlementInvoiceStatusSyncMqParam
mq
)
{
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
mq
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
orderChild
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
if
(!
Objects
.
equals
(
settlementOwnerDetail
.
getInvoiceChannel
(),
SettlementOwnerDetailEnum
.
InvoiceChannel
.
BROKER
.
getCode
())){
return
;
}
// 获取状态
TransportVO
result
=
brokerService
.
getOrderChildStatus
(
mq
.
getChildNo
());
if
(
result
==
null
){
log
.
info
(
"运单号 {} 未找到运单信息"
,
mq
.
getChildNo
());
return
;
}
if
(
Objects
.
equals
(
result
.
getInvoiceStatus
(),
1
)
)
{
InvoicingStatusNotifyDTO
invoicingStatusNotifyDTO
=
new
InvoicingStatusNotifyDTO
();
invoicingStatusNotifyDTO
.
setChildNoList
(
Arrays
.
asList
(
mq
.
getChildNo
()));
ApplicationContextUtils
.
getBean
(
SettlementOwnerService
.
class
)
.
invoicingStatusNotify
(
invoicingStatusNotifyDTO
);
}
}
@Override
public
void
payStatusSync
(
SettlementPayStatusSyncMqParam
mq
)
{
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
mq
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
orderChild
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
if
(!
Objects
.
equals
(
settlementOwnerDetail
.
getInvoiceChannel
(),
SettlementOwnerDetailEnum
.
InvoiceChannel
.
BROKER
.
getCode
())){
return
;
}
// 获取状态
TransportVO
result
=
brokerService
.
getOrderChildStatus
(
mq
.
getChildNo
());
if
(
result
==
null
){
log
.
info
(
"运单号 {} 未找到运单信息"
,
mq
.
getChildNo
());
return
;
}
if
(
Objects
.
equals
(
result
.
getSettleStatus
(),
1
)
)
{
PayStatusNotifyDTO
payStatusNotifyDTO
=
new
PayStatusNotifyDTO
();
payStatusNotifyDTO
.
setChildNo
(
mq
.
getChildNo
());
orderChildSyncTransportRecordService
.
updateStatus
(
payStatusNotifyDTO
);
}
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
settlementDetailAdd
(
SettlementDetailAddMqParam
mq
)
{
...
...
@@ -202,7 +323,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
settlementDriverDetail
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementPlatformServiceFee
settlementPlatformServiceFee
=
new
SettlementPlatformServiceFee
();
SettlementPlatformServiceFee
settlementPlatformServiceFee
=
null
;
if
(
settlementDriverDetail
.
getPlatformServiceFee
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
settlementPlatformServiceFee
=
new
SettlementPlatformServiceFee
();
settlementPlatformServiceFee
.
setChildNo
(
settlementDriverDetail
.
getChildNo
());
settlementPlatformServiceFee
.
setDriverUserNo
(
settlementDriverDetail
.
getDriverUserNo
());
settlementPlatformServiceFee
.
setDriverName
(
settlementDriverDetail
.
getDriverName
());
...
...
@@ -218,10 +341,13 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
// 平台服务费
orderChild
.
setPlatformServiceFee
(
settlementDriverDetail
.
getPlatformServiceFee
());
}
orderChildDao
.
updatePlatformServiceFee
(
orderChild
);
if
(
settlementPlatformServiceFee
!=
null
)
{
settlementPlatformServiceFeeDao
.
saveEntity
(
settlementPlatformServiceFee
);
}
log
.
info
(
"更新网络标识 {} "
,
orderChild
.
getChildNo
());
// 更新网络标识
settlementService
.
updateSettlementDetailInvoiceType
(
settlementOwnerDetail
.
getChildNo
(),
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
());
}
...
...
@@ -261,6 +387,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementDriverDao
.
saveEntity
(
settlementDriver
);
}
@Override
public
void
settlementDriverNotify
(
String
childNo
,
Integer
payType
,
String
payErrorMsg
){
//运单状态修改为完成
...
...
@@ -287,6 +414,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
/**
* 车主结算单自动支付
*/
@Override
public
String
paySettlementDriver
(
SettlementDriverDetail
detail
){
String
uuid
=
UUID
.
randomUUID
().
toString
();
String
key
=
RedissonConstants
.
SETTLEMENT_OWNER_BATCH_PAY_ID_LOCK
+
detail
.
getId
();
...
...
@@ -462,11 +590,25 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
return
uniqueOrderNumService
.
getUniqueOrderNum
(
com
.
msl
.
common
.
utils
.
LocalDateTimeUtils
.
convertLocalDateTimeToString
(
LocalDateTime
.
now
(),
com
.
msl
.
common
.
utils
.
LocalDateTimeUtils
.
DATE_DAY
));
}
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
());
}
}
...
...
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqServiceImpl.java
浏览文件 @
4ffcb910
...
...
@@ -5,8 +5,7 @@ import com.clx.performance.common.MqDelay;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeySettlementConstants
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.clx.performance.vo.mq.SettlementDetailAddMqParam
;
import
com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam
;
import
com.clx.performance.vo.mq.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
...
...
@@ -27,24 +26,83 @@ public class SettlementMqServiceImpl implements SettlementMqService {
mq
.
setSettlementDriverDetailId
(
settlementDriverDetailId
);
mq
.
setSettlementOwnerDetailId
(
settlementOwnerDetailId
);
MqDelay
<
MqWrapper
<
SettlementDetailAddMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_DETAIL_ADD_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
MqDelay
<
MqWrapper
<
SettlementDetailAddMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_DETAIL_ADD_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
message
.
getMessageProperties
().
setExpiration
(
"5000"
);
rabbitTemplate
.
send
(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
rabbitTemplate
.
send
(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
@Override
public
void
invoiceTypeSync
(
String
childNo
,
Integer
invoiceType
)
{
public
void
settlementStatistics
(
String
childNo
,
Integer
invoiceType
)
{
Settlement
DetailInvoiceTypeSyncMqParam
mq
=
new
SettlementDetailInvoiceTypeSync
MqParam
();
Settlement
StatisticsMqParam
mq
=
new
SettlementStatistics
MqParam
();
mq
.
setChildNo
(
childNo
);
mq
.
setInvoiceType
(
invoiceType
);
log
.
info
(
"运单号 {} 开票标识 {} "
,
childNo
,
invoiceType
);
MqDelay
<
MqWrapper
<
SettlementStatisticsMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
message
.
getMessageProperties
().
setExpiration
(
"5000"
);
rabbitTemplate
.
send
(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
@Override
public
void
invoiceTypeSync
(
String
childNo
)
{
SettlementInvoiceTypeSyncMqParam
mq
=
new
SettlementInvoiceTypeSyncMqParam
();
mq
.
setChildNo
(
childNo
);
MqDelay
<
MqWrapper
<
SettlementInvoiceTypeSyncMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_TYPE_SYNC_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
message
.
getMessageProperties
().
setExpiration
(
"5000"
);
rabbitTemplate
.
send
(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
MqDelay
<
MqWrapper
<
SettlementDetailInvoiceTypeSyncMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
@Override
public
void
settle
(
String
childNo
,
Integer
invoiceType
)
{
SettlementSettleMqParam
mq
=
new
SettlementSettleMqParam
();
mq
.
setChildNo
(
childNo
);
mq
.
setInvoiceType
(
invoiceType
);
MqDelay
<
MqWrapper
<
SettlementSettleMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_SETTLE_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
message
.
getMessageProperties
().
setExpiration
(
"5000"
);
rabbitTemplate
.
send
(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
@Override
public
void
invoiceStatusSync
(
String
childNo
)
{
SettlementInvoiceStatusSyncMqParam
mq
=
new
SettlementInvoiceStatusSyncMqParam
();
mq
.
setChildNo
(
childNo
);
MqDelay
<
MqWrapper
<
SettlementInvoiceStatusSyncMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_INVOICE_STATUS_SYNC_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
message
.
getMessageProperties
().
setExpiration
(
"5000"
);
rabbitTemplate
.
send
(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
@Override
public
void
payStatusSync
(
String
childNo
)
{
SettlementPayStatusSyncMqParam
mq
=
new
SettlementPayStatusSyncMqParam
();
mq
.
setChildNo
(
childNo
);
MqDelay
<
MqWrapper
<
SettlementPayStatusSyncMqParam
>>
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_PAY_STATUS_SYNC_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
message
.
getMessageProperties
().
setExpiration
(
"5000"
);
rabbitTemplate
.
send
(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
rabbitTemplate
.
send
(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
}
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementOwnerDetailServiceImpl.java
浏览文件 @
4ffcb910
...
...
@@ -14,6 +14,7 @@ import com.clx.performance.model.settle.SettlementDriverDetail;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam
;
import
com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam
;
import
com.clx.performance.service.settle.SettlementCommonService
;
import
com.clx.performance.service.settle.SettlementOwnerDetailService
;
import
com.clx.performance.struct.settle.SettlementOwnerDetailStruct
;
import
com.clx.performance.utils.excel.ExcelData
;
...
...
@@ -48,6 +49,7 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
private
final
SettlementOwnerDetailStruct
settlementOwnerDetailStruct
;
private
final
OrderChildDao
orderChildDao
;
private
final
SettlementDriverDetailDao
settlementDriverDetailDao
;
private
final
SettlementCommonService
settlementCommonService
;
@Override
...
...
@@ -87,9 +89,18 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
}
// // 开票金额
// settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderGoods.getSettlementWay(),settlementOwnerDetail));
//
// 开票服务费
settlementOwnerDetail
.
setInvoiceServiceFeeRate
(
orderGoods
.
getInvoiceServiceFeeRate
()==
null
?
BigDecimal
.
ZERO
:
orderGoods
.
getInvoiceServiceFeeRate
());
// 开票服务费
settlementOwnerDetail
.
setInvoiceServiceFee
(
settlementCommonService
.
invoiceServiceFeeCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
// 开票金额
settlementOwnerDetail
.
setInvoiceFreight
(
settlementCommonService
.
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
orderGoods
.
getInvoiceServiceFeeRate
(),
settlementOwnerDetail
));
// // 结算金额
// settlementOwnerDetail.setSettlementFreight(settlementFreightCalc(orderGoods.getSettlementWay(),settlementOwnerDetail));
//
...
...
@@ -103,6 +114,8 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
settlementOwnerDetail
.
setInvoicingCompanyGroupCode
(
orderChild
.
getInvoicingCompanyGroupCode
());
settlementOwnerDetail
.
setReportFlag
(
orderChild
.
getReportFlag
());
settlementOwnerDetail
.
setInvoiceChannel
(
SettlementOwnerDetailEnum
.
InvoiceChannel
.
BROKER
.
getCode
());
settlementOwnerDetailDao
.
saveEntity
(
settlementOwnerDetail
);
return
settlementOwnerDetail
.
getId
();
}
...
...
@@ -141,18 +154,6 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
}
/**
* 开票金额
*/
private
BigDecimal
invoiceFreightCalc
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
){
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
LOAD
.
getCode
())){
//订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getLossFreight
());
}
else
{
//订单结算方式为“卸车净重”时,开票金额=实际净重*平台运费报价。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
());
}
}
/**
* 结算金额
*/
...
...
performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementServiceImpl.java
浏览文件 @
4ffcb910
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
;
...
...
@@ -27,6 +26,7 @@ import com.clx.performance.model.OwnerAccount;
import
com.clx.performance.model.OwnerRunningWaterRecord
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
com.clx.performance.service.settle.SettlementCommonService
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.clx.performance.service.settle.SettlementService
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -71,19 +71,18 @@ public class SettlementServiceImpl implements SettlementService {
private
InvoicingCompanyService
invoicingCompanyService
;
@Autowired
private
SettlementConfig
settlementConfig
;
@Autowired
private
SettlementCommonService
settlementCommonService
;
@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
(
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementDriverDetail
settlementDriverDetail
=
settlementDriverDetailDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
// 结算金额
settlementOwnerDetail
.
setSettlementFreight
(
settlementFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
log
.
info
(
"开始 更新网络标识 {} , {}"
,
orderChild
.
getChildNo
()
,
settlementDriverDetail
.
getSettlementFreight
().
compareTo
(
BigDecimal
.
ZERO
));
if
(
settlementDriverDetail
.
getSettlementFreight
().
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
settlementDriverDetail
.
setPrepayFreightFlag
(
SettlementDriverEnum
.
PrepayFreightFlag
.
NO_PAY
.
getCode
());
settlementOwnerDetail
.
setPrepayFreight
(
BigDecimal
.
ZERO
);
...
...
@@ -101,15 +100,15 @@ public class SettlementServiceImpl implements SettlementService {
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
());
//设置开票公司信息
settlementConfig
.
getOrdinaryInvoiceCompanyGroupCode
());
settlementOwnerDetail
.
setInvoicingCompanyId
(
invoiceCompany
.
getId
());
settlementOwnerDetail
.
setInvoicingCompanyShorterName
(
invoiceCompany
.
getCompanyShorterName
());
settlementOwnerDetail
.
setInvoicingCompanyGroupCode
(
invoiceCompany
.
getCompanyGroupCode
());
settlementOwnerDetail
.
setInvoiceServiceFeeRate
(
invoiceCompany
.
getServiceFeeRate
());
settlementDriverDetail
.
setInvoicingCompanyId
(
invoiceCompany
.
getId
());
settlementDriverDetail
.
setInvoicingCompanyShorterName
(
invoiceCompany
.
getCompanyShorterName
());
...
...
@@ -118,27 +117,30 @@ public class SettlementServiceImpl implements SettlementService {
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
.
setInvoiceServiceFee
(
settlementCommonService
.
invoiceServiceFeeCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
// 开票金额
settlementOwnerDetail
.
setInvoiceFreight
(
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
.
setInvoiceFreight
(
settlementCommonService
.
invoiceFreightCalc
(
orderChild
.
getSettlementWay
(),
orderGoods
.
getInvoiceServiceFeeRate
(),
settlementOwnerDetail
));
// 结算金额
settlementOwnerDetail
.
setSettlementFreight
(
settlementFreightCalc
(
orderChild
.
getSettlementWay
(),
settlementOwnerDetail
));
log
.
info
(
"当前货主结算信息{},车主结算信息:{}"
,
JSONUtil
.
parse
(
settlementOwnerDetail
),
JSONUtil
.
parse
(
settlementDriverDetail
));
settlementOwnerDetailDao
.
updateInvoiceType
(
settlementOwnerDetail
);
settlementDriverDetailDao
.
updateInvoiceTypeAndPrepayFreightFlag
(
settlementDriverDetail
);
//普通单解冻
applicationEventPublisher
.
publishEvent
(
new
OwnerLoanThawEvent
(
this
,
childNo
));
// 发送mq
通过开票标识
settlementMqService
.
invoiceTypeSync
(
childNo
,
invoiceType
);
// 发送mq
结算统计
settlementMqService
.
settlementStatistics
(
childNo
,
invoiceType
);
}
...
...
@@ -221,41 +223,6 @@ 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
,
BigDecimal
invoiceServiceFeeRate
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
LOAD
.
getCode
()))
{
//订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
.
subtract
(
settlementOwnerDetail
.
getLossFreight
());
}
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
());
}
}
/**
* 结算金额
*/
...
...
performance-web/src/main/java/com/clx/performance/service/settle/SettlementCommonService.java
0 → 100644
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
service
.
settle
;
import
com.clx.performance.model.settle.SettlementOwnerDetail
;
import
java.math.BigDecimal
;
public
interface
SettlementCommonService
{
BigDecimal
invoiceServiceFeeCalc
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
);
BigDecimal
invoiceFreightCalc
(
Integer
settlementWay
,
BigDecimal
invoiceServiceFeeRate
,
SettlementOwnerDetail
settlementOwnerDetail
);
BigDecimal
settlementFreightCalc
(
Integer
settlementWay
,
SettlementOwnerDetail
settlementOwnerDetail
);
}
performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqHandlerService.java
浏览文件 @
4ffcb910
package
com
.
clx
.
performance
.
service
.
settle
;
import
com.clx.performance.model.settle.SettlementDriverDetail
;
import
com.clx.performance.vo.mq.SettlementDetailAddMqParam
;
import
com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam
;
import
com.clx.performance.vo.mq.*
;
public
interface
SettlementMqHandlerService
{
void
settlementDetailAdd
(
SettlementDetailAddMqParam
mq
);
void
settlementDetailInvoiceTypeSync
(
SettlementDetailInvoiceTypeSyncMqParam
mq
);
void
settlementStatistics
(
SettlementStatisticsMqParam
mq
);
void
settle
(
SettlementSettleMqParam
mq
);
void
invoiceTypeSync
(
SettlementInvoiceTypeSyncMqParam
mq
);
void
invoiceStatusSync
(
SettlementInvoiceStatusSyncMqParam
mq
);
void
payStatusSync
(
SettlementPayStatusSyncMqParam
mq
);
void
settlementDriverNotify
(
String
childNo
,
Integer
payType
,
String
payErrorMsg
);
...
...
performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqService.java
浏览文件 @
4ffcb910
...
...
@@ -4,6 +4,13 @@ public interface SettlementMqService {
void
settlementDetailAdd
(
Integer
settlementOwnerDetailId
,
Integer
settlementDriverDetailId
);
void
invoiceTypeSync
(
String
childNo
,
Integer
invoiceType
);
void
settlementStatistics
(
String
childNo
,
Integer
invoiceType
);
void
invoiceTypeSync
(
String
childNo
);
void
settle
(
String
childNo
,
Integer
invoiceType
);
void
invoiceStatusSync
(
String
childNo
);
void
payStatusSync
(
String
childNo
);
}
performance-web/src/main/java/com/clx/performance/sqlProvider/OrderGoodsSqlProvider.java
浏览文件 @
4ffcb910
...
...
@@ -168,8 +168,8 @@ public class OrderGoodsSqlProvider {
.
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
(
"','"
)
.
append
(
o
.
getPlatformFreightQuotationTaxType
()).
append
(
"',
'"
).
append
(
o
.
getPlatformServiceFeeRate
()).
append
(
"','"
).
append
(
o
.
getDeposit
()).
append
(
"','
"
).
append
(
o
.
getInvoiceServiceFeeRate
())
.
append
(
"
'
)"
);
.
append
(
o
.
getPlatformFreightQuotationTaxType
()).
append
(
"',
"
).
append
(
o
.
getPlatformServiceFeeRate
()).
append
(
","
).
append
(
o
.
getDeposit
()).
append
(
",
"
).
append
(
o
.
getInvoiceServiceFeeRate
())
.
append
(
")"
);
if
(
i
<
orderGoodsList
.
size
()
-
1
)
{
sqlList
.
append
(
","
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论