Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
d726f37a
提交
d726f37a
authored
10月 18, 2024
作者:
刘海泉
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加挂单运费相关代码
上级
a2b5ddb2
显示空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
542 行增加
和
0 行删除
+542
-0
RabbitBeanConfig.java
...ain/java/com/clx/performance/config/RabbitBeanConfig.java
+51
-0
RabbitKeyConstants.java
...java/com/clx/performance/constant/RabbitKeyConstants.java
+25
-0
PendingFreightDao.java
.../main/java/com/clx/performance/dao/PendingFreightDao.java
+16
-0
PendingFreightDaoImpl.java
...a/com/clx/performance/dao/impl/PendingFreightDaoImpl.java
+29
-0
OrderGoodsDtsListener.java
...a/com/clx/performance/listener/OrderGoodsDtsListener.java
+38
-0
SyncPendingFreight4InternalReportListener.java
...e/listener/SyncPendingFreight4InternalReportListener.java
+41
-0
SyncPendingFreight4OrderInfoListener.java
...rmance/listener/SyncPendingFreight4OrderInfoListener.java
+39
-0
PendingFreightMapper.java
...java/com/clx/performance/mapper/PendingFreightMapper.java
+12
-0
PendingFreight.java
...c/main/java/com/clx/performance/model/PendingFreight.java
+136
-0
PendingFreightService.java
...va/com/clx/performance/service/PendingFreightService.java
+18
-0
PendingFreightServiceImpl.java
...x/performance/service/impl/PendingFreightServiceImpl.java
+137
-0
没有找到文件。
clx-performance-web/src/main/java/com/clx/performance/config/RabbitBeanConfig.java
浏览文件 @
d726f37a
...
@@ -299,6 +299,57 @@ public class RabbitBeanConfig {
...
@@ -299,6 +299,57 @@ public class RabbitBeanConfig {
/**
* 监听运单同步履约进度表
*/
@Bean
public
Queue
syncPendingFreight4OrderInfoQueue
()
{
return
new
Queue
(
RabbitKeyConstants
.
SYNC_PENDING_FREIGHT_FOR_ORDER_INFO_QUEUE
,
true
,
false
,
false
);
}
/**
* 监听运单同步履约进度表
**/
@Bean
public
DirectExchange
syncPendingFreight4OrderInfoExchange
()
{
return
new
DirectExchange
(
RabbitKeyConstants
.
SYNC_PENDING_FREIGHT_FOR_ORDER_INFO_EXCHANGE
);
}
/**
* 监听运单同步履约进度表
*/
@Bean
public
Binding
syncPendingFreight4OrderInfoBind
()
{
return
BindingBuilder
.
bind
(
syncPendingFreight4OrderInfoQueue
()).
to
(
syncPendingFreight4OrderInfoExchange
())
.
with
(
RabbitKeyConstants
.
SYNC_PENDING_FREIGHT_FOR_ORDER_INFO_ROUTING_KEY
);
}
/**
* 监听运单同步履约进度表
*/
@Bean
public
Queue
syncPendingFreight4InternalReportQueue
()
{
return
new
Queue
(
RabbitKeyConstants
.
SYNC_PENDING_FREIGHT_FOR_INTERNAL_REPORT_QUEUE
,
true
,
false
,
false
);
}
/**
* 监听运单同步履约进度表
**/
@Bean
public
DirectExchange
syncPendingFreight4InternalReportExchange
()
{
return
new
DirectExchange
(
RabbitKeyConstants
.
SYNC_PENDING_FREIGHT_FOR_INTERNAL_REPORT_EXCHANGE
);
}
/**
* 监听运单同步履约进度表
*/
@Bean
public
Binding
syncPendingFreight4InternalReportBind
()
{
return
BindingBuilder
.
bind
(
syncPendingFreight4InternalReportQueue
()).
to
(
syncPendingFreight4InternalReportExchange
())
.
with
(
RabbitKeyConstants
.
SYNC_PENDING_FREIGHT_FOR_INTERNAL_REPORT_ROUTING_KEY
);
}
}
}
clx-performance-web/src/main/java/com/clx/performance/constant/RabbitKeyConstants.java
浏览文件 @
d726f37a
...
@@ -150,4 +150,29 @@ public class RabbitKeyConstants {
...
@@ -150,4 +150,29 @@ public class RabbitKeyConstants {
//保存货单调价记录routing_key
//保存货单调价记录routing_key
public
static
final
String
SAVE_ORDER_GOODS_ADJUSTMENT_PRICE_ROUTING_KEY
=
"clx_performance.save.order.goods.adjustment.price.routing.key"
;
public
static
final
String
SAVE_ORDER_GOODS_ADJUSTMENT_PRICE_ROUTING_KEY
=
"clx_performance.save.order.goods.adjustment.price.routing.key"
;
//订单同步挂单运费表queue
public
static
final
String
SYNC_PENDING_FREIGHT_FOR_ORDER_INFO_QUEUE
=
"clx_performance.sync.pending.freight.for.order.info.queue"
;
//订单同步挂单运费表exchange
public
static
final
String
SYNC_PENDING_FREIGHT_FOR_ORDER_INFO_EXCHANGE
=
"clx_performance.sync.pending.freight.for.order.info.exchange"
;
//订单同步挂单运费表routing_key
public
static
final
String
SYNC_PENDING_FREIGHT_FOR_ORDER_INFO_ROUTING_KEY
=
"clx_performance.sync.pending.freight.for.order.info.routing.key"
;
//内部上报同步挂单运费表queue
public
static
final
String
SYNC_PENDING_FREIGHT_FOR_INTERNAL_REPORT_QUEUE
=
"clx_performance.sync.pending.freight.for.internal.report.queue"
;
//内部上报同步挂单运费表exchange
public
static
final
String
SYNC_PENDING_FREIGHT_FOR_INTERNAL_REPORT_EXCHANGE
=
"clx_performance.sync.pending.freight.for.internal.report.exchange"
;
//内部上报同步挂单运费表routing_key
public
static
final
String
SYNC_PENDING_FREIGHT_FOR_INTERNAL_REPORT_ROUTING_KEY
=
"clx_performance.sync.pending.freight.for.internal.report.routing.key"
;
}
}
clx-performance-web/src/main/java/com/clx/performance/dao/PendingFreightDao.java
0 → 100644
浏览文件 @
d726f37a
package
com
.
clx
.
performance
.
dao
;
import
com.msl.common.dao.BaseDao
;
import
com.clx.performance.mapper.PendingFreightMapper
;
import
com.clx.performance.model.PendingFreight
;
import
java.math.BigDecimal
;
/**
* @author kavin
* Date 2024-10-17
* Time 19:37
*/
public
interface
PendingFreightDao
extends
BaseDao
<
PendingFreightMapper
,
PendingFreight
,
Integer
>
{
long
updateInternalReportData
(
String
orderNo
,
String
name
,
BigDecimal
logisticsFreight
);
}
clx-performance-web/src/main/java/com/clx/performance/dao/impl/PendingFreightDaoImpl.java
0 → 100644
浏览文件 @
d726f37a
package
com
.
clx
.
performance
.
dao
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.clx.performance.dao.PendingFreightDao
;
import
com.clx.performance.mapper.PendingFreightMapper
;
import
com.clx.performance.model.PendingFreight
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Repository
;
import
java.math.BigDecimal
;
import
java.util.Objects
;
/**
* @author kavin
* Date 2024-10-17
* Time 19:37
*/
@Repository
public
class
PendingFreightDaoImpl
extends
BaseDaoImpl
<
PendingFreightMapper
,
PendingFreight
,
Integer
>
implements
PendingFreightDao
{
@Override
public
long
updateInternalReportData
(
String
orderNo
,
String
name
,
BigDecimal
logisticsFreight
)
{
LambdaUpdateWrapper
<
PendingFreight
>
update
=
new
LambdaUpdateWrapper
<>();
update
.
set
(
StringUtils
.
isNotBlank
(
name
),
PendingFreight
::
getSeniorLogisticsManagerName
,
name
);
update
.
set
(
Objects
.
nonNull
(
logisticsFreight
),
PendingFreight
::
getLogisticsFreight
,
logisticsFreight
);
update
.
eq
(
PendingFreight
::
getOrderNo
,
orderNo
);
return
baseMapper
.
update
(
update
);
}
}
clx-performance-web/src/main/java/com/clx/performance/listener/OrderGoodsDtsListener.java
浏览文件 @
d726f37a
...
@@ -89,6 +89,44 @@ public class OrderGoodsDtsListener {
...
@@ -89,6 +89,44 @@ public class OrderGoodsDtsListener {
}
}
}
}
public
void
syncPendingFreight
(
OrderGoods
before
,
OrderGoods
after
,
Integer
updateType
)
{
boolean
isSend
=
false
;
if
(
Objects
.
equals
(
updateType
,
DtsOperationTypeEnum
.
INSERT
.
getCode
())){
isSend
=
true
;
}
else
{
if
(!
Objects
.
equals
(
before
.
getOrderGoodsStatus
(),
after
.
getOrderGoodsStatus
())
||
!
Objects
.
equals
(
before
.
getAlreadyTransportWeight
(),
after
.
getAlreadyTransportWeight
())
||
!
Objects
.
equals
(
before
.
getExtractWeight
(),
after
.
getExtractWeight
())){
}
}
if
(
after
.
getOrderGoodsStatus
()
>=
OrderGoodsStatusEnum
.
Status
.
PAYING
.
getCode
()){
if
(
Objects
.
equals
(
updateType
,
DtsOperationTypeEnum
.
INSERT
.
getCode
())){
isSend
=
true
;
}
if
(
Objects
.
equals
(
updateType
,
DtsOperationTypeEnum
.
UPDATE
.
getCode
())
&&
(!
Objects
.
equals
(
before
.
getOrderGoodsStatus
(),
after
.
getOrderGoodsStatus
())
||
!
Objects
.
equals
(
before
.
getSeniorLogisticsManagerId
(),
after
.
getSeniorLogisticsManagerId
())
||
!
Objects
.
equals
(
before
.
getExtractWeight
(),
after
.
getExtractWeight
())
||
!
Objects
.
equals
(
before
.
getPendingOrderFreight
(),
after
.
getPendingOrderFreight
())
)){
isSend
=
true
;
}
if
(
isSend
){
log
.
info
(
"开始发送同步履约进度表消息,订单号:{},货单号:{}"
,
after
.
getOrderNo
(),
after
.
getOrderGoodsNo
());
Message
body
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
after
)).
getBytes
()).
build
();
rabbitTemplate
.
send
(
SYNC_PERFORMANCE_PROGRESS_FOR_ORDER_GOODS_EXCHANGE
,
SYNC_PERFORMANCE_PROGRESS_FOR_ORDER_GOODS_ROUTING_KEY
,
body
);
log
.
info
(
"结束发送同步履约进度表消息,订单号:{},货单号:{}"
,
after
.
getOrderNo
(),
after
.
getOrderGoodsNo
());
}
}
}
//保存货单调价记录
//保存货单调价记录
public
void
sendSaveOrderGoodsAdjustmentPriceMessage
(
OrderGoods
before
,
OrderGoods
after
,
Integer
updateType
){
public
void
sendSaveOrderGoodsAdjustmentPriceMessage
(
OrderGoods
before
,
OrderGoods
after
,
Integer
updateType
){
boolean
isSend
=
false
;
boolean
isSend
=
false
;
...
...
clx-performance-web/src/main/java/com/clx/performance/listener/SyncPendingFreight4InternalReportListener.java
0 → 100644
浏览文件 @
d726f37a
package
com
.
clx
.
performance
.
listener
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.clx.order.param.mq.SyncPendingFreightInternalReportParam
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.service.PendingFreightService
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.exception.ExceptionUtils
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.stereotype.Component
;
/**
* 处理货单取消吨数回填
*/
@Slf4j
@Component
@AllArgsConstructor
public
class
SyncPendingFreight4InternalReportListener
{
private
final
PendingFreightService
pendingFreightService
;
@RabbitListener
(
queues
=
RabbitKeyConstants
.
SYNC_PENDING_FREIGHT_FOR_INTERNAL_REPORT_QUEUE
)
public
void
onMessage
(
Message
message
)
{
try
{
log
.
info
(
"监听到同步挂单运费表---内部上报信息部分,消息内容{}"
,
new
String
(
message
.
getBody
()));
SyncPendingFreightInternalReportParam
data
=
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
SyncPendingFreightInternalReportParam
>>()
{
}).
getData
();
pendingFreightService
.
dealPendingFreight4InternalReport
(
data
);
}
catch
(
Exception
e
){
log
.
info
(
"监听到同步挂单运费表---内部上报信息部分发生异常,异常原因:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
}
}
}
clx-performance-web/src/main/java/com/clx/performance/listener/SyncPendingFreight4OrderInfoListener.java
0 → 100644
浏览文件 @
d726f37a
package
com
.
clx
.
performance
.
listener
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.clx.open.sdk.callback.message.OrderInfoMessage
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.service.PendingFreightService
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.exception.ExceptionUtils
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.stereotype.Component
;
/**
* 同步
*/
@Slf4j
@Component
@AllArgsConstructor
public
class
SyncPendingFreight4OrderInfoListener
{
private
final
PendingFreightService
pendingFreightService
;
@RabbitListener
(
queues
=
RabbitKeyConstants
.
SYNC_PENDING_FREIGHT_FOR_ORDER_INFO_QUEUE
)
public
void
onMessage
(
Message
message
)
{
try
{
log
.
info
(
"监听到同步挂单运费表---订单信息部分,消息内容{}"
,
new
String
(
message
.
getBody
()));
OrderInfoMessage
data
=
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
OrderInfoMessage
>>()
{
}).
getData
();
pendingFreightService
.
dealPendingFreight4OrderInfo
(
data
);
}
catch
(
Exception
e
){
log
.
info
(
"监听到同步挂单运费表---订单信息部分发生异常,异常原因:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
}
}
}
clx-performance-web/src/main/java/com/clx/performance/mapper/PendingFreightMapper.java
0 → 100644
浏览文件 @
d726f37a
package
com
.
clx
.
performance
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.clx.performance.model.PendingFreight
;
/**
* @author kavin
* Date 2024-10-17
* Time 19:37
*/
public
interface
PendingFreightMapper
extends
BaseMapper
<
PendingFreight
>
{
}
clx-performance-web/src/main/java/com/clx/performance/model/PendingFreight.java
0 → 100644
浏览文件 @
d726f37a
package
com
.
clx
.
performance
.
model
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.msl.common.config.KeyColumn
;
import
com.msl.common.model.HasKey
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
/**
* @author kavin
* Date 2024-10-17
* Time 19:37
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"pending_freight"
)
public
class
PendingFreight
implements
HasKey
<
Integer
>
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
@TableField
(
"order_no"
)
@Schema
(
description
=
"订单编号"
)
private
String
orderNo
;
@TableField
(
"order_status"
)
@Schema
(
description
=
"订单状态"
)
private
Integer
orderStatus
;
@TableField
(
"send_address_id"
)
@Schema
(
description
=
"发货-地址id"
)
private
Integer
sendAddressId
;
@TableField
(
"send_address_shorter"
)
@Schema
(
description
=
"货源地简称"
)
private
String
sendAddressShorter
;
@TableField
(
"send_address"
)
@Schema
(
description
=
"煤源位置"
)
private
String
sendAddress
;
@TableField
(
"receive_address_id"
)
@Schema
(
description
=
"收货-地址id"
)
private
Integer
receiveAddressId
;
@TableField
(
"receive_address_shorter"
)
@Schema
(
description
=
"目的地简称"
)
private
String
receiveAddressShorter
;
@TableField
(
"senior_logistics_manager_name"
)
@Schema
(
description
=
"高级物流经理姓名数组"
)
private
String
seniorLogisticsManagerName
;
@TableField
(
"goods_name_id"
)
@Schema
(
description
=
"货物名称id"
)
private
Integer
goodsNameId
;
@TableField
(
"goods_name"
)
@Schema
(
description
=
"货物名称"
)
private
String
goodsName
;
@TableField
(
"goods_type_code"
)
@Schema
(
description
=
"热值编码"
)
private
String
goodsTypeCode
;
@TableField
(
"goods_type_name"
)
@Schema
(
description
=
"热值名称"
)
private
String
goodsTypeName
;
@TableField
(
"send_over_standard"
)
@Schema
(
description
=
"是否C类煤源 0 否 1 是"
)
private
Integer
sendOverStandard
;
@TableField
(
"task_weight"
)
@Schema
(
description
=
"任务吨数"
)
private
BigDecimal
taskWeight
;
@TableField
(
"ordered_rate"
)
@Schema
(
description
=
"接单率"
)
private
BigDecimal
orderedRate
;
@TableField
(
"load_truck_rate"
)
@Schema
(
description
=
"装车率"
)
private
BigDecimal
loadTruckRate
;
@TableField
(
"order_distance"
)
@Schema
(
description
=
"重车运距(公里)"
)
private
BigDecimal
orderDistance
;
@TableField
(
"send_address_expenses"
)
@Schema
(
description
=
"煤源地开支"
)
private
String
sendAddressExpenses
;
@TableField
(
"history_freight"
)
@Schema
(
description
=
"历史运费"
)
private
BigDecimal
historyFreight
;
@TableField
(
"history_avg_freight"
)
@Schema
(
description
=
"历史平均运费"
)
private
BigDecimal
historyAvgFreight
;
@TableField
(
"prediction_freight_price"
)
@Schema
(
description
=
"测算运费"
)
private
BigDecimal
predictionFreightPrice
;
@TableField
(
"logistics_freight"
)
@Schema
(
description
=
"物流运费"
)
private
BigDecimal
logisticsFreight
;
@TableField
(
"create_time"
)
@Schema
(
description
=
"创建时间"
)
private
LocalDateTime
createTime
;
@TableField
(
"modified_time"
)
@Schema
(
description
=
"修改时间"
)
private
LocalDateTime
modifiedTime
;
@Override
@KeyColumn
(
"id"
)
public
Integer
gainKey
()
{
return
this
.
id
;
}
}
clx-performance-web/src/main/java/com/clx/performance/service/PendingFreightService.java
0 → 100644
浏览文件 @
d726f37a
package
com
.
clx
.
performance
.
service
;
import
com.clx.open.sdk.callback.message.OrderInfoMessage
;
import
com.clx.order.param.mq.SyncPendingFreightInternalReportParam
;
import
org.springframework.transaction.annotation.Transactional
;
/**
* @author kavin
* Date 2024-10-17
* Time 19:37
*/
public
interface
PendingFreightService
{
void
dealPendingFreight4OrderInfo
(
OrderInfoMessage
data
);
//处理挂单运费内部上报数据
@Transactional
(
rollbackFor
=
Exception
.
class
)
void
dealPendingFreight4InternalReport
(
SyncPendingFreightInternalReportParam
param
);
}
clx-performance-web/src/main/java/com/clx/performance/service/impl/PendingFreightServiceImpl.java
0 → 100644
浏览文件 @
d726f37a
package
com
.
clx
.
performance
.
service
.
impl
;
import
com.clx.open.sdk.callback.message.OrderInfoMessage
;
import
com.clx.order.param.mq.SyncPendingFreightInternalReportParam
;
import
com.clx.order.vo.feign.FeignAddressVO
;
import
com.clx.performance.dao.PendingFreightDao
;
import
com.clx.performance.dto.gd.GdRouteDTO
;
import
com.clx.performance.enums.ResultEnum
;
import
com.clx.performance.extranal.user.AddressService
;
import
com.clx.performance.model.PendingFreight
;
import
com.clx.performance.service.PendingFreightService
;
import
com.clx.performance.utils.gd.GdService
;
import
com.msl.common.base.Optional
;
import
com.msl.common.exception.ServiceSystemException
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.exception.ExceptionUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @author kavin
* Date 2024-10-17
* Time 19:37
*/
@Service
@Slf4j
@AllArgsConstructor
public
class
PendingFreightServiceImpl
implements
PendingFreightService
{
private
final
PendingFreightDao
pendingFreightDao
;
private
final
AddressService
addressService
;
private
final
GdService
gdService
;
//处理挂单运费订单部分
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
dealPendingFreight4OrderInfo
(
OrderInfoMessage
data
)
{
Optional
<
PendingFreight
>
pendingFreightOptional
=
pendingFreightDao
.
getOneByField
(
PendingFreight:
:
getOrderNo
,
data
.
getOrderNo
());
PendingFreight
item
=
new
PendingFreight
();
item
.
setOrderStatus
(
data
.
getOrderStatus
());
item
.
setSendAddressId
(
data
.
getSendAddressId
());
item
.
setSendAddressShorter
(
data
.
getSendAddressShorter
());
item
.
setGoodsTypeCode
(
data
.
getGoodsTypeCode
());
item
.
setGoodsTypeName
(
data
.
getGoodsTypeName
());
item
.
setGoodsNameId
(
data
.
getGoodsNameId
());
item
.
setGoodsName
(
data
.
getGoodsName
());
item
.
setSendOverStandard
(
data
.
getOverWeight
());
item
.
setTaskWeight
(
data
.
getTransportWeight
());
item
.
setSendAddressExpenses
(
data
.
getSendPayFeeBegin
().
movePointLeft
(
2
)+
"元-"
+
data
.
getSendPayFeeEnd
().
movePointLeft
(
2
)
+
"元"
);
if
(
pendingFreightOptional
.
isPresent
()){
PendingFreight
pendingFreight
=
pendingFreightOptional
.
get
();
item
.
setId
(
pendingFreight
.
getId
());
if
(!
Objects
.
equals
(
pendingFreight
.
getSendAddressId
(),
data
.
getSendAddressId
())
||
!
Objects
.
equals
(
pendingFreight
.
getReceiveAddressId
(),
data
.
getReveiveAddressId
())){
//查询收发货地址
Optional
<
FeignAddressVO
>
sendAndReceiveAddress
=
getAddressDetail
(
data
);
FeignAddressVO
.
Address
sendAddress
=
sendAndReceiveAddress
.
get
().
getSendAddress
();
FeignAddressVO
.
Address
receiveAddress
=
sendAndReceiveAddress
.
get
().
getReceiveAddress
();
item
.
setSendAddress
(
addressService
.
generateAddressDetail
(
sendAddress
.
getProvince
(),
sendAddress
.
getCity
(),
sendAddress
.
getCounty
(),
sendAddress
.
getAddress
()));
//计算重车运距
item
.
setOrderDistance
(
calcOrderDistance
(
sendAddress
,
receiveAddress
,
data
.
getOrderNo
()));
}
pendingFreightDao
.
updateEntityByKey
(
item
);
}
else
{
item
.
setOrderNo
(
data
.
getOrderNo
());
//查询收发货地址
Optional
<
FeignAddressVO
>
sendAndReceiveAddress
=
getAddressDetail
(
data
);
FeignAddressVO
.
Address
sendAddress
=
sendAndReceiveAddress
.
get
().
getSendAddress
();
FeignAddressVO
.
Address
receiveAddress
=
sendAndReceiveAddress
.
get
().
getReceiveAddress
();
item
.
setSendAddress
(
addressService
.
generateAddressDetail
(
sendAddress
.
getProvince
(),
sendAddress
.
getCity
(),
sendAddress
.
getCounty
(),
sendAddress
.
getAddress
()));
//计算重车运距
item
.
setOrderDistance
(
calcOrderDistance
(
sendAddress
,
receiveAddress
,
data
.
getOrderNo
()));
pendingFreightDao
.
saveEntity
(
item
);
}
}
//处理挂单运费内部上报数据
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
dealPendingFreight4InternalReport
(
SyncPendingFreightInternalReportParam
param
)
{
log
.
info
(
"开始更新挂单运费===内部上报数据,订单号:{} ,物流经理:{} ,物流运费:{} "
,
param
.
getOrderNo
(),
param
.
getName
(),
param
.
getLogisticsFreight
());
long
count
=
pendingFreightDao
.
updateInternalReportData
(
param
.
getOrderNo
(),
param
.
getName
(),
param
.
getLogisticsFreight
());
log
.
info
(
"结束更新挂单运费===内部上报数据,订单号:{} ,更新数量:{} "
,
param
.
getOrderNo
(),
count
);
}
public
Optional
<
FeignAddressVO
>
getAddressDetail
(
OrderInfoMessage
data
){
Optional
<
FeignAddressVO
>
sendAndReceiveAddress
=
addressService
.
getSendAndReceiveAddress
(
data
.
getSendAddressId
(),
data
.
getReveiveAddressId
());
if
(
Objects
.
isNull
(
sendAndReceiveAddress
.
get
().
getSendAddress
())
||
Objects
.
isNull
(
sendAndReceiveAddress
.
get
().
getReceiveAddress
()))
{
log
.
warn
(
"通过发货地址Id:{},收货地址Id:{} 查询对应的地址信息结果:{}"
,
data
.
getSendAddressId
(),
data
.
getReveiveAddressId
(),
sendAndReceiveAddress
);
throw
new
ServiceSystemException
(
ResultEnum
.
DATA_ERROR
,
"挂单运费表订单对应的收发货地址信息为空"
);
}
return
sendAndReceiveAddress
;
}
public
BigDecimal
calcOrderDistance
(
FeignAddressVO
.
Address
sendAddress
,
FeignAddressVO
.
Address
receiveAddress
,
String
orderNo
){
BigDecimal
distance
=
null
;
//重车运距(收发货地址距离)
try
{
List
<
GdRouteDTO
>
route
=
gdService
.
getRoute
(
sendAddress
.
getLongitude
(),
sendAddress
.
getLatitude
(),
receiveAddress
.
getLongitude
(),
receiveAddress
.
getLatitude
());
if
(!
route
.
isEmpty
()){
distance
=
new
BigDecimal
(
route
.
get
(
0
).
getDistance
()
/
1000
);
}
}
catch
(
Exception
e
){
log
.
warn
(
"订单计算重车运距失败,订单号:{},失败原因:{}"
,
orderNo
,
ExceptionUtils
.
getStackTrace
(
e
));
}
return
distance
;
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论