Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
8eefcb9d
提交
8eefcb9d
authored
1月 10, 2024
作者:
liuhaiquan
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/test' into test
上级
8ae3d823
b6956c9b
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
374 行增加
和
170 行删除
+374
-170
OrderTruckBindCancelParam.java
.../com/clx/performance/vo/mq/OrderTruckBindCancelParam.java
+20
-0
OwnerAccountComponent.java
.../com/clx/performance/component/OwnerAccountComponent.java
+2
-7
RabbitBeanConfig.java
...ain/java/com/clx/performance/config/RabbitBeanConfig.java
+26
-0
RabbitKeyConstants.java
...java/com/clx/performance/constant/RabbitKeyConstants.java
+4
-0
OrderGoodsTruckBindDao.java
.../java/com/clx/performance/dao/OrderGoodsTruckBindDao.java
+2
-0
OrderGoodsTruckBindDaoImpl.java
.../clx/performance/dao/impl/OrderGoodsTruckBindDaoImpl.java
+9
-0
OrderGoodsCancelDTO.java
...ain/java/com/clx/performance/dto/OrderGoodsCancelDTO.java
+23
-0
OrderGoodsDriverBindListener.java
...lx/performance/listener/OrderGoodsDriverBindListener.java
+53
-0
OrderCancelServiceImpl.java
.../clx/performance/service/impl/OrderCancelServiceImpl.java
+30
-10
OrderGoodsServiceImpl.java
...m/clx/performance/service/impl/OrderGoodsServiceImpl.java
+193
-149
GoodsOrderStrategy.java
...java/com/clx/performance/strategy/GoodsOrderStrategy.java
+12
-4
没有找到文件。
performance-api/src/main/java/com/clx/performance/vo/mq/OrderTruckBindCancelParam.java
0 → 100644
浏览文件 @
8eefcb9d
package
com
.
clx
.
performance
.
vo
.
mq
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
OrderTruckBindCancelParam
{
//货单编号
private
String
orderGoodsNo
;
//订单编号
private
String
orderNo
;
}
performance-web/src/main/java/com/clx/performance/component/OwnerAccountComponent.java
浏览文件 @
8eefcb9d
...
...
@@ -2,15 +2,12 @@ package com.clx.performance.component;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.performance.enums.OwnerAccountEnum
;
import
com.clx.performance.param.pc.owner.ThawAccountParam
;
import
com.clx.performance.param.pc.owner.UpdateStatusParam
;
import
com.clx.performance.service.OwnerAccountService
;
import
com.clx.performance.service.settle.SettlementOwnerDetailService
;
import
com.clx.performance.service.settle.SettlementOwnerService
;
import
com.msl.common.result.Result
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
...
...
@@ -45,14 +42,12 @@ public class OwnerAccountComponent {
if
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
ORDINARY
.
getCode
().
equals
(
invoiceType
))
{
log
.
info
(
"执行普通单解冻"
);
thawAccountParam
.
setOrderType
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
ORDINARY
.
getCode
());
log
.
info
(
"执行解冻账户,参数:{}"
,
JSONUtil
.
parse
(
thawAccountParam
));
ownerAccountService
.
ownerAccountThaw
(
thawAccountParam
);
}
else
{
log
.
info
(
"执行网运单解冻"
);
thawAccountParam
.
setOrderType
(
OwnerAccountEnum
.
OrderChildTypeStatus
.
NETWORK
.
getCode
());
log
.
info
(
"执行解冻账户,参数:{}"
,
JSONUtil
.
parse
(
thawAccountParam
));
ownerAccountService
.
ownerAccountThaw
(
thawAccountParam
);
}
log
.
info
(
"执行解冻账户,参数:{}"
,
JSONUtil
.
parse
(
thawAccountParam
));
ownerAccountService
.
ownerAccountThaw
(
thawAccountParam
);
//通知结算单锁定
settlementOwnerService
.
updateStatusByOrderNo
(
orderNo
,
1
,
10
,
20
);
...
...
performance-web/src/main/java/com/clx/performance/config/RabbitBeanConfig.java
浏览文件 @
8eefcb9d
...
...
@@ -140,4 +140,30 @@ public class RabbitBeanConfig {
public
Binding
orderChildSyncTransportExchangeBind
()
{
return
BindingBuilder
.
bind
(
orderChildSyncTransportQueue
()).
to
(
orderChildSyncTransportExchange
()).
with
(
RabbitKeyConstants
.
ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY
);
}
/**
* 处理延迟消息orderGoodsTruckBind
* @return
*/
@Bean
public
Queue
orderGoodsTruckBindQueue
()
{
return
new
Queue
(
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_QUEUE
,
true
,
false
,
false
);
}
/**
* 处理延迟消息orderGoodsTruckBind
**/
@Bean
public
CustomExchange
orderGoodsTruckBindExchange
()
{
Map
<
String
,
Object
>
arguments
=
new
HashMap
<>();
//设置路由模式 direct模式
arguments
.
put
(
"x-delayed-type"
,
"direct"
);
return
new
CustomExchange
(
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_EXCHANGE
,
"x-delayed-message"
,
true
,
false
,
arguments
);
}
//绑定交换机,队列和routingKey
@Bean
public
Binding
orderGoodsTruckBindBindingDelayedExchange
(
@Qualifier
(
"orderGoodsTruckBindQueue"
)
Queue
queue
,
@Qualifier
(
"orderGoodsTruckBindExchange"
)
CustomExchange
customExchange
)
{
return
BindingBuilder
.
bind
(
queue
).
to
(
customExchange
).
with
(
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_ROUTE_KEY
).
noargs
();
}
}
performance-web/src/main/java/com/clx/performance/constant/RabbitKeyConstants.java
浏览文件 @
8eefcb9d
...
...
@@ -78,5 +78,9 @@ public class RabbitKeyConstants {
public
static
final
String
FREEZE_TRIGGER_QUEUE
=
"clx-order.freeze.trigger.queue"
;
public
static
final
String
FREEZE_TRIGGER_ROUTING_KEY
=
"clx-order.freeze.trigger.routing.key"
;
public
static
final
String
ORDER_TRUCK_BIND_LAZY_EXCHANGE
=
"clx-order.truck.bind.lazy.exchange"
;
public
static
final
String
ORDER_TRUCK_BIND_LAZY_QUEUE
=
"clx-order.truck.bind.lazy.queue"
;
public
static
final
String
ORDER_TRUCK_BIND_LAZY_ROUTE_KEY
=
"clx-order.truck.bind.lazy.route.key"
;
}
performance-web/src/main/java/com/clx/performance/dao/OrderGoodsTruckBindDao.java
浏览文件 @
8eefcb9d
...
...
@@ -31,6 +31,8 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
void
updateOrderGoodsBindStatus
(
String
orderGoodsNo
,
Integer
code
);
void
updateOrderGoodsBindStatus
(
List
<
String
>
orderGoodsList
,
Integer
code
);
void
updateOrderGoodsBindStatus
(
String
orderGoodsNo
,
Integer
code
,
List
<
String
>
truckList
);
void
updateOrderGoodsBindStatus
(
String
orderGoodsNo
,
Integer
code
,
String
truckNo
);
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/OrderGoodsTruckBindDaoImpl.java
浏览文件 @
8eefcb9d
...
...
@@ -87,6 +87,15 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
);
}
@Override
public
void
updateOrderGoodsBindStatus
(
List
<
String
>
orderGoodsList
,
Integer
code
)
{
update
(
lUdWrapper
()
.
in
(
OrderGoodsTruckBind:
:
getOrderGoodsNo
,
orderGoodsList
)
.
eq
(
OrderGoodsTruckBind:
:
getStatus
,
OrderGoodsTruckBindEnum
.
Status
.
NORMAL
.
getCode
())
.
set
(
OrderGoodsTruckBind:
:
getStatus
,
code
)
);
}
@Override
public
void
updateOrderGoodsBindStatus
(
String
orderGoodsNo
,
Integer
code
,
List
<
String
>
truckList
)
{
update
(
lUdWrapper
()
...
...
performance-web/src/main/java/com/clx/performance/dto/OrderGoodsCancelDTO.java
0 → 100644
浏览文件 @
8eefcb9d
package
com
.
clx
.
performance
.
dto
;
import
com.clx.order.param.feign.RollbackOrderWeightParam
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.param.pc.OrderGoodsCancelParam
;
import
lombok.Builder
;
import
lombok.Data
;
import
java.util.List
;
@Data
@Builder
public
class
OrderGoodsCancelDTO
{
private
OrderGoodsCancelParam
orderGoodsCancelParam
;
private
Integer
orderGoodsStatus
;
private
OrderGoods
orderGoods
;
private
List
<
String
>
childNoList
;
}
performance-web/src/main/java/com/clx/performance/listener/OrderGoodsDriverBindListener.java
0 → 100644
浏览文件 @
8eefcb9d
package
com
.
clx
.
performance
.
listener
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.order.enums.VehicleUsageEnum
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.enums.OrderGoodsTruckBindEnum
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.vo.mq.OrderTruckBindCancelParam
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Component
@Slf4j
@AllArgsConstructor
public
class
OrderGoodsDriverBindListener
{
private
final
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
;
private
final
OrderGoodsDao
orderGoodsDao
;
@RabbitListener
(
queues
=
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_QUEUE
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
onMessage
(
String
message
)
throws
Exception
{
OrderTruckBindCancelParam
param
=
JSONUtil
.
toBean
(
message
,
OrderTruckBindCancelParam
.
class
);
log
.
info
(
"OrderGoodsDriverBindListener请求参数{}"
,
JSONUtil
.
parse
(
param
));
if
(
StringUtils
.
isNotBlank
(
param
.
getOrderGoodsNo
()))
{
String
orderGoodsNo
=
param
.
getOrderGoodsNo
();
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderGoodsNo
).
get
();
if
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
().
equals
(
orderGoods
.
getVehicleUsage
()))
{
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNo
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
}
}
else
if
(
StringUtils
.
isNotBlank
(
param
.
getOrderNo
()))
{
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
param
.
getOrderNo
());
List
<
String
>
orderGoodsNoList
=
orderGoodsList
.
stream
().
filter
(
i
->
VehicleUsageEnum
.
Status
.
OWN
.
getCode
().
equals
(
i
.
getVehicleUsage
()))
.
map
(
OrderGoods:
:
getOrderGoodsNo
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isEmpty
(
orderGoodsNoList
))
{
return
;
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNoList
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
}
}
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderCancelServiceImpl.java
浏览文件 @
8eefcb9d
...
...
@@ -29,6 +29,7 @@ import com.clx.performance.param.pc.owner.ThawAccountParam;
import
com.clx.performance.service.*
;
import
com.clx.performance.service.child.OrderChildPostService
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.clx.performance.vo.mq.OrderTruckBindCancelParam
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
import
com.clx.user.enums.owner.FreezeSettingEnum
;
import
com.clx.user.vo.feign.OwnerInfoFeignVO
;
...
...
@@ -183,7 +184,17 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
//进行解冻账户
ownerAccountComponent
.
thawOwnerAccountByOrderNo
(
orderNo
);
//开始执行订单取消吨数回填
OrderTruckBindCancelParam
bindCancelParam
=
new
OrderTruckBindCancelParam
();
bindCancelParam
.
setOrderNo
(
orderNo
);
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
bindCancelParam
).
toString
().
getBytes
()).
build
();
message
.
getMessageProperties
().
setHeader
(
"x-delay"
,
2000
);
//执行解绑自有车辆处理逻辑,将绑定记录正常改为取消
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_EXCHANGE
,
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_ROUTE_KEY
,
message
);
this
.
ownerConfirmCancelProcess
(
orderNo
);
}
...
...
@@ -244,8 +255,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
param
.
setResidueWeight
(
residueWeight
);
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
}
else
if
(
truckDemand
.
equals
(
TruckDemandEnum
.
TruckType
.
OWNER_CAR
.
getCode
()))
{
param
.
setResidueWeight
(
residueWeight
);
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
...
...
@@ -331,19 +341,30 @@ public class OrderCancelServiceImpl implements OrderCancelService {
orderCancelReasonParam
.
setCreateName
(
loginUserInfo
.
getUserName
());
orderFeign
.
orderCancelReason
(
orderCancelReasonParam
);
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
);
OrderTruckBindCancelParam
bindCancelParam
=
new
OrderTruckBindCancelParam
();
bindCancelParam
.
setOrderNo
(
orderNo
);
Message
message2
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
bindCancelParam
).
toString
().
getBytes
()).
build
();
message2
.
getMessageProperties
().
setHeader
(
"x-delay"
,
2000
);
//执行解绑自有车辆处理逻辑,将绑定记录正常改为取消
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_EXCHANGE
,
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_ROUTE_KEY
,
message2
);
}
/**
* 平台取消订单前置(只修改订单相关状态)
*
* @param param
*/
//
/**
//
* 平台取消订单前置(只修改订单相关状态)
//
*
//
* @param param
//
*/
// @Override
// @Transactional(rollbackFor = Exception.class)
// public void platformCancelOrderPre(OrderCancelParam param) {
...
...
@@ -604,8 +625,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
private
List
<
OrderGoods
>
getGoods
(
String
orderNo
,
FeignOrderVO
orderInfoFeign
,
Map
<
Integer
,
BigDecimal
>
truckDemandMap
,
Map
<
Integer
,
BigDecimal
>
vehicleUsageMap
,
RollbackOrderWeightParam
rollbackOrderWeightParam
,
Integer
truckDemand
)
{
List
<
OrderGoods
>
orderGoodsList
;
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
List
<
OrderGoods
>
orderGoodsList
=
orderGoodsDao
.
getOrderGoodsListByOrderNo
(
orderNo
);
if
(!
orderInfoFeign
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
for
(
OrderGoods
orderGoods
:
orderGoodsList
)
{
...
...
performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java
浏览文件 @
8eefcb9d
...
...
@@ -14,10 +14,12 @@ import com.clx.order.vo.feign.FeignOrderVO;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderCancelComponent
;
import
com.clx.performance.component.OrderGoodsStatusLazyComponent
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OrderGoodsDriverTruckDao
;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.dto.OrderGoodsCancelDTO
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.extranal.user.DriverService
;
import
com.clx.performance.model.OrderChild
;
...
...
@@ -36,6 +38,7 @@ import com.clx.performance.struct.OrderGoodsStruct;
import
com.clx.performance.vo.app.OrderGoodsAPPVO
;
import
com.clx.performance.vo.feign.FreightEstimateVO
;
import
com.clx.performance.vo.feign.OrderGoodsFeignVO
;
import
com.clx.performance.vo.mq.OrderTruckBindCancelParam
;
import
com.clx.performance.vo.pc.OrderGoodsEditVO
;
import
com.clx.performance.vo.pc.OrderGoodsVO
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
...
...
@@ -50,16 +53,18 @@ import com.msl.user.utils.TokenUtil;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.*
;
import
java.util.function.Consumer
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -69,7 +74,7 @@ import java.util.stream.Collectors;
*/
@Service
@Slf4j
public
class
OrderGoodsServiceImpl
implements
OrderGoodsService
{
public
class
OrderGoodsServiceImpl
implements
OrderGoodsService
,
InitializingBean
{
@Autowired
private
OrderGoodsDao
orderGoodsDao
;
...
...
@@ -108,6 +113,10 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
private
OrderChildLogService
orderChildLogService
;
@Autowired
private
OrderChildPostService
orderChildPostService
;
@Autowired
private
RabbitTemplate
rabbitTemplate
;
private
static
Map
<
Integer
,
Consumer
<
OrderGoodsCancelDTO
>>
orderGoodsCancelMap
=
new
HashMap
<>();
@Override
public
OrderGoodsVO
getOrderGoodsInfoByOrderGoodsNoForPC
(
String
orderGoodsNo
)
{
...
...
@@ -504,150 +513,16 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
public
void
orderGoodsCancel
(
OrderGoodsCancelParam
goodsCancelParam
)
{
String
orderGoodsNo
=
goodsCancelParam
.
getOrderGoodsNo
();
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderGoodsNo
).
orElseThrow
(
PerformanceResultEnum
.
HTTP_ERROR
,
"数据错误"
);
String
now
=
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
(),
"yyyy-MM-dd HH:mm:ss"
).
get
();
List
<
OrderChild
>
orderChildList
=
null
;
BigDecimal
residueWeight
=
null
;
BigDecimal
sum
=
BigDecimal
.
ZERO
;
List
<
String
>
childNoList
=
new
LinkedList
<>();
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
Integer
cancelOperateType
=
goodsCancelParam
.
getCancelOperateType
();
Integer
orderGoodsStatus
=
OrderGoodsStatusEnum
.
Status
.
CANCEL
.
getCode
();
switch
(
cancelOperateType
)
{
case
1
:
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
());
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前货单已产生运单"
);
}
residueWeight
=
orderGoods
.
getResidueTransportWeight
();
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNo
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
update
.
setOrderGoodsStatus
(
orderGoodsStatus
);
orderGoodsDao
.
updateEntityByKey
(
update
);
}
break
;
case
2
:
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
());
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
List
<
OrderChild
>
filterOrderChildList
=
orderChildList
.
stream
().
filter
(
item
->
item
.
getStatus
()
<
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
filterOrderChildList
))
{
for
(
OrderChild
orderChild
:
filterOrderChildList
)
{
driverService
.
updateOrderStatus
(
orderChild
.
getDriverUserNo
(),
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
orderChild
.
getTruckId
(),
1
);
childNoList
.
add
(
orderChild
.
getChildNo
());
sum
=
sum
.
add
(
orderChild
.
getWeight
());
orderChildLogService
.
saveOrderChildLog
(
orderChild
.
getChildNo
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
OrderChildLogEnum
.
CreateType
.
PLATFORM
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
PLATFORM
.
getMsg
()
);
}
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
now
,
now
,
childNoList
);
}
orderChildList
.
removeAll
(
filterOrderChildList
);
if
(
CollectionUtil
.
isNotEmpty
(
orderChildList
))
{
orderGoodsStatus
=
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
();
}
}
residueWeight
=
orderGoods
.
getResidueTransportWeight
().
add
(
sum
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNo
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
break
;
case
3
:
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
(),
goodsCancelParam
.
getTruckList
());
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
List
<
OrderChild
>
filterOrderChildList
=
orderChildList
.
stream
().
filter
(
item
->
item
.
getStatus
()
<
OrderChildEnum
.
Status
.
LOAD
.
getCode
()).
collect
(
Collectors
.
toList
());
for
(
OrderChild
orderChild
:
filterOrderChildList
)
{
driverService
.
updateOrderStatus
(
orderChild
.
getDriverUserNo
(),
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
orderChild
.
getTruckId
(),
1
);
childNoList
.
add
(
orderChild
.
getChildNo
());
sum
=
sum
.
add
(
orderChild
.
getWeight
());
orderChildLogService
.
saveOrderChildLog
(
orderChild
.
getChildNo
(),
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getName
(),
OrderChildLogEnum
.
CreateType
.
OWNER
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
OWNER
.
getMsg
()
);
}
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
"系统取消"
,
now
,
now
,
childNoList
);
orderChildList
.
removeAll
(
filterOrderChildList
);
if
(
CollectionUtil
.
isNotEmpty
(
orderChildList
))
{
orderGoodsStatus
=
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
();
}
}
residueWeight
=
orderGoods
.
getResidueTransportWeight
().
add
(
sum
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNo
,
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
orderGoodsDao
.
updateOrderGoodsSetResidueWeightAndAlreadyWeightAndStatus
(
orderGoods
.
getResidueTransportWeight
(),
sum
,
orderGoodsStatus
,
orderGoods
.
getId
());
}
break
;
default
:
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"参数类型有误"
);
//封装取消策略参数
OrderGoodsCancelDTO
build
=
OrderGoodsCancelDTO
.
builder
().
orderGoodsCancelParam
(
goodsCancelParam
)
.
orderGoodsStatus
(
orderGoodsStatus
).
orderGoods
(
orderGoods
)
.
childNoList
(
childNoList
).
build
();
//根据不同取消策略调用不同方法
orderGoodsCancelMap
.
get
(
goodsCancelParam
.
getCancelOperateType
()).
accept
(
build
);
}
OrderCancelReasonParam
orderCancelReasonParam
=
new
OrderCancelReasonParam
();
orderCancelReasonParam
.
setOrderNo
(
goodsCancelParam
.
getOrderNo
());
orderCancelReasonParam
.
setOrderGoodsNo
(
goodsCancelParam
.
getOrderGoodsNo
());
...
...
@@ -655,18 +530,179 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
orderCancelReasonParam
.
setCreateNo
(
loginUserInfo
.
getUserNo
());
orderCancelReasonParam
.
setCreateName
(
loginUserInfo
.
getUserName
());
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
//删除绑定记录
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
());
//记录取消意见
orderFeign
.
orderCancelReason
(
orderCancelReasonParam
);
for
(
String
childNo
:
childNoList
)
{
// 货单取消
orderChildPostService
.
orderGoodsCancel
(
childNo
);
if
(
CollectionUtil
.
isNotEmpty
(
childNoList
))
{
for
(
String
childNo
:
childNoList
)
{
// 货单取消
orderChildPostService
.
orderGoodsCancel
(
childNo
);
}
}
OrderTruckBindCancelParam
bindCancelParam
=
new
OrderTruckBindCancelParam
();
bindCancelParam
.
setOrderGoodsNo
(
orderGoodsNo
);
Message
message
=
MessageBuilder
.
withBody
(
JSONUtil
.
parse
(
bindCancelParam
).
toString
().
getBytes
()).
build
();
message
.
getMessageProperties
().
setHeader
(
"x-delay"
,
2000
);
//执行解绑自有车辆处理逻辑,将绑定记录正常改为取消
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_EXCHANGE
,
RabbitKeyConstants
.
ORDER_TRUCK_BIND_LAZY_ROUTE_KEY
,
message
);
orderGoodsLogService
.
saveLog
(
orderGoodsNo
,
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
(),
OrderGoodsLogsEnum
.
Type
.
CANCEL
.
getName
(),
""
);
}
private
void
cancelOperateThreeTypeStrategy
(
OrderGoodsCancelDTO
dto
)
{
String
now
=
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
()).
get
();
BigDecimal
sum
=
BigDecimal
.
ZERO
;
OrderGoods
orderGoods
=
dto
.
getOrderGoods
();
List
<
String
>
childNoList
=
dto
.
getChildNoList
();
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
(),
dto
.
getOrderGoodsCancelParam
().
getTruckList
());
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
List
<
OrderChild
>
filterOrderChildList
=
orderChildList
.
stream
().
filter
(
item
->
item
.
getStatus
()
<
OrderChildEnum
.
Status
.
LOAD
.
getCode
()).
collect
(
Collectors
.
toList
());
for
(
OrderChild
orderChild
:
filterOrderChildList
)
{
driverService
.
updateOrderStatus
(
orderChild
.
getDriverUserNo
(),
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
orderChild
.
getTruckId
(),
1
);
childNoList
.
add
(
orderChild
.
getChildNo
());
sum
=
sum
.
add
(
orderChild
.
getWeight
());
orderChildLogService
.
saveOrderChildLog
(
orderChild
.
getChildNo
(),
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
OWNER_CANCEL
.
getName
(),
OrderChildLogEnum
.
CreateType
.
OWNER
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
OWNER
.
getMsg
()
);
}
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
"系统取消"
,
now
,
now
,
childNoList
);
orderChildList
.
removeAll
(
filterOrderChildList
);
if
(
CollectionUtil
.
isNotEmpty
(
orderChildList
))
{
dto
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
}
BigDecimal
residueWeight
=
orderGoods
.
getResidueTransportWeight
().
add
(
sum
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
orderGoodsDao
.
updateOrderGoodsSetResidueWeightAndAlreadyWeightAndStatus
(
orderGoods
.
getResidueTransportWeight
(),
sum
,
dto
.
getOrderGoodsStatus
(),
orderGoods
.
getId
());
}
}
private
void
cancelOperateTwoTypeStrategy
(
OrderGoodsCancelDTO
dto
)
{
BigDecimal
sum
=
BigDecimal
.
ZERO
;
String
now
=
DateUtils
.
formatDateTime
(
LocalDateTime
.
now
()).
get
();
OrderGoods
orderGoods
=
dto
.
getOrderGoods
();
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
());
List
<
String
>
childNoList
=
dto
.
getChildNoList
();
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
List
<
OrderChild
>
filterOrderChildList
=
orderChildList
.
stream
().
filter
(
item
->
item
.
getStatus
()
<
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
filterOrderChildList
))
{
for
(
OrderChild
orderChild
:
filterOrderChildList
)
{
driverService
.
updateOrderStatus
(
orderChild
.
getDriverUserNo
(),
DriverInfoEnum
.
DriverStatus
.
NO
.
getCode
(),
orderChild
.
getTruckId
(),
1
);
childNoList
.
add
(
orderChild
.
getChildNo
());
sum
=
sum
.
add
(
orderChild
.
getWeight
());
orderChildLogService
.
saveOrderChildLog
(
orderChild
.
getChildNo
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
OrderChildLogEnum
.
CreateType
.
PLATFORM
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
PLATFORM
.
getMsg
()
);
}
orderChildDao
.
batchUpdateOrderChildStatus
(
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
PLATFORM_CANCEL
.
getName
(),
now
,
now
,
childNoList
);
}
orderChildList
.
removeAll
(
filterOrderChildList
);
if
(
CollectionUtil
.
isNotEmpty
(
orderChildList
))
{
dto
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
}
}
BigDecimal
residueWeight
=
orderGoods
.
getResidueTransportWeight
().
add
(
sum
);
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
update
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
private
void
cancelOperateOneTypeStrategy
(
OrderGoodsCancelDTO
dto
)
{
RollbackOrderWeightParam
param
=
new
RollbackOrderWeightParam
();
OrderGoods
orderGoods
=
dto
.
getOrderGoods
();
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
selectResidueWeightByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderChildEnum
.
Status
.
DRIVER_CANCEL
.
getCode
());
if
(
CollectionUtils
.
isNotEmpty
(
orderChildList
))
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"当前货单已产生运单"
);
}
BigDecimal
residueWeight
=
dto
.
getOrderGoods
().
getResidueTransportWeight
();
param
.
setResidueWeight
(
residueWeight
);
param
.
setOrderNo
(
orderGoods
.
getOrderNo
());
if
(!
orderGoods
.
getTruckDemand
().
equals
(
TruckDemandEnum
.
TruckType
.
PLATFORM_ANY_CAR
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
else
{
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
PLATFORM
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
BigDecimal
.
ZERO
);
param
.
setPlatformResidueCarryWeight
(
residueWeight
);
}
else
if
(
orderGoods
.
getVehicleUsage
().
equals
(
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
param
.
setOwnResidueCarryWeight
(
residueWeight
);
param
.
setPlatformResidueCarryWeight
(
BigDecimal
.
ZERO
);
}
}
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsTruckBindEnum
.
Status
.
CANCEL
.
getCode
());
log
.
info
(
"取消货单,参数:{}"
,
JSONUtil
.
parse
(
param
));
if
(
orderFeign
.
rollbackOrderWeight
(
param
).
succeed
())
{
OrderGoods
update
=
new
OrderGoods
();
update
.
setId
(
orderGoods
.
getId
());
update
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
);
update
.
setOrderGoodsStatus
(
dto
.
getOrderGoodsStatus
());
orderGoodsDao
.
updateEntityByKey
(
update
);
}
}
/**
* 查看当前货单可取消吨数
* @param goodsCancelParam
...
...
@@ -811,4 +847,12 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
List
<
Integer
>
collect
=
list
.
stream
().
map
(
OrderGoods:
:
getId
).
collect
(
Collectors
.
toList
());
orderGoodsDao
.
batchUpdateResidueWeight
(
collect
,
BigDecimal
.
ZERO
);
}
@Override
public
void
afterPropertiesSet
()
throws
Exception
{
orderGoodsCancelMap
.
put
(
1
,
this
::
cancelOperateOneTypeStrategy
);
orderGoodsCancelMap
.
put
(
2
,
this
::
cancelOperateTwoTypeStrategy
);
orderGoodsCancelMap
.
put
(
3
,
this
::
cancelOperateThreeTypeStrategy
);
}
}
performance-web/src/main/java/com/clx/performance/strategy/GoodsOrderStrategy.java
浏览文件 @
8eefcb9d
...
...
@@ -18,6 +18,8 @@ import org.apache.commons.lang3.StringUtils;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.env.Environment
;
import
java.time.LocalDateTime
;
import
java.util.*
;
...
...
@@ -26,6 +28,9 @@ import java.util.stream.Collectors;
@Slf4j
public
abstract
class
GoodsOrderStrategy
{
@Autowired
private
Environment
environment
;
/**
* 不同的用车需求执行不同的策略 1:one 2:two 3:three
...
...
@@ -45,12 +50,15 @@ public abstract class GoodsOrderStrategy {
throw
new
ServiceSystemException
(
ResultEnum
.
DATA_ERROR
,
"订单已暂停,无法进行提量"
);
}
String
transportBeginTime
=
orderInfo
.
getTransportBeginTime
();
for
(
OrderGoodsChildParams
param
:
orderGoodsParams
.
getOrderGoodsChildParams
())
{
String
pendingOrderTime
=
param
.
getPendingOrderTime
();
if
(
DateUtils
.
parseDateTime
(
pendingOrderTime
).
get
().
isBefore
(
DateUtils
.
parseDateTime
(
transportBeginTime
).
get
()))
{
throw
new
ServiceSystemException
(
ResultEnum
.
DATA_ERROR
,
"挂单时间不能早于拉运开始时间"
);
if
(!
"test"
.
equals
(
environment
.
getActiveProfiles
()[
0
]))
{
for
(
OrderGoodsChildParams
param
:
orderGoodsParams
.
getOrderGoodsChildParams
())
{
String
pendingOrderTime
=
param
.
getPendingOrderTime
();
if
(
DateUtils
.
parseDateTime
(
pendingOrderTime
).
get
().
isBefore
(
DateUtils
.
parseDateTime
(
transportBeginTime
).
get
()))
{
throw
new
ServiceSystemException
(
ResultEnum
.
DATA_ERROR
,
"挂单时间不能早于拉运开始时间"
);
}
}
}
//多个定向单不允许车辆重复
List
<
OrderGoodsChildParams
>
orderGoodsChildParams
=
orderGoodsParams
.
getOrderGoodsChildParams
();
Set
<
String
>
set
=
new
HashSet
<>();
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论