Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
5a6faa73
提交
5a6faa73
authored
8月 06, 2024
作者:
李瑞鑫
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/dev' into dev
上级
8cdaae06
97ba80d6
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
127 行增加
和
21 行删除
+127
-21
OrderChildEnum.java
...c/main/java/com/clx/performance/enums/OrderChildEnum.java
+8
-0
OrderChildCarrierBatchCancelParam.java
...rformance/param/pc/OrderChildCarrierBatchCancelParam.java
+23
-0
RedisConstants.java
...ain/java/com/clx/performance/constant/RedisConstants.java
+6
-0
CarrierOrderChildController.java
...erformance/controller/pc/CarrierOrderChildController.java
+9
-0
OrderChildService.java
...n/java/com/clx/performance/service/OrderChildService.java
+2
-1
LastTruckServiceImpl.java
...om/clx/performance/service/impl/LastTruckServiceImpl.java
+19
-18
OrderChildServiceImpl.java
...m/clx/performance/service/impl/OrderChildServiceImpl.java
+60
-2
没有找到文件。
performance-api/src/main/java/com/clx/performance/enums/OrderChildEnum.java
浏览文件 @
5a6faa73
...
@@ -177,6 +177,14 @@ public enum OrderChildEnum {
...
@@ -177,6 +177,14 @@ public enum OrderChildEnum {
);
);
public
static
final
List
<
Integer
>
CARRIER_CAN_CANCEL_STATUS_LIST
=
Arrays
.
asList
(
Status
.
CREATED
.
getCode
(),
Status
.
GO_TO_SEND
.
getCode
(),
Status
.
ARRIVE_SEND
.
getCode
()
);
public
static
ConcurrentHashMap
<
Integer
,
String
>
map
=
new
ConcurrentHashMap
();
public
static
ConcurrentHashMap
<
Integer
,
String
>
map
=
new
ConcurrentHashMap
();
static
{
static
{
for
(
OrderChildEnum
.
Status
for
(
OrderChildEnum
.
Status
...
...
performance-api/src/main/java/com/clx/performance/param/pc/OrderChildCarrierBatchCancelParam.java
0 → 100644
浏览文件 @
5a6faa73
package
com
.
clx
.
performance
.
param
.
pc
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
javax.validation.constraints.NotEmpty
;
import
java.util.List
;
@Getter
@Setter
@NoArgsConstructor
public
class
OrderChildCarrierBatchCancelParam
{
@ApiModelProperty
(
value
=
"运单编号集合"
,
example
=
""
)
@NotEmpty
(
message
=
"运单编号集合不能为空"
)
private
List
<
String
>
childNoList
;
@ApiModelProperty
(
value
=
"取消原因"
,
example
=
"信息错误"
)
private
String
remark
;
}
performance-web/src/main/java/com/clx/performance/constant/RedisConstants.java
浏览文件 @
5a6faa73
...
@@ -42,4 +42,10 @@ public class RedisConstants {
...
@@ -42,4 +42,10 @@ public class RedisConstants {
*/
*/
public
static
final
String
LINE_WARN_WEATHER
=
"clx-performance:lineWarn:weather:"
;
public
static
final
String
LINE_WARN_WEATHER
=
"clx-performance:lineWarn:weather:"
;
/**
* 订单最后一车
*/
public
static
final
String
ORDER_LAST_TRUCK_CHILD
=
"clx-performance:order:last:truck:child:"
;
}
}
performance-web/src/main/java/com/clx/performance/controller/pc/CarrierOrderChildController.java
浏览文件 @
5a6faa73
...
@@ -2,6 +2,7 @@ package com.clx.performance.controller.pc;
...
@@ -2,6 +2,7 @@ package com.clx.performance.controller.pc;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.param.pc.OrderChildCarrierBatchCancelParam
;
import
com.clx.performance.param.pc.OrderChildCarrierCancelParam
;
import
com.clx.performance.param.pc.OrderChildCarrierCancelParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PageMonitorOrderChildQCParam
;
import
com.clx.performance.param.pc.PageMonitorOrderChildQCParam
;
...
@@ -127,4 +128,12 @@ public class CarrierOrderChildController {
...
@@ -127,4 +128,12 @@ public class CarrierOrderChildController {
}
}
@ApiOperation
(
value
=
"批量取消运单"
,
notes
=
"<br>By:刘海泉"
)
@PostMapping
(
"/updateCarrierBatchCancel"
)
public
Result
<
List
<
String
>>
updateCarrierBatchCancel
(
@RequestBody
@Validated
OrderChildCarrierBatchCancelParam
param
)
{
List
<
String
>
cancelFailList
=
orderChildService
.
updateCarrierBatchCancel
(
param
);
return
Result
.
ok
(
cancelFailList
);
}
}
}
performance-web/src/main/java/com/clx/performance/service/OrderChildService.java
浏览文件 @
5a6faa73
...
@@ -8,7 +8,6 @@ import com.clx.performance.param.app.*;
...
@@ -8,7 +8,6 @@ import com.clx.performance.param.app.*;
import
com.clx.performance.param.app.owner.PageOwnerOrderChildListParam
;
import
com.clx.performance.param.app.owner.PageOwnerOrderChildListParam
;
import
com.clx.performance.param.feign.CancelOrderGoodsParam
;
import
com.clx.performance.param.feign.CancelOrderGoodsParam
;
import
com.clx.performance.param.pc.*
;
import
com.clx.performance.param.pc.*
;
import
com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementDriverParam
;
import
com.clx.performance.vo.app.*
;
import
com.clx.performance.vo.app.*
;
import
com.clx.performance.vo.app.owner.OwnerOrderChildVO
;
import
com.clx.performance.vo.app.owner.OwnerOrderChildVO
;
import
com.clx.performance.vo.pc.*
;
import
com.clx.performance.vo.pc.*
;
...
@@ -108,6 +107,8 @@ public interface OrderChildService {
...
@@ -108,6 +107,8 @@ public interface OrderChildService {
void
cacheOrderChildExpectData
(
String
childNo
,
OrderChildExpectDTO
expect
);
void
cacheOrderChildExpectData
(
String
childNo
,
OrderChildExpectDTO
expect
);
List
<
String
>
updateCarrierBatchCancel
(
OrderChildCarrierBatchCancelParam
param
);
List
<
HistoryLineTranVolumeChartVO
>
getHistoryLineTransportVolume
(
String
orderNo
);
List
<
HistoryLineTranVolumeChartVO
>
getHistoryLineTransportVolume
(
String
orderNo
);
}
}
performance-web/src/main/java/com/clx/performance/service/impl/LastTruckServiceImpl.java
浏览文件 @
5a6faa73
...
@@ -4,12 +4,11 @@ import com.alibaba.fastjson.JSON;
...
@@ -4,12 +4,11 @@ import com.alibaba.fastjson.JSON;
import
com.clx.open.sdk.callback.OpenCallBackClient
;
import
com.clx.open.sdk.callback.OpenCallBackClient
;
import
com.clx.open.sdk.callback.message.OrderChildMessage
;
import
com.clx.open.sdk.callback.message.OrderChildMessage
;
import
com.clx.open.sdk.enums.ResultStatusEnum
;
import
com.clx.open.sdk.enums.ResultStatusEnum
;
import
com.clx.order.enums.OrderEnum
;
import
com.clx.order.enums.ResultEnum
;
import
com.clx.order.enums.ResultEnum
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.feign.OrderFeign
;
import
com.clx.order.param.feign.UpdateOrderLastTruckParam
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.order.vo.feign.FeignOrderVO
;
import
com.clx.performance.config.ThirdAppConfig
;
import
com.clx.performance.config.ThirdAppConfig
;
import
com.clx.performance.constant.RedisConstants
;
import
com.clx.performance.constant.RedissonConstants
;
import
com.clx.performance.constant.RedissonConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderChild
;
...
@@ -22,6 +21,7 @@ import lombok.AllArgsConstructor;
...
@@ -22,6 +21,7 @@ import lombok.AllArgsConstructor;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.redisson.api.RedissonClient
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
...
@@ -45,6 +45,7 @@ public class LastTruckServiceImpl implements LastTruckService {
...
@@ -45,6 +45,7 @@ public class LastTruckServiceImpl implements LastTruckService {
private
final
OrderChildStruct
orderChildStruct
;
private
final
OrderChildStruct
orderChildStruct
;
private
final
ThirdAppConfig
thirdAppConfig
;
private
final
ThirdAppConfig
thirdAppConfig
;
private
final
RedissonClient
redissonClient
;
private
final
RedissonClient
redissonClient
;
private
final
RedisTemplate
<
String
,
String
>
redisTemplate
;
/**
/**
* @Author kavin
* @Author kavin
* @Description 判断最后一车的逻辑
* @Description 判断最后一车的逻辑
...
@@ -121,18 +122,21 @@ public class LastTruckServiceImpl implements LastTruckService {
...
@@ -121,18 +122,21 @@ public class LastTruckServiceImpl implements LastTruckService {
@Override
@Override
public
OrderChildVO
getOrderLastTruck
(
String
orderNo
)
throws
Exception
{
public
OrderChildVO
getOrderLastTruck
(
String
orderNo
)
throws
Exception
{
FeignOrderVO
orderInfo
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
if
(
Objects
.
isNull
(
orderInfo
)){
log
.
error
(
"计算订单最后一车,通过订单号:{},未查询到对应的订单"
,
orderNo
);
return
null
;
}
//为每个货主的订单进行加锁,计算最后一车进行排队,防止多个运单dts监听并发导致最后一车重复计算
//为每个货主的订单进行加锁,计算最后一车进行排队,防止多个运单dts监听并发导致最后一车重复计算
RLock
lock
=
redissonClient
.
getLock
(
RedissonConstants
.
CALC_ORDER_LAST_TRUCK_LOCK
+
orderNo
);
RLock
lock
=
redissonClient
.
getLock
(
RedissonConstants
.
CALC_ORDER_LAST_TRUCK_LOCK
+
orderNo
);
try
{
try
{
FeignOrderVO
orderInfo
=
orderFeign
.
getOrderInfoFeign
(
orderNo
);
if
(
Objects
.
isNull
(
orderInfo
)){
String
lastTruckCacheKey
=
getLastTruckCacheKey
(
orderNo
);
log
.
error
(
"计算订单最后一车,通过订单号:{},未查询到对应的订单"
,
orderNo
);
return
null
;
}
//已经计算出最后一车,则直接返回运单信息
//已经计算出最后一车,则直接返回运单信息
if
(
Objects
.
equals
(
orderInfo
.
getLastTruckFlag
(),
OrderEnum
.
LastTruckFlag
.
YES
.
getCode
(
))){
if
(
Objects
.
equals
(
Boolean
.
TRUE
,
redisTemplate
.
hasKey
(
lastTruckCacheKey
))){
OrderChild
child
=
orderChildDao
.
getByChildNo
(
orderInfo
.
getLastTruckChildNo
()).
orElseThrow
(
String
childNo
=
redisTemplate
.
opsForValue
().
get
(
lastTruckCacheKey
);
ResultEnum
.
DATA_NOT_FIND
);
OrderChild
child
=
orderChildDao
.
getByChildNo
(
childNo
).
orElseThrow
(
ResultEnum
.
DATA_NOT_FIND
);
return
orderChildStruct
.
convert
(
child
);
return
orderChildStruct
.
convert
(
child
);
}
}
boolean
flag
=
lock
.
tryLock
(
15
,
30
,
TimeUnit
.
SECONDS
);
boolean
flag
=
lock
.
tryLock
(
15
,
30
,
TimeUnit
.
SECONDS
);
...
@@ -148,11 +152,8 @@ public class LastTruckServiceImpl implements LastTruckService {
...
@@ -148,11 +152,8 @@ public class LastTruckServiceImpl implements LastTruckService {
//查询最后一车的运单
//查询最后一车的运单
OrderChild
child
=
orderChildDao
.
getLastTruckChild
(
orderNo
);
OrderChild
child
=
orderChildDao
.
getLastTruckChild
(
orderNo
);
log
.
info
(
"当前订单计算出最后一车,运单编号:{} "
,
child
.
getChildNo
());
log
.
info
(
"当前订单计算出最后一车,运单编号:{} "
,
child
.
getChildNo
());
//更新订单最后一车
//更新订单最后一车到缓存,并设置有效期为60天
UpdateOrderLastTruckParam
param
=
new
UpdateOrderLastTruckParam
();
redisTemplate
.
opsForValue
().
set
(
getLastTruckCacheKey
(
orderNo
),
child
.
getChildNo
(),
60
,
TimeUnit
.
DAYS
);
param
.
setOrderNo
(
orderNo
);
param
.
setChildNo
(
child
.
getChildNo
());
orderFeign
.
updateOrderLastTruck
(
param
);
return
orderChildStruct
.
convert
(
child
);
return
orderChildStruct
.
convert
(
child
);
}
}
return
null
;
return
null
;
...
@@ -161,9 +162,9 @@ public class LastTruckServiceImpl implements LastTruckService {
...
@@ -161,9 +162,9 @@ public class LastTruckServiceImpl implements LastTruckService {
lock
.
unlock
();
lock
.
unlock
();
}
}
}
}
}
public
String
getLastTruckCacheKey
(
String
orderNo
){
return
RedisConstants
.
ORDER_LAST_TRUCK_CHILD
+
orderNo
;
}
}
}
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
浏览文件 @
5a6faa73
...
@@ -63,8 +63,6 @@ import com.clx.performance.utils.zjxl.ZjxlGpsService;
...
@@ -63,8 +63,6 @@ import com.clx.performance.utils.zjxl.ZjxlGpsService;
import
com.clx.performance.vo.app.*
;
import
com.clx.performance.vo.app.*
;
import
com.clx.performance.vo.app.owner.OwnerOrderChildVO
;
import
com.clx.performance.vo.app.owner.OwnerOrderChildVO
;
import
com.clx.performance.vo.pc.*
;
import
com.clx.performance.vo.pc.*
;
import
com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractSettlementDriverVO
;
import
com.clx.performance.vo.pc.carrier.settle.CarrierPagePlatformServiceFeeConfigVO
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
import
com.clx.user.enums.idcard.IdCardEnum
;
import
com.clx.user.enums.idcard.IdCardEnum
;
import
com.clx.user.feign.DocumentFeign
;
import
com.clx.user.feign.DocumentFeign
;
...
@@ -3139,4 +3137,64 @@ public class OrderChildServiceImpl implements OrderChildService {
...
@@ -3139,4 +3137,64 @@ public class OrderChildServiceImpl implements OrderChildService {
throw
new
ServiceSystemException
(
OCR_RECOGNITION_ERROR
);
throw
new
ServiceSystemException
(
OCR_RECOGNITION_ERROR
);
}
}
}
}
@Override
public
List
<
String
>
updateCarrierBatchCancel
(
OrderChildCarrierBatchCancelParam
param
)
{
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
listInField
(
OrderChild:
:
getChildNo
,
param
.
getChildNoList
());
List
<
OrderChild
>
canCancelOrderChildList
=
new
ArrayList
<>();
//可以取消的运单集合
List
<
OrderChild
>
notCancelOrderChildList
=
new
ArrayList
<>();
//不可以取消的运单集合
//已接单、前往货源地、到达货源地 的运单才可以取消
for
(
OrderChild
child
:
orderChildList
)
{
if
(
OrderChildEnum
.
CARRIER_CAN_CANCEL_STATUS_LIST
.
contains
(
child
.
getStatus
())){
canCancelOrderChildList
.
add
(
child
);
}
else
{
notCancelOrderChildList
.
add
(
child
);
}
}
/* // 禁止取消 (卸车前取消)
if (orderChild.getStatus() >= OrderChildEnum.Status.UNLOAD.getCode()) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID);
}
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(
PerformanceResultEnum.DATA_NOT_FIND);
// 定向
OrderGoodsTruckBind orderGoodsTruckBind = null;
if (Objects.equals(orderGoods.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())
|| Objects.equals(orderGoods.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.FLEET_EXCLUSIVE.getCode())) {
orderGoodsTruckBind = orderGoodsTruckBindDao.getByOrderGoodsNoAndTruckNo(orderGoods.getOrderGoodsNo(),
orderChild.getTruckNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
}
orderChild.setCancelRemark(param.getRemark());
orderChild.setCancelTime(LocalDateTime.now());
orderChild.setFinishTime(orderChild.getCancelTime());
orderChild.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
// 返回吨数
updateOrderGoodsAmountReturn(orderChild, orderGoods);
// 取消定向
updateOrderGoodsDirectCancel(orderGoods,orderGoodsTruckBind);
orderChildDao.updateCancel(orderChild);
// 更新出车状态
updateDriverOrderStatusCancel(orderChild.getDriverUserNo(), orderChild.getTruckId());
// 日志
orderChildLogService.saveCarrierOrderChildLog(childNo, OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode(),
OrderChildLogEnum.Type.PLATFORM_CANCEL.getMsg(), loginUserInfo.getUserNo(),
loginUserInfo.getUserName());
// 承运取消后置逻辑
orderChildPostService.orderChildCancelByCarrier(orderChild, UserTypeEnum.CARRIER.getCode(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());*/
return
notCancelOrderChildList
.
stream
().
map
(
OrderChild
::
getChildNo
).
collect
(
Collectors
.
toList
());
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论