Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
63633bb2
提交
63633bb2
authored
11月 09, 2023
作者:
liuhaiquan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加最后一车的逻辑
上级
a10cf365
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
72 行增加
和
48 行删除
+72
-48
OrderChildDao.java
.../src/main/java/com/clx/performance/dao/OrderChildDao.java
+5
-0
OrderChildDaoImpl.java
.../java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
+15
-0
OrderChildDtsListener.java
...a/com/clx/performance/listener/OrderChildDtsListener.java
+19
-23
OrderChildMapper.java
...ain/java/com/clx/performance/mapper/OrderChildMapper.java
+5
-0
LastTruckServiceImpl.java
...om/clx/performance/service/impl/LastTruckServiceImpl.java
+12
-25
OrderChildSqlProvider.java
...om/clx/performance/sqlProvider/OrderChildSqlProvider.java
+12
-0
OrderChildStruct.java
...ain/java/com/clx/performance/struct/OrderChildStruct.java
+4
-0
没有找到文件。
performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java
浏览文件 @
63633bb2
...
@@ -16,6 +16,7 @@ import com.msl.common.base.Optional;
...
@@ -16,6 +16,7 @@ import com.msl.common.base.Optional;
import
com.msl.common.dao.BaseDao
;
import
com.msl.common.dao.BaseDao
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.List
;
...
@@ -126,4 +127,8 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
...
@@ -126,4 +127,8 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List
<
OrderChild
>
selectInTransitOrderChildByOrderGoodsNo
(
String
orderGoodsNo
);
List
<
OrderChild
>
selectInTransitOrderChildByOrderGoodsNo
(
String
orderGoodsNo
);
OrderChild
findLastTruckChild
(
String
orderNo
);
OrderChild
findLastTruckChild
(
String
orderNo
);
BigDecimal
listAfterArrayReceiveChild
(
String
orderNo
);
OrderChild
getLastTruckChild
(
String
orderNo
);
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
浏览文件 @
63633bb2
...
@@ -22,6 +22,7 @@ import com.msl.common.dao.impl.BaseDaoImpl;
...
@@ -22,6 +22,7 @@ import com.msl.common.dao.impl.BaseDaoImpl;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.List
;
...
@@ -389,4 +390,18 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
...
@@ -389,4 +390,18 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.
orderByDesc
(
OrderChild:
:
getCreateTime
)
.
orderByDesc
(
OrderChild:
:
getCreateTime
)
.
last
(
"limit 1"
));
.
last
(
"limit 1"
));
}
}
@Override
public
BigDecimal
listAfterArrayReceiveChild
(
String
orderNo
)
{
return
baseMapper
.
listAfterArrayReceiveChild
(
orderNo
);
}
@Override
public
OrderChild
getLastTruckChild
(
String
orderNo
)
{
return
getOne
(
lQrWrapper
().
eq
(
OrderChild:
:
getOrderNo
,
orderNo
)
.
ge
(
OrderChild:
:
getStatus
,
OrderChildEnum
.
Status
.
ARRIVE_RECEIVE
.
getCode
())
.
le
(
OrderChild:
:
getStatus
,
OrderChildEnum
.
Status
.
COMPLETE
.
getCode
())
.
orderByDesc
(
OrderChild:
:
getArriveReceiveTime
)
.
last
(
"limit 1"
));
}
}
}
performance-web/src/main/java/com/clx/performance/listener/OrderChildDtsListener.java
浏览文件 @
63633bb2
...
@@ -9,13 +9,12 @@ import com.clx.order.feign.OrderFeign;
...
@@ -9,13 +9,12 @@ import com.clx.order.feign.OrderFeign;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.performance.config.MslAppConfig
;
import
com.clx.performance.config.MslAppConfig
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dto.dts.DataTransportDTO
;
import
com.clx.performance.dto.dts.DataTransportDTO
;
import
com.clx.performance.enums.DtsOperationTypeEnum
;
import
com.clx.performance.enums.DtsOperationTypeEnum
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.service.LastTruckService
;
import
com.clx.performance.struct.OrderChildStruct
;
import
com.msl.common.result.Result
;
import
com.msl.common.result.Result
;
import
com.msl.common.utils.DtsMapConvertUtil
;
import
com.msl.common.utils.DtsMapConvertUtil
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
...
@@ -25,11 +24,6 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener;
...
@@ -25,11 +24,6 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.util.Optional
;
...
@@ -43,10 +37,12 @@ public class OrderChildDtsListener {
...
@@ -43,10 +37,12 @@ public class OrderChildDtsListener {
@Autowired
@Autowired
private
OrderFeign
orderFeign
;
private
OrderFeign
orderFeign
;
@Autowired
@Autowired
private
OrderGoodsDao
orderGoodsDao
;
LastTruckService
lastTruckService
;
@Autowired
@Autowired
private
OrderChildDao
orderChildDao
;
OrderChildStruct
orderChildStruct
;
@RabbitListener
(
queues
=
RabbitKeyConstants
.
CLX_PERFORMANCE_ORDER_CHILD_QUEUE
)
@RabbitListener
(
queues
=
RabbitKeyConstants
.
CLX_PERFORMANCE_ORDER_CHILD_QUEUE
)
public
void
onMessage
(
Message
message
)
{
public
void
onMessage
(
Message
message
)
{
...
@@ -96,22 +92,22 @@ public class OrderChildDtsListener {
...
@@ -96,22 +92,22 @@ public class OrderChildDtsListener {
after
.
setStatus
(
com
.
clx
.
open
.
sdk
.
enums
.
OrderChildEnum
.
Status
.
COMMON_CANCEL
.
getCode
());
after
.
setStatus
(
com
.
clx
.
open
.
sdk
.
enums
.
OrderChildEnum
.
Status
.
COMMON_CANCEL
.
getCode
());
}
}
after
.
setLastFlag
(
ResultStatusEnum
.
NO
.
getCode
());
after
.
setLastFlag
(
ResultStatusEnum
.
NO
.
getCode
());
long
nowTimeMillis
=
System
.
currentTimeMillis
();
LocalDateTime
nowDateTime
=
new
Date
(
nowTimeMillis
).
toInstant
().
atOffset
(
ZoneOffset
.
of
(
"+8"
)).
toLocalDateTime
();
//如果当前货单已完成,则判断之前所有货单是否等于订单总吨数,等于则更新订单为已完成
List
<
OrderGoods
>
list
=
orderGoodsDao
.
getOrderGoodsListByOrderNoAndLastArriveSendTime
(
after
.
getOrderNo
(),
nowDateTime
);
BigDecimal
childSum
=
list
.
stream
().
map
(
OrderGoods:
:
getExtractWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
log
.
info
(
"算出所有货单总量:{}, 订单总吨数:{}"
,
childSum
,
orderInfoFeign
.
getTransportWeight
());
if
(
childSum
.
compareTo
(
orderInfoFeign
.
getTransportWeight
())
==
0
)
{
// 按照时间 倒序查出最后一条进行中的运单
OrderChild
orderChild
=
orderChildDao
.
getGoingLatestOrderChildByOrderNo
(
after
.
getOrderNo
());
if
(
Objects
.
nonNull
(
orderChild
)
&&
orderChild
.
getChildNo
().
equals
(
after
.
getChildNo
())){
after
.
setLastFlag
(
ResultStatusEnum
.
YES
.
getCode
());
}
}
OpenCallBackClient
client
=
new
OpenCallBackClient
(
mslAppConfig
.
getUrl
(),
mslAppConfig
.
getAppId
(),
mslAppConfig
.
getSecret
());
OpenCallBackClient
client
=
new
OpenCallBackClient
(
mslAppConfig
.
getUrl
(),
mslAppConfig
.
getAppId
(),
mslAppConfig
.
getSecret
());
Result
<?>
result
=
client
.
encryptPost
(
JSON
.
toJSONString
(
after
),
after
.
topic
());
Result
<?>
result
=
client
.
encryptPost
(
JSON
.
toJSONString
(
after
),
after
.
topic
());
log
.
info
(
"运单信息同步,运单编号:{},响应结果:{}"
,
after
.
getChildNo
(),
JSON
.
toJSONString
(
result
));
log
.
info
(
"运单信息同步,运单编号:{},响应结果:{}"
,
after
.
getChildNo
(),
JSON
.
toJSONString
(
result
));
//当运单状态为到达目的地时候,需要判断最后一车的逻辑
if
(
Objects
.
equals
(
after
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_RECEIVE
.
getCode
())){
OrderChild
child
=
lastTruckService
.
getLastTruckChild
(
after
.
getOrderNo
());
if
(
Objects
.
nonNull
(
child
)){
log
.
info
(
"开始同步最后一车的运单,运单编号:{}"
,
child
.
getChildNo
());
OrderChildMessage
message
=
orderChildStruct
.
convertMessage
(
child
);
message
.
setLastFlag
(
ResultStatusEnum
.
YES
.
getCode
());
OpenCallBackClient
client2
=
new
OpenCallBackClient
(
mslAppConfig
.
getUrl
(),
mslAppConfig
.
getAppId
(),
mslAppConfig
.
getSecret
());
Result
<?>
result2
=
client2
.
encryptPost
(
JSON
.
toJSONString
(
after
),
after
.
topic
());
log
.
info
(
"结束同步最后一车的运单,运单编号:{},响应结果:{}"
,
child
.
getChildNo
(),
JSON
.
toJSONString
(
result2
));
}
}
}
}
}
}
...
...
performance-web/src/main/java/com/clx/performance/mapper/OrderChildMapper.java
浏览文件 @
63633bb2
...
@@ -16,6 +16,7 @@ import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
...
@@ -16,6 +16,7 @@ import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import
com.clx.performance.vo.pc.PageOrderChildPoundAuditVO
;
import
com.clx.performance.vo.pc.PageOrderChildPoundAuditVO
;
import
org.apache.ibatis.annotations.*
;
import
org.apache.ibatis.annotations.*
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.List
;
...
@@ -48,4 +49,7 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
...
@@ -48,4 +49,7 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
@UpdateProvider
(
type
=
OrderChildSqlProvider
.
class
,
method
=
"batchUpdateOrderChildStatus"
)
@UpdateProvider
(
type
=
OrderChildSqlProvider
.
class
,
method
=
"batchUpdateOrderChildStatus"
)
Integer
updateOrderGoodsSetResidueWeight
(
@Param
(
value
=
"status"
)
Integer
status
,
@Param
(
value
=
"remark"
)
String
remark
,
@Param
(
value
=
"ids"
)
List
<
Integer
>
ids
);
Integer
updateOrderGoodsSetResidueWeight
(
@Param
(
value
=
"status"
)
Integer
status
,
@Param
(
value
=
"remark"
)
String
remark
,
@Param
(
value
=
"ids"
)
List
<
Integer
>
ids
);
@UpdateProvider
(
type
=
OrderChildSqlProvider
.
class
,
method
=
"listAfterArrayReceiveChild"
)
BigDecimal
listAfterArrayReceiveChild
(
@Param
(
value
=
"orderNo"
)
String
orderNo
);
}
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/service/impl/LastTruckServiceImpl.java
浏览文件 @
63633bb2
package
com
.
clx
.
performance
.
service
.
impl
;
package
com
.
clx
.
performance
.
service
.
impl
;
import
com.clx.order.enums.OrderEnum
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.service.LastTruckService
;
import
com.clx.performance.service.LastTruckService
;
import
com.clx.user.enums.SyncPlatformEnum
;
import
com.msl.common.exception.ServiceSystemException
;
import
groovy.util.logging.Slf4j
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
org.apache.commons.lang3.StringUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
...
@@ -32,7 +26,6 @@ public class LastTruckServiceImpl implements LastTruckService {
...
@@ -32,7 +26,6 @@ public class LastTruckServiceImpl implements LastTruckService {
private
final
OrderFeign
orderFeign
;
private
final
OrderFeign
orderFeign
;
private
final
OrderChildDao
orderChildDao
;
private
final
OrderChildDao
orderChildDao
;
private
final
OrderGoodsDao
orderGoodsDao
;
/**
/**
* @Author kavin
* @Author kavin
* @Description 判断最后一车的逻辑
* @Description 判断最后一车的逻辑
...
@@ -41,27 +34,21 @@ public class LastTruckServiceImpl implements LastTruckService {
...
@@ -41,27 +34,21 @@ public class LastTruckServiceImpl implements LastTruckService {
**/
**/
@Override
@Override
public
OrderChild
getLastTruckChild
(
String
orderNo
)
{
public
OrderChild
getLastTruckChild
(
String
orderNo
)
{
//判断订单是否已经完结
FeignOrderVO
orderInfo
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
FeignOrderVO
orderInfo
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
if
(
Objects
.
isNull
(
orderInfo
)){
if
(
Objects
.
isNull
(
orderInfo
)){
log
.
error
(
"计算最后一车,通过订单号:{},未查询到对应的订单"
,
orderNo
);
return
null
;
return
null
;
}
}
if
(!
Objects
.
equals
(
orderInfo
.
getOrderSource
(),
SyncPlatformEnum
.
TRADE_PLATFORM
.
getCode
())){
BigDecimal
weight
=
orderChildDao
.
listAfterArrayReceiveChild
(
orderNo
);
return
null
;
//判断当前订单下所有到达目的地之后的运单的装车吨数 + 向下浮动量 >= 订单拉运吨数
log
.
info
(
"订单号:{} ,计算是否到达可计算最后一车标准,运单累计拉运吨数:{}, 向下浮动量:{},订单拉运吨数:{}"
,
orderNo
,
weight
,
orderInfo
.
getDownFloatWeight
(),
orderInfo
.
getTransportWeight
());
if
(
Objects
.
nonNull
(
weight
)
&&
weight
.
add
(
new
BigDecimal
(
orderInfo
.
getDownFloatWeight
())).
compareTo
(
orderInfo
.
getTransportWeight
())
>=
0
){
//查询最后一车的运单
OrderChild
child
=
orderChildDao
.
getLastTruckChild
(
orderNo
);
log
.
info
(
"当前订单计算出最后一车,运单编号:{} "
,
child
.
getChildNo
());
return
child
;
}
}
//已完结直接按照时间顺序查找最后一个运单
return
null
;
if
(
Objects
.
equals
(
orderInfo
.
getOrderStatus
(),
OrderEnum
.
Status
.
COMPLETED
.
getCode
())
||
Objects
.
equals
(
orderInfo
.
getOrderStatus
(),
OrderEnum
.
Status
.
SUCCESS
.
getCode
())
){
return
orderChildDao
.
findLastTruckChild
(
orderNo
);
}
else
{
//未完结,判断所有货单的已拉运的吨数是否等于 订单的拉运吨数-向下浮动量
BigDecimal
alreadyTransprotWeight
=
orderGoodsDao
.
getAlreadyTransportWeight
(
orderNo
);
//查询所有货单的已拉运吨数 + 向下浮动量 >= 订单的承运吨数 (满足此情况查找最后一单)
if
(
Objects
.
nonNull
(
alreadyTransprotWeight
)
&&
alreadyTransprotWeight
.
add
(
new
BigDecimal
(
orderInfo
.
getDownFloatWeight
())).
compareTo
(
orderInfo
.
getTransportWeight
())
>=
0
){
return
orderChildDao
.
findLastTruckChild
(
orderNo
);
}
}
return
null
;
}
}
}
}
performance-web/src/main/java/com/clx/performance/sqlProvider/OrderChildSqlProvider.java
浏览文件 @
63633bb2
...
@@ -142,4 +142,16 @@ public class OrderChildSqlProvider {
...
@@ -142,4 +142,16 @@ public class OrderChildSqlProvider {
sqlList
.
append
(
")"
);
sqlList
.
append
(
")"
);
return
sqlList
.
toString
();
return
sqlList
.
toString
();
}
}
public
String
listAfterArrayReceiveChild
(
String
orderNo
){
String
sql
=
new
SQL
()
{{
SELECT
(
"sum(load_net)"
);
FROM
(
"order_child "
);
WHERE
(
"order_no = #{orderNo}"
);
WHERE
(
"status >="
+
OrderChildEnum
.
Status
.
ARRIVE_RECEIVE
.
getCode
());
WHERE
(
"status <="
+
OrderChildEnum
.
Status
.
COMPLETE
.
getCode
());
}}.
toString
();
return
sql
;
}
}
}
performance-web/src/main/java/com/clx/performance/struct/OrderChildStruct.java
浏览文件 @
63633bb2
package
com
.
clx
.
performance
.
struct
;
package
com
.
clx
.
performance
.
struct
;
import
com.clx.open.sdk.callback.message.OrderChildMessage
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.vo.app.GoingOrderChildVO
;
import
com.clx.performance.vo.app.GoingOrderChildVO
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.clx.performance.vo.app.OrderChildVO
;
...
@@ -23,5 +24,8 @@ public interface OrderChildStruct {
...
@@ -23,5 +24,8 @@ public interface OrderChildStruct {
GoingOrderChildVO
convertGoingOrder
(
OrderChild
item
);
GoingOrderChildVO
convertGoingOrder
(
OrderChild
item
);
OrderChildMessage
convertMessage
(
OrderChild
item
);
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论