Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
0377945b
提交
0377945b
authored
8月 07, 2024
作者:
刘海泉
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
commit
上级
f165da27
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
35 行增加
和
71 行删除
+35
-71
OrderGoodsStatusLazyComponent.java
.../performance/component/OrderGoodsStatusLazyComponent.java
+9
-58
OrderChildDtsListener.java
...a/com/clx/performance/listener/OrderChildDtsListener.java
+1
-1
OrderGoodsDtsListener.java
...a/com/clx/performance/listener/OrderGoodsDtsListener.java
+1
-1
LastTruckServiceImpl.java
...om/clx/performance/service/impl/LastTruckServiceImpl.java
+15
-7
OrderChildServiceImpl.java
...m/clx/performance/service/impl/OrderChildServiceImpl.java
+7
-2
OrderGoodsSqlProvider.java
...om/clx/performance/sqlProvider/OrderGoodsSqlProvider.java
+2
-2
没有找到文件。
performance-web/src/main/java/com/clx/performance/component/OrderGoodsStatusLazyComponent.java
浏览文件 @
0377945b
package
com
.
clx
.
performance
.
component
;
import
cn.hutool.core.collection.CollectionUtil
;
import
com.clx.order.enums.VehicleUsageEnum
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.param.feign.RollbackOrderWeightParam
;
import
com.clx.performance.constant.RedisConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.OrderChildLogEnum
;
import
com.clx.performance.enums.OrderGoodsStatusEnum
;
import
com.clx.performance.enums.OrderGoodsTruckBindEnum
;
import
com.clx.performance.extranal.user.DriverService
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
...
...
@@ -30,7 +31,9 @@ import org.springframework.transaction.annotation.Transactional;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.util.*
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Set
;
/**
* 货单最晚接单时间、最晚到达货源地时间处理
...
...
@@ -90,7 +93,6 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
public
void
consumingLastOrderTime
()
{
log
.
info
(
"货单-最晚接单时间-定时器启动"
);
long
nowTimeMillis
=
System
.
currentTimeMillis
();
LocalDateTime
nowDateTime
=
new
Date
(
nowTimeMillis
).
toInstant
().
atOffset
(
ZoneOffset
.
of
(
"+8"
)).
toLocalDateTime
();
Set
<
ZSetOperations
.
TypedTuple
<
String
>>
orderGoodsIds
=
redisTemplate
.
opsForZSet
().
rangeByScoreWithScores
(
RedisConstants
.
ORDER_GOODS_STATUS_LAZY_LAST_ORDER_TIME
,
0
,
nowTimeMillis
//延时任务score最小值
...
...
@@ -118,9 +120,6 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
continue
;
}
OrderGoods
orderGoods
=
optional
.
get
();
// if(Objects.equals(orderGoods.getOrderGoodsStatus(),OrderGoodsStatusEnum.Status.CANCEL.getCode())){
// continue;
// }
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
selectInTransitOrderChildByOrderGoodsNo
(
orderGoodsNo
);
...
...
@@ -134,33 +133,10 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
orderGoodsDao
.
updateOrderGoodsStatusByOrderGoodsNo
(
orderGoodsNo
,
OrderGoodsStatusEnum
.
Status
.
SUCCESS
.
getCode
());
}
}
else
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
//大于35吨的归还吨数在这里处理
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
new
BigDecimal
(
"35"
))
>=
0
){
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
param
.
setResidueWeight
(
orderGoods
.
getResidueTransportWeight
());
if
(
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_CAR
.
getCode
())
||
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
orderGoods
.
getResidueTransportWeight
());
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
orderGoods
.
getResidueTransportWeight
());
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
orderFeign
.
rollbackOrderWeight
(
param
);
//更新剩余吨数
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
}
//更新已完结
orderGoodsDao
.
updateEntityByKey
(
update
);
log
.
info
(
"删除redis ORDER_GOODS_STATUS_LAZY id: {}"
,
orderGoodsId
.
getValue
());
...
...
@@ -238,35 +214,10 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
"系统自动取消,未按照最晚装货时间到达货源地"
,
now
,
now
,
childNoList
);
}
//更新货单未拉运吨数,已拉运吨数
orderGoodsDao
.
updateOrderGoodsSetResidueWeightAndAlreadyWeight
(
childSum
,
childSum
,
orderGoods
.
getId
());
//当前货单已经到了最晚接单时间,所有相关状态均已经处理完毕,此刻单独处理运单的数据
if
(
OrderGoodsStatusEnum
.
Status
.
SUCCESS
.
getCode
().
equals
(
orderGoods
.
getOrderGoodsStatus
())
||
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
().
equals
(
orderGoods
.
getOrderGoodsStatus
())
)
{
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
param
.
setResidueWeight
(
childSum
);
//当前情况需要回填订单的余量
if
(
orderGoods
.
getTruckDemand
().
equals
(
1
)
||
orderGoods
.
getTruckDemand
().
equals
(
3
))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
orderGoods
.
getResidueTransportWeight
());
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
orderGoods
.
getResidueTransportWeight
());
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
//只更新货单已拉运吨数
orderGoodsDao
.
updateOrderGoodsSetResidueWeightAndAlreadyWeight
(
childSum
,
childSum
,
orderGoods
.
getId
());
orderFeign
.
rollbackOrderWeight
(
param
);
}
else
{
//只更新货单未拉运吨数,已拉运吨数
orderGoodsDao
.
updateOrderGoodsSetResidueWeightAndAlreadyWeight
(
childSum
,
childSum
,
orderGoods
.
getId
());
}
redisTemplate
.
opsForZSet
().
remove
(
RedisConstants
.
ORDER_GOODS_STATUS_LAZY_LAST_ARRIVE_SEND_TIME
,
orderGoodsId
.
getValue
());
...
...
performance-web/src/main/java/com/clx/performance/listener/OrderChildDtsListener.java
浏览文件 @
0377945b
...
...
@@ -166,7 +166,7 @@ public class OrderChildDtsListener {
Objects
.
nonNull
(
byCode
)?
byCode
.
getName
():
"未知状态"
);
child
=
lastTruckService
.
getOrderCompleteLastTruck
(
after
.
getOrderNo
());
}
else
{
// 订单除 已完成 || 已完结 外的其他状态
child
=
lastTruckService
.
get
LastTruckChild
(
after
.
getOrderNo
());
child
=
lastTruckService
.
get
OrderLastTruck
(
after
.
getOrderNo
());
}
if
(
Objects
.
nonNull
(
child
))
{
log
.
info
(
"开始同步新货主客户端最后一车的运单,运单编号:{}"
,
child
.
getChildNo
());
...
...
performance-web/src/main/java/com/clx/performance/listener/OrderGoodsDtsListener.java
浏览文件 @
0377945b
...
...
@@ -57,7 +57,7 @@ public class OrderGoodsDtsListener {
sendSaveOrderGoodsAdjustmentPriceMessage
(
before
,
after
,
DtsOperationTypeEnum
.
INSERT
.
getCode
());
}
else
if
(
Objects
.
equals
(
DtsOperationTypeEnum
.
UPDATE
.
getCode
(),
dataTransportDTO
.
getOperationType
().
getCode
())){
log
.
info
(
"修改:{}"
,
JSON
.
toJSONString
(
after
));
backFillOrderWeight
(
after
);
//
backFillOrderWeight(after);
syncPerformanceProgress
(
before
,
after
,
DtsOperationTypeEnum
.
UPDATE
.
getCode
());
sendSaveOrderGoodsAdjustmentPriceMessage
(
before
,
after
,
DtsOperationTypeEnum
.
UPDATE
.
getCode
());
}
else
if
(
Objects
.
equals
(
DtsOperationTypeEnum
.
DELETE
.
getCode
(),
dataTransportDTO
.
getOperationType
().
getCode
())){
...
...
performance-web/src/main/java/com/clx/performance/service/impl/LastTruckServiceImpl.java
浏览文件 @
0377945b
...
...
@@ -90,16 +90,24 @@ public class LastTruckServiceImpl implements LastTruckService {
return
result
;
}
//在没有算出最后一车的前提下,订单变成已完结或者已完成状态,但是订单量可能并没有提取完,所以只需要判断订单下是否还有未到达 目的地的运单,没有则进行最后一车运算
@Override
public
OrderChild
getOrderCompleteLastTruck
(
String
orderNo
)
{
//判断当前订单下是否存在未到达目的地之前的运单 && 排除掉已取消的运单
Long
count
=
orderChildDao
.
haveArriveReceiveChild
(
orderNo
);
log
.
info
(
"已完成/已完结的订单号:{},查询运单状态非取消并且在到达目的地之前的运单数量为:{}"
,
orderNo
,
count
);
if
(
count
==
0
){
//说明排除已取消的运单后,剩下的所有运单都已经是到达目的地之后的状态,根据到达目的地的时间倒序取出第一条运单作为最后一车
return
orderChildDao
.
getOrderCompleteLastTruck
(
orderNo
);
String
lastTruckCacheKey
=
getLastTruckCacheKey
(
orderNo
);
//已经计算出最后一车,则直接返回运单信息
if
(
Objects
.
equals
(
Boolean
.
TRUE
,
redisTemplate
.
hasKey
(
lastTruckCacheKey
))){
String
childNo
=
redisTemplate
.
opsForValue
().
get
(
lastTruckCacheKey
);
return
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
ResultEnum
.
DATA_NOT_FIND
);
}
else
{
//判断当前订单下是否存在未到达目的地之前的运单 && 排除掉已取消的运单
Long
count
=
orderChildDao
.
haveArriveReceiveChild
(
orderNo
);
log
.
info
(
"已完成/已完结的订单号:{},查询运单状态非取消并且在到达目的地之前的运单数量为:{}"
,
orderNo
,
count
);
if
(
count
==
0
){
//说明排除已取消的运单后,剩下的所有运单都已经是到达目的地之后的状态,根据到达目的地的时间倒序取出第一条运单作为最后一车
return
orderChildDao
.
getOrderCompleteLastTruck
(
orderNo
);
}
return
null
;
}
return
null
;
}
...
...
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
浏览文件 @
0377945b
...
...
@@ -2014,7 +2014,12 @@ public class OrderChildServiceImpl implements OrderChildService {
orderGoodsStatus
=
orderGoods
.
getOrderGoodsStatus
();
}
if
(
dif
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
//判断是从订单借吨还是直接货单进行扣减(货单剩余吨数小于本运单的修改后的吨数差值)
//运单修改装车吨数,从货单进行扣减
log
.
info
(
"货单号:{},运单号 :{},扣减吨数:{}"
,
orderGoods
.
getOrderGoodsNo
(),
childNo
,
dif
);
orderGoodsDao
.
updateOrderGoodsReduceWeightAndStatus
(
orderGoods
.
getId
(),
dif
,
orderGoodsStatus
);
/* //判断是从订单借吨还是直接货单进行扣减(货单剩余吨数小于本运单的修改后的吨数差值)
if (orderGoods.getResidueTransportWeight().compareTo(dif) < 0) {
//货单吨数不够扣减,从订单进行借吨数
orderGoodsService.borrowWeight(orderGoods, childNo, orderGoods.getResidueTransportWeight(), dif,
...
...
@@ -2023,7 +2028,7 @@ public class OrderChildServiceImpl implements OrderChildService {
log.info("货单吨数有剩余,归还吨数:{}", dif);
// 货单吨数够扣减,直接更新货单剩余吨数和已拉运吨数和状态
orderGoodsDao.updateOrderGoodsReduceWeightAndStatus(orderGoods.getId(), dif, orderGoodsStatus);
}
}
*/
}
}
...
...
performance-web/src/main/java/com/clx/performance/sqlProvider/OrderGoodsSqlProvider.java
浏览文件 @
0377945b
...
...
@@ -118,7 +118,7 @@ public class OrderGoodsSqlProvider {
}
WHERE
(
"a.last_arrive_send_time >= now()"
);
WHERE
(
"a.order_goods_status IN ( "
+
OrderGoodsStatusEnum
.
Status
.
PAYING
.
getCode
()+
","
+
OrderGoodsStatusEnum
.
Status
.
GO_TO_SEND
.
getCode
()+
")"
);
WHERE
(
"a.residue_transport_weight >
=35
"
);
WHERE
(
"a.residue_transport_weight >
0
"
);
ORDER_BY
(
"a.pending_order_time desc"
);
}}.
toString
();
return
sql
;
...
...
@@ -134,7 +134,7 @@ public class OrderGoodsSqlProvider {
WHERE
(
" a.pending_order_way = "
+
PendingOrderWayStatusEnum
.
Status
.
FLEET_GK
.
getCode
());
WHERE
(
"a.last_arrive_send_time >= now()"
);
WHERE
(
"a.order_goods_status IN ( "
+
OrderGoodsStatusEnum
.
Status
.
PAYING
.
getCode
()+
","
+
OrderGoodsStatusEnum
.
Status
.
GO_TO_SEND
.
getCode
()+
")"
);
WHERE
(
"a.residue_transport_weight >
=35
"
);
WHERE
(
"a.residue_transport_weight >
0
"
);
WHERE
(
"b.id is not null"
);
}}.
toString
();
return
sql
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论