Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
f520683b
提交
f520683b
authored
11月 05, 2024
作者:
艾庆国
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
订单报价
上级
dd7fb786
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
199 行增加
和
38 行删除
+199
-38
RabbitSettlementConfig.java
...va/com/clx/performance/config/RabbitSettlementConfig.java
+13
-0
RabbitKeySettlementConstants.java
...lx/performance/constant/RabbitKeySettlementConstants.java
+6
-0
SettlementOrderChildBrokerSyncListener.java
...stener/settle/SettlementOrderChildBrokerSyncListener.java
+45
-0
OrderChildBrokerMqHandlerServiceImpl.java
...ice/impl/broker/OrderChildBrokerMqHandlerServiceImpl.java
+6
-23
SettlementMqHandlerServiceImpl.java
...e/service/impl/settle/SettlementMqHandlerServiceImpl.java
+82
-15
SettlementMqServiceImpl.java
...formance/service/impl/settle/SettlementMqServiceImpl.java
+24
-0
SettlementMqHandlerService.java
...erformance/service/settle/SettlementMqHandlerService.java
+2
-0
SettlementMqService.java
...m/clx/performance/service/settle/SettlementMqService.java
+4
-0
OrderChildBrokerSyncMqParam.java
...performance/vo/mq/settle/OrderChildBrokerSyncMqParam.java
+16
-0
SettlementOrderChildRiskProcessMqParam.java
.../vo/mq/settle/SettlementOrderChildRiskProcessMqParam.java
+1
-0
没有找到文件。
clx-performance-web/src/main/java/com/clx/performance/config/RabbitSettlementConfig.java
浏览文件 @
f520683b
...
...
@@ -227,4 +227,17 @@ public class RabbitSettlementConfig {
.
with
(
RabbitKeySettlementConstants
.
SETTLEMENT_DRIVER_CONFIRM_ROUTING_KEY
);
}
/**
* 网络货运运单同步成功
*/
@Bean
public
Queue
settlementOrderChildBrokerSyncQueue
()
{
return
new
Queue
(
RabbitKeySettlementConstants
.
SETTLEMENT_ORDER_CHILD_BROKER_SYNC_QUEUE
);
}
@Bean
public
Binding
settlementOrderChildBrokerSyncQueueBinding
()
{
return
BindingBuilder
.
bind
(
settlementOrderChildBrokerSyncQueue
()).
to
(
settlementDefaultExchange
())
.
with
(
RabbitKeySettlementConstants
.
SETTLEMENT_ORDER_CHILD_BROKER_SYNC_ROUTING_KEY
);
}
}
clx-performance-web/src/main/java/com/clx/performance/constant/RabbitKeySettlementConstants.java
浏览文件 @
f520683b
...
...
@@ -117,4 +117,10 @@ public class RabbitKeySettlementConstants {
public
static
final
String
SETTLEMENT_DRIVER_CONFIRM_QUEUE
=
PREFIX
+
"settlementDriver.confirm"
+
QUEUE
;
public
static
final
String
SETTLEMENT_DRIVER_CONFIRM_ROUTING_KEY
=
PREFIX
+
"settlementDriver.confirm"
+
QUEUE_ROUTING_KEY
;
/**
* 网络货运运单同步成功
*/
public
static
final
String
SETTLEMENT_ORDER_CHILD_BROKER_SYNC_QUEUE
=
PREFIX
+
"settlementOrderChildBroker.sync"
+
QUEUE
;
public
static
final
String
SETTLEMENT_ORDER_CHILD_BROKER_SYNC_ROUTING_KEY
=
PREFIX
+
"settlementOrderChildBroker.sync"
+
QUEUE_ROUTING_KEY
;
}
clx-performance-web/src/main/java/com/clx/performance/listener/settle/SettlementOrderChildBrokerSyncListener.java
0 → 100644
浏览文件 @
f520683b
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.settle.OrderChildBrokerSyncMqParam
;
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
SettlementOrderChildBrokerSyncListener
{
@Autowired
private
SettlementMqHandlerService
settlementMqHandlerService
;
@RabbitListener
(
queues
=
RabbitKeySettlementConstants
.
SETTLEMENT_ORDER_CHILD_BROKER_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
<
OrderChildBrokerSyncMqParam
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"结算-网络货运同步 失败"
,
e
);
}
}
private
void
process
(
OrderChildBrokerSyncMqParam
mq
){
settlementMqHandlerService
.
settlementOrderChildBrokerSync
(
mq
);
}
}
clx-performance-web/src/main/java/com/clx/performance/service/impl/broker/OrderChildBrokerMqHandlerServiceImpl.java
浏览文件 @
f520683b
...
...
@@ -25,6 +25,7 @@ import com.clx.performance.model.settle.SettlementOwnerDetail;
import
com.clx.performance.service.broker.OrderChildBrokerMqHandlerService
;
import
com.clx.performance.service.broker.OrderChildBrokerMqService
;
import
com.clx.performance.service.broker.OrderChildBrokerService
;
import
com.clx.performance.service.settle.SettlementMqService
;
import
com.clx.performance.vo.mq.broker.BrokerOrderChildDriverPayMqParam
;
import
com.clx.performance.service.settle.SettlementPostService
;
import
com.clx.performance.vo.mq.broker.BrokerOrderChildSyncMqParam
;
...
...
@@ -69,14 +70,17 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
@Autowired
private
InvoicingCompanyFeign
invoicingCompanyFeign
;
@Autowired
private
SettlementMqService
settlementMqService
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
orderChildSync
(
BrokerOrderChildSyncMqParam
mq
)
{
try
{
doOrderChildSync
(
mq
);
// 同步-无车承运成功后,更新开票标识为普通单
updateInvoiceTypeByChildNo
(
mq
.
getChildNo
());
settlementMqService
.
orderChildBrokerSync
(
mq
.
getChildNo
());
}
catch
(
Exception
e
){
log
.
info
(
"无车承运-运单同步 失败,msg:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
...
...
@@ -198,25 +202,4 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
QuotationEnum
.
InvoicingConfigType
.
YES
.
getCode
());
}
/**
* 更新当前运单号,更新开票标识为普通单
*/
public
void
updateInvoiceTypeByChildNo
(
String
childNo
)
{
// 获取货主详情
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
// 获取车主详情
SettlementDriverDetail
settlementDriverDetail
=
settlementDriverDetailDao
.
getByChildNo
(
childNo
).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
// 开票配置为否时,更新开票标识为普通单
if
(!
this
.
invoiceConfigType
(
settlementOwnerDetail
.
getOrderNo
()))
{
// 货主更新开票标识
settlementOwnerDetail
.
setInvoiceType
(
InvoicingCompanyEnum
.
RiskProcessType
.
AUTO
.
getCode
());
settlementOwnerDetailDao
.
updateEntityByKey
(
settlementOwnerDetail
);
// 车主更新开票标识
settlementDriverDetail
.
setInvoiceType
(
InvoicingCompanyEnum
.
RiskProcessType
.
AUTO
.
getCode
());
settlementDriverDetailDao
.
updateEntityByKey
(
settlementDriverDetail
);
}
}
}
clx-performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqHandlerServiceImpl.java
浏览文件 @
f520683b
...
...
@@ -1054,30 +1054,49 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
riskProcess
(
SettlementOrderChildRiskProcessMqParam
mq
)
{
SettlementOrderChildRisk
settlementOrderChildRisk
=
settlementOrderChildRiskDao
.
getById
(
mq
.
getId
()).
orElseThrow
(
ResultEnum
.
DATA_NOT_FIND
);
String
childNo
=
settlementOrderChildRisk
.
getChildNo
();
if
(
mq
.
getId
()
!=
null
)
{
SettlementOrderChildRisk
settlementOrderChildRisk
=
settlementOrderChildRiskDao
.
getById
(
mq
.
getId
()).
orElseThrow
(
ResultEnum
.
DATA_NOT_FIND
);
String
childNo
=
settlementOrderChildRisk
.
getChildNo
();
if
(
Objects
.
equals
(
settlementOrderChildRisk
.
getProcessMethod
(),
SettlementOrderChildRiskEnum
.
ProcessMethod
.
CONVERT_ORDINARY
.
getCode
()))
{
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
childNo
).
orNull
();
if
(
Objects
.
equals
(
settlementOrderChildRisk
.
getProcessMethod
(),
SettlementOrderChildRiskEnum
.
ProcessMethod
.
CONVERT_ORDINARY
.
getCode
()))
{
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
childNo
).
orNull
();
// 已进结算单需拆单
if
(
settlementOwnerDetail
!=
null
&&
StringUtils
.
isNotBlank
(
settlementOwnerDetail
.
getSettlementNo
()))
{
// 发送mq 结算统计
settlementMqService
.
settlementStatistics
(
childNo
,
SettlementStatisticsMqParam
.
Type
.
SEPARATE
.
getCode
());
riskToOrdinary
(
settlementOwnerDetail
);
}
else
if
(
Objects
.
equals
(
settlementOrderChildRisk
.
getProcessMethod
(),
SettlementOrderChildRiskEnum
.
ProcessMethod
.
SYNC_RETRY
.
getCode
()))
{
// 发送mq (更新无车承运)
orderChildBrokerMqService
.
orderChildSync
(
childNo
);
}
}
else
{
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
mq
.
getChildNo
()).
orNull
();
// 不开票转普通单
riskToOrdinary
(
settlementOwnerDetail
);
}
// 发送mq (车主结算)
settlementMqService
.
settlementDriverSettle
(
childNo
);
}
// 发送mq (运单更新)
orderChildBrokerMqService
.
orderChildUpdate
(
childNo
);
/**
* 转普通单
*/
private
void
riskToOrdinary
(
SettlementOwnerDetail
settlementOwnerDetail
){
String
childNo
=
settlementOwnerDetail
.
getChildNo
();
if
(!
Objects
.
equals
(
settlementOwnerDetail
.
getInvoiceType
(),
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
())){
return
;
}
else
if
(
Objects
.
equals
(
settlementOrderChildRisk
.
getProcessMethod
(),
SettlementOrderChildRiskEnum
.
ProcessMethod
.
SYNC_RETRY
.
getCode
())){
// 发送mq (更新无车承运)
orderChildBrokerMqService
.
orderChildSync
(
childNo
);
// 已进结算单需拆单
if
(
StringUtils
.
isNotBlank
(
settlementOwnerDetail
.
getSettlementNo
()))
{
// 发送mq 结算统计
settlementMqService
.
settlementStatistics
(
childNo
,
SettlementStatisticsMqParam
.
Type
.
SEPARATE
.
getCode
());
}
// 发送mq (车主结算)
settlementMqService
.
settlementDriverSettle
(
childNo
);
// 发送mq (运单更新)
orderChildBrokerMqService
.
orderChildUpdate
(
childNo
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -1341,6 +1360,54 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
}
@Override
public
void
settlementOrderChildBrokerSync
(
OrderChildBrokerSyncMqParam
mq
)
{
SettlementOwnerDetail
settlementOwnerDetail
=
settlementOwnerDetailDao
.
getByChildNo
(
mq
.
getChildNo
()).
orElseThrow
(
ResultEnum
.
DATA_NOT_FIND
);
if
(
settlementOwnerDetail
.
getInvoiceType
()
!=
null
){
return
;
}
if
(!
Objects
.
equals
(
settlementOwnerDetail
.
getInvoiceConfigType
(),
QuotationEnum
.
InvoicingConfigType
.
YES
.
getCode
())){
return
;
}
SettlementDriverDetail
settlementDriverDetail
=
settlementDriverDetailDao
.
getByChildNo
(
mq
.
getChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
SettlementDriver
settlementDriver
=
settlementDriverDao
.
findByChildNo
(
mq
.
getChildNo
()).
orNull
();
// 转普通单
// 更新子订单详细信息为普通发票类型
settlementOwnerDetail
.
setInvoiceType
(
SettlementOwnerEnum
.
InvoiceType
.
ORDINARY
.
getCode
());
settlementOwnerDetail
.
setInvoicingCompanyId
(
null
);
settlementOwnerDetail
.
setInvoicingCompanyShorterName
(
null
);
settlementOwnerDetail
.
setInvoicingCompanyGroupCode
(
null
);
settlementOwnerDetail
.
setInvoiceTypeStatus
(
SettlementOwnerDetailEnum
.
InvoiceTypeStatus
.
SUCCESS
.
getCode
());
settlementOwnerDetail
.
setInvoiceTypeModifiedTime
(
LocalDateTime
.
now
());
settlementOwnerDetailDao
.
updateConvertOrdinary
(
settlementOwnerDetail
);
// 同步更新司机详细信息
settlementDriverDetail
.
setInvoiceType
(
settlementOwnerDetail
.
getInvoiceType
());
settlementDriverDetail
.
setInvoicingCompanyId
(
settlementOwnerDetail
.
getInvoicingCompanyId
());
settlementDriverDetail
.
setInvoicingCompanyShorterName
(
settlementOwnerDetail
.
getInvoicingCompanyShorterName
());
settlementDriverDetail
.
setInvoicingCompanyGroupCode
(
settlementOwnerDetail
.
getInvoicingCompanyGroupCode
());
settlementDriverDetailDao
.
updateConvertOrdinary
(
settlementDriverDetail
);
// 如果司机信息存在,则同步更新司机信息
if
(
settlementDriver
!=
null
)
{
settlementDriver
.
setInvoiceType
(
settlementDriverDetail
.
getInvoiceType
());
settlementDriver
.
setInvoicingCompanyId
(
settlementDriverDetail
.
getInvoicingCompanyId
());
settlementDriver
.
setInvoicingCompanyShorterName
(
settlementDriverDetail
.
getInvoicingCompanyShorterName
());
settlementDriver
.
setInvoicingCompanyGroupCode
(
settlementDriverDetail
.
getInvoicingCompanyGroupCode
());
settlementDriver
.
setPrepayFreightFlag
(
settlementDriverDetail
.
getPrepayFreightFlag
());
settlementDriverDao
.
updateInvoiceCompany
(
settlementDriver
);
}
// 发送mq (风控处理)
settlementMqService
.
riskProcess
(
settlementOwnerDetail
.
getChildNo
());
}
private
BigDecimal
invoiceFreightCalc
(
Integer
settlementWay
,
BigDecimal
invoiceServiceFeeRate
,
SettlementOwnerDetail
settlementOwnerDetail
)
{
if
(
Objects
.
equals
(
settlementWay
,
SettlementWayEnum
.
WayType
.
LOAD
.
getCode
()))
{
//订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return
settlementOwnerDetail
.
getWeight
().
multiply
(
settlementOwnerDetail
.
getFreightPrice
())
...
...
clx-performance-web/src/main/java/com/clx/performance/service/impl/settle/SettlementMqServiceImpl.java
浏览文件 @
f520683b
...
...
@@ -161,6 +161,18 @@ public class SettlementMqServiceImpl implements SettlementMqService {
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
@Override
public
void
riskProcess
(
String
childNo
)
{
SettlementOrderChildRiskProcessMqParam
mq
=
new
SettlementOrderChildRiskProcessMqParam
();
mq
.
setChildNo
(
childNo
);
MqDelay
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_RISK_PROCESS_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
updateInvoiceCompany
(
Integer
id
)
{
SettlementOwnerDetialInvoiceCompanyUpdateMqParam
mq
=
new
SettlementOwnerDetialInvoiceCompanyUpdateMqParam
();
...
...
@@ -209,4 +221,16 @@ public class SettlementMqServiceImpl implements SettlementMqService {
RabbitKeySettlementConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
@Override
public
void
orderChildBrokerSync
(
String
childNo
)
{
OrderChildBrokerSyncMqParam
mq
=
new
OrderChildBrokerSyncMqParam
();
mq
.
setChildNo
(
childNo
);
MqDelay
delay
=
new
MqDelay
<>(
RabbitKeySettlementConstants
.
DEFAULT_EXCHANGE
,
RabbitKeySettlementConstants
.
SETTLEMENT_ORDER_CHILD_BROKER_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
);
}
}
clx-performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqHandlerService.java
浏览文件 @
f520683b
...
...
@@ -37,4 +37,6 @@ public interface SettlementMqHandlerService {
void
settlementDriverConfirm
(
SettlementDriverConfirmMqParam
mq
);
void
settlementOrderChildBrokerSync
(
OrderChildBrokerSyncMqParam
mq
);
}
clx-performance-web/src/main/java/com/clx/performance/service/settle/SettlementMqService.java
浏览文件 @
f520683b
...
...
@@ -22,6 +22,8 @@ public interface SettlementMqService {
void
riskProcess
(
Integer
id
);
void
riskProcess
(
String
childNo
);
void
updateInvoiceCompany
(
Integer
id
);
void
settlementPlatformAutoConfirmUpdate
(
String
settlementNo
);
...
...
@@ -30,4 +32,6 @@ public interface SettlementMqService {
void
settlementDriverConfirm
(
String
childNo
);
void
orderChildBrokerSync
(
String
childNo
);
}
performance-api/src/main/java/com/clx/performance/vo/mq/settle/OrderChildBrokerSyncMqParam.java
0 → 100644
浏览文件 @
f520683b
package
com
.
clx
.
performance
.
vo
.
mq
.
settle
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
OrderChildBrokerSyncMqParam
{
private
String
childNo
;
}
performance-api/src/main/java/com/clx/performance/vo/mq/settle/SettlementOrderChildRiskProcessMqParam.java
浏览文件 @
f520683b
...
...
@@ -12,5 +12,6 @@ import lombok.ToString;
public
class
SettlementOrderChildRiskProcessMqParam
{
private
Integer
id
;
//id
private
String
childNo
;
//
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论