Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
3cf27bb4
提交
3cf27bb4
authored
10月 27, 2023
作者:
huyufan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
逆向
上级
491f2cc4
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
517 行增加
和
97 行删除
+517
-97
OrderCancelMqParam.java
...java/com/clx/performance/param/mq/OrderCancelMqParam.java
+12
-0
OrderGoodsStatusLazyComponent.java
.../performance/component/OrderGoodsStatusLazyComponent.java
+19
-26
GoodsOrderController.java
...m/clx/performance/controller/pc/GoodsOrderController.java
+16
-3
OrderChildDao.java
.../src/main/java/com/clx/performance/dao/OrderChildDao.java
+3
-1
OrderChildDaoImpl.java
.../java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
+11
-2
OrderCancelHandler.java
...java/com/clx/performance/listener/OrderCancelHandler.java
+13
-4
OrderChild.java
...b/src/main/java/com/clx/performance/model/OrderChild.java
+1
-1
OrderCancelService.java
.../java/com/clx/performance/service/OrderCancelService.java
+4
-0
OrderGoodsService.java
...n/java/com/clx/performance/service/OrderGoodsService.java
+19
-2
OrderCancelServiceImpl.java
.../clx/performance/service/impl/OrderCancelServiceImpl.java
+347
-47
OrderGoodsServiceImpl.java
...m/clx/performance/service/impl/OrderGoodsServiceImpl.java
+57
-9
JobTest.java
...rmance-web/src/test/java/com/clx/performance/JobTest.java
+15
-2
没有找到文件。
performance-api/src/main/java/com/clx/performance/param/mq/OrderCancelMqParam.java
0 → 100644
浏览文件 @
3cf27bb4
package
com
.
clx
.
performance
.
param
.
mq
;
import
lombok.Data
;
@Data
public
class
OrderCancelMqParam
{
private
String
orderNo
;
// 1:平台 2:货主
private
String
type
;
}
performance-web/src/main/java/com/clx/performance/component/OrderGoodsStatusLazyComponent.java
浏览文件 @
3cf27bb4
...
...
@@ -96,38 +96,31 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
}
OrderGoods
orderGoods
=
optional
.
get
();
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
selectInTransitOrderChild
(
orderGoodsNo
);
if
(
CollectionUtil
.
isEmpty
(
orderChildren
))
{
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
//更新货单已完成
orderGoodsDao
.
updateOrderGoodsStatusByOrderGoodsNo
(
orderGoodsNo
,
OrderGoodsStatusEnum
.
Status
.
SUCCESS
.
getCode
());
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
//更新货单已完成
orderGoodsDao
.
updateOrderGoodsStatusByOrderGoodsNo
(
orderGoodsNo
,
OrderGoodsStatusEnum
.
Status
.
SUCCESS
.
getCode
());
}
else
{
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
{
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
()))
{
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
);
}
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
);
//更新已完结,并设置剩余吨数为0
orderGoodsDao
.
updateOrderGoodsStatusAndRollbackResidueWeightByOrderGoodsNo
(
orderGoods
.
getId
(),
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
orderFeign
.
rollbackOrderWeight
(
param
);
//更新已完结,并设置剩余吨数为0
orderGoodsDao
.
updateOrderGoodsStatusAndRollbackResidueWeightByOrderGoodsNo
(
orderGoods
.
getId
(),
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
log
.
info
(
"删除redis ORDER_GOODS_STATUS_LAZY id: {}"
,
orderGoodsId
.
getValue
());
}
else
{
log
.
info
(
"当前还存在正在拉运的运单,推测一天再进行逻辑处理"
);
expireProduceByLastOrderTime
(
LocalDateTime
.
now
().
plusDays
(
1
),
orderGoodsNo
);
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNo
,
OrderGoodsTruckBindEnum
.
Status
.
EXPIRE
.
getCode
());
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoodsNo
);
...
...
@@ -184,7 +177,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
childSum
.
add
(
orderChild
.
getWeight
());
OrderChild
update
=
new
OrderChild
();
update
.
setId
(
orderChild
.
getId
());
update
.
setStatus
(
OrderChildEnum
.
Status
.
OWNER
_CANCEL
.
getCode
());
update
.
setStatus
(
OrderChildEnum
.
Status
.
PLATFORM
_CANCEL
.
getCode
());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao
.
updateEntityByKey
(
update
);
}
...
...
performance-web/src/main/java/com/clx/performance/controller/pc/GoodsOrderController.java
浏览文件 @
3cf27bb4
...
...
@@ -133,9 +133,22 @@ public class GoodsOrderController {
@ApiOperation
(
value
=
"取消订单获取弹窗样式"
,
notes
=
"<br>By:胡宇帆"
)
@GetMapping
(
"/orderCancel"
)
public
Result
<
String
>
orderCancel
(
@RequestParam
(
value
=
"orderNo"
)
String
orderNo
)
{
return
Result
.
ok
(
orderGoodsService
.
orderCancel
(
orderNo
));
@GetMapping
(
"/orderCancelStyle"
)
public
Result
<
String
>
orderCancelStyle
(
@RequestParam
(
value
=
"orderNo"
)
String
orderNo
)
{
return
Result
.
ok
(
orderGoodsService
.
orderCancelStyle
(
orderNo
));
}
@ApiOperation
(
value
=
"取消货单获取弹窗样式"
,
notes
=
"<br>By:胡宇帆"
)
@GetMapping
(
"/orderGoodsCancelStyle"
)
public
Result
<
String
>
orderGoodsCancelStyle
(
@RequestParam
(
value
=
"orderGoodsNo"
)
String
orderGoodsNo
)
{
return
Result
.
ok
(
orderGoodsService
.
orderGoodsCancelStyle
(
orderGoodsNo
));
}
@ApiOperation
(
value
=
"取消货单"
,
notes
=
"<br>By:胡宇帆"
)
@GetMapping
(
"/orderGoodsCancel"
)
public
Result
<
Object
>
orderGoodsCancel
(
@RequestParam
(
value
=
"orderGoodsNo"
)
String
orderGoodsNo
)
{
orderGoodsService
.
orderGoodsCancel
(
orderGoodsNo
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"获取当前订单可取消吨数"
,
notes
=
"<br>By:胡宇帆"
)
...
...
performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java
浏览文件 @
3cf27bb4
...
...
@@ -63,6 +63,8 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List
<
OrderChild
>
getOrderChildBussInfo
(
String
truckNo
);
List
<
OrderChild
>
selectListByOrderGoodsNo
(
String
orderGoodsNo
);
Page
<
OrderChild
>
pageOrderChild
(
PageMonitorOrderChildQCParam
param
);
List
<
OrderChild
>
listOrderChild
(
List
<
Integer
>
status
);
...
...
@@ -78,7 +80,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
@Param
(
"list"
)
List
<
String
>
orderGoodsNoList
);
List
<
OrderChild
>
selectResidueWeight
(
String
orderNo
);
List
<
OrderChild
>
selectResidueWeight
(
String
orderNo
,
Integer
status
);
/**
* 查询在途运单
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
浏览文件 @
3cf27bb4
package
com
.
clx
.
performance
.
dao
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
...
...
@@ -259,9 +260,9 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
}
@Override
public
List
<
OrderChild
>
selectResidueWeight
(
String
orderNo
)
{
public
List
<
OrderChild
>
selectResidueWeight
(
String
orderNo
,
Integer
status
)
{
return
baseMapper
.
selectList
(
lQrWrapper
().
eq
(
OrderChild:
:
getOrderNo
,
orderNo
)
.
lt
(
O
rderChild:
:
getStatus
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()
)
.
lt
(
O
bjectUtil
.
isNotEmpty
(
status
),
OrderChild:
:
getStatus
,
status
)
);
}
...
...
@@ -298,4 +299,12 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
return
baseMapper
.
selectList
(
query
);
}
@Override
public
List
<
OrderChild
>
selectListByOrderGoodsNo
(
String
orderGoodsNo
)
{
//查询小于 100(完成)的运单都属于在途
return
baseMapper
.
selectList
(
lQrWrapper
().
eq
(
OrderChild:
:
getOrderGoodsNo
,
orderGoodsNo
)
.
notIn
(
OrderChild:
:
getStatus
,
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
())
);
}
}
performance-web/src/main/java/com/clx/performance/listener/OrderCancelHandler.java
浏览文件 @
3cf27bb4
package
com
.
clx
.
performance
.
listener
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.enums.OrderGoodsStatusEnum
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.param.mq.OrderCancelMqParam
;
import
com.clx.performance.service.IntegralMqService
;
import
com.clx.performance.service.OrderCancelService
;
import
com.msl.common.base.Optional
;
...
...
@@ -23,12 +25,19 @@ public class OrderCancelHandler {
@Autowired
private
OrderCancelService
orderCancelService
;
@RabbitListener
(
queues
=
RabbitKeyConstants
.
ORDER_
GOODS_ON_DEAD
_QUEUE
)
@RabbitListener
(
queues
=
RabbitKeyConstants
.
ORDER_
CANCEL
_QUEUE
)
public
void
onMessage
(
String
message
)
{
log
.
info
(
"处理订单取消监听器执行,订单No为{}"
,
message
);
if
(
StringUtils
.
isBlank
(
message
))
{
return
;
OrderCancelMqParam
param
=
JSONUtil
.
toBean
(
message
,
OrderCancelMqParam
.
class
);
if
(
StringUtils
.
equals
(
param
.
getType
(),
"1"
))
{
orderCancelService
.
platformCancelOrder
(
param
.
getOrderNo
());
}
else
{
orderCancelService
.
ownerCancelOrder
(
param
.
getOrderNo
());
}
orderCancelService
.
ownerCancelOrder
(
message
);
return
;
// if (StringUtils.isBlank(message)) {
// return;
// }
// orderCancelService.ownerCancelOrder(message);
}
}
performance-web/src/main/java/com/clx/performance/model/OrderChild.java
浏览文件 @
3cf27bb4
...
...
@@ -86,7 +86,7 @@ public class OrderChild implements HasKey<Integer> {
private
LocalDateTime
expectSendTime
;
//预计到达货源地时间
private
LocalDateTime
expectReceiveTime
;
//预计到达目的地时间
private
String
settlementAccountPeriod
;
//结算账期 1拉运完成结 2月结
private
Integer
settlementAccountPeriod
;
//结算账期 1拉运完成结 2月结
private
LocalDateTime
createTime
;
//创建时间
private
LocalDateTime
modifiedTime
;
//修改时间
...
...
performance-web/src/main/java/com/clx/performance/service/OrderCancelService.java
浏览文件 @
3cf27bb4
...
...
@@ -2,6 +2,10 @@ package com.clx.performance.service;
public
interface
OrderCancelService
{
void
platformCancelOrderPre
(
String
orderNo
);
void
platformCancelOrder
(
String
orderNo
);
void
ownerCancelOrderPre
(
String
orderNo
);
void
ownerCancelOrder
(
String
orderNo
);
...
...
performance-web/src/main/java/com/clx/performance/service/OrderGoodsService.java
浏览文件 @
3cf27bb4
...
...
@@ -10,7 +10,6 @@ import com.clx.performance.param.pc.UpdateOrderGoodsPriceParam;
import
com.clx.performance.vo.app.OrderGoodsAPPVO
;
import
com.clx.performance.vo.feign.OrderGoodsFeignVO
;
import
com.clx.performance.vo.pc.OrderGoodsVO
;
import
com.msl.common.result.Result
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
...
...
@@ -37,7 +36,12 @@ public interface OrderGoodsService {
List
<
OrderGoods
>
getOrderGoodsList
(
String
orderNo
,
LocalDateTime
lastArriveSendTime
);
String
orderCancel
(
String
orderNo
);
/**
* 获取订单取消的时候订单样式
* @param orderNo
* @return
*/
String
orderCancelStyle
(
String
orderNo
);
BigDecimal
orderCancelResidueWeight
(
String
orderNo
,
String
optionType
);
...
...
@@ -46,4 +50,17 @@ public interface OrderGoodsService {
void
updateOrderGoodsPrice
(
UpdateOrderGoodsPriceParam
param
);
Boolean
updateOrderGoodsStopFlag
(
String
orderNo
,
Integer
stopFlag
);
/**
* 获取货单取消的时候弹窗样式
* @param orderGoodsNo
* @return
*/
String
orderGoodsCancelStyle
(
String
orderGoodsNo
);
/**
* 取消货单
* @param orderGoodsNo
*/
void
orderGoodsCancel
(
String
orderGoodsNo
);
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderCancelServiceImpl.java
浏览文件 @
3cf27bb4
package
com
.
clx
.
performance
.
service
.
impl
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.json.JSONObject
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.order.enums.OrderEnum
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.param.feign.RollbackOrderWeightParam
;
import
com.clx.order.param.feign.UpdateOrderInfoResidueWeightParam
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.performance.constant.RabbitKeyConstants
;
...
...
@@ -13,6 +16,7 @@ import com.clx.performance.enums.OrderGoodsStatusEnum;
import
com.clx.performance.enums.TruckDemandEnum
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.param.mq.OrderCancelMqParam
;
import
com.clx.performance.service.OrderCancelService
;
import
com.msl.common.result.Result
;
import
lombok.AllArgsConstructor
;
...
...
@@ -46,9 +50,9 @@ public class OrderCancelServiceImpl implements OrderCancelService {
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
owner
CancelOrderPre
(
String
orderNo
)
{
FeignOrderVO
orderInfoFeign
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
BigDecimal
orderTransportWeight
=
new
BigDecimal
(
orderInfoFeign
.
getTransportWeight
());
public
void
platform
CancelOrderPre
(
String
orderNo
)
{
//
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
//
BigDecimal orderTransportWeight = new BigDecimal(orderInfoFeign.getTransportWeight());
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
if
(
CollectionUtil
.
isEmpty
(
orderGoodsList
))
{
...
...
@@ -57,17 +61,26 @@ public class OrderCancelServiceImpl implements OrderCancelService {
if
(!
result
.
succeed
())
{
throw
new
RuntimeException
(
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
log
.
info
(
"执行平台订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}"
,
orderNo
);
OrderCancelMqParam
mqParam
=
new
OrderCancelMqParam
();
mqParam
.
setType
(
"1"
);
mqParam
.
setOrderNo
(
orderNo
);
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
mqParam
).
toString
().
getBytes
()).
build
();
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_CANCEL_EXCHANGE
,
RabbitKeyConstants
.
ORDER_CANCEL_ROUTE_KEY
,
message
);
return
;
}
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
);
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
null
);
if
(
CollectionUtil
.
isEmpty
(
orderChildrenList
))
{
//说明此刻未产生运单
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
());
if
(!
result
.
succeed
())
{
throw
new
RuntimeException
(
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
//说明此刻未产生运单
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
...
...
@@ -76,16 +89,290 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
}
else
{
BigDecimal
orderChildResidueWeight
=
orderChildrenList
.
stream
()
.
map
(
OrderChild:
:
getWeight
)
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
if
(
orderChildResidueWeight
.
compareTo
(
orderTransportWeight
)
==
0
)
{
throw
new
RuntimeException
(
"当前订单已无余量可取消"
);
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
orderChildrenList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
List
<
OrderChild
>
orderChildren
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
());
if
(
CollectionUtil
.
isEmpty
(
orderChildren
))
{
//没有运单,直接是取消
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
//货单还有余量,是已完结
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
else
{
List
<
OrderChild
>
orderChildrenListComplete
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
COMPLETE
.
getCode
());
if
(
CollectionUtil
.
isNotEmpty
(
orderChildrenListComplete
))
{
Map
<
String
,
List
<
OrderChild
>>
orderChildCompleteMap
=
orderChildrenListComplete
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
//没有余量,需要判断已完成的运单量是不等于货单的全部提取量,等于则是已完成,否则是已完结
List
<
OrderChild
>
childList
=
orderChildCompleteMap
.
get
(
orderGoods
.
getOrderGoodsNo
());
BigDecimal
reduce
=
childList
.
stream
().
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
if
(
reduce
.
compareTo
(
orderGoods
.
getExtractWeight
())
==
0
)
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
SUCCESS
.
getCode
());
}
else
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
}
}
}
orderGoodsDao
.
updateEntityByKey
(
update
);
}
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
COMPLETED
.
getCode
());
if
(!
result
.
succeed
())
{
throw
new
RuntimeException
(
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
}
log
.
info
(
"执行平台订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}"
,
orderNo
);
OrderCancelMqParam
mqParam
=
new
OrderCancelMqParam
();
mqParam
.
setType
(
"1"
);
mqParam
.
setOrderNo
(
orderNo
);
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
mqParam
).
toString
().
getBytes
()).
build
();
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_CANCEL_EXCHANGE
,
RabbitKeyConstants
.
ORDER_CANCEL_ROUTE_KEY
,
message
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
platformCancelOrder
(
String
orderNo
)
{
log
.
info
(
"开始执行平台订单取消吨数回填"
);
FeignOrderVO
orderInfoFeignVO
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
Map
<
Integer
,
BigDecimal
>
truckDemandMap
=
new
HashMap
<>();
truckDemandMap
.
put
(
TruckDemandEnum
.
TruckType
.
PLATFORM_CAR
.
getCode
(),
BigDecimal
.
ZERO
);
truckDemandMap
.
put
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
(),
BigDecimal
.
ZERO
);
//非部分平台车辆拉运
if
(!
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
().
equals
(
orderInfoFeignVO
.
getTruckDemand
()))
{
if
(
OrderEnum
.
Status
.
COMPLETED
.
getCode
().
equals
(
orderInfoFeignVO
.
getOrderStatus
()))
{
//已完结
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
for
(
OrderChild
orderChild
:
orderChildrenList
)
{
OrderChild
update
=
new
OrderChild
();
update
.
setId
(
orderChild
.
getId
());
update
.
setStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao
.
updateEntityByKey
(
update
);
}
Map
<
String
,
List
<
OrderGoods
>>
orderGoodsMap
=
orderGoodsList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderGoods:
:
getOrderGoodsNo
));
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
orderChildrenList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
for
(
Map
.
Entry
<
String
,
List
<
OrderGoods
>>
entry
:
orderGoodsMap
.
entrySet
())
{
String
orderGoodsNo
=
entry
.
getKey
();
OrderGoods
orderGoods
=
entry
.
getValue
().
get
(
0
);
List
<
OrderChild
>
orderChildren
=
orderChildMap
.
get
(
orderGoodsNo
);
BigDecimal
sum
=
BigDecimal
.
ZERO
;
if
(
CollectionUtil
.
isNotEmpty
(
orderChildren
))
{
sum
=
orderChildren
.
stream
()
.
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
}
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
().
add
(
sum
)));
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
//TODO 补充批量更新接口 关闭货单状态 注意判断货单是已完结还是已完成
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
else
if
(
OrderEnum
.
Status
.
CANCELED
.
getCode
().
equals
(
orderInfoFeignVO
.
getOrderStatus
()))
{
//已取消
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
//TODO 补充批量更新接口 关闭货单状态
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
Integer
truckDemand
=
orderInfoFeignVO
.
getTruckDemand
();
BigDecimal
residueWeight
=
truckDemandMap
.
get
(
truckDemand
);
if
(
residueWeight
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
log
.
info
(
"当前订单对应的货单无需吨数回填,订单编号{}"
,
orderNo
);
return
;
}
//归还吨数
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
param
.
setOrderNo
(
orderInfoFeignVO
.
getOrderNo
());
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_CAR
.
getCode
()))
{
param
.
setResidueWeight
(
residueWeight
);
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
param
.
setResidueWeight
(
residueWeight
);
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
orderFeign
.
rollbackOrderWeight
(
param
);
}
else
{
Map
<
Integer
,
BigDecimal
>
vehicleUsageMap
=
new
HashMap
<>();
if
(
OrderEnum
.
Status
.
COMPLETED
.
getCode
().
equals
(
orderInfoFeignVO
.
getOrderStatus
()))
{
//已完结
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
for
(
OrderChild
orderChild
:
orderChildrenList
)
{
OrderChild
update
=
new
OrderChild
();
update
.
setId
(
orderChild
.
getId
());
update
.
setStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao
.
updateEntityByKey
(
update
);
}
//货单
Map
<
String
,
List
<
OrderGoods
>>
orderGoodsMap
=
orderGoodsList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderGoods:
:
getOrderGoodsNo
));
//运单
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
orderChildrenList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
for
(
Map
.
Entry
<
String
,
List
<
OrderGoods
>>
entry
:
orderGoodsMap
.
entrySet
())
{
String
orderGoodsNo
=
entry
.
getKey
();
OrderGoods
orderGoods
=
entry
.
getValue
().
get
(
0
);
BigDecimal
sum
=
BigDecimal
.
ZERO
;
if
(
CollectionUtil
.
isNotEmpty
(
orderChildMap
.
get
(
orderGoodsNo
)))
{
sum
=
orderChildMap
.
get
(
orderGoodsNo
).
stream
()
.
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
}
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
().
add
(
sum
)));
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
//TODO 补充批量更新接口 关闭货单状态
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
//update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
else
if
(
OrderEnum
.
Status
.
CANCELED
.
getCode
().
equals
(
orderInfoFeignVO
.
getOrderStatus
()))
{
//已取消
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
//TODO 补充批量更新接口 关闭货单状态
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
//update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
//归还吨数
BigDecimal
platformResidueSum
=
vehicleUsageMap
.
get
(
1
);
BigDecimal
ownResidueSum
=
vehicleUsageMap
.
get
(
2
);
BigDecimal
residueSum
=
platformResidueSum
.
add
(
ownResidueSum
);
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
param
.
setOrderNo
(
orderInfoFeignVO
.
getOrderNo
());
param
.
setResidueWeight
(
residueSum
);
param
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
param
.
setOwnResidueCarryWeight
(
ownResidueSum
);
orderFeign
.
rollbackOrderWeight
(
param
);
}
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
ownerCancelOrderPre
(
String
orderNo
)
{
//FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
if
(
CollectionUtil
.
isEmpty
(
orderGoodsList
))
{
//未产生货单
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
());
if
(!
result
.
succeed
())
{
throw
new
RuntimeException
(
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
log
.
info
(
"执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}"
,
orderNo
);
OrderCancelMqParam
mqParam
=
new
OrderCancelMqParam
();
mqParam
.
setType
(
"2"
);
mqParam
.
setOrderNo
(
orderNo
);
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
mqParam
).
toString
().
getBytes
()).
build
();
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_CANCEL_EXCHANGE
,
RabbitKeyConstants
.
ORDER_CANCEL_ROUTE_KEY
,
message
);
return
;
}
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
null
);
if
(
CollectionUtil
.
isEmpty
(
orderChildrenList
))
{
//说明此刻未产生运单
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
());
if
(!
result
.
succeed
())
{
throw
new
RuntimeException
(
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
else
{
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
orderChildrenList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
List
<
OrderChild
>
orderChildren
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
());
if
(
CollectionUtil
.
isEmpty
(
orderChildren
))
{
//没有运单,直接是取消
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
//货单还有余量,是已完结
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
else
{
List
<
OrderChild
>
orderChildrenListComplete
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
COMPLETE
.
getCode
());
if
(
CollectionUtil
.
isNotEmpty
(
orderChildrenListComplete
))
{
Map
<
String
,
List
<
OrderChild
>>
orderChildCompleteMap
=
orderChildrenListComplete
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
//没有余量,需要判断已完成的运单量是不等于货单的全部提取量,等于则是已完成,否则是已完结
List
<
OrderChild
>
childList
=
orderChildCompleteMap
.
get
(
orderGoods
.
getOrderGoodsNo
());
BigDecimal
reduce
=
childList
.
stream
().
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
if
(
reduce
.
compareTo
(
orderGoods
.
getExtractWeight
())
==
0
)
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
SUCCESS
.
getCode
());
}
else
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
}
}
}
orderGoodsDao
.
updateEntityByKey
(
update
);
}
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
COMPLETED
.
getCode
());
...
...
@@ -94,8 +381,11 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
}
log
.
info
(
"执行订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}"
,
orderNo
);
Message
message
=
MessageBuilder
.
withBody
(
orderNo
.
getBytes
()).
build
();
log
.
info
(
"执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}"
,
orderNo
);
OrderCancelMqParam
mqParam
=
new
OrderCancelMqParam
();
mqParam
.
setType
(
"2"
);
mqParam
.
setOrderNo
(
orderNo
);
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
mqParam
).
toString
().
getBytes
()).
build
();
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_CANCEL_EXCHANGE
,
RabbitKeyConstants
.
ORDER_CANCEL_ROUTE_KEY
,
message
);
...
...
@@ -115,7 +405,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
if
(!
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
().
equals
(
orderInfoFeignVO
.
getTruckDemand
()))
{
if
(
OrderEnum
.
Status
.
COMPLETED
.
getCode
().
equals
(
orderInfoFeignVO
.
getOrderStatus
()))
{
//已完结
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
);
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()
);
for
(
OrderChild
orderChild
:
orderChildrenList
)
{
OrderChild
update
=
new
OrderChild
();
...
...
@@ -133,18 +423,21 @@ public class OrderCancelServiceImpl implements OrderCancelService {
for
(
Map
.
Entry
<
String
,
List
<
OrderGoods
>>
entry
:
orderGoodsMap
.
entrySet
())
{
String
orderGoodsNo
=
entry
.
getKey
();
OrderGoods
orderGoods
=
entry
.
getValue
().
get
(
0
);
BigDecimal
sum
=
orderChildMap
.
get
(
orderGoodsNo
).
stream
()
.
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
List
<
OrderChild
>
orderChildren
=
orderChildMap
.
get
(
orderGoodsNo
);
BigDecimal
sum
=
BigDecimal
.
ZERO
;
if
(
CollectionUtil
.
isNotEmpty
(
orderChildren
))
{
sum
=
orderChildren
.
stream
()
.
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
}
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
().
add
(
sum
)));
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
//TODO 补充批量更新接口 关闭货单状态
//TODO 补充批量更新接口 关闭货单状态
注意判断货单是已完结还是已完成
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
//
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
...
...
@@ -158,37 +451,43 @@ public class OrderCancelServiceImpl implements OrderCancelService {
update
.
setId
(
orderGoods
.
getId
());
//TODO 补充批量更新接口 关闭货单状态
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
//
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
Integer
truckDemand
=
orderInfoFeignVO
.
getTruckDemand
();
BigDecimal
residueWeight
=
truckDemandMap
.
get
(
truckDemand
);
UpdateOrderInfoResidueWeightParam
param
=
new
UpdateOrderInfoResidueWeightParam
();
param
.
setOrderId
(
orderInfoFeignVO
.
getId
());
if
(
residueWeight
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
log
.
info
(
"当前订单对应的货单无需吨数回填,订单编号{}"
,
orderNo
);
return
;
}
//归还吨数
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
param
.
setOrderNo
(
orderInfoFeignVO
.
getOrderNo
());
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_CAR
.
getCode
()))
{
param
.
set
UpdateType
(
"2"
);
param
.
set
ResidueWeight
(
residueWeight
.
add
(
new
BigDecimal
(
orderInfoFeignVO
.
getResidueWeight
()))
);
param
.
setPlatWeight
(
residueWeight
);
param
.
set
ResidueWeight
(
residueWeight
);
param
.
set
OwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlat
formResidueCarry
Weight
(
residueWeight
);
}
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
param
.
set
UpdateType
(
"3"
);
param
.
set
ResidueWeight
(
residueWeight
.
add
(
new
BigDecimal
(
orderInfoFeignVO
.
getResidueWeight
()))
);
param
.
set
OwnWeight
(
residueWeight
);
param
.
set
ResidueWeight
(
residueWeight
);
param
.
set
OwnResidueCarryWeight
(
residueWeight
);
param
.
set
PlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
orderFeign
.
updateOrderInfoResidue
Weight
(
param
);
orderFeign
.
rollbackOrder
Weight
(
param
);
}
else
{
Map
<
Integer
,
BigDecimal
>
vehicleUsageMap
=
new
HashMap
<>();
if
(
OrderEnum
.
Status
.
COMPLETED
.
getCode
().
equals
(
orderInfoFeignVO
.
getOrderStatus
()))
{
//已完结
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
);
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()
);
for
(
OrderChild
orderChild
:
orderChildrenList
)
{
OrderChild
update
=
new
OrderChild
();
update
.
setId
(
orderChild
.
getId
());
update
.
setStatus
(
OrderChildEnum
.
Status
.
OWNER
_CANCEL
.
getCode
());
update
.
setStatus
(
OrderChildEnum
.
Status
.
PLATFORM
_CANCEL
.
getCode
());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao
.
updateEntityByKey
(
update
);
}
...
...
@@ -203,8 +502,12 @@ public class OrderCancelServiceImpl implements OrderCancelService {
for
(
Map
.
Entry
<
String
,
List
<
OrderGoods
>>
entry
:
orderGoodsMap
.
entrySet
())
{
String
orderGoodsNo
=
entry
.
getKey
();
OrderGoods
orderGoods
=
entry
.
getValue
().
get
(
0
);
BigDecimal
sum
=
orderChildMap
.
get
(
orderGoodsNo
).
stream
()
.
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
BigDecimal
sum
=
BigDecimal
.
ZERO
;
if
(
CollectionUtil
.
isNotEmpty
(
orderChildMap
.
get
(
orderGoodsNo
)))
{
sum
=
orderChildMap
.
get
(
orderGoodsNo
).
stream
()
.
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
}
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
().
add
(
sum
)));
...
...
@@ -212,7 +515,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
update
.
setId
(
orderGoods
.
getId
());
//TODO 补充批量更新接口 关闭货单状态
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
//
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
...
...
@@ -227,24 +530,21 @@ public class OrderCancelServiceImpl implements OrderCancelService {
update
.
setId
(
orderGoods
.
getId
());
//TODO 补充批量更新接口 关闭货单状态
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
//
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
String
platformResidueCarryWeight
=
orderInfoFeignVO
.
getPlatformResidueCarryWeight
();
String
ownResidueCarryWeight
=
orderInfoFeignVO
.
getOwnResidueCarryWeight
();
BigDecimal
platformResidueSum
=
new
BigDecimal
(
platformResidueCarryWeight
).
add
(
vehicleUsageMap
.
get
(
1
));
BigDecimal
ownResidueSum
=
new
BigDecimal
(
ownResidueCarryWeight
).
add
(
vehicleUsageMap
.
get
(
2
));
BigDecimal
residueSum
=
new
BigDecimal
(
orderInfoFeignVO
.
getResidueWeight
()).
add
(
platformResidueSum
).
add
(
ownResidueSum
);
UpdateOrderInfoResidueWeightParam
param
=
new
UpdateOrderInfoResidueWeightParam
();
param
.
setOrderId
(
orderInfoFeignVO
.
getId
());
param
.
setUpdateType
(
"4"
);
//归还吨数
BigDecimal
platformResidueSum
=
vehicleUsageMap
.
get
(
1
);
BigDecimal
ownResidueSum
=
vehicleUsageMap
.
get
(
2
);
BigDecimal
residueSum
=
platformResidueSum
.
add
(
ownResidueSum
);
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
param
.
setOrderNo
(
orderInfoFeignVO
.
getOrderNo
());
param
.
setResidueWeight
(
residueSum
);
param
.
setPlatWeight
(
platformResidueSum
);
param
.
setOwnWeight
(
ownResidueSum
);
orderFeign
.
updateOrderInfoResidue
Weight
(
param
);
param
.
setPlat
formResidueCarry
Weight
(
platformResidueSum
);
param
.
setOwn
ResidueCarry
Weight
(
ownResidueSum
);
orderFeign
.
rollbackOrder
Weight
(
param
);
}
...
...
performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java
浏览文件 @
3cf27bb4
package
com
.
clx
.
performance
.
service
.
impl
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.order.enums.VehicleUsageEnum
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.param.feign.RollbackOrderWeightParam
;
import
com.clx.order.params.PageOrderGoodsListParam
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OrderGoodsDriverTruckDao
;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.OrderGoodsLogsEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.TruckDemandEnum
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.model.OrderGoodsDriverTruck
;
...
...
@@ -170,7 +175,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
}
@Override
public
String
orderCancel
(
String
orderNo
)
{
public
String
orderCancel
Style
(
String
orderNo
)
{
FeignOrderVO
orderInfoFeign
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
Integer
orderStatus
=
orderInfoFeign
.
getOrderStatus
();
...
...
@@ -213,11 +218,11 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
public
BigDecimal
orderCancelResidueWeight
(
String
orderNo
,
String
optionType
)
{
FeignOrderVO
orderInfoFeign
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
if
(
StringUtils
.
equals
(
optionType
,
"1"
))
{
if
(
StringUtils
.
equals
(
optionType
,
"1"
))
{
return
new
BigDecimal
(
orderInfoFeign
.
getResidueWeight
());
}
else
{
String
residueWeight
=
orderInfoFeign
.
getResidueWeight
();
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
selectResidueWeight
(
orderNo
);
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()
);
BigDecimal
childResidueWeight
=
orderChildList
.
stream
().
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
BigDecimal
orderGoodsResidueWeight
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
).
stream
().
map
(
OrderGoods:
:
getResidueTransportWeight
).
reduce
(
BigDecimal:
:
add
).
get
();
...
...
@@ -235,18 +240,61 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
updateOrderGoodsPrice
(
UpdateOrderGoodsPriceParam
param
)
{
OrderGoods
orderGoods
=
orderGoodsDao
.
getEntityByKey
(
param
.
getId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
OrderGoods
orderGoods
=
orderGoodsDao
.
getEntityByKey
(
param
.
getId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
BigDecimal
oldPendingOrderFreight
=
orderGoods
.
getPendingOrderFreight
().
divide
(
new
BigDecimal
(
"100"
));
orderGoodsDao
.
updatePendingOrderFreightById
(
param
.
getId
(),
param
.
getPendingOrderFreight
());
orderGoodsDao
.
updatePendingOrderFreightById
(
param
.
getId
(),
param
.
getPendingOrderFreight
());
BigDecimal
newPendingOrderFreight
=
param
.
getPendingOrderFreight
().
divide
(
new
BigDecimal
(
"100"
));
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
//记录货单调价日志
orderGoodsLogService
.
saveLog
(
orderGoods
.
getOrderGoodsNo
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
(),
OrderGoodsLogsEnum
.
Type
.
ADJUST_PRICE
.
getName
(),
String
.
format
(
"调价前%s元,调价后%s元"
,
oldPendingOrderFreight
,
newPendingOrderFreight
)
);
orderGoodsLogService
.
saveLog
(
orderGoods
.
getOrderGoodsNo
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
(),
OrderGoodsLogsEnum
.
Type
.
ADJUST_PRICE
.
getName
(),
String
.
format
(
"调价前%s元,调价后%s元"
,
oldPendingOrderFreight
,
newPendingOrderFreight
)
);
}
@Override
public
Boolean
updateOrderGoodsStopFlag
(
String
orderNo
,
Integer
stopFlag
)
{
return
orderGoodsDao
.
updateStopFlagByOrderNo
(
orderNo
,
stopFlag
);
public
Boolean
updateOrderGoodsStopFlag
(
String
orderNo
,
Integer
stopFlag
)
{
return
orderGoodsDao
.
updateStopFlagByOrderNo
(
orderNo
,
stopFlag
);
}
@Override
public
String
orderGoodsCancelStyle
(
String
orderGoodsNo
)
{
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
selectListByOrderGoodsNo
(
orderGoodsNo
);
if
(
CollectionUtils
.
isNotEmpty
(
orderChildren
))
{
return
"selectTruck"
;
}
else
{
return
"onlyRemark"
;
}
}
@Override
public
void
orderGoodsCancel
(
String
orderGoodsNo
)
{
Optional
<
OrderGoods
>
optional
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderGoodsNo
);
if
(!
optional
.
isPresent
())
{
return
;
}
OrderGoods
orderGoods
=
optional
.
get
();
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
selectResidueWeight
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
BigDecimal
sum
=
BigDecimal
.
ZERO
;
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
sum
=
orderChildList
.
stream
().
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
}
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
BigDecimal
residueWeight
=
orderGoods
.
getResidueTransportWeight
().
add
(
sum
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_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
(
residueWeight
);
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
orderFeign
.
rollbackOrderWeight
(
param
);
}
}
performance-web/src/test/java/com/clx/performance/JobTest.java
浏览文件 @
3cf27bb4
package
com
.
clx
.
performance
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.vo.feign.OrderOwnTruckVo
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderGoodsStatusLazyComponent
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.param.mq.OrderCancelMqParam
;
import
com.clx.performance.service.OrderCancelService
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
...
...
@@ -46,11 +51,19 @@ public class JobTest {
@Test
public
void
test1
()
{
OrderCancelMqParam
mqParam
=
new
OrderCancelMqParam
();
mqParam
.
setType
(
"2"
);
mqParam
.
setOrderNo
(
"123"
);
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
mqParam
).
toString
().
getBytes
()).
build
();
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_CANCEL_EXCHANGE
,
RabbitKeyConstants
.
ORDER_CANCEL_ROUTE_KEY
,
message
);
//CX2023092600223 平台已承接的订单,没有产生货单
//CX2023101600386 truckDemand 类型是2,且有货单,有运单, 没有未到达货源地的运单
//PT2023092600207 类型都是1,且有运单
//orderCancelService.ownerCancelOrderPre("PT2023102
600466
");
orderCancelService
.
ownerCancelOrder
(
"PT2023102600466"
);
//orderCancelService.ownerCancelOrderPre("PT2023102
700469
");
//
orderCancelService.ownerCancelOrder("PT2023102600466");
System
.
out
.
println
();
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论