Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
c6ca98ae
提交
c6ca98ae
authored
10月 26, 2023
作者:
huyufan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改BUG
上级
d37b0555
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
117 行增加
和
42 行删除
+117
-42
OrderCancelServiceImpl.java
.../clx/performance/service/impl/OrderCancelServiceImpl.java
+117
-42
没有找到文件。
performance-web/src/main/java/com/clx/performance/service/impl/OrderCancelServiceImpl.java
浏览文件 @
c6ca98ae
...
...
@@ -6,6 +6,7 @@ import com.clx.order.feign.OrderFeign;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.OrderGoodsStatusEnum
;
import
com.clx.performance.enums.TruckDemandEnum
;
...
...
@@ -13,6 +14,7 @@ import com.clx.performance.model.OrderChild;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.service.OrderCancelService
;
import
com.clx.performance.service.OrderChildService
;
import
com.msl.common.result.Result
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
...
...
@@ -36,25 +38,30 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private
final
OrderGoodsDao
orderGoodsDao
;
private
final
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
ownerCancelOrderPre
(
String
orderNo
)
{
FeignOrderVO
orderInfoFeign
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
BigDecimal
orderResidueWeight
=
new
BigDecimal
(
orderInfoFeign
.
getResidueWeight
());
if
(
BigDecimal
.
ZERO
.
compareTo
(
orderResidueWeight
)
==
0
)
{
throw
new
RuntimeException
(
"需要承运吨数的车辆,已全部到达货源地,无法取消"
);
}
BigDecimal
orderTransportWeight
=
new
BigDecimal
(
orderInfoFeign
.
getTransportWeight
());
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
if
(
CollectionUtil
.
isEmpty
(
orderGoodsList
))
{
//未产生货单
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
());
}
BigDecimal
orderGoodsResidueWeight
=
orderGoodsList
.
stream
().
map
(
OrderGoods:
:
getResidueTransportWeight
).
reduce
(
BigDecimal:
:
add
).
get
(
);
if
(
BigDecimal
.
ZERO
.
compareTo
(
orderGoodsResidueWeight
)
==
0
)
{
throw
new
RuntimeException
(
"需要承运吨数的车辆,已全部到达货源地,无法取消"
)
;
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
());
if
(!
result
.
succeed
())
{
throw
new
RuntimeException
(
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
return
;
}
List
<
OrderChild
>
orderChildren
=
orderChildDao
.
selectResidueWeight
(
orderNo
);
if
(
CollectionUtil
.
isEmpty
(
orderChildren
))
{
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
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
();
...
...
@@ -62,17 +69,22 @@ public class OrderCancelServiceImpl implements OrderCancelService {
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
CANCELED
.
getCode
());
}
else
{
BigDecimal
orderChildResidueWeight
=
orderChildrenList
.
stream
().
map
(
OrderChild:
:
getWeight
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
if
(
orderChildResidueWeight
.
compareTo
(
orderTransportWeight
)
==
0
)
{
throw
new
RuntimeException
(
"当前订单已无余量可取消"
);
}
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
COMPLETED
.
getCode
());
Result
<
Object
>
result
=
orderFeign
.
updateOrderStatusByOrderNo
(
orderNo
,
OrderEnum
.
Status
.
COMPLETED
.
getCode
());
if
(!
result
.
succeed
())
{
throw
new
RuntimeException
(
"货主取消订单失败,原因:远程调用取消订单失败"
);
}
}
}
...
...
@@ -81,42 +93,105 @@ public class OrderCancelServiceImpl implements OrderCancelService {
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
ownerCancelOrder
(
String
orderNo
)
{
FeignOrderVO
orderInfoFeign
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
BigDecimal
orderResidueWeightAll
=
BigDecimal
.
ZERO
;
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
.
PLATFORM_ANY_CAR
.
getCode
(),
BigDecimal
.
ZERO
);
truckDemandMap
.
put
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
(),
BigDecimal
.
ZERO
);
if
(
OrderEnum
.
Status
.
COMPLETED
.
getCode
().
equals
(
orderInfoFeign
.
getOrderStatus
()))
{
//已完结
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
);
for
(
OrderChild
orderChild
:
orderChildrenList
)
{
OrderChild
update
=
new
OrderChild
();
update
.
setId
(
orderChild
.
getId
());
update
.
setStatus
(
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
());
orderChildDao
.
updateEntityByKey
(
update
);
if
(!
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
().
equals
(
orderInfoFeign
.
getTruckDemand
()))
{
if
(
OrderEnum
.
Status
.
COMPLETED
.
getCode
().
equals
(
orderInfoFeign
.
getOrderStatus
()))
{
//已完结
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
);
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
);
BigDecimal
sum
=
orderChildMap
.
get
(
orderGoodsNo
).
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
(
orderInfoFeign
.
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
);
}
}
}
else
{
Map
<
Integer
,
BigDecimal
>
vehicleUsageMap
=
new
HashMap
<>();
if
(
OrderEnum
.
Status
.
COMPLETED
.
getCode
().
equals
(
orderInfoFeign
.
getOrderStatus
()))
{
//已完结
List
<
OrderChild
>
orderChildrenList
=
orderChildDao
.
selectResidueWeight
(
orderNo
);
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
);
BigDecimal
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
(
orderInfoFeign
.
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
);
}
}
Map
<
String
,
List
<
OrderGoods
>>
orderGoodsMap
=
orderGoodsList
.
stream
().
collect
(
Collectors
.
groupingBy
(
OrderGoods:
:
getOrderGoodsNo
));
Map
<
String
,
List
<
OrderChild
>>
orderChildMap
=
orderChildrenList
.
stream
().
collect
(
Collectors
.
groupingBy
(
OrderChild:
:
getOrderGoodsNo
));
String
platformResidueCarryWeight
=
orderInfoFeign
.
getPlatformResidueCarryWeight
();
String
ownResidueCarryWeight
=
orderInfoFeign
.
getOwnResidueCarryWeight
();
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:
:
add
).
get
();
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setResidueTransportWeight
(
orderGoods
.
getResidueTransportWeight
().
add
(
sum
));
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
()).
add
(
update
.
getResidueTransportWeight
()));
}
BigDecimal
platformResidueSum
=
new
BigDecimal
(
platformResidueCarryWeight
).
add
(
vehicleUsageMap
.
get
(
1
));
BigDecimal
ownResidueSum
=
new
BigDecimal
(
ownResidueCarryWeight
).
add
(
vehicleUsageMap
.
get
(
2
));
BigDecimal
residueSum
=
new
BigDecimal
(
orderInfoFeign
.
getResidueWeight
()).
add
(
platformResidueSum
).
add
(
ownResidueSum
);
}
else
if
(
OrderEnum
.
Status
.
CANCELED
.
getCode
().
equals
(
orderInfoFeign
.
getOrderStatus
()))
{
//已取消
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
truckDemandMap
.
put
(
orderGoods
.
getTruckDemand
(),
truckDemandMap
.
get
(
orderGoods
.
getTruckDemand
()).
add
(
orderGoods
.
getResidueTransportWeight
()));
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论