Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
86c1543e
提交
86c1543e
authored
10月 30, 2023
作者:
liuhaiquan
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/v5.7_break_contract_reverse_20231020' into…
Merge remote-tracking branch 'origin/v5.7_break_contract_reverse_20231020' into v5.7_break_contract_reverse_20231020
上级
65c822cc
5e52ae6b
隐藏空白字符变更
内嵌
并排
正在显示
18 个修改的文件
包含
908 行增加
和
483 行删除
+908
-483
BreakContractSettlementOwnerEnum.java
...x/performance/enums/BreakContractSettlementOwnerEnum.java
+1
-1
PerformanceFeign.java
...main/java/com/clx/performance/feign/PerformanceFeign.java
+2
-2
OrderCancelFeignParam.java
...a/com/clx/performance/param/pc/OrderCancelFeignParam.java
+18
-0
OrderCancelParam.java
...n/java/com/clx/performance/param/pc/OrderCancelParam.java
+7
-5
PageCarrierBreakContractSettlementDriverDetailParam.java
.../PageCarrierBreakContractSettlementDriverDetailParam.java
+3
-0
PageCarrierBreakContractSettlementOwnerDetailParam.java
...r/PageCarrierBreakContractSettlementOwnerDetailParam.java
+3
-0
PageCarrierBreakContractSettlementOwnerParam.java
...carrier/PageCarrierBreakContractSettlementOwnerParam.java
+1
-1
OrderCancelFeignController.java
...formance/controller/feign/OrderCancelFeignController.java
+7
-2
OrderCancelController.java
.../clx/performance/controller/pc/OrderCancelController.java
+9
-10
BreakContractSettlementDriverDetailDaoImpl.java
...kcontract/BreakContractSettlementDriverDetailDaoImpl.java
+1
-0
BreakContractSettlementOwnerDaoImpl.java
...pl/breakcontract/BreakContractSettlementOwnerDaoImpl.java
+2
-1
BreakContractSettlementOwnerDetailDaoImpl.java
...akcontract/BreakContractSettlementOwnerDetailDaoImpl.java
+1
-0
OrderCancelHandler.java
...java/com/clx/performance/listener/OrderCancelHandler.java
+7
-16
OrderCancelService.java
.../java/com/clx/performance/service/OrderCancelService.java
+12
-4
OrderCancelServiceImpl.java
.../clx/performance/service/impl/OrderCancelServiceImpl.java
+829
-436
BreakContractOwnerRecordServiceImpl.java
...pl/breakcontract/BreakContractOwnerRecordServiceImpl.java
+1
-1
BreakContractSettlementOwnerServiceImpl.java
...reakcontract/BreakContractSettlementOwnerServiceImpl.java
+3
-3
JobTest.java
...rmance-web/src/test/java/com/clx/performance/JobTest.java
+1
-1
没有找到文件。
performance-api/src/main/java/com/clx/performance/enums/BreakContractSettlementOwnerEnum.java
浏览文件 @
86c1543e
...
...
@@ -13,7 +13,7 @@ public enum BreakContractSettlementOwnerEnum {
@Getter
@AllArgsConstructor
public
enum
Status
{
TO_BE_
LOCKED
(
10
,
"待锁定
"
),
TO_BE_
ACCOUNT
(
10
,
"待对账
"
),
OWNER_TO_BE_CONFIRMED
(
20
,
"待货主确认"
),
SHIPPER_TO_PAYMENT
(
30
,
"待货主付款"
),
PLATFORM_CONFIRMED_OWNER_PAYMENT
(
40
,
"待平台确认付款"
),
...
...
performance-api/src/main/java/com/clx/performance/feign/PerformanceFeign.java
浏览文件 @
86c1543e
package
com
.
clx
.
performance
.
feign
;
import
com.clx.performance.param.pc.OrderCancelParam
;
import
com.clx.performance.param.pc.OrderCancel
Feign
Param
;
import
com.clx.performance.vo.feign.OrderGoodsFeignVO
;
import
com.msl.common.result.Result
;
import
org.springframework.cloud.openfeign.FeignClient
;
...
...
@@ -54,7 +54,7 @@ public interface PerformanceFeign {
@PostMapping
(
value
=
{
"clx-performance/feign/order/orderCancel"
})
Result
<
Object
>
orderCancel
(
@RequestBody
OrderCancelParam
param
);
Result
<
Object
>
orderCancel
(
@RequestBody
OrderCancel
Feign
Param
param
);
/**
...
...
performance-api/src/main/java/com/clx/performance/param/pc/OrderCancelFeignParam.java
0 → 100644
浏览文件 @
86c1543e
package
com
.
clx
.
performance
.
param
.
pc
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
javax.validation.constraints.NotNull
;
@Getter
@Setter
public
class
OrderCancelFeignParam
{
@NotNull
(
message
=
"订单编号不能为空"
)
@ApiModelProperty
(
"订单编号"
)
private
String
orderNo
;
}
performance-api/src/main/java/com/clx/performance/param/pc/OrderCancelParam.java
浏览文件 @
86c1543e
package
com
.
clx
.
performance
.
param
.
pc
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
@Getter
@Setter
@Data
public
class
OrderCancelParam
{
@NotNull
(
message
=
"订单编号不能为空"
)
@ApiModelProperty
(
"订单编号"
)
private
String
orderNo
;
@ApiModelProperty
(
"1:弹窗1 2:弹窗取消未拉运吨数 3:取消未拉运+已到达货源地之前的吨数"
)
private
Integer
cancelType
;
@ApiModelProperty
(
"1:平台 2:货主"
)
private
Integer
createByType
;
}
performance-api/src/main/java/com/clx/performance/param/pc/breakcontract/carrier/PageCarrierBreakContractSettlementDriverDetailParam.java
浏览文件 @
86c1543e
...
...
@@ -20,6 +20,9 @@ public class PageCarrierBreakContractSettlementDriverDetailParam extends PagePar
@ApiModelProperty
(
value
=
"车主编号"
,
example
=
"201457878"
)
private
Long
truckOwnUserNo
;
@ApiModelProperty
(
"车主名称"
)
private
String
truckOwnName
;
@ApiModelProperty
(
value
=
"违约方类型:1平台 2货主 3车主"
,
example
=
"1"
)
private
Integer
breakContractPartyType
;
...
...
performance-api/src/main/java/com/clx/performance/param/pc/breakcontract/carrier/PageCarrierBreakContractSettlementOwnerDetailParam.java
浏览文件 @
86c1543e
...
...
@@ -20,6 +20,9 @@ public class PageCarrierBreakContractSettlementOwnerDetailParam extends PagePara
@ApiModelProperty
(
value
=
"货主编号"
,
example
=
"201457878"
)
private
Long
ownerUserNo
;
@ApiModelProperty
(
"货主名称"
)
private
String
ownerName
;
@ApiModelProperty
(
value
=
"违约方类型:1平台 2货主 3车主"
,
example
=
"1"
)
private
Integer
breakContractPartyType
;
...
...
performance-api/src/main/java/com/clx/performance/param/pc/breakcontract/carrier/PageCarrierBreakContractSettlementOwnerParam.java
浏览文件 @
86c1543e
...
...
@@ -28,7 +28,7 @@ public class PageCarrierBreakContractSettlementOwnerParam extends PageParam {
@ApiModelProperty
(
value
=
"违约方类型:1平台 2货主 3车主"
,
example
=
"1"
)
private
Integer
breakContractPartyType
;
@ApiModelProperty
(
value
=
"状态:10-待
锁定
,20-待货主确认,30-待货主付款,40-待平台确认付款,50-待平台付款,60-待货主确认付款,70-已完结,80-已取消"
,
example
=
"1"
)
@ApiModelProperty
(
value
=
"状态:10-待
对账
,20-待货主确认,30-待货主付款,40-待平台确认付款,50-待平台付款,60-待货主确认付款,70-已完结,80-已取消"
,
example
=
"1"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"开始时间"
,
example
=
"2012-01-01 00:00:00"
)
...
...
performance-web/src/main/java/com/clx/performance/controller/feign/OrderCancelFeignController.java
浏览文件 @
86c1543e
package
com
.
clx
.
performance
.
controller
.
feign
;
import
com.clx.performance.param.pc.OrderCancelFeignParam
;
import
com.clx.performance.param.pc.OrderCancelParam
;
import
com.clx.performance.service.OrderCancelService
;
import
com.msl.common.result.Result
;
...
...
@@ -27,8 +28,12 @@ public class OrderCancelFeignController {
@ApiOperation
(
value
=
"货主端订单取消"
,
notes
=
"<br>By:胡宇帆"
)
@PostMapping
(
"/orderCancel"
)
public
Result
<
Object
>
orderCancel
(
@RequestBody
OrderCancelParam
param
)
{
orderCancelService
.
ownerCancelOrderPre
(
param
.
getOrderNo
());
public
Result
<
Object
>
orderCancel
(
@RequestBody
OrderCancelFeignParam
param
)
{
OrderCancelParam
cancelParam
=
new
OrderCancelParam
();
cancelParam
.
setOrderNo
(
param
.
getOrderNo
());
cancelParam
.
setCancelType
(
3
);
cancelParam
.
setCreateByType
(
1
);
orderCancelService
.
platformCancelOrderPrePC
(
cancelParam
);
return
Result
.
ok
();
}
}
performance-web/src/main/java/com/clx/performance/controller/pc/OrderCancelController.java
浏览文件 @
86c1543e
package
com
.
clx
.
performance
.
controller
.
pc
;
import
com.clx.performance.param.pc.OrderCancelParam
;
import
com.clx.performance.service.OrderCancelService
;
import
com.clx.performance.vo.pc.OrderGoodsVO
;
import
com.msl.common.convertor.aspect.UnitCovert
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.
Ge
tMapping
;
import
org.springframework.web.bind.annotation.
Pos
tMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -19,23 +18,23 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping
(
value
=
"/pc/order/"
)
@Validated
@Api
(
tags
=
"PC-订单取消
取消
"
)
@Api
(
tags
=
"PC-订单取消"
)
@AllArgsConstructor
public
class
OrderCancelController
{
private
final
OrderCancelService
orderCancelService
;
@ApiOperation
(
value
=
"承运端取消订单"
,
notes
=
"<br>By:胡宇帆"
)
@
Ge
tMapping
(
"/platformCancelOrderPre"
)
public
Result
<
Object
>
platformCancelOrderPre
(
@RequestParam
String
orderNo
)
{
orderCancelService
.
platformCancelOrderPre
(
orderNo
);
@
Pos
tMapping
(
"/platformCancelOrderPre"
)
public
Result
<
Object
>
platformCancelOrderPre
(
@RequestParam
OrderCancelParam
param
)
{
orderCancelService
.
platformCancelOrderPre
PC
(
param
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"货主端取消订单"
,
notes
=
"<br>By:胡宇帆"
)
@
Ge
tMapping
(
"/ownCancelOrderPre"
)
public
Result
<
Object
>
ownCancelOrderPre
(
@RequestParam
String
orderNo
)
{
orderCancelService
.
ownerCancelOrderPre
(
orderNo
);
@
Pos
tMapping
(
"/ownCancelOrderPre"
)
public
Result
<
Object
>
ownCancelOrderPre
(
@RequestParam
OrderCancelParam
param
)
{
orderCancelService
.
ownerCancelOrderPre
PC
(
param
);
return
Result
.
ok
();
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/breakcontract/BreakContractSettlementDriverDetailDaoImpl.java
浏览文件 @
86c1543e
...
...
@@ -28,6 +28,7 @@ public class BreakContractSettlementDriverDetailDaoImpl extends BaseDaoImpl<Brea
LambdaQueryWrapper
<
BreakContractSettlementDriverDetail
>
query
=
new
LambdaQueryWrapper
<>();
query
.
eq
(
StringUtils
.
isNotBlank
(
param
.
getChildNo
()),
BreakContractSettlementDriverDetail
::
getChildNo
,
param
.
getChildNo
());
query
.
eq
(
Objects
.
nonNull
(
param
.
getTruckOwnUserNo
()),
BreakContractSettlementDriverDetail
::
getTruckOwnUserNo
,
param
.
getTruckOwnUserNo
());
query
.
eq
(
StringUtils
.
isNotBlank
(
param
.
getTruckOwnName
()),
BreakContractSettlementDriverDetail
::
getTruckOwnName
,
param
.
getTruckOwnName
());
query
.
eq
(
Objects
.
nonNull
(
param
.
getBreakContractPartyType
()),
BreakContractSettlementDriverDetail
::
getBreakContractPartyType
,
param
.
getBreakContractPartyType
());
query
.
orderByDesc
(
BreakContractSettlementDriverDetail:
:
getId
);
return
baseMapper
.
selectPage
(
Page
.
of
(
param
.
getPage
(),
param
.
getPageSize
()),
query
);
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/breakcontract/BreakContractSettlementOwnerDaoImpl.java
浏览文件 @
86c1543e
...
...
@@ -30,6 +30,7 @@ public class BreakContractSettlementOwnerDaoImpl extends BaseDaoImpl<BreakContra
LambdaQueryWrapper
<
BreakContractSettlementOwner
>
query
=
new
LambdaQueryWrapper
<>();
query
.
eq
(
StringUtils
.
isNotBlank
(
param
.
getOrderNo
()),
BreakContractSettlementOwner
::
getOrderNo
,
param
.
getOrderNo
());
query
.
eq
(
Objects
.
nonNull
(
param
.
getOwnerUserNo
()),
BreakContractSettlementOwner
::
getOwnerUserNo
,
param
.
getOwnerUserNo
());
query
.
eq
(
Objects
.
nonNull
(
param
.
getStatus
()),
BreakContractSettlementOwner
::
getStatus
,
param
.
getStatus
());
query
.
eq
(
StringUtils
.
isNotBlank
(
param
.
getOwnerName
()),
BreakContractSettlementOwner
::
getOwnerName
,
param
.
getOwnerName
());
query
.
eq
(
StringUtils
.
isNotBlank
(
param
.
getSettlementNo
()),
BreakContractSettlementOwner
::
getSettlementNo
,
param
.
getSettlementNo
());
query
.
eq
(
Objects
.
nonNull
(
param
.
getBreakContractPartyType
()),
BreakContractSettlementOwner
::
getBreakContractPartyType
,
param
.
getBreakContractPartyType
());
...
...
@@ -43,7 +44,7 @@ public class BreakContractSettlementOwnerDaoImpl extends BaseDaoImpl<BreakContra
public
boolean
uploadInvoiceImg
(
Integer
id
,
String
invoiceImg
)
{
return
update
(
lUdWrapper
()
.
eq
(
BreakContractSettlementOwner:
:
getId
,
id
)
.
eq
(
BreakContractSettlementOwner:
:
getStatus
,
BreakContractSettlementOwnerEnum
.
Status
.
TO_BE_
LOCKED
.
getCode
())
.
eq
(
BreakContractSettlementOwner:
:
getStatus
,
BreakContractSettlementOwnerEnum
.
Status
.
TO_BE_
ACCOUNT
.
getCode
())
.
set
(
BreakContractSettlementOwner:
:
getInvoiceImg
,
invoiceImg
)
.
set
(
BreakContractSettlementOwner:
:
getStatus
,
BreakContractSettlementOwnerEnum
.
Status
.
OWNER_TO_BE_CONFIRMED
.
getCode
())
);
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/breakcontract/BreakContractSettlementOwnerDetailDaoImpl.java
浏览文件 @
86c1543e
...
...
@@ -26,6 +26,7 @@ public class BreakContractSettlementOwnerDetailDaoImpl extends BaseDaoImpl<Break
LambdaQueryWrapper
<
BreakContractSettlementOwnerDetail
>
query
=
new
LambdaQueryWrapper
<>();
query
.
eq
(
StringUtils
.
isNotBlank
(
param
.
getOrderNo
()),
BreakContractSettlementOwnerDetail
::
getOrderNo
,
param
.
getOrderNo
());
query
.
eq
(
Objects
.
nonNull
(
param
.
getOwnerUserNo
()),
BreakContractSettlementOwnerDetail
::
getOwnerUserNo
,
param
.
getOwnerUserNo
());
query
.
eq
(
StringUtils
.
isNotBlank
(
param
.
getOwnerName
()),
BreakContractSettlementOwnerDetail
::
getOwnerName
,
param
.
getOwnerName
());
query
.
eq
(
Objects
.
nonNull
(
param
.
getBreakContractPartyType
()),
BreakContractSettlementOwnerDetail
::
getBreakContractPartyType
,
param
.
getBreakContractPartyType
());
query
.
orderByDesc
(
BreakContractSettlementOwnerDetail:
:
getId
);
return
baseMapper
.
selectPage
(
Page
.
of
(
param
.
getPage
(),
param
.
getPageSize
()),
query
);
...
...
performance-web/src/main/java/com/clx/performance/listener/OrderCancelHandler.java
浏览文件 @
86c1543e
package
com
.
clx
.
performance
.
listener
;
import
cn.hutool.core.util.ObjectUtil
;
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.param.pc.OrderCancelParam
;
import
com.clx.performance.service.OrderCancelService
;
import
com.msl.common.base.Optional
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
...
...
@@ -28,16 +23,12 @@ public class OrderCancelHandler {
@RabbitListener
(
queues
=
RabbitKeyConstants
.
ORDER_CANCEL_QUEUE
)
public
void
onMessage
(
String
message
)
{
log
.
info
(
"处理订单取消监听器执行,订单No为{}"
,
message
);
OrderCancel
MqParam
param
=
JSONUtil
.
toBean
(
message
,
OrderCancelMq
Param
.
class
);
if
(
StringUtils
.
equals
(
param
.
getType
(),
"1"
))
{
orderCancelService
.
platformCancelOrder
(
param
.
getOrderNo
()
);
OrderCancel
Param
param
=
JSONUtil
.
toBean
(
message
,
OrderCancel
Param
.
class
);
if
(
ObjectUtil
.
equals
(
param
.
getCancelType
(),
1
))
{
orderCancelService
.
ownerCancelOrderPrePCMQ
(
param
);
}
else
{
orderCancelService
.
ownerCancelOrder
(
param
.
getOrderNo
()
);
orderCancelService
.
ownerCancelOrder
PrePCMQ
(
param
);
}
return
;
// if (StringUtils.isBlank(message)) {
// return;
// }
// orderCancelService.ownerCancelOrder(message);
}
}
performance-web/src/main/java/com/clx/performance/service/OrderCancelService.java
浏览文件 @
86c1543e
package
com
.
clx
.
performance
.
service
;
import
com.clx.performance.param.pc.OrderCancelParam
;
public
interface
OrderCancelService
{
void
platformCancelOrderPre
(
String
orderNo
);
// void platformCancelOrderPre(String orderNo);
//
// void platformCancelOrder(String orderNo);
//
// void ownerCancelOrderPre(String orderNo);
//
// void ownerCancelOrder(String orderNo);
void
platformCancelOrder
(
String
orderNo
);
void
ownerCancelOrderPrePC
(
OrderCancelParam
param
);
void
ownerCancelOrderPre
(
String
orderNo
);
void
platformCancelOrderPrePC
(
OrderCancelParam
param
);
void
ownerCancelOrder
(
String
orderNo
);
void
ownerCancelOrder
PrePCMQ
(
OrderCancelParam
param
);
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderCancelServiceImpl.java
浏览文件 @
86c1543e
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
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.OrderGoodsStatusEnum
;
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.param.
mq.OrderCancelMq
Param
;
import
com.clx.performance.param.
pc.OrderCancel
Param
;
import
com.clx.performance.service.OrderCancelService
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.result.Result
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -47,508 +47,900 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private
final
RabbitTemplate
rabbitTemplate
;
//
// @Override
// @Transactional(rollbackFor = Exception.class)
// public void platformCancelOrderPre(String orderNo) {
//// FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
//// BigDecimal orderTransportWeight = new BigDecimal(orderInfoFeign.getTransportWeight());
//
// 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("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, 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());
// 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());
// 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.selectOrderChildListByOrderGoodsNoAndStatusGE(orderGoods.getOrderGoodsNo(), OrderChildEnum.Status.ARRIVE_SEND.getCode());
// if (CollectionUtil.isNotEmpty(orderChildrenListComplete)) {
// //没有余量,需要判断已完成的运单量是不等于货单的全部提取量,等于则是已完成,否则是已完结
// BigDecimal reduce = orderChildrenListComplete.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());
// }
// } else {
// //虽然没有余量,但是可以取消的运单都是未到达货源地的
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.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("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
// );
//
// }
//
// @Override
// @Transactional(rollbackFor = Exception.class)
// public void ownerCancelOrder(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.OWNER_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<>();
// vehicleUsageMap.put(1, BigDecimal.ZERO);
// vehicleUsageMap.put(2, BigDecimal.ZERO);
// 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
platformCancelOrderPre
(
String
orderNo
)
{
// FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
// BigDecimal orderTransportWeight = new BigDecimal(orderInfoFeign.getTransportWeight());
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
(
"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
,
null
);
public
void
ownerCancelOrderPrePC
(
OrderCancelParam
param
)
{
String
orderNo
=
param
.
getOrderNo
();
List
<
OrderGoods
>
orderGoodsList
=
null
;
Integer
orderStatusCode
=
OrderEnum
.
Status
.
CANCELED
.
getCode
();
switch
(
param
.
getCancelType
())
{
case
1
:
//单纯取消订单
if
(
CollectionUtil
.
isNotEmpty
(
orderChildDao
.
getOrderChildByOrderNo
(
orderNo
)))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前订单已发生变化,请重新选择取消方式"
);
}
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
());
if
(!
result
.
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
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
);
}
break
;
case
2
:
//取消未拉运吨数的货单
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
()).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
orderGoods
.
getExtractWeight
())
==
0
)
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
orderStatusCode
=
OrderEnum
.
Status
.
COMPLETED
.
getCode
();
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
else
{
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
orderStatusCode
).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
orderChildrenList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
))
;
}
break
;
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
List
<
OrderChild
>
orderChildren
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
());
case
3
:
//取消未拉运+未到达货源地吨数
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
if
(
CollectionUtil
.
isEmpty
(
orderChildren
))
{
//没有运单,直接是取消
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
{
//货单还有余量,是已完结
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前订单已发生变化,请重新选择取消方式"
);
}
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
()).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
List
<
Integer
>
ids
=
orderChildren
.
stream
().
map
(
OrderChild:
:
getId
).
collect
(
Collectors
.
toList
());
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
ids
);
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
orderChildren
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
if
(
CollectionUtil
.
isEmpty
(
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
())))
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
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
());
}
BigDecimal
reduce
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
())
.
stream
().
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
if
(
orderGoods
.
getExtractWeight
().
compareTo
(
orderGoods
.
getResidueTransportWeight
().
add
(
reduce
))
==
0
)
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
orderStatusCode
=
OrderEnum
.
Status
.
COMPLETED
.
getCode
();
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
}
orderGoodsDao
.
updateEntityByKey
(
update
);
}
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
orderStatusCode
).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
orderGoodsDao
.
updateEntityByKey
(
update
);
}
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
COMPLETED
.
getCode
());
if
(!
result
.
succeed
())
{
throw
new
RuntimeException
(
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
break
;
default
:
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"参数有误"
);
}
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
();
log
.
info
(
"执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}"
,
orderNo
);
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
param
).
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
);
public
void
platformCancelOrderPrePC
(
OrderCancelParam
param
)
{
String
orderNo
=
param
.
getOrderNo
();
List
<
OrderGoods
>
orderGoodsList
=
null
;
Integer
orderStatusCode
=
OrderEnum
.
Status
.
CANCELED
.
getCode
();
switch
(
param
.
getCancelType
())
{
case
1
:
//单纯取消订单
if
(
CollectionUtil
.
isNotEmpty
(
orderChildDao
.
getOrderChildByOrderNo
(
orderNo
)))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前订单已发生变化,请重新选择取消方式"
);
}
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
)));
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
());
if
(!
result
.
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
//TODO 补充批量更新接口 关闭货单状态 注意判断货单是已完结还是已完成
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
break
;
case
2
:
//取消未拉运吨数的货单
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
()).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
}
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());
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
orderGoods
.
getExtractWeight
())
==
0
)
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
orderStatusCode
=
OrderEnum
.
Status
.
COMPLETED
.
getCode
();
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
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
);
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
orderStatusCode
).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
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
);
}
break
;
case
3
:
//取消未拉运+未到达货源地吨数
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
if
(
CollectionUtil
.
isEmpty
(
orderChildren
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前订单已发生变化,请重新选择取消方式"
);
}
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
()).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
List
<
Integer
>
ids
=
orderChildren
.
stream
().
map
(
OrderChild:
:
getId
).
collect
(
Collectors
.
toList
());
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
ids
);
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
orderChildren
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
}
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());
if
(
CollectionUtil
.
isEmpty
(
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
())))
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
BigDecimal
reduce
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
())
.
stream
().
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
if
(
orderGoods
.
getExtractWeight
().
compareTo
(
orderGoods
.
getResidueTransportWeight
().
add
(
reduce
))
==
0
)
{
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
else
{
orderStatusCode
=
OrderEnum
.
Status
.
COMPLETED
.
getCode
();
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
);
}
if
(!
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
orderStatusCode
).
succeed
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
}
break
;
default
:
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"参数有误"
);
@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
());
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
.
selectOrderChildListByOrderGoodsNoAndStatusGE
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
if
(
CollectionUtil
.
isNotEmpty
(
orderChildrenListComplete
))
{
//没有余量,需要判断已完成的运单量是不等于货单的全部提取量,等于则是已完成,否则是已完结
BigDecimal
reduce
=
orderChildrenListComplete
.
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
());
}
}
else
{
//虽然没有余量,但是可以取消的运单都是未到达货源地的
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
}
log
.
info
(
"执行承运端订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}"
,
orderNo
);
}
}
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
(
"2"
);
mqParam
.
setOrderNo
(
orderNo
);
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
mqParam
).
toString
().
getBytes
()).
build
();
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
param
).
toString
().
getBytes
()).
build
();
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_CANCEL_EXCHANGE
,
RabbitKeyConstants
.
ORDER_CANCEL_ROUTE_KEY
,
message
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
ownerCancelOrder
(
String
orderNo
)
{
log
.
info
(
"开始执行订单取消吨数回填"
);
FeignOrderVO
orderInfoFeignVO
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
public
void
ownerCancelOrderPrePCMQ
(
OrderCancelParam
param
)
{
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
.
OWNER_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
);
Map
<
Integer
,
BigDecimal
>
vehicleUsageMap
=
new
HashMap
<>();
vehicleUsageMap
.
put
(
1
,
BigDecimal
.
ZERO
);
vehicleUsageMap
.
put
(
2
,
BigDecimal
.
ZERO
);
RollbackOrderWeightParam
rollbackOrderWeightParam
=
new
RollbackOrderWeightParam
();
String
orderNo
=
param
.
getOrderNo
();
FeignOrderVO
orderInfoFeign
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
Integer
truckDemand
=
orderInfoFeign
.
getTruckDemand
();
List
<
OrderGoods
>
orderGoodsList
=
null
;
switch
(
param
.
getCancelType
())
{
case
1
:
//单纯取消订单
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
else
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
orderGoodsDao
.
updateEntityByKey
(
update
);
}
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
);
//归还吨数
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
}
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
else
{
BigDecimal
platformResidueSum
=
vehicleUsageMap
.
get
(
1
);
BigDecimal
ownResidueSum
=
vehicleUsageMap
.
get
(
2
);
BigDecimal
residueSum
=
platformResidueSum
.
add
(
ownResidueSum
);
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
rollbackOrderWeightParam
.
setResidueWeight
(
residueSum
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
}
}
Integer
truckDemand
=
orderInfoFeignVO
.
getTruckDemand
();
BigDecimal
residueWeight
=
truckDemandMap
.
get
(
truckDemand
);
if
(
residueWeight
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
log
.
info
(
"当前订单对应的货单无需吨数回填,订单编号{}"
,
orderNo
);
orderFeign
.
rollbackOrderWeight
(
rollbackOrderWeightParam
);
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
<>();
vehicleUsageMap
.
put
(
1
,
BigDecimal
.
ZERO
);
vehicleUsageMap
.
put
(
2
,
BigDecimal
.
ZERO
);
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
);
case
2
:
//取消未拉运吨数的货单
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
else
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
orderGoodsDao
.
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
));
//归还吨数
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
}
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
else
{
BigDecimal
platformResidueSum
=
vehicleUsageMap
.
get
(
1
);
BigDecimal
ownResidueSum
=
vehicleUsageMap
.
get
(
2
);
BigDecimal
residueSum
=
platformResidueSum
.
add
(
ownResidueSum
);
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
rollbackOrderWeightParam
.
setResidueWeight
(
residueSum
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
}
orderFeign
.
rollbackOrderWeight
(
rollbackOrderWeightParam
);
return
;
for
(
Map
.
Entry
<
String
,
List
<
OrderGoods
>>
entry
:
orderGoodsMap
.
entrySet
())
{
String
orderGoodsNo
=
entry
.
getKey
();
OrderGoods
orderGoods
=
entry
.
getValue
().
get
(
0
);
case
3
:
//取消未拉运+未到达货源地吨数
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
selectResidueWeight
(
orderNo
,
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
orderChildren
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
if
(
CollectionUtil
.
isNotEmpty
(
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
())))
{
BigDecimal
childSum
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
()).
stream
()
.
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
update
.
setAlreadyTransportWeight
(
update
.
getAlreadyTransportWeight
()
.
subtract
(
childSum
)
);
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
childSum
));
}
BigDecimal
sum
=
BigDecimal
.
ZERO
;
if
(
CollectionUtil
.
isNotEmpty
(
orderChildMap
.
get
(
orderGoodsNo
)))
{
sum
=
orderChildMap
.
get
(
orderGoodsNo
).
stream
()
.
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
else
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
vehicleUsageMap
.
put
(
orderGoods
.
getVehicleUsage
(),
vehicleUsageMap
.
get
(
orderGoods
.
getVehicleUsage
())
.
add
(
orderGoods
.
getResidueTransportWeight
()));
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
if
(
CollectionUtil
.
isNotEmpty
(
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
())))
{
BigDecimal
childSum
=
orderChildMap
.
get
(
orderGoods
.
getOrderGoodsNo
()).
stream
()
.
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
update
.
setAlreadyTransportWeight
(
update
.
getAlreadyTransportWeight
()
.
subtract
(
childSum
)
);
vehicleUsageMap
.
put
(
orderGoods
.
getTruckDemand
(),
vehicleUsageMap
.
get
(
orderGoods
.
getTruckDemand
())
.
add
(
childSum
));
}
orderGoodsDao
.
updateEntityByKey
(
update
);
}
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
);
//归还吨数
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
}
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
rollbackOrderWeightParam
.
setResidueWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
truckDemandMap
.
get
(
truckDemand
));
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
else
{
BigDecimal
platformResidueSum
=
vehicleUsageMap
.
get
(
1
);
BigDecimal
ownResidueSum
=
vehicleUsageMap
.
get
(
2
);
BigDecimal
residueSum
=
platformResidueSum
.
add
(
ownResidueSum
);
rollbackOrderWeightParam
.
setOrderNo
(
orderNo
);
rollbackOrderWeightParam
.
setResidueWeight
(
residueSum
);
rollbackOrderWeightParam
.
setPlatformResidueCarryWeight
(
platformResidueSum
);
rollbackOrderWeightParam
.
setOwnResidueCarryWeight
(
ownResidueSum
);
}
}
//归还吨数
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
);
}
orderFeign
.
rollbackOrderWeight
(
rollbackOrderWeightParam
);
return
;
}
}
}
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/service/impl/breakcontract/BreakContractOwnerRecordServiceImpl.java
浏览文件 @
86c1543e
...
...
@@ -100,7 +100,7 @@ public class BreakContractOwnerRecordServiceImpl implements BreakContractOwnerR
//货主违约结算单
BreakContractSettlementOwner
breakOwner
=
breakContractSettlementOwnerStruct
.
convert
(
breakOwnerDetail
);
breakOwner
.
setStatus
(
BreakContractSettlementOwnerEnum
.
Status
.
TO_BE_
LOCKED
.
getCode
());
breakOwner
.
setStatus
(
BreakContractSettlementOwnerEnum
.
Status
.
TO_BE_
ACCOUNT
.
getCode
());
record
.
setSettlementNo
(
settlementNo
);
//保存违约记录
...
...
performance-web/src/main/java/com/clx/performance/service/impl/breakcontract/BreakContractSettlementOwnerServiceImpl.java
浏览文件 @
86c1543e
...
...
@@ -131,7 +131,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
public
void
uploadInvoiceImg
(
CarrierUploadInvoiceImgParam
param
)
{
BreakContractSettlementOwner
settlementOwner
=
breakContractSettlementOwnerDao
.
getEntityByKey
(
param
.
getId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
if
(!
Objects
.
equals
(
settlementOwner
.
getStatus
(),
BreakContractSettlementOwnerEnum
.
Status
.
TO_BE_
LOCKED
.
getCode
())){
if
(!
Objects
.
equals
(
settlementOwner
.
getStatus
(),
BreakContractSettlementOwnerEnum
.
Status
.
TO_BE_
ACCOUNT
.
getCode
())){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
STATUS_CHANGED
);
}
breakContractSettlementOwnerDao
.
uploadInvoiceImg
(
param
.
getId
(),
param
.
getInvoiceImg
());
...
...
@@ -147,11 +147,11 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updateCancelSettlement
(
CarrierCancelSettlementParam
param
)
{
BreakContractSettlementOwner
settlementOwner
=
breakContractSettlementOwnerDao
.
getEntityByKey
(
param
.
getId
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
if
(!
Objects
.
equals
(
settlementOwner
.
getStatus
(),
BreakContractSettlementOwnerEnum
.
Status
.
TO_BE_
LOCKED
.
getCode
())){
if
(!
Objects
.
equals
(
settlementOwner
.
getStatus
(),
BreakContractSettlementOwnerEnum
.
Status
.
TO_BE_
ACCOUNT
.
getCode
())){
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
STATUS_CHANGED
);
}
breakContractSettlementOwnerDao
.
updateStatus
(
param
.
getId
(),
BreakContractSettlementOwnerEnum
.
Status
.
TO_BE_
LOCKED
.
getCode
(),
BreakContractSettlementOwnerEnum
.
Status
.
CANCEL
.
getCode
());
breakContractSettlementOwnerDao
.
updateStatus
(
param
.
getId
(),
BreakContractSettlementOwnerEnum
.
Status
.
TO_BE_
ACCOUNT
.
getCode
(),
BreakContractSettlementOwnerEnum
.
Status
.
CANCEL
.
getCode
());
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
//保存结算单日志----取消结算单
...
...
performance-web/src/test/java/com/clx/performance/JobTest.java
浏览文件 @
86c1543e
...
...
@@ -60,7 +60,7 @@ public class JobTest {
// RabbitKeyConstants.ORDER_CANCEL_EXCHANGE, RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY, message
// );
orderCancelService
.
ownerCancelOrderPre
(
"PT2023102700473"
);
//
orderCancelService.ownerCancelOrderPre("PT2023102700473");
//orderCancelService.ownerCancelOrder("PT2023102600466");
System
.
out
.
println
();
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论