Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
350f2a8c
提交
350f2a8c
authored
10月 23, 2023
作者:
aiqingguo
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'v5.2_goods_child_optimize_20231008'
# Conflicts: # performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
上级
1cef74db
17f50233
显示空白字符变更
内嵌
并排
正在显示
19 个修改的文件
包含
297 行增加
和
163 行删除
+297
-163
PerformanceFeign.java
...main/java/com/clx/performance/feign/PerformanceFeign.java
+22
-0
OrderGoodsVO.java
...src/main/java/com/clx/performance/vo/pc/OrderGoodsVO.java
+5
-0
GoodsOrderTruckRecordComponent.java
...performance/component/GoodsOrderTruckRecordComponent.java
+64
-0
OrderGoodsStatusLazyComponent.java
.../performance/component/OrderGoodsStatusLazyComponent.java
+10
-10
RedisConstants.java
...ain/java/com/clx/performance/constant/RedisConstants.java
+3
-3
TruckFeignController.java
...lx/performance/controller/feign/TruckFeignController.java
+17
-0
GoodsOrderController.java
...m/clx/performance/controller/pc/GoodsOrderController.java
+1
-29
OrderGoodsDriverTruckDao.java
...ava/com/clx/performance/dao/OrderGoodsDriverTruckDao.java
+1
-1
OrderGoodsDriverTruckDaoImpl.java
...lx/performance/dao/impl/OrderGoodsDriverTruckDaoImpl.java
+2
-1
OrderGoodsDriverTruckListener.java
...x/performance/listener/OrderGoodsDriverTruckListener.java
+4
-2
OrderChildPoundAuditServiceImpl.java
...ormance/service/impl/OrderChildPoundAuditServiceImpl.java
+2
-0
OrderChildServiceImpl.java
...m/clx/performance/service/impl/OrderChildServiceImpl.java
+15
-10
OrderGoodsServiceImpl.java
...m/clx/performance/service/impl/OrderGoodsServiceImpl.java
+2
-0
OrderGoodsTruckBindSqlProvider.java
...rformance/sqlProvider/OrderGoodsTruckBindSqlProvider.java
+1
-1
GoodsOrderStrategy.java
...java/com/clx/performance/strategy/GoodsOrderStrategy.java
+47
-2
OneGoodsOrderStrategy.java
.../clx/performance/strategy/impl/OneGoodsOrderStrategy.java
+36
-27
ThreeGoodsOrderStrategy.java
...lx/performance/strategy/impl/ThreeGoodsOrderStrategy.java
+31
-29
TwoGoodsOrderStrategy.java
.../clx/performance/strategy/impl/TwoGoodsOrderStrategy.java
+21
-26
JobTest.java
...rmance-web/src/test/java/com/clx/performance/JobTest.java
+13
-22
没有找到文件。
performance-api/src/main/java/com/clx/performance/feign/PerformanceFeign.java
浏览文件 @
350f2a8c
...
...
@@ -7,7 +7,9 @@ import org.springframework.web.bind.annotation.GetMapping;
import
org.springframework.web.bind.annotation.RequestParam
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
import
java.util.Set
;
@FeignClient
(
name
=
"clx-performance"
)
public
interface
PerformanceFeign
{
...
...
@@ -18,6 +20,7 @@ public interface PerformanceFeign {
* @param orderGoodsNo
* @return
*/
@Deprecated
@GetMapping
(
value
=
{
"clx-performance/feign/orderGoodsDriverTruck/getTrucksByOrderGoodsNo"
})
Result
<
List
<
Integer
>>
getTrucksByOrderGoodsNo
(
@RequestParam
(
"orderGoodsNo"
)
@NotBlank
(
message
=
"货单编号不可为空"
)
String
orderGoodsNo
);
...
...
@@ -27,4 +30,23 @@ public interface PerformanceFeign {
@GetMapping
(
value
=
{
"clx-performance/feign/orderGoods/getOrderGoodsListByOrderNo"
})
List
<
OrderGoodsFeignVO
>
getOrderGoodsListByOrderNo
(
@RequestParam
String
orderNo
);
/**
* 公开货源调用
*
* @return
*/
@GetMapping
(
value
=
{
"clx-performance/feign/orderGoodsDriverTruck/getPublicTruckList"
})
Result
<
Set
<
String
>>
getPublicTruckList
();
/**
* 定向货源调用
*
* @param orderGoodsNo、
* @param userNo
* @return
*/
@GetMapping
(
value
=
{
"clx-performance/feign/orderGoodsDriverTruck/getPrivateTruckList"
})
Result
<
List
<
String
>>
getPrivateTruckList
(
@RequestParam
(
"orderGoodsNo"
)
@NotBlank
(
message
=
"货单编号不可为空"
)
String
orderGoodsNo
,
@RequestParam
(
"userNo"
)
@NotNull
(
message
=
"用户编号不可为空"
)
Long
userNo
);
}
performance-api/src/main/java/com/clx/performance/vo/pc/OrderGoodsVO.java
浏览文件 @
350f2a8c
...
...
@@ -7,6 +7,7 @@ import lombok.NoArgsConstructor;
import
lombok.Setter
;
import
java.math.BigDecimal
;
import
java.util.List
;
@Getter
...
...
@@ -105,5 +106,8 @@ public class OrderGoodsVO {
@ApiModelProperty
(
"创建时间"
)
private
String
createTime
;
@ApiModelProperty
(
"车辆列表"
)
private
List
<
String
>
truckList
;
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/component/GoodsOrderTruckRecordComponent.java
0 → 100644
浏览文件 @
350f2a8c
package
com
.
clx
.
performance
.
component
;
import
cn.hutool.core.util.StrUtil
;
import
com.clx.performance.constant.RedisConstants
;
import
com.clx.performance.dao.OrderGoodsDriverTruckDao
;
import
com.clx.performance.model.OrderGoodsDriverTruck
;
import
com.msl.common.base.Optional
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Slf4j
@Component
@AllArgsConstructor
public
class
GoodsOrderTruckRecordComponent
{
private
final
RedisTemplate
<
String
,
String
>
redisTemplate
;
private
final
OrderGoodsDriverTruckDao
orderGoodsDriverTruckDao
;
public
void
saveTruckRecord
(
String
orderGoodsNo
,
List
<
String
>
truckList
)
{
redisTemplate
.
opsForSet
().
add
(
RedisConstants
.
ORDER_GOODS_TRUCK_RECORD
+
orderGoodsNo
,
truckList
.
toArray
(
new
String
[]{}));
redisTemplate
.
opsForSet
().
add
(
RedisConstants
.
ORDER_GOODS_RECORD
,
RedisConstants
.
ORDER_GOODS_TRUCK_RECORD
+
orderGoodsNo
);
}
//删除货单下的所有车牌号
public
void
deleteTruckRecord
(
String
orderGoodsNo
)
{
redisTemplate
.
opsForSet
().
remove
(
RedisConstants
.
ORDER_GOODS_TRUCK_RECORD
+
orderGoodsNo
);
redisTemplate
.
opsForSet
().
remove
(
RedisConstants
.
ORDER_GOODS_RECORD
,
orderGoodsNo
);
}
//删除货单下的指定车牌号
public
void
deleteTruckRecord
(
String
orderGoodsNo
,
String
truckNo
)
{
redisTemplate
.
opsForSet
().
remove
(
RedisConstants
.
ORDER_GOODS_TRUCK_RECORD
+
orderGoodsNo
,
truckNo
);
}
//公开
public
Set
<
String
>
getPublicTruckList
()
{
Set
<
String
>
orderGoodsList
=
redisTemplate
.
opsForSet
().
members
(
RedisConstants
.
ORDER_GOODS_RECORD
);
if
(
orderGoodsList
==
null
||
orderGoodsList
.
isEmpty
())
{
return
null
;
}
return
redisTemplate
.
opsForSet
().
union
(
orderGoodsList
);
}
//定向
public
List
<
String
>
getPrivateTruckList
(
String
orderGoodsNo
,
Long
userNo
)
{
Optional
<
List
<
OrderGoodsDriverTruck
>>
optional
=
orderGoodsDriverTruckDao
.
selectListByDriverUserNo
(
userNo
);
if
(!
optional
.
isPresent
())
{
return
null
;
}
List
<
String
>
truckList
=
optional
.
get
().
stream
().
map
(
OrderGoodsDriverTruck:
:
getTruckNo
).
collect
(
Collectors
.
toList
());
truckList
.
retainAll
(
redisTemplate
.
opsForSet
().
members
(
RedisConstants
.
ORDER_GOODS_TRUCK_RECORD
+
orderGoodsNo
));
return
truckList
;
}
}
performance-web/src/main/java/com/clx/performance/component/OrderGoodsStatusLazyComponent.java
浏览文件 @
350f2a8c
...
...
@@ -13,11 +13,10 @@ import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import
com.clx.performance.model.OrderGoods
;
import
com.msl.common.base.Optional
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.data.redis.core.ZSetOperations
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -31,19 +30,18 @@ import java.util.Set;
@Component
@Slf4j
@AllArgsConstructor
public
class
OrderGoodsStatusLazyComponent
implements
InitializingBean
{
@Autowired
private
RedisTemplate
<
String
,
String
>
redisTemplate
;
private
final
RedisTemplate
<
String
,
String
>
redisTemplate
;
@Autowired
private
OrderGoodsDao
orderGoodsDao
;
private
final
OrderGoodsDao
orderGoodsDao
;
@Autowired
private
OrderFeign
orderFeign
;
private
final
OrderFeign
orderFeign
;
@Autowired
private
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
;
private
final
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
;
private
final
GoodsOrderTruckRecordComponent
goodsOrderTruckRecordComponent
;
public
void
expireProduce
(
LocalDateTime
localDateTime
,
String
orderGoodsNo
)
{
redisTemplate
.
opsForZSet
().
add
(
RedisConstants
.
ORDER_GOODS_STATUS_LAZY
,
orderGoodsNo
,
localDateTime
.
toInstant
(
ZoneOffset
.
of
(
"+8"
)).
toEpochMilli
());
...
...
@@ -120,6 +118,8 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
//更新货单已完结
orderGoodsDao
.
updateOrderGoodsStatusByOrderGoodsNo
(
orderGoodsNo
,
OrderGoodsStatusEnum
.
Status
.
COMPLETED
.
getCode
());
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoodsNo
,
OrderGoodsTruckBindEnum
.
Status
.
EXPIRE
.
getCode
());
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoodsNo
);
BigDecimal
residueTransportWeight
=
orderGoods
.
getResidueTransportWeight
();
UpdateOrderInfoParam
updateOrderInfoParam
=
new
UpdateOrderInfoParam
();
updateOrderInfoParam
.
setOrderId
(
orderInfoFeign
.
getId
());
...
...
performance-web/src/main/java/com/clx/performance/constant/RedisConstants.java
浏览文件 @
350f2a8c
...
...
@@ -7,20 +7,20 @@ public class RedisConstants {
public
static
final
String
ORDER_GOODS_ID
=
"clx-performance:orderGoodsId:"
;
public
static
final
String
ORDER_GOODS_ID_GENERATE
=
"clx-performance:orderGoodsId:generate"
;
public
static
final
String
ZJXL_TRUCK_TRACE_LIST
=
"clx-performance:zjxl_truck_trace_list:"
;
public
static
final
String
ORDER_CHILD_EXPECT_TIME_DATA
=
"clx-performance:order_child_expect_time_data:"
;
public
static
final
String
ORDER_CHILD_EXPECT_TIME_DATA_KEY_MAP
=
"clx-performance:order_child_expect_time_data_key_map:"
;
public
static
final
String
ZJXL_LAST_PULL_TRUCK
=
"clx-performance:zjxl_last_time_pull_truck:"
;
public
static
final
String
TRUCK_LOCATION_KEY
=
"clx-performance:truck_location_key:"
;
public
static
final
String
CARRIER_ORDER_NUM_POOL_KEY
=
"clx-performance:order:orderNumPool:{date}"
;
public
static
final
String
ORDER_GOODS_STATUS_LAZY
=
"clx:order:goods:status:lazy:"
;
public
static
final
String
ORDER_GOODS_TRUCK_RECORD
=
"clx:order:goods:truck:record:"
;
public
static
final
String
ORDER_GOODS_RECORD
=
"clx:order:goods:record:"
;
}
performance-web/src/main/java/com/clx/performance/controller/feign/TruckFeignController.java
浏览文件 @
350f2a8c
package
com
.
clx
.
performance
.
controller
.
feign
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.service.OrderGoodsTruckBindService
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.Api
;
...
...
@@ -10,8 +11,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
import
java.util.Set
;
@RestController
@RequestMapping
(
"/feign/orderGoodsDriverTruck"
)
...
...
@@ -22,9 +25,23 @@ public class TruckFeignController {
private
final
OrderGoodsTruckBindService
orderGoodsTruckService
;
private
final
GoodsOrderTruckRecordComponent
goodsOrderTruckRecordComponent
;
@Deprecated
@GetMapping
({
"/getTrucksByOrderGoodsNo"
})
Result
<
List
<
Integer
>>
getTrucksByOrderGoodsNo
(
@RequestParam
(
"orderGoodsNo"
)
@NotNull
(
message
=
"货单编号不可为空"
)
String
orderGoodsNo
){
return
Result
.
ok
(
orderGoodsTruckService
.
getTrucksByOrderGoodsNo
(
orderGoodsNo
));
}
@GetMapping
({
"/getPublicTruckList"
})
Result
<
Set
<
String
>>
getPublicTruckList
(){
return
Result
.
ok
(
goodsOrderTruckRecordComponent
.
getPublicTruckList
());
}
@GetMapping
({
"/getPrivateTruckList"
})
Result
<
List
<
String
>>
getPrivateTruckList
(
@RequestParam
(
"orderGoodsNo"
)
@NotBlank
(
message
=
"货单编号不可为空"
)
String
orderGoodsNo
,
@RequestParam
(
"userNo"
)
@NotNull
(
message
=
"用户编号不可为空"
)
Long
userNo
){
return
Result
.
ok
(
goodsOrderTruckRecordComponent
.
getPrivateTruckList
(
orderGoodsNo
,
userNo
));
}
}
performance-web/src/main/java/com/clx/performance/controller/pc/GoodsOrderController.java
浏览文件 @
350f2a8c
...
...
@@ -76,7 +76,6 @@ public class GoodsOrderController {
public
Result
<
Object
>
saveGoodName
(
@RequestBody
@Validated
OrderGoodsParams
orderGoodsParams
)
{
String
orderNo
=
orderGoodsParams
.
getOrderNo
();
LocalDateTime
now
=
LocalDateTime
.
now
();
LocalDateTime
sendLazyTime
=
null
;
RLock
rLock
=
null
;
try
{
//1. 加分布式锁通过订单ID
...
...
@@ -88,12 +87,10 @@ public class GoodsOrderController {
FeignOrderVO
orderInfo
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
//1平台车辆 2部分平台车辆 3自有车辆
Integer
truckDemand
=
orderInfo
.
getTruckDemand
();
sendLazyTime
=
goodsOrderStrategyContext
.
strategyContext
.
get
(
truckDemand
).
goodsOrderProcess
(
orderGoodsParams
,
orderInfo
,
now
);
goodsOrderStrategyContext
.
strategyContext
.
get
(
truckDemand
).
saveGoodsOrder
(
orderGoodsParams
,
orderInfo
,
now
,
rabbitTemplate
);
}
catch
(
Exception
e
)
{
// throw new ServiceSystemException(e);
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
e
.
getMessage
());
}
finally
{
try
{
if
(
rLock
!=
null
&&
rLock
.
isLocked
())
{
...
...
@@ -105,31 +102,6 @@ public class GoodsOrderController {
}
}
Message
message
=
MessageBuilder
.
withBody
(
orderNo
.
getBytes
()).
build
();
long
epochMilli
=
0L
;
if
(
sendLazyTime
.
isAfter
(
now
))
{
epochMilli
=
sendLazyTime
.
minusMinutes
(
now
.
getMinute
()).
getMinute
()
*
60
*
1000
;
log
.
info
(
"执行订单状态更改,选择时间在当前时间之后,则设置延迟队列时间,时间为:{}"
,
epochMilli
);
}
if
(
epochMilli
==
0L
)
{
log
.
info
(
"执行订单状态更改,epochMilli时间为0,时间为:{}"
,
epochMilli
);
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_ON_DEAD_EXCHANGE
,
RabbitKeyConstants
.
ORDER_ON_DEAD_ROUTE_KEY
,
message
);
}
else
{
log
.
info
(
"执行订单状态更改,epochMilli时间不为0,时间为:{}"
,
epochMilli
);
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_POSTED_EXCHANGE
,
RabbitKeyConstants
.
ORDER_POSTED_ROUTE_KEY
,
MessageBuilder
.
withBody
(
orderNo
.
getBytes
()).
build
());
message
.
getMessageProperties
().
setExpiration
(
String
.
valueOf
(
epochMilli
));
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_ON_EXCHANGE
,
RabbitKeyConstants
.
ORDER_ON_ROUTE_KEY
,
message
);
}
return
Result
.
ok
();
}
...
...
performance-web/src/main/java/com/clx/performance/dao/OrderGoodsDriverTruckDao.java
浏览文件 @
350f2a8c
...
...
@@ -14,7 +14,7 @@ import java.util.List;
*/
public
interface
OrderGoodsDriverTruckDao
extends
BaseDao
<
OrderGoodsDriverTruckMapper
,
OrderGoodsDriverTruck
,
Integer
>
{
void
deleteByTruckNoAndDriverUserNo
(
String
truckNo
,
String
driverUserNo
);
void
deleteByTruckNoAndDriverUserNo
(
String
truckNo
,
String
driverUserNo
,
Integer
truckId
);
Optional
<
List
<
OrderGoodsDriverTruck
>>
selectListByDriverUserNo
(
Long
driverUserNo
);
}
performance-web/src/main/java/com/clx/performance/dao/impl/OrderGoodsDriverTruckDaoImpl.java
浏览文件 @
350f2a8c
...
...
@@ -21,10 +21,11 @@ import java.util.List;
public
class
OrderGoodsDriverTruckDaoImpl
extends
BaseDaoImpl
<
OrderGoodsDriverTruckMapper
,
OrderGoodsDriverTruck
,
Integer
>
implements
OrderGoodsDriverTruckDao
{
@Override
public
void
deleteByTruckNoAndDriverUserNo
(
String
truckNo
,
String
driverUserNo
)
{
public
void
deleteByTruckNoAndDriverUserNo
(
String
truckNo
,
String
driverUserNo
,
Integer
truckId
)
{
baseMapper
.
delete
(
new
QueryWrapper
<
OrderGoodsDriverTruck
>().
lambda
()
.
eq
(
OrderGoodsDriverTruck:
:
getTruckNo
,
truckNo
)
.
eq
(
OrderGoodsDriverTruck:
:
getDriverUserNo
,
Long
.
valueOf
(
driverUserNo
))
.
eq
(
OrderGoodsDriverTruck:
:
getTruckId
,
truckId
)
);
}
...
...
performance-web/src/main/java/com/clx/performance/listener/OrderGoodsDriverTruckListener.java
浏览文件 @
350f2a8c
...
...
@@ -37,7 +37,7 @@ public class OrderGoodsDriverTruckListener {
Object
driverName
=
jsonObject
.
getByPath
(
"driverName"
);
Object
truckNo
=
jsonObject
.
getByPath
(
"truckNo"
);
Object
driverMobile
=
jsonObject
.
getByPath
(
"driverMobile"
);
Object
truckId
=
jsonObject
.
getByPath
(
"truckId"
);
switch
(
operateType
.
toString
())
{
case
"1"
:
OrderGoodsDriverTruck
driverTruck
=
new
OrderGoodsDriverTruck
();
...
...
@@ -45,6 +45,8 @@ public class OrderGoodsDriverTruckListener {
driverTruck
.
setDriverMobile
(
driverMobile
==
null
?
""
:
driverMobile
.
toString
());
driverTruck
.
setDriverName
(
driverName
==
null
?
""
:
driverName
.
toString
());
driverTruck
.
setDriverUserNo
(
driverUserNo
==
null
?
null
:
Long
.
valueOf
(
driverUserNo
.
toString
()));
driverTruck
.
setTruckId
(
truckId
==
null
?
null
:
Integer
.
valueOf
(
truckId
.
toString
()));
orderGoodsDriverTruckDao
.
saveEntity
(
driverTruck
);
log
.
info
(
"处理货单定向司机表:执行插入"
);
break
;
...
...
@@ -52,7 +54,7 @@ public class OrderGoodsDriverTruckListener {
if
(
truckNo
==
null
||
driverUserNo
==
null
)
{
break
;
}
orderGoodsDriverTruckDao
.
deleteByTruckNoAndDriverUserNo
(
truckNo
.
toString
(),
driverUserNo
.
toString
());
orderGoodsDriverTruckDao
.
deleteByTruckNoAndDriverUserNo
(
truckNo
.
toString
(),
driverUserNo
.
toString
()
,
Integer
.
valueOf
(
truckId
.
toString
())
);
log
.
info
(
"处理货单定向司机表:执行删除"
);
break
;
default
:
...
...
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildPoundAuditServiceImpl.java
浏览文件 @
350f2a8c
...
...
@@ -90,6 +90,8 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
poundAuditDetail
.
setRejectType
(
param
.
getRejectType
());
poundAuditDetail
.
setRemark
(
param
.
getRemark
());
poundAuditDetail
.
setId
(
null
);
poundAuditDetail
.
setCreateTime
(
null
);
poundAuditDetail
.
setModifiedTime
(
null
);
Integer
type
=
OrderChildLogEnum
.
Type
.
POUND_AUDIT
.
getCode
();
if
(
Objects
.
equals
(
param
.
getStatus
(),
OrderChildPoundAuditEnum
.
Status
.
REJECT
.
getCode
())){
...
...
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
浏览文件 @
350f2a8c
...
...
@@ -7,6 +7,7 @@ import com.clx.order.feign.OrderFeign;
import
com.clx.order.vo.feign.FeignAddressVO
;
import
com.clx.order.vo.feign.FeignOrderInfoVO
;
import
com.clx.performance.constant.RedisConstants
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.constant.RedissonConstants
;
import
com.clx.performance.dao.*
;
import
com.clx.performance.dto.OrderChildExpectDTO
;
...
...
@@ -92,6 +93,8 @@ public class OrderChildServiceImpl implements OrderChildService {
private
final
IntegralMqService
integralMqService
;
private
final
GoodsOrderTruckRecordComponent
goodsOrderTruckRecordComponent
;
@Override
public
SaveOrderChildVO
saveOrderChild
(
OrderChildSaveParam
param
)
{
...
...
@@ -896,7 +899,7 @@ public class OrderChildServiceImpl implements OrderChildService {
long
count
=
orderChildDao
.
countOfTransitByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
());
// 更新货单完成状态
updateOrderGoodsComplete
(
orderGoods
,
count
);
updateOrderGoodsComplete
(
orderGoods
,
orderChild
,
count
);
orderChild
.
setStatus
(
OrderChildEnum
.
Status
.
UNSETTLE
.
getCode
());
orderChild
.
setConfirmTime
(
LocalDateTime
.
now
());
...
...
@@ -1251,6 +1254,7 @@ public class OrderChildServiceImpl implements OrderChildService {
private
void
updateOrderGoodsDirectReject
(
OrderGoodsTruckBind
orderGoodsTruckBind
)
{
orderGoodsTruckBind
.
setStatus
(
OrderGoodsTruckBind
.
Status
.
CANCEL
.
getCode
());
orderGoodsTruckBindDao
.
updateStatus
(
orderGoodsTruckBind
);
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoodsTruckBind
.
getOrderGoodsNo
(),
orderGoodsTruckBind
.
getTruckNo
());
}
/**
...
...
@@ -1263,22 +1267,23 @@ public class OrderChildServiceImpl implements OrderChildService {
orderGoodsTruckBind
.
setStatus
(
OrderGoodsTruckBind
.
Status
.
CANCEL
.
getCode
());
orderGoodsTruckBindDao
.
updateStatus
(
orderGoodsTruckBind
);
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoodsTruckBind
.
getOrderGoodsNo
(),
orderGoodsTruckBind
.
getTruckNo
());
}
/**
* 更新货单完成状态
*/
private
void
updateOrderGoodsComplete
(
OrderGoods
orderGoods
,
long
count
)
{
if
(
count
>
1
)
{
return
;
}
private
void
updateOrderGoodsComplete
(
OrderGoods
orderGoods
,
OrderChild
orderChild
,
long
count
){
if
(
count
>
1
)
{
return
;}
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
<=
0
){
orderGoodsDao
.
updateOrderGoodsStatusByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsStatusEnum
.
Status
.
SUCCESS
.
getCode
());
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsTruckBindEnum
.
Status
.
EXPIRE
.
getCode
());
if
(
orderGoods
.
getResidueTransportWeight
().
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
orderGoodsDao
.
updateOrderGoodsStatusByOrderGoodsNo
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsStatusEnum
.
Status
.
SUCCESS
.
getCode
());
orderGoodsTruckBindDao
.
updateOrderGoodsBindStatus
(
orderGoods
.
getOrderGoodsNo
(),
OrderGoodsTruckBindEnum
.
Status
.
EXPIRE
.
getCode
());
}
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
orderGoods
.
getOrderGoodsNo
(),
orderChild
.
getTruckNo
());
}
/**
...
...
performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java
浏览文件 @
350f2a8c
...
...
@@ -65,7 +65,9 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
@Override
public
OrderGoodsVO
getOrderGoodsInfoByOrderGoodsNoForPC
(
String
orderGoodsNo
)
{
OrderGoodsVO
orderGoodsVO
=
orderGoodsDao
.
getOrderGoodsInfoByOrderGoodsNoForPC
(
orderGoodsNo
).
map
(
orderGoodsStruct:
:
convert
).
get
();
List
<
String
>
truckList
=
orderGoodsTruckBindDao
.
selectListByOrderGoodsNo
(
orderGoodsNo
).
stream
().
map
(
OrderGoodsTruckBind:
:
getTruckNo
).
collect
(
Collectors
.
toList
());
String
orderNo
=
orderGoodsVO
.
getOrderNo
();
orderGoodsVO
.
setTruckList
(
truckList
);
FeignOrderVO
orderInfoFeign
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
orderGoodsVO
.
setReveiveAddressAll
(
orderInfoFeign
.
getReveiveAddressAll
());
orderGoodsVO
.
setSendAddressAll
(
orderInfoFeign
.
getSendAddressAll
());
...
...
performance-web/src/main/java/com/clx/performance/sqlProvider/OrderGoodsTruckBindSqlProvider.java
浏览文件 @
350f2a8c
...
...
@@ -10,7 +10,7 @@ public class OrderGoodsTruckBindSqlProvider {
public
String
saveBatchEntity
(
String
orderNo
,
String
orderGoodsNo
,
List
<
String
>
trackList
,
String
now
)
{
StringBuffer
sqlList
=
new
StringBuffer
();
sqlList
.
append
(
" INSERT INTO order_goods_truck_bind(order_no,order_goods_no,truck_no,create_time,
update
_time,status) VALUES "
);
sqlList
.
append
(
" INSERT INTO order_goods_truck_bind(order_no,order_goods_no,truck_no,create_time,
modified
_time,status) VALUES "
);
for
(
int
i
=
0
;
i
<
trackList
.
size
();
i
++)
{
String
truckNo
=
trackList
.
get
(
i
);
sqlList
.
append
(
" ('"
).
append
(
orderNo
).
append
(
"','"
).
append
(
orderGoodsNo
).
append
(
"','"
).
append
(
truckNo
).
append
(
"','"
)
...
...
performance-web/src/main/java/com/clx/performance/strategy/GoodsOrderStrategy.java
浏览文件 @
350f2a8c
...
...
@@ -2,10 +2,55 @@ package com.clx.performance.strategy;
import
com.clx.order.params.OrderGoodsParams
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
java.time.LocalDateTime
;
public
interface
GoodsOrderStrategy
{
@Slf4j
public
abstract
class
GoodsOrderStrategy
{
LocalDateTime
goodsOrderProcess
(
OrderGoodsParams
orderGoodsParams
,
FeignOrderVO
orderInfo
,
LocalDateTime
now
);
/**
* 不同的用车需求执行不同的策略 1:one 2:two 3:three
* 用车需求: 1平台车辆 2部分平台车辆 3自有车辆
* @param orderGoodsParams
* @param orderInfo
* @param now
* @return
*/
public
abstract
LocalDateTime
goodsOrderProcess
(
OrderGoodsParams
orderGoodsParams
,
FeignOrderVO
orderInfo
,
LocalDateTime
now
);
public
void
saveGoodsOrder
(
OrderGoodsParams
orderGoodsParams
,
FeignOrderVO
orderInfo
,
LocalDateTime
now
,
RabbitTemplate
rabbitTemplate
)
{
String
orderNo
=
orderGoodsParams
.
getOrderNo
();
//根据不同的订单类型创建不同的货单
LocalDateTime
sendLazyTime
=
goodsOrderProcess
(
orderGoodsParams
,
orderInfo
,
now
);
Message
message
=
MessageBuilder
.
withBody
(
orderNo
.
getBytes
()).
build
();
long
epochMilli
=
0L
;
if
(
sendLazyTime
.
isAfter
(
now
))
{
epochMilli
=
sendLazyTime
.
minusMinutes
(
now
.
getMinute
()).
getMinute
()
*
60
*
1000
;
log
.
info
(
"执行订单状态更改,选择时间在当前时间之后,则设置延迟队列时间,时间为:{}"
,
epochMilli
);
}
if
(
epochMilli
==
0L
)
{
log
.
info
(
"执行订单状态更改,epochMilli时间为0,时间为:{}"
,
epochMilli
);
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_ON_DEAD_EXCHANGE
,
RabbitKeyConstants
.
ORDER_ON_DEAD_ROUTE_KEY
,
message
);
}
else
{
log
.
info
(
"执行订单状态更改,epochMilli时间不为0,时间为:{}"
,
epochMilli
);
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_POSTED_EXCHANGE
,
RabbitKeyConstants
.
ORDER_POSTED_ROUTE_KEY
,
MessageBuilder
.
withBody
(
orderNo
.
getBytes
()).
build
());
message
.
getMessageProperties
().
setExpiration
(
String
.
valueOf
(
epochMilli
));
rabbitTemplate
.
send
(
RabbitKeyConstants
.
ORDER_ON_EXCHANGE
,
RabbitKeyConstants
.
ORDER_ON_ROUTE_KEY
,
message
);
}
}
}
performance-web/src/main/java/com/clx/performance/strategy/impl/OneGoodsOrderStrategy.java
浏览文件 @
350f2a8c
...
...
@@ -7,30 +7,30 @@ import com.clx.order.params.OrderGoodsChildParams;
import
com.clx.order.params.OrderGoodsParams
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.performance.component.GoodsOrderStrategyContext
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderGoodsIdGenerate
;
import
com.clx.performance.component.OrderGoodsStatusLazyComponent
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.mapper.OrderGoodsMapper
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.service.OrderGoodsService
;
import
com.clx.performance.strategy.GoodsOrderStrategy
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.utils.DateUtils
;
import
com.msl.user.data.UserSessionData
;
import
com.msl.user.utils.TokenUtil
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
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.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.time.Duration
;
import
java.time.LocalDateTime
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
...
...
@@ -42,31 +42,26 @@ import java.util.Map;
*/
@Component
(
"OneGoodsOrderStrategy"
)
@Slf4j
public
class
OneGoodsOrderStrategy
implements
GoodsOrderStrategy
,
InitializingBean
{
@AllArgsConstructor
public
class
OneGoodsOrderStrategy
extends
GoodsOrderStrategy
implements
InitializingBean
{
@Autowired
private
OrderGoodsIdGenerate
orderGoodsIdGenerate
;
@Autowired
private
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
;
private
final
OrderGoodsIdGenerate
orderGoodsIdGenerate
;
@Autowired
private
OrderFeign
orderFeign
;
private
final
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
;
@Autowired
OrderGoodsService
orderGoodsService
;
private
final
OrderFeign
orderFeign
;
@Autowired
OrderGoodsDao
orderGoodsDao
;
private
final
OrderGoodsDao
orderGoodsDao
;
@Autowired
private
OrderGoodsStatusLazyComponent
orderGoodsStatusLazyComponent
;
private
final
OrderGoodsStatusLazyComponent
orderGoodsStatusLazyComponent
;
@Autowired
private
GoodsOrderStrategyContext
goodsOrderStrategyContext
;
private
final
GoodsOrderStrategyContext
goodsOrderStrategyContext
;
private
final
RabbitTemplate
rabbitTemplate
;
private
final
GoodsOrderTruckRecordComponent
goodsOrderTruckRecordComponent
;
@Autowired
private
RabbitTemplate
rabbitTemplate
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -87,7 +82,7 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
Map
<
String
,
LocalDateTime
>
mqMap
=
new
HashMap
<>();
List
<
OrderGoods
>
orderGoodsList
=
new
LinkedList
<>();
for
(
OrderGoodsChildParams
child
:
childParamsList
)
{
if
(
child
.
getPendingOrderWay
().
equals
(
2
))
{
if
(
OrderGoodsPendingOrderWayStatusEnum
.
Status
.
EXCLUSIVE
.
getCode
().
equals
(
child
.
getPendingOrderWay
()
))
{
if
(
child
.
getNeedTruckNum
()
==
null
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"定向派单必须选择车辆"
);
...
...
@@ -133,7 +128,8 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
orderGoods
.
setOrderNo
(
orderNo
);
Integer
pendingOrderWay
=
orderGoods
.
getPendingOrderWay
();
String
orderNoPrefix
=
PendingOrderWayStatusEnum
.
Status
.
GK
.
getCode
().
equals
(
pendingOrderWay
)
?
PendingOrderWayStatusEnum
.
Status
.
GK
.
getName
()
:
PendingOrderWayStatusEnum
.
Status
.
DX
.
getName
();
orderGoods
.
setOrderGoodsNo
(
orderNoPrefix
+
beginOrderGoodsId
);
String
orderGoodsNo
=
orderNoPrefix
+
beginOrderGoodsId
;
orderGoods
.
setOrderGoodsNo
(
orderGoodsNo
);
orderGoods
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CREATED
.
getCode
());
orderGoods
.
setSendAddressId
(
orderInfo
.
getSendAddressId
());
...
...
@@ -153,10 +149,11 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
orderGoods
.
setUserName
(
loginUserInfo
.
getUserName
());
orderGoods
.
setUserNo
(
loginUserInfo
.
getUserNo
());
if
(
CollectionUtil
.
isNotEmpty
(
child
.
getTruckList
()))
{
orderGoodsTruckBindDao
.
saveBatchEntity
(
orderNo
,
orderNoPrefix
+
beginOrderGoodsId
,
child
.
getTruckList
(),
now
);
orderGoodsTruckBindDao
.
saveBatchEntity
(
orderNo
,
orderGoodsNo
,
child
.
getTruckList
(),
now
);
goodsOrderTruckRecordComponent
.
saveTruckRecord
(
orderGoodsNo
,
child
.
getTruckList
());
}
mqMap
.
put
(
order
NoPrefix
+
beginOrderGoodsId
,
postedTime
);
orderGoodsStatusLazyComponent
.
expireProduce
(
orderGoods
.
getLastArriveSendTime
(),
order
NoPrefix
+
beginOrderGoodsId
);
mqMap
.
put
(
order
GoodsNo
,
postedTime
);
orderGoodsStatusLazyComponent
.
expireProduce
(
orderGoods
.
getLastArriveSendTime
(),
order
GoodsNo
);
beginOrderGoodsId
=
beginOrderGoodsId
+
1
;
orderGoodsList
.
add
(
orderGoods
);
...
...
@@ -184,8 +181,7 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
Message
message
=
MessageBuilder
.
withBody
(
entry
.
getKey
().
getBytes
()).
build
();
long
epochMilli
=
0L
;
if
(
entry
.
getValue
().
isAfter
(
now
))
{
epochMilli
=
entry
.
getValue
().
minusMinutes
(
now
.
getMinute
()).
getMinute
()
*
60
*
1000
;
epochMilli
=
Duration
.
between
(
now
,
entry
.
getValue
()).
toMillis
();
log
.
info
(
"货单更改挂单中,选择时间在当前时间之后,则设置延迟队列时间,时间为:{}"
,
epochMilli
);
}
...
...
@@ -206,4 +202,17 @@ public class OneGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
}
}
}
public
static
void
main
(
String
[]
args
)
{
// "2023-10-31 00:00:00" 2023-10-14 11:33:05
LocalDateTime
now
=
DateUtils
.
parseDateTime
(
"2023-10-14 11:33:05"
).
get
();
LocalDateTime
end
=
DateUtils
.
parseDateTime
(
"2023-10-31 00:00:00"
).
get
();
System
.
out
.
println
();
Duration
duration
=
Duration
.
between
(
now
,
end
);
long
millis
=
duration
.
toMillis
();
System
.
out
.
println
(
millis
);
}
}
performance-web/src/main/java/com/clx/performance/strategy/impl/ThreeGoodsOrderStrategy.java
浏览文件 @
350f2a8c
...
...
@@ -8,31 +8,38 @@ import com.clx.order.params.OrderGoodsParams;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.order.vo.feign.OrderOwnTruckVo
;
import
com.clx.performance.component.GoodsOrderStrategyContext
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderGoodsIdGenerate
;
import
com.clx.performance.component.OrderGoodsStatusLazyComponent
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.enums.OrderGoodsStatusEnum
;
import
com.clx.performance.enums.PendingOrderWayStatusEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.enums.TruckDemandEnum
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.service.OrderGoodsService
;
import
com.clx.performance.strategy.GoodsOrderStrategy
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.utils.DateUtils
;
import
com.msl.user.data.UserSessionData
;
import
com.msl.user.utils.TokenUtil
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
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.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.time.Duration
;
import
java.time.LocalDateTime
;
import
java.util.*
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -40,32 +47,24 @@ import java.util.stream.Collectors;
*/
@Component
(
"ThreeGoodsOrderStrategy"
)
@Slf4j
public
class
ThreeGoodsOrderStrategy
implements
GoodsOrderStrategy
,
InitializingBean
{
@Autowired
private
OrderGoodsIdGenerate
orderGoodsIdGenerate
;
@AllArgsConstructor
public
class
ThreeGoodsOrderStrategy
extends
GoodsOrderStrategy
implements
InitializingBean
{
private
final
OrderGoodsIdGenerate
orderGoodsIdGenerate
;
@Autowired
private
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
;
private
final
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
;
private
final
OrderGoodsDao
orderGoodsDao
;
@Autowired
OrderGoodsService
orderGoodsService
;
private
final
GoodsOrderStrategyContext
goodsOrderStrategyContext
;
@Autowired
OrderGoodsDao
orderGoodsDao
;
private
final
OrderFeign
orderFeign
;
@Autowired
private
GoodsOrderStrategyContext
goodsOrderStrategyContext
;
private
final
RabbitTemplate
rabbitTemplate
;
@Autowired
private
OrderFeign
orderFeign
;
private
final
OrderGoodsStatusLazyComponent
orderGoodsStatusLazyComponent
;
@Autowired
private
RabbitTemplate
rabbitTemplate
;
@Autowired
private
OrderGoodsStatusLazyComponent
orderGoodsStatusLazyComponent
;
private
final
GoodsOrderTruckRecordComponent
goodsOrderTruckRecordComponent
;
@Override
...
...
@@ -132,7 +131,8 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing
orderGoods
.
setOrderNo
(
orderNo
);
Integer
pendingOrderWay
=
orderGoods
.
getPendingOrderWay
();
String
orderNoPrefix
=
PendingOrderWayStatusEnum
.
Status
.
GK
.
getCode
().
equals
(
pendingOrderWay
)
?
PendingOrderWayStatusEnum
.
Status
.
GK
.
getName
()
:
PendingOrderWayStatusEnum
.
Status
.
DX
.
getName
();
orderGoods
.
setOrderGoodsNo
(
orderNoPrefix
+
beginOrderGoodsId
);
String
orderGoodsNo
=
orderNoPrefix
+
beginOrderGoodsId
;
orderGoods
.
setOrderGoodsNo
(
orderGoodsNo
);
orderGoods
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CREATED
.
getCode
());
orderGoods
.
setSendAddressId
(
orderInfo
.
getSendAddressId
());
...
...
@@ -155,16 +155,18 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing
if
(
orderOwnTruckVos
==
null
||
orderOwnTruckVos
.
isEmpty
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"全部自由车辆列表数据为空"
);
}
List
<
String
>
collec
t
=
orderOwnTruckVos
.
stream
().
map
(
OrderOwnTruckVo:
:
getTruckNo
).
collect
(
Collectors
.
toList
());
if
(
collec
t
.
isEmpty
())
{
List
<
String
>
truckLis
t
=
orderOwnTruckVos
.
stream
().
map
(
OrderOwnTruckVo:
:
getTruckNo
).
collect
(
Collectors
.
toList
());
if
(
truckLis
t
.
isEmpty
())
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"全部自由车辆列表数据为空"
);
}
if
(
CollectionUtil
.
isNotEmpty
(
collect
))
{
orderGoodsTruckBindDao
.
saveBatchEntity
(
orderNo
,
orderNoPrefix
+
beginOrderGoodsId
,
collect
,
now
);
//车牌号集合
if
(
CollectionUtil
.
isNotEmpty
(
truckList
))
{
orderGoodsTruckBindDao
.
saveBatchEntity
(
orderNo
,
orderGoodsNo
,
truckList
,
now
);
goodsOrderTruckRecordComponent
.
saveTruckRecord
(
orderGoodsNo
,
truckList
);
}
mqMap
.
put
(
orderNoPrefix
+
beginOrderGoodsId
,
postedTime
);
orderGoodsStatusLazyComponent
.
expireProduce
(
orderGoods
.
getLastArriveSendTime
(),
order
NoPrefix
+
beginOrderGoodsId
);
orderGoodsStatusLazyComponent
.
expireProduce
(
orderGoods
.
getLastArriveSendTime
(),
order
GoodsNo
);
beginOrderGoodsId
=
beginOrderGoodsId
+
1
;
...
...
@@ -193,7 +195,7 @@ public class ThreeGoodsOrderStrategy implements GoodsOrderStrategy, Initializing
Message
message
=
MessageBuilder
.
withBody
(
entry
.
getKey
().
getBytes
()).
build
();
long
epochMilli
=
0L
;
if
(
entry
.
getValue
().
isAfter
(
now
))
{
epochMilli
=
entry
.
getValue
().
minusMinutes
(
now
.
getMinute
()).
getMinute
()
*
60
*
1000
;
epochMilli
=
Duration
.
between
(
now
,
entry
.
getValue
()).
toMillis
()
;
log
.
info
(
"货单更改挂单中,选择时间在当前时间之后,则设置延迟队列时间,时间为:{}"
,
epochMilli
);
...
...
performance-web/src/main/java/com/clx/performance/strategy/impl/TwoGoodsOrderStrategy.java
浏览文件 @
350f2a8c
...
...
@@ -7,6 +7,7 @@ import com.clx.order.params.OrderGoodsChildParams;
import
com.clx.order.params.OrderGoodsParams
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.performance.component.GoodsOrderStrategyContext
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderGoodsIdGenerate
;
import
com.clx.performance.component.OrderGoodsStatusLazyComponent
;
import
com.clx.performance.constant.RabbitKeyConstants
;
...
...
@@ -14,23 +15,22 @@ import com.clx.performance.dao.OrderGoodsDao;
import
com.clx.performance.dao.OrderGoodsTruckBindDao
;
import
com.clx.performance.enums.*
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.service.OrderGoodsService
;
import
com.clx.performance.strategy.GoodsOrderStrategy
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.utils.DateUtils
;
import
com.msl.user.data.UserSessionData
;
import
com.msl.user.utils.TokenUtil
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
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.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.time.Duration
;
import
java.time.LocalDateTime
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
...
...
@@ -42,32 +42,25 @@ import java.util.Map;
*/
@Component
(
"TwoGoodsOrderStrategy"
)
@Slf4j
public
class
TwoGoodsOrderStrategy
implements
GoodsOrderStrategy
,
InitializingBean
{
@Autowired
private
OrderGoodsIdGenerate
orderGoodsIdGenerate
;
@AllArgsConstructor
public
class
TwoGoodsOrderStrategy
extends
GoodsOrderStrategy
implements
InitializingBean
{
private
final
OrderGoodsIdGenerate
orderGoodsIdGenerate
;
@Autowired
private
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
;
private
final
OrderGoodsTruckBindDao
orderGoodsTruckBindDao
;
private
final
OrderGoodsDao
orderGoodsDao
;
@Autowired
OrderGoodsService
orderGoodsService
;
private
final
OrderFeign
orderFeign
;
@Autowired
OrderGoodsDao
orderGoodsDao
;
private
final
OrderGoodsStatusLazyComponent
orderGoodsStatusLazyComponent
;
@Autowired
private
OrderFeign
orderFeign
;
private
final
GoodsOrderStrategyContext
goodsOrderStrategyContext
;
@Autowired
private
OrderGoodsStatusLazyComponent
orderGoodsStatusLazyComponent
;
private
final
RabbitTemplate
rabbitTemplate
;
@Autowired
private
GoodsOrderStrategyContext
goodsOrderStrategyContext
;
private
final
GoodsOrderTruckRecordComponent
goodsOrderTruckRecordComponent
;
@Autowired
private
RabbitTemplate
rabbitTemplate
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -94,7 +87,7 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
long
beginOrderGoodsId
=
orderGoodsIdGenerate
.
getOrderGoodsId
(
childParamsList
.
size
());
for
(
OrderGoodsChildParams
child
:
childParamsList
)
{
if
(
child
.
getPendingOrderWay
().
equals
(
2
))
{
if
(
OrderGoodsPendingOrderWayStatusEnum
.
Status
.
EXCLUSIVE
.
getCode
().
equals
(
child
.
getPendingOrderWay
()
))
{
if
(
child
.
getNeedTruckNum
()
==
null
)
{
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
HTTP_ERROR
,
"定向派单必须选择车辆"
);
...
...
@@ -142,7 +135,8 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
orderGoods
.
setOrderNo
(
orderNo
);
Integer
pendingOrderWay
=
orderGoods
.
getPendingOrderWay
();
String
orderNoPrefix
=
PendingOrderWayStatusEnum
.
Status
.
GK
.
getCode
().
equals
(
pendingOrderWay
)
?
PendingOrderWayStatusEnum
.
Status
.
GK
.
getName
()
:
PendingOrderWayStatusEnum
.
Status
.
DX
.
getName
();
orderGoods
.
setOrderGoodsNo
(
orderNoPrefix
+
beginOrderGoodsId
);
String
orderGoodsNo
=
orderNoPrefix
+
beginOrderGoodsId
;
orderGoods
.
setOrderGoodsNo
(
orderGoodsNo
);
orderGoods
.
setOrderGoodsStatus
(
OrderGoodsStatusEnum
.
Status
.
CREATED
.
getCode
());
orderGoods
.
setSendAddressId
(
orderInfo
.
getSendAddressId
());
...
...
@@ -162,10 +156,11 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
orderGoods
.
setUserName
(
loginUserInfo
.
getUserName
());
orderGoods
.
setUserNo
(
loginUserInfo
.
getUserNo
());
if
(
CollectionUtil
.
isNotEmpty
(
child
.
getTruckList
()))
{
orderGoodsTruckBindDao
.
saveBatchEntity
(
orderNo
,
orderNoPrefix
+
beginOrderGoodsId
,
child
.
getTruckList
(),
now
);
orderGoodsTruckBindDao
.
saveBatchEntity
(
orderNo
,
orderGoodsNo
,
child
.
getTruckList
(),
now
);
goodsOrderTruckRecordComponent
.
saveTruckRecord
(
orderGoodsNo
,
child
.
getTruckList
());
}
mqMap
.
put
(
order
NoPrefix
+
beginOrderGoodsId
,
postedTime
);
orderGoodsStatusLazyComponent
.
expireProduce
(
orderGoods
.
getLastArriveSendTime
(),
order
NoPrefix
+
beginOrderGoodsId
);
mqMap
.
put
(
order
GoodsNo
,
postedTime
);
orderGoodsStatusLazyComponent
.
expireProduce
(
orderGoods
.
getLastArriveSendTime
(),
order
GoodsNo
);
beginOrderGoodsId
=
beginOrderGoodsId
+
1
;
orderGoodsList
.
add
(
orderGoods
);
...
...
@@ -220,7 +215,7 @@ public class TwoGoodsOrderStrategy implements GoodsOrderStrategy, InitializingBe
Message
message
=
MessageBuilder
.
withBody
(
entry
.
getKey
().
getBytes
()).
build
();
long
epochMilli
=
0L
;
if
(
entry
.
getValue
().
isAfter
(
now
))
{
epochMilli
=
entry
.
getValue
().
minusMinutes
(
now
.
getMinute
()).
getMinute
()
*
60
*
1000
;
epochMilli
=
Duration
.
between
(
now
,
entry
.
getValue
()).
toMillis
()
;
log
.
info
(
"货单更改挂单中,选择时间在当前时间之后,则设置延迟队列时间,时间为:{}"
,
epochMilli
);
}
if
(
epochMilli
==
0L
)
{
...
...
performance-web/src/test/java/com/clx/performance/JobTest.java
浏览文件 @
350f2a8c
package
com
.
clx
.
performance
;
import
com.clx.order.enums.OrderEnum
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.param.feign.UpdateOrderInfoParam
;
import
com.clx.order.param.feign.UpdateOrderInfoResidueWeightParam
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.order.vo.feign.OrderOwnTruckVo
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderGoodsStatusLazyComponent
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.constant.RedisConstants
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.enums.OrderGoodsStatusEnum
;
import
com.clx.performance.enums.OrderGoodsTruckBindEnum
;
import
com.clx.performance.mapper.OrderGoodsMapper
;
import
com.clx.performance.model.OrderGoods
;
import
com.msl.common.base.Optional
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.data.redis.core.ZSetOperations
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.util.Date
;
import
java.util.ArrayList
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
@SpringBootTest
...
...
@@ -52,10 +36,17 @@ public class JobTest {
@Autowired
private
OrderGoodsDao
orderGoodsDao
;
@Autowired
private
GoodsOrderTruckRecordComponent
recordComponent
;
@Test
public
void
test1
()
{
List
<
OrderOwnTruckVo
>
orderOwnTruckVos
=
orderFeign
.
selectTruckListFeign
(
"PT2023092700041"
);
List
<
String
>
collect
=
orderOwnTruckVos
.
stream
().
map
(
OrderOwnTruckVo:
:
getTruckNo
).
collect
(
Collectors
.
toList
());
System
.
out
.
println
(
collect
);
List
<
String
>
list
=
new
ArrayList
<>();
list
.
add
(
"晋A99999"
);
recordComponent
.
saveTruckRecord
(
"123"
,
list
);
recordComponent
.
getPrivateTruckList
(
"123"
,
1001183036834771013L
);
System
.
out
.
println
();
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论