Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
ad4fd014
提交
ad4fd014
authored
8月 12, 2024
作者:
jiangwujie
浏览文件
操作
浏览文件
下载
差异文件
merge to test
Former-commit-id:
d37112c5
上级
53e4e8e4
401e32e7
隐藏空白字符变更
内嵌
并排
正在显示
61 个修改的文件
包含
2596 行增加
和
52 行删除
+2596
-52
pom.xml
performance-api/pom.xml
+1
-1
AppEnum.java
...-api/src/main/java/com/clx/performance/enums/AppEnum.java
+1
-0
EnabledStatusEnum.java
...ain/java/com/clx/performance/enums/EnabledStatusEnum.java
+28
-0
OrderChildEnum.java
...c/main/java/com/clx/performance/enums/OrderChildEnum.java
+109
-0
PerformanceResultEnum.java
...java/com/clx/performance/enums/PerformanceResultEnum.java
+23
-0
NeedAlertSuperviseInfoParam.java
...lx/performance/param/app/NeedAlertSuperviseInfoParam.java
+28
-0
OrderChildLoadRangeCheckParam.java
.../performance/param/app/OrderChildLoadRangeCheckParam.java
+30
-0
ArtificialCancelOrderQueryParam.java
...performance/param/pc/ArtificialCancelOrderQueryParam.java
+23
-0
SaveDriverNoticeConfigParam.java
...clx/performance/param/pc/SaveDriverNoticeConfigParam.java
+28
-0
SaveOrderChildOperateLimitConfigParam.java
...mance/param/pc/SaveOrderChildOperateLimitConfigParam.java
+25
-0
NeedAlertSuperviseInfoResultVO.java
...lx/performance/vo/app/NeedAlertSuperviseInfoResultVO.java
+26
-0
OrderChildLoadRangeCheckResultVO.java
.../performance/vo/app/OrderChildLoadRangeCheckResultVO.java
+47
-0
OrderChildVO.java
...rc/main/java/com/clx/performance/vo/app/OrderChildVO.java
+30
-0
DriverNoticeConfigVO.java
.../java/com/clx/performance/vo/pc/DriverNoticeConfigVO.java
+35
-0
OrderChildOperateLimitConfigVO.java
...clx/performance/vo/pc/OrderChildOperateLimitConfigVO.java
+34
-0
OrderChildOperateRecordVO.java
.../com/clx/performance/vo/pc/OrderChildOperateRecordVO.java
+55
-0
OrderGoodsVO.java
...src/main/java/com/clx/performance/vo/pc/OrderGoodsVO.java
+0
-2
pom.xml
performance-web/pom.xml
+4
-0
ClxMessageConfig.java
...ain/java/com/clx/performance/config/ClxMessageConfig.java
+8
-0
LoadAppConfig.java
...c/main/java/com/clx/performance/config/LoadAppConfig.java
+32
-0
AppDriverOrderChildController.java
...ormance/controller/app/AppDriverOrderChildController.java
+11
-0
DriverNoticeConfigController.java
...rformance/controller/pc/DriverNoticeConfigController.java
+68
-0
OrderCancelController.java
.../clx/performance/controller/pc/OrderCancelController.java
+18
-9
OrderChildOperateLimitConfigController.java
...controller/pc/OrderChildOperateLimitConfigController.java
+70
-0
DriverNoticeConfigDao.java
...n/java/com/clx/performance/dao/DriverNoticeConfigDao.java
+18
-0
OrderChildDao.java
.../src/main/java/com/clx/performance/dao/OrderChildDao.java
+1
-1
OrderChildOperateLimitConfigDao.java
.../clx/performance/dao/OrderChildOperateLimitConfigDao.java
+18
-0
OrderChildOperateRecordDao.java
...a/com/clx/performance/dao/OrderChildOperateRecordDao.java
+18
-0
DriverNoticeConfigDaoImpl.java
...m/clx/performance/dao/impl/DriverNoticeConfigDaoImpl.java
+39
-0
OrderChildDaoImpl.java
.../java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
+2
-2
OrderChildOperateLimitConfigDaoImpl.java
...ormance/dao/impl/OrderChildOperateLimitConfigDaoImpl.java
+40
-0
OrderChildOperateRecordDaoImpl.java
.../performance/dao/impl/OrderChildOperateRecordDaoImpl.java
+26
-0
OrderChildMessageNoticeJob.java
...a/com/clx/performance/job/OrderChildMessageNoticeJob.java
+39
-0
DriverNoticeConfigMapper.java
.../com/clx/performance/mapper/DriverNoticeConfigMapper.java
+12
-0
OrderChildMapper.java
...ain/java/com/clx/performance/mapper/OrderChildMapper.java
+2
-5
OrderChildOperateLimitConfigMapper.java
...erformance/mapper/OrderChildOperateLimitConfigMapper.java
+12
-0
OrderChildOperateRecordMapper.java
...clx/performance/mapper/OrderChildOperateRecordMapper.java
+23
-0
App.java
...ance-web/src/main/java/com/clx/performance/model/App.java
+1
-1
DriverNoticeConfig.java
...in/java/com/clx/performance/model/DriverNoticeConfig.java
+56
-0
OrderChild.java
...b/src/main/java/com/clx/performance/model/OrderChild.java
+13
-0
OrderChildOperateLimitConfig.java
...m/clx/performance/model/OrderChildOperateLimitConfig.java
+56
-0
OrderChildOperateRecord.java
...va/com/clx/performance/model/OrderChildOperateRecord.java
+87
-0
DriverNoticeConfigService.java
...om/clx/performance/service/DriverNoticeConfigService.java
+21
-0
OrderCancelService.java
.../java/com/clx/performance/service/OrderCancelService.java
+17
-4
OrderChildOperateLimitConfigService.java
...formance/service/OrderChildOperateLimitConfigService.java
+21
-0
OrderChildOperateRecordService.java
...x/performance/service/OrderChildOperateRecordService.java
+9
-0
OrderChildService.java
...n/java/com/clx/performance/service/OrderChildService.java
+5
-1
DriverNoticeConfigServiceImpl.java
...rformance/service/impl/DriverNoticeConfigServiceImpl.java
+55
-0
OrderCancelServiceImpl.java
.../clx/performance/service/impl/OrderCancelServiceImpl.java
+79
-2
OrderChildOperateLimitConfigServiceImpl.java
...service/impl/OrderChildOperateLimitConfigServiceImpl.java
+55
-0
OrderChildOperateRecordServiceImpl.java
...ance/service/impl/OrderChildOperateRecordServiceImpl.java
+13
-0
OrderChildServiceImpl.java
...m/clx/performance/service/impl/OrderChildServiceImpl.java
+360
-4
OrderGoodsServiceImpl.java
...m/clx/performance/service/impl/OrderGoodsServiceImpl.java
+1
-1
OrderChildOperateRecordSqlProvider.java
...mance/sqlProvider/OrderChildOperateRecordSqlProvider.java
+30
-0
OrderChildSqlProvider.java
...om/clx/performance/sqlProvider/OrderChildSqlProvider.java
+35
-19
DriverNoticeConfigStruct.java
.../com/clx/performance/struct/DriverNoticeConfigStruct.java
+12
-0
OrderChildOperateLimitConfigStruct.java
...erformance/struct/OrderChildOperateLimitConfigStruct.java
+12
-0
OrderChildServiceImpl2Test.java
.../performance/service/impl/OrderChildServiceImpl2Test.java
+325
-0
OrderChildServiceImpl3Test.java
.../performance/service/impl/OrderChildServiceImpl3Test.java
+143
-0
OrderChildServiceImplTest.java
...x/performance/service/impl/OrderChildServiceImplTest.java
+133
-0
OrderChildSqlProviderTest.java
...lx/performance/sqlProvider/OrderChildSqlProviderTest.java
+73
-0
没有找到文件。
performance-api/pom.xml
浏览文件 @
ad4fd014
...
...
@@ -6,7 +6,7 @@
<groupId>
com.clx.cy
</groupId>
<artifactId>
performance-api
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<version>
${clx-performance-api.version}
</version>
<name>
performance-api
</name>
<parent>
...
...
performance-api/src/main/java/com/clx/performance/enums/AppEnum.java
浏览文件 @
ad4fd014
...
...
@@ -16,6 +16,7 @@ public enum AppEnum {
public
enum
UniqueIdentifier
{
SMART_WEIGHT
(
1
,
"场站-smart-weight"
),
PURCHASE_MANAGE
(
2
,
"供应链-purchase-manage"
),
;
...
...
performance-api/src/main/java/com/clx/performance/enums/EnabledStatusEnum.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.Objects
;
import
java.util.Optional
;
@Getter
@AllArgsConstructor
public
enum
EnabledStatusEnum
{
ENABLE
(
1
,
"启用"
),
DISABLE
(
0
,
"禁用"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
EnabledStatusEnum
>
getByCode
(
Integer
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
Objects
.
equals
(
e
.
code
,
code
)).
findFirst
();
}
public
static
String
getMsgByCode
(
Integer
code
)
{
return
getByCode
(
code
).
map
(
EnabledStatusEnum:
:
getMsg
).
orElse
(
null
);
}
}
\ No newline at end of file
performance-api/src/main/java/com/clx/performance/enums/OrderChildEnum.java
浏览文件 @
ad4fd014
...
...
@@ -193,4 +193,113 @@ public enum OrderChildEnum {
}
}
@Getter
@AllArgsConstructor
public
enum
OperateRecordType
{
CANCEL_ORDER
(
1
,
"取消订单"
),
REMOVE_LIMIT
(
2
,
"解除装车限制"
),
;
private
final
int
code
;
private
final
String
msg
;
public
static
Optional
<
OperateRecordType
>
getByCode
(
int
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
==
code
).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
OperateRecordType:
:
getMsg
).
orElse
(
null
);
}
}
/**
* 驶入驶离货源地状态
*/
@Getter
@AllArgsConstructor
public
enum
EnterExitSendStatus
{
INIT
(
0
,
"到达货源地"
),
DRIVE_IN
(
1
,
"驶入"
),
DRIVE_OUT
(
2
,
"驶离"
);
private
final
Integer
code
;
private
final
String
name
;
public
static
Optional
<
EnterExitSendStatus
>
getByCode
(
Integer
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
.
equals
(
code
)).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
EnterExitSendStatus:
:
getName
).
orElse
(
null
);
}
}
/**
* 驶离通知状态
*/
@Getter
@AllArgsConstructor
public
enum
ExitNoticeStatus
{
NOT_NOTIFIED
(
0
,
"未通知"
),
NOTIFIED
(
1
,
"已通知"
);
private
final
Integer
code
;
private
final
String
name
;
public
static
Optional
<
ExitNoticeStatus
>
getByCode
(
Integer
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
.
equals
(
code
)).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
ExitNoticeStatus:
:
getName
).
orElse
(
null
);
}
}
/**
* 驶入驶离货源地状态
*/
@Getter
@AllArgsConstructor
public
enum
RemoveLoadLimitStatus
{
NOT_REMOVED
(
0
,
"未解除"
),
REMOVED
(
1
,
"已解除"
),
;
private
final
Integer
code
;
private
final
String
name
;
public
static
Optional
<
RemoveLoadLimitStatus
>
getByCode
(
Integer
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
.
equals
(
code
)).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
RemoveLoadLimitStatus:
:
getName
).
orElse
(
null
);
}
}
@Getter
@AllArgsConstructor
public
enum
NeedAlertEnum
{
OK
(
0
,
"不用弹窗"
),
FAIL
(
1
,
"需要弹"
);
private
final
int
code
;
private
final
String
msg
;
}
@Getter
@AllArgsConstructor
public
enum
SuperviseTypeEnum
{
SUPERVISE_LOAD
(
1
,
"监装"
),
SUPERVISE_UNLOAD
(
2
,
"监卸"
);
private
final
int
code
;
private
final
String
msg
;
}
}
performance-api/src/main/java/com/clx/performance/enums/PerformanceResultEnum.java
浏览文件 @
ad4fd014
...
...
@@ -4,6 +4,9 @@ import com.msl.common.enums.ResultEnum;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.Optional
;
@Getter
@AllArgsConstructor
...
...
@@ -192,7 +195,27 @@ public enum PerformanceResultEnum implements ResultEnum {
SETTLEMENT_OWNER_CONFIRM_SETTLEMENT_ERROR
(
2113
,
"运单需重新分配开票公司,请联系结算人员处理"
),
/**
* 运单装车限制配置
*/
ORDER_CHILD_LOAD_LIMIT_CONFIG_ERROR
(
2201
,
"运单装车限制配置错误"
),
TRUCK_LOCATION_OUT_OF_SEND_RANGE
(
2202
,
"请在货源地%.2f公里范围内上传装车信息"
),
ORDER_CHILD_LOAD_LIMIT_CONFIG_DISABLED
(
2203
,
"运单装车限制配置禁用"
),
GAODE_DISTANCE_ERROR
(
2204
,
"调用高德获取货源地距离失败"
),
TRUCK_LOCATION_ERROR
(
2205
,
"获取卡车位置失败"
),
;
private
final
int
code
;
private
final
String
msg
;
public
static
Optional
<
PerformanceResultEnum
>
getByCode
(
Integer
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
==
(
code
)).
findFirst
();
}
public
static
String
getMsgByCode
(
Integer
code
)
{
return
getByCode
(
code
).
map
(
PerformanceResultEnum:
:
getMsg
).
orElse
(
null
);
}
public
static
PerformanceResultEnum
getEnumByCode
(
Integer
code
)
{
return
getByCode
(
code
).
orElse
(
null
);
}
}
performance-api/src/main/java/com/clx/performance/param/app/NeedAlertSuperviseInfoParam.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
param
.
app
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
/**
* 装车范围校验检查参数
*/
@Getter
@Setter
@NoArgsConstructor
public
class
NeedAlertSuperviseInfoParam
{
@ApiModelProperty
(
value
=
"运单编号"
,
example
=
"100000000"
)
@NotBlank
(
message
=
"运单编号不能为空"
)
private
String
childNo
;
@ApiModelProperty
(
value
=
"类型 1-监装 2-监卸"
,
example
=
"1"
)
@NotNull
(
message
=
"类型不能为空"
)
private
Integer
type
;
}
performance-api/src/main/java/com/clx/performance/param/app/OrderChildLoadRangeCheckParam.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
param
.
app
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.math.BigDecimal
;
/**
* 装车范围校验检查参数
*/
@Getter
@Setter
@NoArgsConstructor
public
class
OrderChildLoadRangeCheckParam
{
@ApiModelProperty
(
value
=
"运单编号"
,
example
=
"100000000"
)
@NotBlank
(
message
=
"运单编号不能为空"
)
private
String
childNo
;
@ApiModelProperty
(
"纬度"
)
private
BigDecimal
latitude
;
@ApiModelProperty
(
"经度"
)
private
BigDecimal
longitude
;
}
performance-api/src/main/java/com/clx/performance/param/pc/ArtificialCancelOrderQueryParam.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
param
.
pc
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
@Data
public
class
ArtificialCancelOrderQueryParam
{
@ApiModelProperty
(
"运单编号"
)
private
String
orderChildNo
;
@ApiModelProperty
(
"车牌号"
)
private
String
truckNo
;
public
void
checkParam
()
{
if
(
orderChildNo
==
null
&&
truckNo
==
null
)
{
throw
new
IllegalArgumentException
(
"运单编号和车牌号不能同时为空"
);
}
}
}
performance-api/src/main/java/com/clx/performance/param/pc/SaveDriverNoticeConfigParam.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
param
.
pc
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.math.BigDecimal
;
/**
* @author jiangwujie
*/
@Getter
@Setter
public
class
SaveDriverNoticeConfigParam
{
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
"配置名称"
)
private
String
name
;
@ApiModelProperty
(
value
=
"通知触发距离:默认1.5,最大9999.9"
)
private
BigDecimal
noticeTriggerDistance
;
@ApiModelProperty
(
value
=
"启用状态 ,0:禁用,1:启用"
)
private
Integer
status
;
}
\ No newline at end of file
performance-api/src/main/java/com/clx/performance/param/pc/SaveOrderChildOperateLimitConfigParam.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
param
.
pc
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.math.BigDecimal
;
/**
* @author jiangwujie
*/
@Getter
@Setter
public
class
SaveOrderChildOperateLimitConfigParam
{
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
"配置名称"
)
private
String
name
;
@ApiModelProperty
(
"可上传装车信息范围"
)
private
BigDecimal
allowUploadDistance
;
}
performance-api/src/main/java/com/clx/performance/vo/app/NeedAlertSuperviseInfoResultVO.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
vo
.
app
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
/**
* 是否需要监装结果VO
*/
@Getter
@Setter
@NoArgsConstructor
public
class
NeedAlertSuperviseInfoResultVO
{
@ApiModelProperty
(
value
=
"是否需要弹信息 0 不需要 1 需要"
,
example
=
"0"
)
private
Integer
needAlert
;
@ApiModelProperty
(
value
=
"监装人"
,
example
=
"张三"
)
private
String
supervisor
;
@ApiModelProperty
(
value
=
"联系方式"
,
example
=
"12345678901"
)
private
String
mobile
;
@ApiModelProperty
(
value
=
"监装位置"
,
example
=
"北业亿林洗煤厂"
)
private
String
location
;
}
\ No newline at end of file
performance-api/src/main/java/com/clx/performance/vo/app/OrderChildLoadRangeCheckResultVO.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
vo
.
app
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
java.util.Objects
;
import
static
com
.
clx
.
performance
.
enums
.
PerformanceResultEnum
.
ORDER_CHILD_LOAD_LIMIT_CONFIG_DISABLED
;
/**
* 是否需要监装结果VO
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public
class
OrderChildLoadRangeCheckResultVO
{
@ApiModelProperty
(
value
=
"是否需要弹信息 0 不需要 1 需要"
,
example
=
"0"
)
private
Integer
needAlert
;
@ApiModelProperty
(
value
=
"错误码"
,
example
=
"-1"
)
private
Integer
code
;
@ApiModelProperty
(
value
=
"错误信息"
,
example
=
"错误"
)
private
String
msg
;
public
Result
<
OrderChildLoadRangeCheckResultVO
>
toResult
()
{
if
(
Objects
.
equals
(
code
,
OrderChildEnum
.
NeedAlertEnum
.
OK
.
getCode
())
//配置禁用也不弹窗
||
(
Objects
.
equals
(
code
,
ORDER_CHILD_LOAD_LIMIT_CONFIG_DISABLED
.
getCode
()))
)
{
return
Result
.
ok
();
}
else
{
Result
<
OrderChildLoadRangeCheckResultVO
>
result
=
Result
.
fail
(
PerformanceResultEnum
.
getEnumByCode
(
code
));
result
.
setData
(
this
);
result
.
setMsg
(
msg
);
return
result
;
}
}
}
\ No newline at end of file
performance-api/src/main/java/com/clx/performance/vo/app/OrderChildVO.java
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
vo
.
app
;
import
cn.hutool.json.JSONUtil
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.OrderGoodsEnum
;
import
com.msl.common.convertor.type.MoneyOutConvert
;
...
...
@@ -9,10 +10,12 @@ import lombok.Getter;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
org.apache.commons.lang3.StringUtils
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
...
...
@@ -258,4 +261,31 @@ public class OrderChildVO {
return
OrderGoodsEnum
.
SendWaitModeEnum
.
getMsgByCode
(
sendWaitMode
);
}
@ApiModelProperty
(
value
=
"发货采样位置"
)
private
String
sendQualityPosition
;
@ApiModelProperty
(
value
=
"发货地采样视频"
)
private
String
sendSamplingVideo
;
@ApiModelProperty
(
value
=
"发货地采样照片"
)
private
String
sendSamplingPic
;
@ApiModelProperty
(
value
=
"监装联系人"
)
private
String
superviseContacts
;
@ApiModelProperty
(
value
=
"监装联系人电话"
)
private
String
superviseMobile
;
@ApiModelProperty
(
value
=
"发货地采样照片"
)
public
List
<
String
>
getSendSamplingPicList
()
{
if
(
StringUtils
.
isNotBlank
(
sendSamplingPic
))
{
return
JSONUtil
.
toList
(
sendSamplingPic
,
String
.
class
);
}
return
new
ArrayList
<>();
}
@ApiModelProperty
(
value
=
"发货地采样视频"
)
public
List
<
String
>
getSendSamplingVideoList
()
{
if
(
StringUtils
.
isNotBlank
(
sendSamplingVideo
))
{
return
JSONUtil
.
toList
(
sendSamplingVideo
,
String
.
class
);
}
return
new
ArrayList
<>();
}
}
performance-api/src/main/java/com/clx/performance/vo/pc/DriverNoticeConfigVO.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
vo
.
pc
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.ToString
;
import
java.math.BigDecimal
;
/**
* 司机通知配置
* @author jiangwujie
*/
@Getter
@Setter
@ToString
public
class
DriverNoticeConfigVO
{
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
"配置名称"
)
private
String
name
;
@ApiModelProperty
(
value
=
"通知触发距离:默认1.5,最大9999.9"
)
private
BigDecimal
noticeTriggerDistance
;
@ApiModelProperty
(
value
=
"启用状态:0禁用 1启用"
)
private
Integer
status
;
public
Integer
getNoticeTriggerDistanceMeter
()
{
return
noticeTriggerDistance
!=
null
?
noticeTriggerDistance
.
multiply
(
new
BigDecimal
(
1000
)).
intValue
()
:
0
;
}
}
performance-api/src/main/java/com/clx/performance/vo/pc/OrderChildOperateLimitConfigVO.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
vo
.
pc
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.ToString
;
import
java.math.BigDecimal
;
/**
* @author yangqifa
*/
@Getter
@Setter
@ToString
public
class
OrderChildOperateLimitConfigVO
{
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
"配置名称"
)
private
String
name
;
@ApiModelProperty
(
"可上传装车信息范围:默认2.0,最大9999.9"
)
private
BigDecimal
allowUploadDistance
;
@ApiModelProperty
(
value
=
"启用状态 0 禁用 1 启用"
)
private
Integer
status
;
public
Integer
allowUploadDistanceMeter
()
{
return
allowUploadDistance
.
multiply
(
new
BigDecimal
(
1000
)).
intValue
();
}
}
performance-api/src/main/java/com/clx/performance/vo/pc/OrderChildOperateRecordVO.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
vo
.
pc
;
import
com.clx.performance.enums.OrderChildEnum
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@ToString
@NoArgsConstructor
public
class
OrderChildOperateRecordVO
{
@ApiModelProperty
(
value
=
"运单编号"
,
example
=
"100000000"
)
private
String
childNo
;
@ApiModelProperty
(
value
=
"操作类型 1 取消运单 2 解除装车限制"
,
example
=
"1"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"主车牌照"
,
example
=
"京A12345"
)
private
String
truckNo
;
@ApiModelProperty
(
value
=
"司机名称"
,
example
=
"张三"
)
private
String
driverName
;
@ApiModelProperty
(
value
=
"联系方式"
,
example
=
"130000000"
)
private
String
driverMobile
;
@ApiModelProperty
(
value
=
"货源地"
,
example
=
"朝阳"
)
private
String
sendAddress
;
@ApiModelProperty
(
value
=
"目的地"
,
example
=
"西城"
)
private
String
receiveAddress
;
@ApiModelProperty
(
value
=
"货物类型名称"
,
example
=
"面煤"
)
public
String
goodTypeName
;
@ApiModelProperty
(
value
=
"备注"
,
example
=
"备注xxxx"
)
public
String
remark
;
@ApiModelProperty
(
value
=
"操作时间"
,
example
=
"2020-01-01 10:10:10"
)
public
String
operateTime
;
@ApiModelProperty
(
value
=
"操作人"
,
example
=
"张三"
)
public
String
operator
;
@ApiModelProperty
(
value
=
"操作类型 取消运单 解除装车限制"
,
example
=
"取消运单"
)
public
String
getTypeMsg
()
{
return
OrderChildEnum
.
OperateRecordType
.
getMsgByCode
(
type
);
}
}
\ No newline at end of file
performance-api/src/main/java/com/clx/performance/vo/pc/OrderGoodsVO.java
浏览文件 @
ad4fd014
...
...
@@ -198,7 +198,6 @@ public class OrderGoodsVO {
return
OrderGoodsEnum
.
SendWaitModeEnum
.
getMsgByCode
(
sendWaitMode
);
}
@ApiModelProperty
(
"当前货单总吨数是否超过总拉运量 1:超过 "
)
private
Integer
overOrderWeight
;
}
\ No newline at end of file
performance-web/pom.xml
浏览文件 @
ad4fd014
...
...
@@ -102,6 +102,10 @@
<groupId>
com.smart
</groupId>
<artifactId>
smart-weight-sdk
</artifactId>
</dependency>
<dependency>
<groupId>
com.clx.cy
</groupId>
<artifactId>
purchase-manage-sdk
</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.msl</groupId>-->
...
...
performance-web/src/main/java/com/clx/performance/config/ClxMessageConfig.java
浏览文件 @
ad4fd014
...
...
@@ -35,5 +35,13 @@ public class ClxMessageConfig {
private
Integer
vehicleWarnChannelId
;
//线路报警短信模板
private
String
lineWarnTemplateCode
;
/**
* 上传装货信息短信模板
*/
private
String
uploadLoadInfoTemplateCode
;
/**
* 提示监装信息短信模板
*/
private
String
noticeSupervisionTemplateCode
;
}
performance-web/src/main/java/com/clx/performance/config/LoadAppConfig.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
config
;
import
com.clx.performance.dao.AppDao
;
import
com.clx.performance.enums.AppEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.model.App
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @Author liruixin
* @create 2024-01-10 13:19
*/
@Component
public
class
LoadAppConfig
{
private
App
purchaseManageApp
;
@Autowired
private
AppDao
appDao
;
public
App
getPurchaseManageApp
()
{
if
(
purchaseManageApp
==
null
)
{
purchaseManageApp
=
appDao
.
getOneByField
(
App:
:
getUniqueIdentifier
,
AppEnum
.
UniqueIdentifier
.
PURCHASE_MANAGE
.
getCode
()).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);;
}
return
purchaseManageApp
;
}
}
performance-web/src/main/java/com/clx/performance/controller/app/AppDriverOrderChildController.java
浏览文件 @
ad4fd014
...
...
@@ -195,4 +195,15 @@ public class AppDriverOrderChildController {
return
Result
.
ok
(
orderChildService
.
ocrRecognition
(
param
));
}
@ApiOperation
(
value
=
"司机端装货范围检查拦截"
,
notes
=
"<br>By:姜武杰"
)
@PostMapping
(
"/loadRangeCheck"
)
public
Result
<
OrderChildLoadRangeCheckResultVO
>
loadRangeCheck
(
@RequestBody
@Validated
OrderChildLoadRangeCheckParam
param
)
{
return
orderChildService
.
loadRangeCheck
(
param
).
toResult
();
}
@ApiOperation
(
value
=
"是否需要弹出监装信息"
,
notes
=
"<br>By:姜武杰"
)
@PostMapping
(
"/needAlertSuperviseInfo"
)
public
Result
<
NeedAlertSuperviseInfoResultVO
>
needAlertSuperviseInfo
(
@RequestBody
@Validated
NeedAlertSuperviseInfoParam
param
)
{
return
Result
.
ok
(
orderChildService
.
needAlertSuperviseInfo
(
param
));
}
}
performance-web/src/main/java/com/clx/performance/controller/pc/DriverNoticeConfigController.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
controller
.
pc
;
import
com.clx.performance.param.pc.SaveDriverNoticeConfigParam
;
import
com.clx.performance.service.DriverNoticeConfigService
;
import
com.clx.performance.vo.pc.DriverNoticeConfigVO
;
import
com.msl.common.convertor.aspect.UnitCovert
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.constraints.NotNull
;
/**
* @author jiangwujie
*/
@Slf4j
@RestController
@RequestMapping
(
value
=
"/pc/carrier/driverNoticeConfig"
)
@Validated
@Api
(
tags
=
"司机通知配置"
)
@AllArgsConstructor
public
class
DriverNoticeConfigController
{
private
final
DriverNoticeConfigService
driverNoticeConfigService
;
@ApiOperation
(
value
=
"司机通知配置列表"
,
notes
=
"<br>By:姜武杰"
)
@GetMapping
(
"/listConfig"
)
@UnitCovert
(
param
=
false
)
public
Result
<
DriverNoticeConfigVO
>
listConfig
()
{
return
Result
.
ok
(
driverNoticeConfigService
.
listConfig
());
}
@ApiOperation
(
value
=
"司机通知配置详情"
,
notes
=
"<br>By:姜武杰"
)
@GetMapping
(
"/getDetail"
)
@UnitCovert
(
param
=
false
)
public
Result
<
DriverNoticeConfigVO
>
getDetail
(
@NotNull
(
message
=
"id不能为空"
)
Integer
id
)
{
return
Result
.
ok
(
driverNoticeConfigService
.
getDetail
(
id
));
}
@ApiOperation
(
value
=
"编辑司机通知配置"
,
notes
=
"<br>By:姜武杰"
)
@PostMapping
(
"/update"
)
@UnitCovert
public
Result
updateConfig
(
@RequestBody
@Validated
SaveDriverNoticeConfigParam
param
)
{
driverNoticeConfigService
.
updateConfig
(
param
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"司机通知配置启用"
,
notes
=
"<br>By:姜武杰"
)
@PostMapping
(
"/enable"
)
@UnitCovert
public
Result
enableConfig
(
@ApiParam
(
"id"
)
@RequestParam
(
"id"
)
@NotNull
(
message
=
"id不能为空"
)
@Validated
Integer
id
)
{
driverNoticeConfigService
.
enableConfig
(
id
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"司机通知配置禁用"
,
notes
=
"<br>By:姜武杰"
)
@PostMapping
(
"/disable"
)
@UnitCovert
public
Result
disableConfig
(
@ApiParam
(
"id"
)
@RequestParam
(
"id"
)
@NotNull
(
message
=
"id不能为空"
)
Integer
id
)
{
driverNoticeConfigService
.
disableConfig
(
id
);
return
Result
.
ok
();
}
}
performance-web/src/main/java/com/clx/performance/controller/pc/OrderCancelController.java
浏览文件 @
ad4fd014
...
...
@@ -2,24 +2,19 @@ package com.clx.performance.controller.pc;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dao.settle.SettlementDriverDetailDao
;
import
com.clx.performance.dao.settle.SettlementOwnerDetailDao
;
import
com.clx.performance.feign.TransportFeignService
;
import
com.clx.performance.param.pc.ArtificialCancelOrderParam
;
import
com.clx.performance.param.pc.ArtificialCancelOrderQueryParam
;
import
com.clx.performance.param.pc.OrderCancelParam
;
import
com.clx.performance.param.pc.OrderChildCancelRecordParam
;
import
com.clx.performance.service.OrderCancelService
;
import
com.clx.performance.service.TransportSyncService
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.clx.performance.vo.pc.OrderChildOperateRecordVO
;
import
com.msl.common.base.PageData
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -50,8 +45,8 @@ public class OrderCancelController {
@ApiOperation
(
value
=
"客服取消运单查询"
,
notes
=
"<br>By:胡宇帆"
)
@GetMapping
(
"/findArtificialCancelOrder"
)
public
Result
<
OrderChildVO
>
findArtificialCancelOrder
(
@RequestParam
String
orderChildNo
)
{
OrderChildVO
vo
=
orderCancelService
.
findArtificialCancelOrder
(
orderChildNo
);
public
Result
<
OrderChildVO
>
findArtificialCancelOrder
(
ArtificialCancelOrderQueryParam
param
)
{
OrderChildVO
vo
=
orderCancelService
.
findArtificialCancelOrder
(
param
);
return
Result
.
ok
(
vo
);
}
...
...
@@ -70,5 +65,19 @@ public class OrderCancelController {
return
Result
.
page
(
page
.
getRecords
(),
page
.
getTotal
(),
page
.
getPages
());
}
@ApiOperation
(
value
=
"运单处理记录"
,
notes
=
"<br>By:姜武杰"
)
@PostMapping
(
"/orderChildOperateRecord"
)
public
Result
<
PageData
<
OrderChildOperateRecordVO
>>
orderChildOperateRecord
(
@RequestBody
OrderChildCancelRecordParam
param
)
{
IPage
<
OrderChildOperateRecordVO
>
page
=
orderCancelService
.
orderChildOperateRecord
(
param
);
return
Result
.
page
(
page
.
getRecords
(),
page
.
getTotal
(),
page
.
getPages
());
}
@ApiOperation
(
value
=
"客服解除装车限制"
,
notes
=
"<br>By:姜武杰"
)
@PostMapping
(
"/artificialRemoveLoadLimit"
)
public
Result
<
Object
>
artificialRemoveLoadLimit
(
@RequestBody
ArtificialCancelOrderParam
param
)
{
orderCancelService
.
removeLoadLimit
(
param
);
return
Result
.
ok
();
}
}
performance-web/src/main/java/com/clx/performance/controller/pc/OrderChildOperateLimitConfigController.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
controller
.
pc
;
import
com.clx.performance.param.pc.SaveOrderChildOperateLimitConfigParam
;
import
com.clx.performance.service.OrderChildOperateLimitConfigService
;
import
com.clx.performance.vo.pc.OrderChildOperateLimitConfigVO
;
import
com.msl.common.convertor.aspect.UnitCovert
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.constraints.NotNull
;
/**
* @author jiangwujie
*/
@Slf4j
@RestController
@RequestMapping
(
value
=
"/pc/carrier/orderChildOperateLimitConfig"
)
@Validated
@Api
(
tags
=
"运单操作限制配置"
)
@AllArgsConstructor
public
class
OrderChildOperateLimitConfigController
{
private
final
OrderChildOperateLimitConfigService
orderChildOperateLimitService
;
@ApiOperation
(
value
=
"运单操作限制配置列表"
,
notes
=
"<br>By:姜武杰"
)
@GetMapping
(
"/listConfig"
)
@UnitCovert
(
param
=
false
)
public
Result
<
OrderChildOperateLimitConfigVO
>
listConfig
()
{
return
Result
.
ok
(
orderChildOperateLimitService
.
listConfig
());
}
@ApiOperation
(
value
=
"运单操作限制配置详情"
,
notes
=
"<br>By:姜武杰"
)
@GetMapping
(
"/getDetail"
)
@UnitCovert
(
param
=
false
)
public
Result
<
OrderChildOperateLimitConfigVO
>
getDetail
(
@NotNull
(
message
=
"id不能为空"
)
Integer
id
)
{
return
Result
.
ok
(
orderChildOperateLimitService
.
getDetail
(
id
));
}
@ApiOperation
(
value
=
"编辑运单操作限制配置"
,
notes
=
"<br>By:姜武杰"
)
@PostMapping
(
"/update"
)
@UnitCovert
public
Result
updateConfig
(
@RequestBody
@Validated
SaveOrderChildOperateLimitConfigParam
param
)
{
orderChildOperateLimitService
.
updateConfig
(
param
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"运单操作限制配置启用"
,
notes
=
"<br>By:姜武杰"
)
@PostMapping
(
"/enable"
)
@UnitCovert
public
Result
enableConfig
(
@NotNull
(
message
=
"id不能为空"
)
@RequestParam
(
"id"
)
Integer
id
)
{
orderChildOperateLimitService
.
enableConfig
(
id
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"运单操作限制配置禁用"
,
notes
=
"<br>By:姜武杰"
)
@PostMapping
(
"/disable"
)
@UnitCovert
public
Result
disableConfig
(
@ApiParam
(
"id"
)
@RequestParam
(
"id"
)
@NotNull
(
message
=
"id不能为空"
)
Integer
id
)
{
orderChildOperateLimitService
.
disableConfig
(
id
);
return
Result
.
ok
();
}
}
performance-web/src/main/java/com/clx/performance/dao/DriverNoticeConfigDao.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
dao
;
import
com.msl.common.dao.BaseDao
;
import
com.clx.performance.mapper.DriverNoticeConfigMapper
;
import
com.clx.performance.model.DriverNoticeConfig
;
/**
* @author jiangwj
* Date 2024-08-07
* Time 16:29
*/
public
interface
DriverNoticeConfigDao
extends
BaseDao
<
DriverNoticeConfigMapper
,
DriverNoticeConfig
,
Integer
>
{
DriverNoticeConfig
listConfig
();
boolean
updateConfig
(
DriverNoticeConfig
config
);
boolean
updateStatus
(
Integer
id
,
Integer
status
);
}
performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java
浏览文件 @
ad4fd014
...
...
@@ -152,7 +152,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
* @param orderChildNo
* @return
*/
OrderChildVO
findArtificialCancelOrder
(
String
orderChildNo
);
OrderChildVO
findArtificialCancelOrder
(
ArtificialCancelOrderQueryParam
param
);
IPage
<
OrderChildVO
>
orderChildCancelRecord
(
OrderChildCancelRecordParam
param
);
...
...
performance-web/src/main/java/com/clx/performance/dao/OrderChildOperateLimitConfigDao.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
dao
;
import
com.msl.common.dao.BaseDao
;
import
com.clx.performance.mapper.OrderChildOperateLimitConfigMapper
;
import
com.clx.performance.model.OrderChildOperateLimitConfig
;
/**
* @author jiangwj
* Date 2024-08-07
* Time 16:29
*/
public
interface
OrderChildOperateLimitConfigDao
extends
BaseDao
<
OrderChildOperateLimitConfigMapper
,
OrderChildOperateLimitConfig
,
Integer
>
{
OrderChildOperateLimitConfig
listConfig
();
boolean
updateConfig
(
OrderChildOperateLimitConfig
config
);
boolean
updateStatus
(
Integer
id
,
Integer
status
);
}
performance-web/src/main/java/com/clx/performance/dao/OrderChildOperateRecordDao.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
dao
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.mapper.OrderChildOperateRecordMapper
;
import
com.clx.performance.model.OrderChildOperateRecord
;
import
com.clx.performance.param.pc.OrderChildCancelRecordParam
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.clx.performance.vo.pc.OrderChildOperateRecordVO
;
import
com.msl.common.dao.BaseDao
;
/**
* @author jiangwujie
* Date 2024-08-08
* Time 11:20
*/
public
interface
OrderChildOperateRecordDao
extends
BaseDao
<
OrderChildOperateRecordMapper
,
OrderChildOperateRecord
,
Integer
>
{
IPage
<
OrderChildOperateRecordVO
>
orderChildOperateRecord
(
OrderChildCancelRecordParam
param
);
}
performance-web/src/main/java/com/clx/performance/dao/impl/DriverNoticeConfigDaoImpl.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
dao
.
impl
;
import
com.clx.performance.dao.DriverNoticeConfigDao
;
import
com.clx.performance.mapper.DriverNoticeConfigMapper
;
import
com.clx.performance.model.DriverNoticeConfig
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Repository
;
/**
* @author jiangwj
* Date 2024-08-07
* Time 16:29
*/
@Repository
public
class
DriverNoticeConfigDaoImpl
extends
BaseDaoImpl
<
DriverNoticeConfigMapper
,
DriverNoticeConfig
,
Integer
>
implements
DriverNoticeConfigDao
{
@Override
public
DriverNoticeConfig
listConfig
()
{
return
list
().
get
(
0
);
}
@Override
public
boolean
updateConfig
(
DriverNoticeConfig
config
)
{
return
update
(
lUdWrapper
()
.
eq
(
DriverNoticeConfig:
:
getId
,
config
.
getId
())
.
set
(
StringUtils
.
isNotBlank
(
config
.
getName
()),
DriverNoticeConfig:
:
getName
,
config
.
getName
())
.
set
(
config
.
getNoticeTriggerDistance
()
!=
null
,
DriverNoticeConfig:
:
getNoticeTriggerDistance
,
config
.
getNoticeTriggerDistance
())
.
set
(
config
.
getStatus
()
!=
null
,
DriverNoticeConfig:
:
getStatus
,
config
.
getStatus
())
);
}
@Override
public
boolean
updateStatus
(
Integer
id
,
Integer
status
)
{
return
update
(
lUdWrapper
()
.
eq
(
DriverNoticeConfig:
:
getId
,
id
)
.
set
(
DriverNoticeConfig:
:
getStatus
,
status
)
);
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
浏览文件 @
ad4fd014
...
...
@@ -442,8 +442,8 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
}
@Override
public
OrderChildVO
findArtificialCancelOrder
(
String
orderChildNo
)
{
return
baseMapper
.
findArtificialCancelOrder
(
orderChildNo
);
public
OrderChildVO
findArtificialCancelOrder
(
ArtificialCancelOrderQueryParam
param
)
{
return
baseMapper
.
findArtificialCancelOrder
(
param
);
}
@Override
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildOperateLimitConfigDaoImpl.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
dao
.
impl
;
import
com.clx.performance.dao.OrderChildOperateLimitConfigDao
;
import
com.clx.performance.mapper.OrderChildOperateLimitConfigMapper
;
import
com.clx.performance.model.OrderChildOperateLimitConfig
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Repository
;
/**
* @author jiangwj
* Date 2024-08-07
* Time 16:29
*/
@Repository
public
class
OrderChildOperateLimitConfigDaoImpl
extends
BaseDaoImpl
<
OrderChildOperateLimitConfigMapper
,
OrderChildOperateLimitConfig
,
Integer
>
implements
OrderChildOperateLimitConfigDao
{
@Override
public
OrderChildOperateLimitConfig
listConfig
()
{
return
list
().
get
(
0
);
}
@Override
public
boolean
updateConfig
(
OrderChildOperateLimitConfig
config
)
{
return
update
(
lUdWrapper
()
.
eq
(
OrderChildOperateLimitConfig:
:
getId
,
config
.
getId
())
.
set
(
StringUtils
.
isNotBlank
(
config
.
getName
()),
OrderChildOperateLimitConfig:
:
getName
,
config
.
getName
())
.
set
(
config
.
getAllowUploadDistance
()
!=
null
,
OrderChildOperateLimitConfig:
:
getAllowUploadDistance
,
config
.
getAllowUploadDistance
())
.
set
(
config
.
getStatus
()
!=
null
,
OrderChildOperateLimitConfig:
:
getStatus
,
config
.
getStatus
())
);
}
@Override
public
boolean
updateStatus
(
Integer
id
,
Integer
status
)
{
return
update
(
lUdWrapper
()
.
eq
(
OrderChildOperateLimitConfig:
:
getId
,
id
)
.
set
(
OrderChildOperateLimitConfig:
:
getStatus
,
status
)
);
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildOperateRecordDaoImpl.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
dao
.
impl
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.dao.OrderChildOperateRecordDao
;
import
com.clx.performance.mapper.OrderChildOperateRecordMapper
;
import
com.clx.performance.model.OrderChildOperateRecord
;
import
com.clx.performance.param.pc.OrderChildCancelRecordParam
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.clx.performance.vo.pc.OrderChildOperateRecordVO
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
/**
* @author jiangwujie
* Date 2024-08-08
* Time 11:20
*/
@Repository
public
class
OrderChildOperateRecordDaoImpl
extends
BaseDaoImpl
<
OrderChildOperateRecordMapper
,
OrderChildOperateRecord
,
Integer
>
implements
OrderChildOperateRecordDao
{
@Override
public
IPage
<
OrderChildOperateRecordVO
>
orderChildOperateRecord
(
OrderChildCancelRecordParam
param
)
{
Page
<
OrderChildOperateRecordVO
>
page
=
Page
.
of
(
param
.
getPage
(),
param
.
getPageSize
());
return
baseMapper
.
orderChildOperateRecord
(
page
,
param
);
}
}
performance-web/src/main/java/com/clx/performance/job/OrderChildMessageNoticeJob.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
job
;
import
com.clx.performance.service.OrderChildService
;
import
com.msl.common.job.JobLog
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.exception.ExceptionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* 运单监控实时位置耗时信息job
* @author jiangwujie
*/
@Slf4j
@Component
public
class
OrderChildMessageNoticeJob
{
@Autowired
OrderChildService
orderChildService
;
/**
* 运单监控实时位置耗时信息
*/
@XxlJob
(
"orderChildMessageNotice"
)
public
void
orderChildMessageNotice
()
{
try
{
log
.
info
(
"开始实时计算进行中的运单的实时位置计算任务================================================"
);
orderChildService
.
orderChildMessageNotice
();
log
.
info
(
"结束实时计算进行中的运单的实时位置计算任务================================================"
);
}
catch
(
Exception
e
)
{
log
.
warn
(
"定时任务计算进行中的运单的实时位置失败,异常原因:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
JobLog
.
error
(
"定时任务计算进行中的运单的实时位置失败,异常原因====================="
,
e
);
}
}
}
performance-web/src/main/java/com/clx/performance/mapper/DriverNoticeConfigMapper.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.clx.performance.model.DriverNoticeConfig
;
/**
* @author jiangwj
* Date 2024-08-07
* Time 16:29
*/
public
interface
DriverNoticeConfigMapper
extends
BaseMapper
<
DriverNoticeConfig
>
{
}
performance-web/src/main/java/com/clx/performance/mapper/OrderChildMapper.java
浏览文件 @
ad4fd014
...
...
@@ -9,10 +9,7 @@ import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.param.app.PageOrderChildOfDriverParam
;
import
com.clx.performance.param.app.PageOrderChildOfDriverSearchParam
;
import
com.clx.performance.param.pc.OrderChildCancelRecordParam
;
import
com.clx.performance.param.pc.OrderChildReportParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PagePoundAuditParam
;
import
com.clx.performance.param.pc.*
;
import
com.clx.performance.sqlProvider.OrderChildSqlProvider
;
import
com.clx.performance.vo.MonthInComeAndOrderedVO
;
import
com.clx.performance.vo.app.OrderChildVO
;
...
...
@@ -84,7 +81,7 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
@SelectProvider
(
type
=
OrderChildSqlProvider
.
class
,
method
=
"findArtificialCancelOrder"
)
OrderChildVO
findArtificialCancelOrder
(
@Param
(
"
orderChildNo"
)
String
orderChildNo
);
OrderChildVO
findArtificialCancelOrder
(
@Param
(
"
param"
)
ArtificialCancelOrderQueryParam
param
);
@SelectProvider
(
type
=
OrderChildSqlProvider
.
class
,
method
=
"orderChildCancelRecord"
)
IPage
<
OrderChildVO
>
orderChildCancelRecord
(
@Param
(
"page"
)
Page
<
OrderChildVO
>
page
,
@Param
(
value
=
"param"
)
OrderChildCancelRecordParam
param
);
...
...
performance-web/src/main/java/com/clx/performance/mapper/OrderChildOperateLimitConfigMapper.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.clx.performance.model.OrderChildOperateLimitConfig
;
/**
* @author jiangwj
* Date 2024-08-07
* Time 16:29
*/
public
interface
OrderChildOperateLimitConfigMapper
extends
BaseMapper
<
OrderChildOperateLimitConfig
>
{
}
performance-web/src/main/java/com/clx/performance/mapper/OrderChildOperateRecordMapper.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.model.OrderChildOperateRecord
;
import
com.clx.performance.param.pc.OrderChildCancelRecordParam
;
import
com.clx.performance.sqlProvider.OrderChildOperateRecordSqlProvider
;
import
com.clx.performance.sqlProvider.OrderChildSqlProvider
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.clx.performance.vo.pc.OrderChildOperateRecordVO
;
import
org.apache.ibatis.annotations.SelectProvider
;
/**
* @author jiangwujie
* Date 2024-08-08
* Time 11:20
*/
public
interface
OrderChildOperateRecordMapper
extends
BaseMapper
<
OrderChildOperateRecord
>
{
@SelectProvider
(
type
=
OrderChildOperateRecordSqlProvider
.
class
,
method
=
"orderChildOperateRecord"
)
IPage
<
OrderChildOperateRecordVO
>
orderChildOperateRecord
(
Page
<
OrderChildOperateRecordVO
>
page
,
OrderChildCancelRecordParam
param
);
}
performance-web/src/main/java/com/clx/performance/model/App.java
浏览文件 @
ad4fd014
...
...
@@ -53,7 +53,7 @@ public class App implements HasKey<Integer> {
@TableField
(
"create_time"
)
@ApiModelProperty
(
"创建时间"
)
private
LocalDateTime
createTime
;
//
private
LocalDateTime
createTime
;
@TableField
(
"modified_time"
)
@ApiModelProperty
(
"修改时间"
)
...
...
performance-web/src/main/java/com/clx/performance/model/DriverNoticeConfig.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
model
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.msl.common.config.KeyColumn
;
import
com.msl.common.model.HasKey
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
/**
* @author jiangwj
* Date 2024-08-07
* Time 16:29
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"driver_notice_config"
)
public
class
DriverNoticeConfig
implements
HasKey
<
Integer
>
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
@TableField
(
"name"
)
@ApiModelProperty
(
"配置名称"
)
private
String
name
;
@TableField
(
"notice_trigger_distance"
)
@ApiModelProperty
(
"通知触发距离"
)
private
BigDecimal
noticeTriggerDistance
;
@TableField
(
"status"
)
@ApiModelProperty
(
"启用状态:0禁用1启用"
)
private
Integer
status
;
@TableField
(
"created_time"
)
@ApiModelProperty
(
"创建时间"
)
private
LocalDateTime
createdTime
;
@TableField
(
"modified_time"
)
@ApiModelProperty
(
"更新时间"
)
private
LocalDateTime
modifiedTime
;
@Override
@KeyColumn
(
"id"
)
public
Integer
gainKey
()
{
return
this
.
id
;
}
}
performance-web/src/main/java/com/clx/performance/model/OrderChild.java
浏览文件 @
ad4fd014
...
...
@@ -106,6 +106,19 @@ public class OrderChild implements HasKey<Integer> {
private
BigDecimal
deposit
;
//接单保证金(分/车)
private
LocalDateTime
poundAuditTime
;
//磅单审核通过时间
/**
* 驶入驶离货源地状态 0 初始 1 驶入 2 驶离
*/
private
Integer
enterExitSendStatus
;
/**
* 驶离通知状态 0 未通知 1 已通知
*/
private
Integer
exitNoticeStatus
;
/**
* 是否解除监装限制 0 未解除 1 解除
*/
private
Integer
removeLoadLimitStatus
;
private
LocalDateTime
createTime
;
//创建时间
private
LocalDateTime
modifiedTime
;
//修改时间
...
...
performance-web/src/main/java/com/clx/performance/model/OrderChildOperateLimitConfig.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
model
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.msl.common.config.KeyColumn
;
import
com.msl.common.model.HasKey
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
/**
* @author jiangwj
* Date 2024-08-07
* Time 16:29
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"order_child_operate_limit_config"
)
public
class
OrderChildOperateLimitConfig
implements
HasKey
<
Integer
>
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
@TableField
(
"name"
)
@ApiModelProperty
(
"配置名称"
)
private
String
name
;
@TableField
(
"allow_upload_distance"
)
@ApiModelProperty
(
"可上传装车信息范围"
)
private
BigDecimal
allowUploadDistance
;
@TableField
(
"status"
)
@ApiModelProperty
(
"启用状态0禁用,1启用"
)
private
Integer
status
;
@TableField
(
"created_time"
)
@ApiModelProperty
(
"创建时间"
)
private
LocalDateTime
createdTime
;
@TableField
(
"modified_time"
)
@ApiModelProperty
(
"更新时间"
)
private
LocalDateTime
modifiedTime
;
@Override
@KeyColumn
(
"id"
)
public
Integer
gainKey
()
{
return
this
.
id
;
}
}
performance-web/src/main/java/com/clx/performance/model/OrderChildOperateRecord.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
model
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.msl.common.config.KeyColumn
;
import
com.msl.common.model.HasKey
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
import
java.time.LocalDateTime
;
/**
* @author jiangwujie
* Date 2024-08-08
* Time 11:20
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"order_child_operate_record"
)
public
class
OrderChildOperateRecord
implements
HasKey
<
Integer
>
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
@TableField
(
"child_no"
)
@ApiModelProperty
(
"运单编号"
)
private
String
childNo
;
@TableField
(
"type"
)
@ApiModelProperty
(
"操作类型 1 取消运单 2 解除装车限制"
)
private
Integer
type
;
@TableField
(
"truck_no"
)
@ApiModelProperty
(
"主车牌照"
)
private
String
truckNo
;
@TableField
(
"driver_name"
)
@ApiModelProperty
(
"司机名称"
)
private
String
driverName
;
@TableField
(
"driver_mobile"
)
@ApiModelProperty
(
"司机手机号"
)
private
String
driverMobile
;
@TableField
(
"send_address"
)
@ApiModelProperty
(
"货源地"
)
private
String
sendAddress
;
@TableField
(
"receive_address"
)
@ApiModelProperty
(
"目的地"
)
private
String
receiveAddress
;
@TableField
(
"good_type_name"
)
@ApiModelProperty
(
"货物类型名称"
)
private
String
goodTypeName
;
@TableField
(
"remark"
)
@ApiModelProperty
(
"备注"
)
private
String
remark
;
@TableField
(
"operate_time"
)
@ApiModelProperty
(
"操作时间"
)
private
LocalDateTime
operateTime
;
@TableField
(
"operator"
)
@ApiModelProperty
(
"操作人"
)
private
String
operator
;
@TableField
(
"created_time"
)
@ApiModelProperty
(
"创建时间"
)
private
LocalDateTime
createdTime
;
@TableField
(
"modified_time"
)
@ApiModelProperty
(
"更新时间"
)
private
LocalDateTime
modifiedTime
;
@Override
@KeyColumn
(
"id"
)
public
Integer
gainKey
()
{
return
this
.
id
;
}
}
performance-web/src/main/java/com/clx/performance/service/DriverNoticeConfigService.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
service
;
import
com.clx.performance.param.pc.SaveDriverNoticeConfigParam
;
import
com.clx.performance.vo.pc.DriverNoticeConfigVO
;
/**
* @author jiangwj
* Date 2024-08-07
* Time 16:29
*/
public
interface
DriverNoticeConfigService
{
DriverNoticeConfigVO
listConfig
();
DriverNoticeConfigVO
getDetail
(
Integer
id
);
void
updateConfig
(
SaveDriverNoticeConfigParam
param
);
void
enableConfig
(
Integer
id
);
void
disableConfig
(
Integer
id
);
}
performance-web/src/main/java/com/clx/performance/service/OrderCancelService.java
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
service
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.clx.performance.param.pc.ArtificialCancelOrderParam
;
import
com.clx.performance.param.pc.ArtificialCancelOrderQueryParam
;
import
com.clx.performance.param.pc.OrderCancelParam
;
import
com.clx.performance.param.pc.OrderChildCancelRecordParam
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.msl.common.base.PageParam
;
import
java.util.List
;
import
com.clx.performance.vo.pc.OrderChildOperateRecordVO
;
public
interface
OrderCancelService
{
...
...
@@ -47,7 +47,20 @@ public interface OrderCancelService {
* @param orderChildNo
* @return
*/
OrderChildVO
findArtificialCancelOrder
(
String
orderChildNo
);
OrderChildVO
findArtificialCancelOrder
(
ArtificialCancelOrderQueryParam
param
);
IPage
<
OrderChildVO
>
orderChildCancelRecord
(
OrderChildCancelRecordParam
param
);
/**
* 异常运单处理记录
* @param param
* @return
*/
IPage
<
OrderChildOperateRecordVO
>
orderChildOperateRecord
(
OrderChildCancelRecordParam
param
);
/**
* 客服移除监装限制
* @param param
*/
void
removeLoadLimit
(
ArtificialCancelOrderParam
param
);
}
performance-web/src/main/java/com/clx/performance/service/OrderChildOperateLimitConfigService.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
service
;
import
com.clx.performance.param.pc.SaveOrderChildOperateLimitConfigParam
;
import
com.clx.performance.vo.pc.OrderChildOperateLimitConfigVO
;
/**
* @author jiangwj
* Date 2024-08-07
* Time 16:29
*/
public
interface
OrderChildOperateLimitConfigService
{
OrderChildOperateLimitConfigVO
listConfig
();
OrderChildOperateLimitConfigVO
getDetail
(
Integer
id
);
void
updateConfig
(
SaveOrderChildOperateLimitConfigParam
param
);
void
enableConfig
(
Integer
id
);
void
disableConfig
(
Integer
id
);
}
performance-web/src/main/java/com/clx/performance/service/OrderChildOperateRecordService.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
service
;
/**
* @author jiangwujie
* Date 2024-08-08
* Time 11:20
*/
public
interface
OrderChildOperateRecordService
{
}
performance-web/src/main/java/com/clx/performance/service/OrderChildService.java
浏览文件 @
ad4fd014
...
...
@@ -110,7 +110,11 @@ public interface OrderChildService {
List
<
HistoryLineTranVolumeChartVO
>
getHistoryLineTransportVolume
(
String
orderNo
);
UpdateCarrierBatchCancelVO
updateCarrierBatchCancel
(
OrderChildCarrierBatchCancelParam
param
);
OrderChildLoadRangeCheckResultVO
loadRangeCheck
(
OrderChildLoadRangeCheckParam
param
);
UpdateCarrierBatchCancelVO
updateCarrierBatchCancel
(
OrderChildCarrierBatchCancelParam
param
);
void
orderChildMessageNotice
();
NeedAlertSuperviseInfoResultVO
needAlertSuperviseInfo
(
NeedAlertSuperviseInfoParam
param
);
}
performance-web/src/main/java/com/clx/performance/service/impl/DriverNoticeConfigServiceImpl.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
service
.
impl
;
import
com.clx.performance.dao.DriverNoticeConfigDao
;
import
com.clx.performance.enums.EnabledStatusEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.model.DriverNoticeConfig
;
import
com.clx.performance.param.pc.SaveDriverNoticeConfigParam
;
import
com.clx.performance.service.DriverNoticeConfigService
;
import
com.clx.performance.struct.DriverNoticeConfigStruct
;
import
com.clx.performance.vo.pc.DriverNoticeConfigVO
;
import
lombok.AllArgsConstructor
;
import
org.springframework.stereotype.Service
;
/**
* @author jiangwj
* Date 2024-08-07
* Time 16:29
*/
@Service
@AllArgsConstructor
public
class
DriverNoticeConfigServiceImpl
implements
DriverNoticeConfigService
{
private
final
DriverNoticeConfigDao
dao
;
private
final
DriverNoticeConfigStruct
struct
;
@Override
public
DriverNoticeConfigVO
listConfig
()
{
return
struct
.
convertVO
(
dao
.
listConfig
());
}
@Override
public
DriverNoticeConfigVO
getDetail
(
Integer
id
)
{
DriverNoticeConfig
config
=
dao
.
getEntityByKey
(
id
).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
return
struct
.
convertVO
(
config
);
}
@Override
public
void
updateConfig
(
SaveDriverNoticeConfigParam
param
)
{
DriverNoticeConfig
config
=
new
DriverNoticeConfig
();
config
.
setId
(
param
.
getId
());
config
.
setNoticeTriggerDistance
(
param
.
getNoticeTriggerDistance
());
dao
.
updateConfig
(
config
);
}
@Override
public
void
enableConfig
(
Integer
id
)
{
dao
.
updateStatus
(
id
,
EnabledStatusEnum
.
ENABLE
.
getCode
());
}
@Override
public
void
disableConfig
(
Integer
id
)
{
dao
.
updateStatus
(
id
,
EnabledStatusEnum
.
DISABLE
.
getCode
());
}
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderCancelServiceImpl.java
浏览文件 @
ad4fd014
...
...
@@ -15,6 +15,7 @@ import com.clx.performance.component.OrderCancelComponent;
import
com.clx.performance.component.OwnerAccountComponent
;
import
com.clx.performance.constant.RabbitKeyConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderChildOperateRecordDao
;
import
com.clx.performance.dao.OrderChildPoundAuditDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dto.OrderCancelDTO
;
...
...
@@ -22,14 +23,18 @@ import com.clx.performance.enums.*;
import
com.clx.performance.extranal.user.DriverService
;
import
com.clx.performance.extranal.user.OwnerInfoService
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderChildOperateRecord
;
import
com.clx.performance.model.OrderChildPoundAudit
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.param.pc.ArtificialCancelOrderParam
;
import
com.clx.performance.param.pc.ArtificialCancelOrderQueryParam
;
import
com.clx.performance.param.pc.OrderCancelParam
;
import
com.clx.performance.param.pc.OrderChildCancelRecordParam
;
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.performance.vo.pc.OrderChildOperateRecordVO
;
import
com.clx.user.enums.driver.DriverInfoEnum
;
import
com.clx.user.enums.owner.FreezeSettingEnum
;
import
com.clx.user.vo.feign.OwnerInfoFeignVO
;
...
...
@@ -91,6 +96,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private
final
OrderChildPoundAuditDao
orderChildPoundAuditDao
;
private
final
OrderChildOperateRecordDao
orderChildOperateRecordDao
;
@Override
...
...
@@ -504,6 +510,16 @@ public class OrderCancelServiceImpl implements OrderCancelService {
LocalDateTime
now
=
LocalDateTime
.
now
();
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
orderChildNo
).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
//运单状态不在【装车成功】【前往目的地】【到达目的地】【收货待确认】范围中,不允许取消
if
(!
Arrays
.
asList
(
OrderChildEnum
.
Status
.
LOAD
.
getCode
(),
OrderChildEnum
.
Status
.
GO_TO_SEND
.
getCode
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
(),
OrderChildEnum
.
Status
.
UNLOAD
.
getCode
())
.
contains
(
orderChild
.
getStatus
()))
{
log
.
error
(
"运单:{} 状态:{}不在【装车成功】【前往目的地】【到达目的地】【收货待确认】范围中,不允许取消"
,
orderChildNo
,
orderChild
.
getStatus
());
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCEL_FORBID
,
"不可操作"
);
}
OrderChild
update
=
new
OrderChild
();
update
.
setId
(
orderChild
.
getId
());
update
.
setStatus
(
OrderChildEnum
.
Status
.
ARTIFICIAL_CANCEL
.
getCode
());
...
...
@@ -519,15 +535,21 @@ public class OrderCancelServiceImpl implements OrderCancelService {
// 运单取消
orderChildPostService
.
orderChildCancelByArtificial
(
orderChildNo
);
// 保存操作记录
orderChildLogService
.
saveOrderChildLog
(
orderChild
.
getChildNo
(),
OrderChildEnum
.
Status
.
ARTIFICIAL_CANCEL
.
getCode
(),
OrderChildEnum
.
Status
.
ARTIFICIAL_CANCEL
.
getName
(),
OrderChildLogEnum
.
CreateType
.
ARTIFICIAL
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
ARTIFICIAL
.
getMsg
()
);
// 保存运单处理记录
saveOrderChildOperateRecord
(
orderChild
,
OrderChildEnum
.
OperateRecordType
.
CANCEL_ORDER
,
remark
);
}
@Override
public
OrderChildVO
findArtificialCancelOrder
(
String
orderChildNo
)
{
OrderChildVO
artificialCancelOrder
=
orderChildDao
.
findArtificialCancelOrder
(
orderChildNo
);
public
OrderChildVO
findArtificialCancelOrder
(
ArtificialCancelOrderQueryParam
param
)
{
//检查参数
param
.
checkParam
();
OrderChildVO
artificialCancelOrder
=
orderChildDao
.
findArtificialCancelOrder
(
param
);
if
(
artificialCancelOrder
==
null
)
{
return
null
;
}
...
...
@@ -551,5 +573,59 @@ public class OrderCancelServiceImpl implements OrderCancelService {
return
page
;
}
@Override
public
IPage
<
OrderChildOperateRecordVO
>
orderChildOperateRecord
(
OrderChildCancelRecordParam
param
)
{
return
orderChildOperateRecordDao
.
orderChildOperateRecord
(
param
);
}
@Override
public
void
removeLoadLimit
(
ArtificialCancelOrderParam
param
)
{
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
param
.
getOrderChildNo
()).
orElseThrow
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
);
//判断运单状态【已接单】【前往货源地】【到达货源地】时可对该运单解除装车限制,否则toast:不可操作
if
(!
Arrays
.
asList
(
OrderChildEnum
.
Status
.
CREATED
.
getCode
(),
OrderChildEnum
.
Status
.
GO_TO_SEND
.
getCode
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
())
.
contains
(
orderChild
.
getStatus
()))
{
log
.
error
(
"运单:{} 状态:{}不在【已接单】【前往货源地】【到达货源地】范围中,不允许解除装车限制"
,
param
.
getOrderChildNo
(),
orderChild
.
getStatus
());
throw
new
ServiceSystemException
(
PerformanceResultEnum
.
ORDER_CHILD_CANCEL_FORBID
,
"不可操作"
);
}
OrderChild
update
=
new
OrderChild
();
update
.
setId
(
orderChild
.
getId
());
update
.
setRemoveLoadLimitStatus
(
OrderChildEnum
.
RemoveLoadLimitStatus
.
REMOVED
.
getCode
());
orderChildDao
.
updateEntityByKey
(
update
);
//保存运单处理记录
saveOrderChildOperateRecord
(
orderChild
,
OrderChildEnum
.
OperateRecordType
.
REMOVE_LIMIT
,
param
.
getRemark
());
//保存运单操作记录
orderChildLogService
.
saveOrderChildLog
(
orderChild
.
getChildNo
(),
orderChild
.
getStatus
(),
OrderChildEnum
.
OperateRecordType
.
REMOVE_LIMIT
.
getMsg
(),
OrderChildLogEnum
.
CreateType
.
ARTIFICIAL
.
getCode
(),
0L
,
OrderChildLogEnum
.
CreateType
.
ARTIFICIAL
.
getMsg
()
);
}
private
void
saveOrderChildOperateRecord
(
OrderChild
orderChild
,
OrderChildEnum
.
OperateRecordType
type
,
String
remark
)
{
OrderChildOperateRecord
record
=
new
OrderChildOperateRecord
();
record
.
setChildNo
(
orderChild
.
getChildNo
());
record
.
setType
(
type
.
getCode
());
record
.
setTruckNo
(
orderChild
.
getTruckNo
());
record
.
setDriverName
(
orderChild
.
getDriverName
());
record
.
setDriverMobile
(
orderChild
.
getDriverMobile
());
record
.
setSendAddress
(
orderChild
.
getSendAddress
());
record
.
setReceiveAddress
(
orderChild
.
getReceiveAddress
());
FeignOrderVO
orderInfoFeign
=
orderFeign
.
getOrderInfoFeign
(
orderChild
.
getOrderNo
());
if
(
orderInfoFeign
!=
null
)
{
record
.
setGoodTypeName
(
orderInfoFeign
.
getGoodsTypeName
());
}
record
.
setRemark
(
remark
);
record
.
setOperateTime
(
LocalDateTime
.
now
());
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
record
.
setOperator
(
loginUserInfo
.
getUserName
());
record
.
setCreatedTime
(
LocalDateTime
.
now
());
record
.
setModifiedTime
(
LocalDateTime
.
now
());
orderChildOperateRecordDao
.
saveEntity
(
record
);
}
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildOperateLimitConfigServiceImpl.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
service
.
impl
;
import
com.clx.performance.dao.OrderChildOperateLimitConfigDao
;
import
com.clx.performance.enums.EnabledStatusEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.model.OrderChildOperateLimitConfig
;
import
com.clx.performance.param.pc.SaveOrderChildOperateLimitConfigParam
;
import
com.clx.performance.service.OrderChildOperateLimitConfigService
;
import
com.clx.performance.struct.OrderChildOperateLimitConfigStruct
;
import
com.clx.performance.vo.pc.OrderChildOperateLimitConfigVO
;
import
lombok.AllArgsConstructor
;
import
org.springframework.stereotype.Service
;
/**
* @author jiangwj
* Date 2024-08-07
* Time 16:29
*/
@Service
@AllArgsConstructor
public
class
OrderChildOperateLimitConfigServiceImpl
implements
OrderChildOperateLimitConfigService
{
private
final
OrderChildOperateLimitConfigDao
dao
;
private
final
OrderChildOperateLimitConfigStruct
struct
;
@Override
public
OrderChildOperateLimitConfigVO
listConfig
()
{
return
struct
.
convertVO
(
dao
.
listConfig
());
}
@Override
public
OrderChildOperateLimitConfigVO
getDetail
(
Integer
id
)
{
OrderChildOperateLimitConfig
config
=
dao
.
getEntityByKey
(
id
).
orElseThrow
(
PerformanceResultEnum
.
DATA_NOT_FIND
);
return
struct
.
convertVO
(
config
);
}
@Override
public
void
updateConfig
(
SaveOrderChildOperateLimitConfigParam
param
)
{
OrderChildOperateLimitConfig
config
=
new
OrderChildOperateLimitConfig
();
config
.
setId
(
param
.
getId
());
config
.
setAllowUploadDistance
(
param
.
getAllowUploadDistance
());
dao
.
updateConfig
(
config
);
}
@Override
public
void
enableConfig
(
Integer
id
)
{
dao
.
updateStatus
(
id
,
EnabledStatusEnum
.
ENABLE
.
getCode
());
}
@Override
public
void
disableConfig
(
Integer
id
)
{
dao
.
updateStatus
(
id
,
EnabledStatusEnum
.
DISABLE
.
getCode
());
}
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildOperateRecordServiceImpl.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
service
.
impl
;
import
com.clx.performance.service.OrderChildOperateRecordService
;
import
org.springframework.stereotype.Service
;
/**
* @author jiangwujie
* Date 2024-08-08
* Time 11:20
*/
@Service
public
class
OrderChildOperateRecordServiceImpl
implements
OrderChildOperateRecordService
{
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
service
.
impl
;
import
cn.hutool.json.JSONObject
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.message.feign.ClxMessageOpenapiFeign
;
import
com.clx.message.req.message.AliSmsMessageReq
;
import
com.clx.order.enums.OrderEnum
;
import
com.clx.order.enums.ResultEnum
;
import
com.clx.order.enums.*
;
...
...
@@ -14,6 +17,8 @@ import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
import
com.clx.order.vo.pc.owner.OwnerQuotationDetailVO
;
import
com.clx.performance.component.GoodsOrderTruckRecordComponent
;
import
com.clx.performance.component.OrderChildLoanComponent
;
import
com.clx.performance.config.ClxMessageConfig
;
import
com.clx.performance.config.LoadAppConfig
;
import
com.clx.performance.config.TencentCloudApiOcrConfig
;
import
com.clx.performance.constant.RedisConstants
;
import
com.clx.performance.constant.RedissonConstants
;
...
...
@@ -74,12 +79,18 @@ import com.msl.common.base.Optional;
import
com.msl.common.base.PageParam
;
import
com.msl.common.enums.ResultCodeEnum
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.open.OpenClient
;
import
com.msl.common.open.RequestConfig
;
import
com.msl.common.result.Result
;
import
com.msl.common.utils.DateUtils
;
import
com.msl.common.utils.LocalDateTimeUtils
;
import
com.msl.common.utils.gps.GpsUtil
;
import
com.msl.user.data.UserSessionData
;
import
com.msl.user.utils.TokenUtil
;
import
com.purchase.manage.action.SupplyChainSupervisionLoadAction
;
import
com.purchase.manage.action.SupplyChainSupervisionLoadTruckAction
;
import
com.purchase.manage.dto.SupervisionLoadInfoDto
;
import
com.purchase.manage.dto.SupervisionLoadTruckInfoDto
;
import
com.tencentcloudapi.common.Credential
;
import
com.tencentcloudapi.common.exception.TencentCloudSDKException
;
import
com.tencentcloudapi.ocr.v20181119.OcrClient
;
...
...
@@ -249,6 +260,16 @@ public class OrderChildServiceImpl implements OrderChildService {
private
UserClxFeign
userClxFeign
;
@Autowired
private
OrderWeightService
orderWeightService
;
@Autowired
private
OrderChildOperateLimitConfigService
orderChildOperateLimitConfigService
;
@Autowired
private
LoadAppConfig
appConfig
;
@Autowired
private
DriverNoticeConfigService
driverNoticeConfigService
;
@Autowired
private
ClxMessageOpenapiFeign
clxMessageOpenapiFeign
;
@Autowired
private
ClxMessageConfig
messageConfig
;
@PostConstruct
public
void
init
(){
...
...
@@ -1720,6 +1741,14 @@ public class OrderChildServiceImpl implements OrderChildService {
result
.
setSendWaitSystemName
(
orderInfoFeign
.
getSendWaitSystemName
());
result
.
setSendWaitMode
(
orderInfoFeign
.
getSendWaitMode
());
// 采样 监装信息
result
.
setSendSamplingPic
(
orderInfoFeign
.
getSendSamplingPic
());
result
.
setSendQualityPosition
(
orderInfoFeign
.
getSendQualityPosition
());
result
.
setSendSamplingVideo
(
orderInfoFeign
.
getSendSamplingVideo
());
Object
[]
superviseInfo
=
getSuperviseInfo
(
orderChild
.
getOrderNo
(),
orderChild
.
getChildNo
());
result
.
setSuperviseContacts
(
superviseInfo
!=
null
?
(
String
)
superviseInfo
[
0
]
:
null
);
result
.
setSuperviseMobile
(
superviseInfo
!=
null
?
(
String
)
superviseInfo
[
1
]
:
null
);
//查询结算信息
Optional
<
SettlementOwnerDetail
>
optional
=
settlementOwnerDetailDao
.
getByChildNo
(
childNo
);
if
(
optional
.
isPresent
()){
...
...
@@ -1748,6 +1777,49 @@ public class OrderChildServiceImpl implements OrderChildService {
return
result
;
}
/**
* 获取监装
* @param orderNo
* @param childNo
* @return
*/
private
Object
[]
getSuperviseInfo
(
String
orderNo
,
String
childNo
)
{
NeedAlertSuperviseInfoResultVO
result
=
new
NeedAlertSuperviseInfoResultVO
();
App
app
=
appConfig
.
getPurchaseManageApp
();
//对接马上来供应链配置信息
//组装配置信息
RequestConfig
config
=
new
RequestConfig
()
.
setAppId
(
app
.
getAppNo
())
.
setAppKey
(
app
.
getAppKey
())
.
setGatewayUrl
(
app
.
getCallback
());
//通过订单号查询监装监卸信息
SupplyChainSupervisionLoadAction
action
=
new
SupplyChainSupervisionLoadAction
();
action
.
setOrderNo
(
orderNo
);
action
.
setType
(
OrderChildEnum
.
SuperviseTypeEnum
.
SUPERVISE_LOAD
.
getCode
());
Result
<
SupervisionLoadInfoDto
>
supervisionLoadInfoDto
=
OpenClient
.
doAction
(
config
,
action
);
if
(!
supervisionLoadInfoDto
.
succeed
())
{
//接口调用失败
return
null
;
}
SupervisionLoadInfoDto
supervisionLoadInfo
=
supervisionLoadInfoDto
.
getData
();
//监装信息
if
(
Objects
.
nonNull
(
supervisionLoadInfo
))
{
//有监装信息
//通过运单号查询监装监卸子任务状态
SupplyChainSupervisionLoadTruckAction
truckAction
=
new
SupplyChainSupervisionLoadTruckAction
();
truckAction
.
setChildNo
(
childNo
);
truckAction
.
setType
(
OrderChildEnum
.
SuperviseTypeEnum
.
SUPERVISE_LOAD
.
getCode
());
Result
<
SupervisionLoadTruckInfoDto
>
supervisionLoadTruckInfoDto
=
OpenClient
.
doAction
(
config
,
truckAction
);
if
(!
supervisionLoadTruckInfoDto
.
succeed
())
{
//接口调用失败
return
null
;
}
SupervisionLoadTruckInfoDto
supervisionLoadTruckInfo
=
supervisionLoadTruckInfoDto
.
getData
();
if
(
Objects
.
nonNull
(
supervisionLoadTruckInfo
))
{
if
(
supervisionLoadTruckInfo
.
getLoadStatus
())
{
return
new
Object
[]{
supervisionLoadInfo
.
getTaskContracts
(),
supervisionLoadInfo
.
getTaskMobile
(),
supervisionLoadInfo
.
getTaskAddress
()};
}
}
}
return
null
;
}
//查看运单车辆是否开启了中交兴路
public
String
isOpenZJXL
(
Integer
orderChildStatus
,
String
truckNo
){
if
(
orderChildStatus
<=
OrderChildEnum
.
Status
.
UNLOAD
.
getCode
()){
...
...
@@ -1831,8 +1903,7 @@ public class OrderChildServiceImpl implements OrderChildService {
Integer
driverWalletCode
=
driverTruckInfo
.
getWalletCode
();
Integer
truckWalletCode
=
driverTruckInfo
.
getTruckOwnWalletCode
();
log
.
info
(
"登录用户:{} 车主用户:{}"
,
loginUserNo
,
driverTruckInfo
.
getTruckOwnUserNo
());
log
.
info
(
"司机钱包信息:{}-{},driverWalletCode:{},truckWalletCode:{}"
,
driverTruckInfo
.
getUserNo
(),
driverTruckInfo
.
getName
(),
driverWalletCode
,
truckWalletCode
);
//是否车主
boolean
isOwner
=
Objects
.
equals
(
loginUserNo
,
truckOwnerUserNo
);
...
...
@@ -2904,6 +2975,22 @@ public class OrderChildServiceImpl implements OrderChildService {
}
return
gdRouteDTOS
;
}
/**
* @Author kavin
* @Description 通过高德获取时间
* @Param [truckNo, beginLongitude, beginLatitude, endLongitude, endLatitude]
* @return
**/
public
GdRouteDTO
getGdRoute
(
String
truckNo
,
BigDecimal
beginLongitude
,
BigDecimal
beginLatitude
,
BigDecimal
endLongitude
,
BigDecimal
endLatitude
)
{
List
<
GdRouteDTO
>
gdRouteDTOS
=
null
;
try
{
gdRouteDTOS
=
gdService
.
getRoute
(
beginLongitude
,
beginLatitude
,
endLongitude
,
endLatitude
);
}
catch
(
ServiceSystemException
e
)
{
log
.
info
(
"orderChildExpect==高德地图调用失败,车辆{},异常原因{}"
,
truckNo
,
e
.
getMessage
());
}
return
CollectionUtils
.
isNotEmpty
(
gdRouteDTOS
)
?
gdRouteDTOS
.
get
(
0
)
:
null
;
}
@Override
public
IPage
<
CustomerComplaintOrderChildVO
>
pageCustomerComplaintOrderChild
(
PageParam
param
)
{
...
...
@@ -3079,6 +3166,218 @@ public class OrderChildServiceImpl implements OrderChildService {
}
}
@Override
public
OrderChildLoadRangeCheckResultVO
loadRangeCheck
(
OrderChildLoadRangeCheckParam
param
)
{
OrderChildOperateLimitConfigVO
config
=
orderChildOperateLimitConfigService
.
listConfig
();
// 无配置
if
(
config
==
null
||
config
.
getAllowUploadDistance
()
==
null
)
{
return
new
OrderChildLoadRangeCheckResultVO
(
OrderChildEnum
.
NeedAlertEnum
.
FAIL
.
getCode
(),
ORDER_CHILD_LOAD_LIMIT_CONFIG_ERROR
.
getCode
(),
ORDER_CHILD_LOAD_LIMIT_CONFIG_ERROR
.
getMsg
());
}
// 配置禁用
if
(
Objects
.
equals
(
config
.
getStatus
(),
EnabledStatusEnum
.
DISABLE
.
getCode
()))
{
return
new
OrderChildLoadRangeCheckResultVO
(
OrderChildEnum
.
NeedAlertEnum
.
OK
.
getCode
(),
ORDER_CHILD_LOAD_LIMIT_CONFIG_DISABLED
.
getCode
(),
ORDER_CHILD_LOAD_LIMIT_CONFIG_DISABLED
.
getMsg
());
}
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
param
.
getChildNo
()).
orNull
();
if
(
orderChild
==
null
)
{
return
new
OrderChildLoadRangeCheckResultVO
(
OrderChildEnum
.
NeedAlertEnum
.
FAIL
.
getCode
(),
ORDER_CHILD_NO_FOUND
.
getCode
(),
ORDER_CHILD_NO_FOUND
.
getMsg
());
}
//如果运单已经解除装车限制,则直接返回成功
if
(
Objects
.
equals
(
orderChild
.
getRemoveLoadLimitStatus
(),
OrderChildEnum
.
RemoveLoadLimitStatus
.
REMOVED
.
getCode
()))
{
return
new
OrderChildLoadRangeCheckResultVO
(
OrderChildEnum
.
NeedAlertEnum
.
OK
.
getCode
(),
OrderChildEnum
.
NeedAlertEnum
.
OK
.
getCode
(),
"验证通过"
);
}
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
()).
get
();
// 发货地址纬度
BigDecimal
sendLatitude
=
orderGoods
.
getSendLatitude
();
// 发货地经度
BigDecimal
sendLongitude
=
orderGoods
.
getSendLongitude
();
// 卡车经纬度
BigDecimal
[]
truckLocation
=
getTruckLocation
(
orderChild
.
getTruckNo
(),
param
.
getLongitude
(),
param
.
getLatitude
());
BigDecimal
longitude
=
truckLocation
[
0
];
BigDecimal
latitude
=
truckLocation
[
1
];
// 获取卡车位置失败
if
(
longitude
==
null
||
latitude
==
null
)
{
return
new
OrderChildLoadRangeCheckResultVO
(
OrderChildEnum
.
NeedAlertEnum
.
FAIL
.
getCode
(),
TRUCK_LOCATION_ERROR
.
getCode
(),
TRUCK_LOCATION_ERROR
.
getMsg
());
}
List
<
GdRouteDTO
>
route
=
gdService
.
getRoute
(
longitude
,
latitude
,
sendLongitude
,
sendLatitude
);
if
(
CollectionUtils
.
isNotEmpty
(
route
))
{
GdRouteDTO
gdRouteDTO
=
route
.
get
(
0
);
Integer
distance
=
gdRouteDTO
.
getDistance
();
if
(
distance
>
config
.
allowUploadDistanceMeter
())
{
// 装车位置 超限
return
new
OrderChildLoadRangeCheckResultVO
(
OrderChildEnum
.
NeedAlertEnum
.
FAIL
.
getCode
(),
TRUCK_LOCATION_OUT_OF_SEND_RANGE
.
getCode
(),
String
.
format
(
TRUCK_LOCATION_OUT_OF_SEND_RANGE
.
getMsg
(),
config
.
getAllowUploadDistance
()));
}
return
new
OrderChildLoadRangeCheckResultVO
(
OrderChildEnum
.
NeedAlertEnum
.
OK
.
getCode
(),
OrderChildEnum
.
NeedAlertEnum
.
OK
.
getCode
(),
"验证通过"
);
}
return
new
OrderChildLoadRangeCheckResultVO
(
OrderChildEnum
.
NeedAlertEnum
.
FAIL
.
getCode
(),
GAODE_DISTANCE_ERROR
.
getCode
(),
GAODE_DISTANCE_ERROR
.
getMsg
());
}
@Override
public
void
orderChildMessageNotice
()
{
// 司机通知配置
DriverNoticeConfigVO
driverNoticeConfigVO
=
driverNoticeConfigService
.
listConfig
();
if
(
driverNoticeConfigVO
==
null
)
{
log
.
error
(
"司机通知配置为空"
);
return
;
}
if
(
Objects
.
equals
(
driverNoticeConfigVO
.
getStatus
(),
EnabledStatusEnum
.
DISABLE
.
getCode
()))
{
log
.
info
(
"司机通知配置为未启用状态,不进行通知处理"
);
return
;
}
//查询平台车辆的定位信息
Map
<
String
,
TruckTraceDTO
>
truckTraceMap
=
redisTemplate
.
opsForHash
().
entries
(
RedisConstants
.
ZJXL_TRUCK_TRACE_LIST
);
//查询平台(到达货源地、已装货)的订单
List
<
Integer
>
list
=
Arrays
.
asList
(
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
(),
OrderChildEnum
.
Status
.
LOAD
.
getCode
());
LocalDateTime
endTime
=
LocalDateTime
.
now
();
LocalDateTime
startTime
=
endTime
.
minusMonths
(
1
);
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
listOrderChild
(
list
,
startTime
,
endTime
);
for
(
OrderChild
child
:
orderChildList
)
{
String
childNo
=
child
.
getChildNo
();
String
truckNo
=
child
.
getTruckNo
();
//解除监装限制的不进行处理
if
(
Objects
.
equals
(
child
.
getRemoveLoadLimitStatus
(),
OrderChildEnum
.
RemoveLoadLimitStatus
.
REMOVED
.
getCode
()))
{
log
.
info
(
"运单:{},卡车:{} 已解除监装限制"
,
childNo
,
truckNo
);
return
;
}
//获取卡车的位置
TruckTraceDTO
truckTraceDTO
=
truckTraceMap
.
get
(
truckNo
);
BigDecimal
truckLongitudeX
=
null
;
BigDecimal
truckLatitudeY
=
null
;
if
(
Objects
.
nonNull
(
truckTraceDTO
))
{
truckLongitudeX
=
truckTraceDTO
.
getLocation
()[
0
];
truckLatitudeY
=
truckTraceDTO
.
getLocation
()[
1
];
}
//判断卡车是否出了货源地x公里范围
String
orderGoodsNo
=
child
.
getOrderGoodsNo
();
OrderGoods
orderGoods
=
orderGoodsDao
.
getByOrderGoodsNo
(
orderGoodsNo
).
get
();
BigDecimal
siteLongitudeX
=
orderGoods
.
getSendLongitude
();
BigDecimal
siteLatitudeY
=
orderGoods
.
getSendLatitude
();
//调高德获取距离
if
(
Objects
.
nonNull
(
truckLongitudeX
)
&&
Objects
.
nonNull
(
truckLatitudeY
))
{
GdRouteDTO
route
=
getGdRoute
(
truckNo
,
orderGoods
.
getSendLongitude
(),
orderGoods
.
getSendLatitude
(),
siteLongitudeX
,
siteLatitudeY
);
if
(
route
==
null
)
{
log
.
error
(
"高德获取卡车与货源地位置距离失败,orderGoodsNo:{},orderChildNo:{},truckNo:{}"
,
orderGoodsNo
,
childNo
,
truckNo
);
return
;
}
//距离
Integer
distance
=
route
.
getDistance
();
// 超出货源地+通知触发距离
if
(
distance
>
driverNoticeConfigVO
.
getNoticeTriggerDistanceMeter
())
{
if
(
Objects
.
equals
(
child
.
getExitNoticeStatus
(),
OrderChildEnum
.
ExitNoticeStatus
.
NOT_NOTIFIED
.
getCode
())
)
{
//超出货源地x公里范围了,且通知状态为未通知
// 到达货源地
if
(
Objects
.
equals
(
child
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
()))
{
log
.
info
(
"{}超出货源地x公里范围了,运单{}为到达货源地状态,发送短信"
,
truckNo
,
childNo
);
sendLoadSms
(
child
.
getDriverMobile
(),
child
.
getTruckNo
(),
child
.
getChildNo
());
}
// 已装货
if
(
Objects
.
equals
(
child
.
getStatus
(),
OrderChildEnum
.
Status
.
LOAD
.
getCode
()))
{
Object
[]
superviseInfo
=
getSuperviseInfo
(
child
.
getOrderNo
(),
child
.
getChildNo
());
if
(
superviseInfo
!=
null
)
{
sendSupervisionSms
(
child
.
getDriverMobile
(),
child
.
getTruckNo
(),
child
.
getChildNo
(),
(
String
)
superviseInfo
[
2
]);
}
}
// 修改 通知状态 为已通知
child
.
setExitNoticeStatus
(
OrderChildEnum
.
ExitNoticeStatus
.
NOTIFIED
.
getCode
());
child
.
setEnterExitSendStatus
(
OrderChildEnum
.
EnterExitSendStatus
.
DRIVE_OUT
.
getCode
());
orderChildDao
.
updateEntityByKey
(
child
);
}
}
else
{
// 未超出货源地+通知触发距离
// 驶入货源地+通知触发距离范围内了
if
(
Objects
.
equals
(
child
.
getEnterExitSendStatus
(),
OrderChildEnum
.
EnterExitSendStatus
.
DRIVE_OUT
.
getCode
()))
{
//驶入货源地x公里范围了,且通知状态为已通知
// 修改 通知状态 为未通知
child
.
setExitNoticeStatus
(
OrderChildEnum
.
ExitNoticeStatus
.
NOT_NOTIFIED
.
getCode
());
// 状态改为驶入货源地
child
.
setEnterExitSendStatus
(
OrderChildEnum
.
EnterExitSendStatus
.
DRIVE_IN
.
getCode
());
orderChildDao
.
updateEntityByKey
(
child
);
}
}
}
}
}
/**
* 发送上传装货信息短信
* ①判断运单是否装车完成,如未完成,发送短信给运单关联司机,
* 【当前车牌号${truckNo},运单${childNo}未上传装车信息,请上传后再驶离货源地,如需帮助请联系客服。】
* truckNo:当前运单关联车牌号
* childNo:运单单号
*
* @param mobile 手机号
* @param truckNo 当前运单关联车牌号
* @param childNo 运单单号
*/
protected
void
sendLoadSms
(
String
mobile
,
String
truckNo
,
String
childNo
)
{
AliSmsMessageReq
req
=
new
AliSmsMessageReq
();
// 模板CODE
//SMS_470795021
req
.
setTemplateCode
(
messageConfig
.
getUploadLoadInfoTemplateCode
());
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
set
(
"truckNo"
,
truckNo
);
jsonObject
.
set
(
"childNo"
,
childNo
);
req
.
setChannelId
(
messageConfig
.
getChannelId
());
req
.
setAppId
(
messageConfig
.
getAppId
().
toString
());
req
.
setMobile
(
mobile
);
req
.
setContent
(
jsonObject
.
toString
());
req
.
setExpire
(
300L
);
clxMessageOpenapiFeign
.
sendAliSms
(
req
);
}
/**
* 发送监装提示信息
* ②判断如运单装车完成,且运单有监装任务(未取消),如该监装任务(任务类型为【监装任务】)中该车辆未完成监装,发送短信给对应司机,
* 【当前车牌号${truckNo},运单${childNo}需要进行现场监装,请您前往${supervision_address}进行配合,如需帮助请联系客服。】
* truckNo:当前运单关联车牌号
* childNo:运单单号
* supervision_address:监装地址(取运单关联的监装【任务地址】)
*
* @param mobile 手机号
* @param truckNo 当前运单关联车牌号
* @param childNo 运单单号
*/
private
void
sendSupervisionSms
(
String
mobile
,
String
truckNo
,
String
childNo
,
String
supervisionAddress
)
{
AliSmsMessageReq
req
=
new
AliSmsMessageReq
();
//模板CODE
//SMS_470740013
req
.
setTemplateCode
(
messageConfig
.
getNoticeSupervisionTemplateCode
());
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
set
(
"truckNo"
,
truckNo
);
jsonObject
.
set
(
"childNo"
,
childNo
);
jsonObject
.
set
(
"supervision_address"
,
supervisionAddress
);
req
.
setChannelId
(
messageConfig
.
getChannelId
());
req
.
setAppId
(
messageConfig
.
getAppId
().
toString
());
req
.
setMobile
(
mobile
);
req
.
setContent
(
jsonObject
.
toString
());
req
.
setExpire
(
300L
);
clxMessageOpenapiFeign
.
sendAliSms
(
req
);
}
private
BigDecimal
[]
getTruckLocation
(
String
truckNo
,
BigDecimal
longitude
,
BigDecimal
latitude
)
{
TruckLocationDTO
truckLocationDTO
=
null
;
try
{
truckLocationDTO
=
zjxlGpsService
.
getTruckLastLocation
(
truckNo
);
}
catch
(
Exception
e
)
{
log
.
info
(
"中交兴路获取失败:{}"
,
e
.
getMessage
());
}
//如果中交兴路获取到位置信息,则使用中交,否则用APP传的位置信息
if
(
truckLocationDTO
!=
null
)
{
BigDecimal
[]
location
=
truckLocationDTO
.
getLocation
();
longitude
=
location
[
0
];
latitude
=
location
[
1
];
log
.
info
(
"当前中交兴路获取司机车牌:{},相关位置信息:{}"
,
truckNo
,
JSONUtil
.
parse
(
truckLocationDTO
));
}
else
{
log
.
info
(
"中交兴路获取失败,通过高德获取,truckNo:{}"
,
truckNo
);
}
return
new
BigDecimal
[]{
longitude
,
latitude
};
}
@Override
public
OcrRecognitionResultVO
ocrRecognition
(
OcrRecognitionParam
param
)
{
//校验,同一运单同一图片类型只能识别一次
...
...
@@ -3304,7 +3603,7 @@ public class OrderChildServiceImpl implements OrderChildService {
List
<
OrderGoodsTruckBind
>
updateList
=
new
ArrayList
<>();
OrderGoodsTruckBind
update
;
for
(
OrderGoods
orderGood
:
orderGoods
)
{
if
(
Objects
.
equals
(
orderGood
.
getVehicleUsage
(),
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
if
(
Objects
.
equals
(
orderGood
.
getVehicleUsage
(),
VehicleUsageEnum
.
Status
.
OWN
.
getCode
()))
{
//定向平台车辆取消绑定,自由车辆状态绑定状态不变
continue
;
}
...
...
@@ -3320,8 +3619,65 @@ public class OrderChildServiceImpl implements OrderChildService {
goodsOrderTruckRecordComponent
.
deleteTruckRecord
(
item
.
getOrderGoodsNo
(),
item
.
getTruckNo
());
}
}
if
(
CollectionUtils
.
isNotEmpty
(
updateList
))
{
if
(
CollectionUtils
.
isNotEmpty
(
updateList
))
{
orderGoodsTruckBindDao
.
batchCancelTruckList
(
updateList
);
}
}
@Override
public
NeedAlertSuperviseInfoResultVO
needAlertSuperviseInfo
(
NeedAlertSuperviseInfoParam
param
)
{
//查询运单信息
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
param
.
getChildNo
()).
orElseThrow
(
DATA_NOT_FIND
);
//返回对象
NeedAlertSuperviseInfoResultVO
result
=
new
NeedAlertSuperviseInfoResultVO
();
App
app
=
appConfig
.
getPurchaseManageApp
();
//对接马上来供应链配置信息
//组装配置信息
RequestConfig
config
=
new
RequestConfig
()
.
setAppId
(
app
.
getAppNo
())
.
setAppKey
(
app
.
getAppKey
())
.
setGatewayUrl
(
app
.
getCallback
());
//通过订单号查询监装监卸信息
SupplyChainSupervisionLoadAction
action
=
new
SupplyChainSupervisionLoadAction
();
action
.
setOrderNo
(
orderChild
.
getOrderNo
());
action
.
setType
(
param
.
getType
());
log
.
info
(
"请求获取监装监卸信息参数,{}"
,
action
);
Result
<
SupervisionLoadInfoDto
>
supervisionLoadInfoDto
=
OpenClient
.
doAction
(
config
,
action
);
if
(!
supervisionLoadInfoDto
.
succeed
()){
//接口调用失败
result
.
setNeedAlert
(
0
);
return
result
;
//throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "获取监装监卸信息失败");
}
SupervisionLoadInfoDto
supervisionLoadInfo
=
supervisionLoadInfoDto
.
getData
();
//监装信息
if
(
Objects
.
nonNull
(
supervisionLoadInfo
)){
//有监装信息
//通过运单号查询监装监卸子任务状态
SupplyChainSupervisionLoadTruckAction
truckAction
=
new
SupplyChainSupervisionLoadTruckAction
();
truckAction
.
setChildNo
(
param
.
getChildNo
());
truckAction
.
setType
(
param
.
getType
());
log
.
info
(
"请求获取监装监卸子任务信息参数,{}"
,
truckAction
);
Result
<
SupervisionLoadTruckInfoDto
>
supervisionLoadTruckInfoDto
=
OpenClient
.
doAction
(
config
,
truckAction
);
if
(!
supervisionLoadTruckInfoDto
.
succeed
()){
//接口调用失败
result
.
setNeedAlert
(
0
);
return
result
;
//throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "获取监装监卸信息子任务失败");
}
SupervisionLoadTruckInfoDto
supervisionLoadTruckInfo
=
supervisionLoadTruckInfoDto
.
getData
();
if
(
Objects
.
nonNull
(
supervisionLoadTruckInfo
)){
if
(
supervisionLoadTruckInfo
.
getLoadStatus
()){
result
.
setNeedAlert
(
1
);
result
.
setLocation
(
supervisionLoadInfo
.
getTaskAddress
());
result
.
setMobile
(
supervisionLoadInfo
.
getTaskMobile
());
result
.
setSupervisor
(
supervisionLoadInfo
.
getTaskContracts
());
return
result
;
}
}
}
result
.
setNeedAlert
(
0
);
return
result
;
}
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderGoodsServiceImpl.java
浏览文件 @
ad4fd014
...
...
@@ -175,7 +175,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
orderGoodsVO
.
setUnloadEndTime
(
orderInfoFeign
.
getUnloadEndTime
());
orderGoodsVO
.
setLoadBeginTime
(
orderInfoFeign
.
getLoadBeginTime
());
orderGoodsVO
.
setLoadEndTime
(
orderInfoFeign
.
getLoadEndTime
());
orderGoodsVO
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
.
compareTo
(
residueWeight
)
>
0
?
BigDecimal
.
ZERO
:
residueWeight
);
orderGoodsVO
.
setResidueTransportWeight
(
BigDecimal
.
ZERO
.
compareTo
(
orderGoodsVO
.
getResidueTransportWeight
())
>
0
?
BigDecimal
.
ZERO
:
orderGoodsVO
.
getResidueTransportWeight
()
);
//货源地信息
orderGoodsVO
.
setSendContact
(
orderInfoFeign
.
getSendContact
());
orderGoodsVO
.
setSendContactPhone
(
orderInfoFeign
.
getSendContactPhone
());
...
...
performance-web/src/main/java/com/clx/performance/sqlProvider/OrderChildOperateRecordSqlProvider.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
sqlProvider
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.param.pc.OrderChildCancelRecordParam
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.jdbc.SQL
;
public
class
OrderChildOperateRecordSqlProvider
{
public
String
orderChildOperateRecord
(
@Param
(
"page"
)
Page
<
OrderChildVO
>
page
,
@Param
(
"param"
)
OrderChildCancelRecordParam
param
)
{
return
new
SQL
()
{{
SELECT
(
"id,"
+
"child_no,"
+
"type,"
+
"truck_no,"
+
"driver_name,"
+
"driver_mobile,"
+
"send_address,"
+
"receive_address,"
+
"good_type_name,"
+
"remark,"
+
"date_format(operate_time, '%Y-%m-%d %H:%i:%s') as operateTime,"
+
"operator"
);
FROM
(
"order_child_operate_record "
);
ORDER_BY
(
"created_time desc"
);
}}.
toString
();
}
}
performance-web/src/main/java/com/clx/performance/sqlProvider/OrderChildSqlProvider.java
浏览文件 @
ad4fd014
...
...
@@ -6,10 +6,7 @@ import com.clx.performance.enums.OrderChildEnum;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.param.app.PageOrderChildOfDriverParam
;
import
com.clx.performance.param.app.PageOrderChildOfDriverSearchParam
;
import
com.clx.performance.param.pc.OrderChildCancelRecordParam
;
import
com.clx.performance.param.pc.OrderChildReportParam
;
import
com.clx.performance.param.pc.PageCarrierOrderChildParam
;
import
com.clx.performance.param.pc.PagePoundAuditParam
;
import
com.clx.performance.param.pc.*
;
import
com.clx.performance.vo.app.OrderChildVO
;
import
com.clx.performance.vo.pc.PageCarrierOrderChildVO
;
import
com.clx.performance.vo.pc.PageOrderChildPoundAuditVO
;
...
...
@@ -19,6 +16,8 @@ import org.apache.ibatis.annotations.Param;
import
org.apache.ibatis.jdbc.SQL
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.StringJoiner
;
...
...
@@ -182,21 +181,38 @@ public class OrderChildSqlProvider {
return
sql
;
}
public
String
findArtificialCancelOrder
(
@Param
(
"orderChildNo"
)
String
orderChildNo
)
{
String
sql
=
"select child_no,goods_name,freight_price,order_no,"
+
"send_address,receive_address,"
+
"driver_user_no, driver_name,driver_mobile,"
+
"truck_no,"
+
"unload_pound_no,weight,"
+
"cancel_remark,"
+
"pound_status,status,"
+
"date_format(load_deadline, '%Y-%m-%d %H:%i:%s') as loadDeadline,"
+
"date_format(create_time, '%Y-%m-%d %H:%i:%s') as createTime,"
+
"date_format(unload_time, '%Y-%m-%d %H:%i:%s') as unloadTime from order_child where child_no = #{orderChildNo}"
;
sql
+=
" and status >="
+
OrderChildEnum
.
Status
.
LOAD
.
getCode
();
sql
+=
" and status <"
+
OrderChildEnum
.
Status
.
UNSETTLE
.
getCode
();
return
sql
;
public
String
findArtificialCancelOrder
(
@Param
(
"param"
)
ArtificialCancelOrderQueryParam
param
)
{
StringBuilder
sql
=
new
StringBuilder
();
sql
.
append
(
"SELECT child_no, goods_name, freight_price, order_no, "
);
sql
.
append
(
"send_address, receive_address, "
);
sql
.
append
(
"driver_user_no, driver_name, driver_mobile, "
);
sql
.
append
(
"truck_no, unload_pound_no, weight, "
);
sql
.
append
(
"cancel_remark, pound_status, status, "
);
sql
.
append
(
"DATE_FORMAT(load_deadline, '%Y-%m-%d %H:%i:%s') AS loadDeadline, "
);
sql
.
append
(
"DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') AS createTime, "
);
sql
.
append
(
"DATE_FORMAT(unload_time, '%Y-%m-%d %H:%i:%s') AS unloadTime "
);
sql
.
append
(
"FROM order_child "
);
sql
.
append
(
"WHERE 1=1 "
);
List
<
String
>
conditions
=
new
ArrayList
<>();
if
(
StringUtils
.
isNotBlank
(
param
.
getOrderChildNo
()))
{
conditions
.
add
(
"child_no = #{param.orderChildNo}"
);
}
if
(
StringUtils
.
isNotBlank
(
param
.
getTruckNo
()))
{
conditions
.
add
(
"truck_no = #{param.truckNo}"
);
}
List
<
Integer
>
statuses
=
Arrays
.
asList
(
OrderChildEnum
.
Status
.
CREATED
.
getCode
(),
OrderChildEnum
.
Status
.
GO_TO_SEND
.
getCode
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
(),
OrderChildEnum
.
Status
.
LOAD
.
getCode
(),
OrderChildEnum
.
Status
.
GO_TO_RECEIVE
.
getCode
(),
OrderChildEnum
.
Status
.
ARRIVE_RECEIVE
.
getCode
()
);
conditions
.
add
(
"status IN ("
+
StringUtils
.
join
(
statuses
,
", "
)
+
")"
);
sql
.
append
(
"AND "
);
sql
.
append
(
StringUtils
.
join
(
conditions
,
" AND "
));
return
sql
.
toString
();
}
public
String
orderChildCancelRecord
(
@Param
(
"page"
)
Page
<
OrderChildVO
>
page
,
@Param
(
"param"
)
OrderChildCancelRecordParam
param
)
{
...
...
performance-web/src/main/java/com/clx/performance/struct/DriverNoticeConfigStruct.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
struct
;
import
com.clx.performance.model.DriverNoticeConfig
;
import
com.clx.performance.vo.pc.DriverNoticeConfigVO
;
import
org.mapstruct.Mapper
;
@Mapper
(
componentModel
=
"spring"
)
public
interface
DriverNoticeConfigStruct
{
DriverNoticeConfigVO
convertVO
(
DriverNoticeConfig
config
);
}
performance-web/src/main/java/com/clx/performance/struct/OrderChildOperateLimitConfigStruct.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
struct
;
import
com.clx.performance.model.OrderChildOperateLimitConfig
;
import
com.clx.performance.vo.pc.OrderChildOperateLimitConfigVO
;
import
org.mapstruct.Mapper
;
@Mapper
(
componentModel
=
"spring"
)
public
interface
OrderChildOperateLimitConfigStruct
{
OrderChildOperateLimitConfigVO
convertVO
(
OrderChildOperateLimitConfig
config
);
}
performance-web/src/test/java/com/clx/performance/service/impl/OrderChildServiceImpl2Test.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
service
.
impl
;
import
com.clx.message.feign.ClxMessageOpenapiFeign
;
import
com.clx.performance.config.ClxMessageConfig
;
import
com.clx.performance.config.LoadAppConfig
;
import
com.clx.performance.constant.RedisConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dto.gd.GdRouteDTO
;
import
com.clx.performance.dto.zjxl.TruckTraceDTO
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.model.App
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.service.DriverNoticeConfigService
;
import
com.clx.performance.utils.gd.GdService
;
import
com.clx.performance.vo.pc.DriverNoticeConfigVO
;
import
com.msl.common.base.Optional
;
import
com.msl.common.open.OpenClient
;
import
com.msl.common.result.Result
;
import
com.purchase.manage.dto.SupervisionLoadInfoDto
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Test
;
import
org.junit.jupiter.api.extension.ExtendWith
;
import
org.mockito.InjectMocks
;
import
org.mockito.Mock
;
import
org.mockito.Mockito
;
import
org.mockito.junit.jupiter.MockitoExtension
;
import
org.mockito.junit.jupiter.MockitoSettings
;
import
org.mockito.quality.Strictness
;
import
org.springframework.data.redis.core.HashOperations
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
mockito
.
ArgumentMatchers
.
any
;
import
static
org
.
mockito
.
ArgumentMatchers
.
anyList
;
import
static
org
.
mockito
.
Mockito
.
when
;
@ExtendWith
(
MockitoExtension
.
class
)
@MockitoSettings
(
strictness
=
Strictness
.
LENIENT
)
public
class
OrderChildServiceImpl2Test
{
@Mock
private
RedisTemplate
redisTemplate
;
@Mock
private
OrderGoodsDao
orderGoodsDao
;
@Mock
private
HashOperations
<
String
,
String
,
TruckTraceDTO
>
hashOps
;
@Mock
private
DriverNoticeConfigService
driverNoticeConfigService
;
@InjectMocks
private
OrderChildServiceImpl
orderChildService
;
@Mock
private
OrderChildDao
orderChildDao
;
@Mock
private
GdService
gdService
;
@Mock
private
ClxMessageConfig
messageConfig
;
@Mock
private
ClxMessageOpenapiFeign
clxMessageOpenapiFeign
;
@Mock
private
LoadAppConfig
appConfig
;
@BeforeEach
void
setUp
()
{
// Setup common mock interactions here if any
}
@Test
void
testOrderChildMessageNotice
()
{
orderChildService
.
orderChildMessageNotice
();
}
@Test
void
testOrderChildMessageNoticeListConfigDisabled
()
{
// Arrange
DriverNoticeConfigVO
configVO
=
new
DriverNoticeConfigVO
();
configVO
.
setStatus
(
0
);
configVO
.
setNoticeTriggerDistance
(
BigDecimal
.
valueOf
(
5000
));
when
(
driverNoticeConfigService
.
listConfig
()).
thenReturn
(
configVO
);
orderChildService
.
orderChildMessageNotice
();
}
/**
* 状态为到达货源地,超出范围,发短信,修改状态,修改已发短信状态
*/
@Test
void
testOrderChildMessageNoticeListConfigEnabled
()
{
//模拟两个运单
List
<
OrderChild
>
mockOrderChildList
=
new
ArrayList
<>();
OrderChild
child1
=
new
OrderChild
();
child1
.
setChildNo
(
"childNo1"
);
child1
.
setOrderGoodsNo
(
"orderGoods1"
);
child1
.
setTruckNo
(
"truckNo1"
);
child1
.
setRemoveLoadLimitStatus
(
0
);
child1
.
setExitNoticeStatus
(
0
);
//到达货源地
child1
.
setStatus
(
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
child1
.
setDriverMobile
(
"12345678901"
);
mockOrderChildList
.
add
(
child1
);
when
(
orderChildDao
.
listOrderChild
(
anyList
(),
any
(),
any
())).
thenReturn
(
mockOrderChildList
);
Map
<
String
,
TruckTraceDTO
>
truckTraceMap
=
new
HashMap
<>();
TruckTraceDTO
truckTraceDTO
=
new
TruckTraceDTO
();
truckTraceDTO
.
setLocation
(
new
BigDecimal
[]{
BigDecimal
.
ONE
,
BigDecimal
.
TEN
});
truckTraceDTO
.
setTruckNo
(
"truckNo1"
);
truckTraceMap
.
put
(
"truckNo1"
,
truckTraceDTO
);
when
(
redisTemplate
.
opsForHash
()).
thenReturn
(
hashOps
);
when
(
hashOps
.
entries
(
RedisConstants
.
ZJXL_TRUCK_TRACE_LIST
)).
thenReturn
(
truckTraceMap
);
OrderGoods
orderGoods
=
new
OrderGoods
();
//货单
when
(
orderGoodsDao
.
getByOrderGoodsNo
(
child1
.
getOrderGoodsNo
())).
thenReturn
(
Optional
.
of
(
orderGoods
));
when
(
driverNoticeConfigService
.
listConfig
()).
thenReturn
(
mockDriverNoticeConfigVO
());
// gdRoute
GdRouteDTO
gdRoute
=
new
GdRouteDTO
();
//设置3000 ,超出提醒范围了
gdRoute
.
setDistance
(
3000
);
// 假设高德服务返回了一个有效的路线
Mockito
.
when
(
gdService
.
getRoute
(
any
(),
any
(),
any
(),
any
())).
thenReturn
(
Collections
.
singletonList
(
gdRoute
));
// 调用方法
orderChildService
.
orderChildMessageNotice
();
//验证运单状态
assertEquals
(
child1
.
getEnterExitSendStatus
(),
OrderChildEnum
.
EnterExitSendStatus
.
DRIVE_OUT
.
getCode
());
assertEquals
(
child1
.
getExitNoticeStatus
(),
OrderChildEnum
.
ExitNoticeStatus
.
NOTIFIED
.
getCode
());
//看日志为已发短信
}
/**
* 状态为已装货,超出范围,发短信,修改状态,修改已发短信状态
*/
@Test
void
testOrderChildMessageNoticeListConfigEnabled2
()
{
//模拟两个运单
List
<
OrderChild
>
mockOrderChildList
=
new
ArrayList
<>();
OrderChild
child1
=
new
OrderChild
();
child1
.
setChildNo
(
"childNo1"
);
child1
.
setOrderGoodsNo
(
"orderGoods1"
);
child1
.
setTruckNo
(
"truckNo1"
);
child1
.
setRemoveLoadLimitStatus
(
0
);
child1
.
setExitNoticeStatus
(
0
);
//到达货源地
child1
.
setStatus
(
OrderChildEnum
.
Status
.
LOAD
.
getCode
());
child1
.
setDriverMobile
(
"12345678901"
);
mockOrderChildList
.
add
(
child1
);
when
(
orderChildDao
.
listOrderChild
(
anyList
(),
any
(),
any
())).
thenReturn
(
mockOrderChildList
);
Map
<
String
,
TruckTraceDTO
>
truckTraceMap
=
new
HashMap
<>();
TruckTraceDTO
truckTraceDTO
=
new
TruckTraceDTO
();
truckTraceDTO
.
setLocation
(
new
BigDecimal
[]{
BigDecimal
.
ONE
,
BigDecimal
.
TEN
});
truckTraceDTO
.
setTruckNo
(
"truckNo1"
);
truckTraceMap
.
put
(
"truckNo1"
,
truckTraceDTO
);
when
(
redisTemplate
.
opsForHash
()).
thenReturn
(
hashOps
);
when
(
hashOps
.
entries
(
RedisConstants
.
ZJXL_TRUCK_TRACE_LIST
)).
thenReturn
(
truckTraceMap
);
OrderGoods
orderGoods
=
new
OrderGoods
();
//货单
when
(
orderGoodsDao
.
getByOrderGoodsNo
(
child1
.
getOrderGoodsNo
())).
thenReturn
(
Optional
.
of
(
orderGoods
));
when
(
driverNoticeConfigService
.
listConfig
()).
thenReturn
(
mockDriverNoticeConfigVO
());
// gdRoute
GdRouteDTO
gdRoute
=
new
GdRouteDTO
();
//设置3000 ,超出提醒范围了
gdRoute
.
setDistance
(
3000
);
// 假设高德服务返回了一个有效的路线
Mockito
.
when
(
gdService
.
getRoute
(
any
(),
any
(),
any
(),
any
())).
thenReturn
(
Collections
.
singletonList
(
gdRoute
));
App
app
=
new
App
();
app
.
setAppNo
(
"appNo"
);
app
.
setAppKey
(
"appKey"
);
app
.
setCallback
(
"callback"
);
Mockito
.
when
(
appConfig
.
getPurchaseManageApp
()).
thenReturn
(
app
);
// 调用方法
orderChildService
.
orderChildMessageNotice
();
SupervisionLoadInfoDto
supervisionLoadInfoDto
=
new
SupervisionLoadInfoDto
();
supervisionLoadInfoDto
.
setTaskAddress
(
"aaaa"
);
supervisionLoadInfoDto
.
setTaskContracts
(
"bbbb"
);
supervisionLoadInfoDto
.
setTaskMobile
(
"18888888888"
);
Result
<
SupervisionLoadInfoDto
>
r
=
Result
.
ok
(
supervisionLoadInfoDto
);
// todo: jiangwujie 此处因为无法模拟静态方法,所以这个测试方法是不通过的, 有机会再说
Mockito
.<
Result
<
SupervisionLoadInfoDto
>>
when
(
OpenClient
.
doAction
(
any
(),
any
())).
thenReturn
(
r
);
//验证运单状态
assertEquals
(
child1
.
getEnterExitSendStatus
(),
OrderChildEnum
.
EnterExitSendStatus
.
DRIVE_OUT
.
getCode
());
assertEquals
(
child1
.
getExitNoticeStatus
(),
OrderChildEnum
.
ExitNoticeStatus
.
NOTIFIED
.
getCode
());
}
/**
* 验证取消监装限制
*
* @return
*/
@Test
public
void
test_orderChildMessageNotice_removeLimit
()
throws
Exception
{
//模拟两个运单
List
<
OrderChild
>
mockOrderChildList
=
new
ArrayList
<>();
OrderChild
child1
=
new
OrderChild
();
child1
.
setChildNo
(
"childNo1"
);
child1
.
setOrderGoodsNo
(
"orderGoods1"
);
child1
.
setTruckNo
(
"truckNo1"
);
child1
.
setRemoveLoadLimitStatus
(
0
);
child1
.
setExitNoticeStatus
(
0
);
child1
.
setEnterExitSendStatus
(
OrderChildEnum
.
EnterExitSendStatus
.
INIT
.
getCode
());
child1
.
setRemoveLoadLimitStatus
(
OrderChildEnum
.
RemoveLoadLimitStatus
.
REMOVED
.
getCode
());
//到达货源地
child1
.
setStatus
(
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
child1
.
setDriverMobile
(
"12345678901"
);
mockOrderChildList
.
add
(
child1
);
when
(
orderChildDao
.
listOrderChild
(
anyList
(),
any
(),
any
())).
thenReturn
(
mockOrderChildList
);
Map
<
String
,
TruckTraceDTO
>
truckTraceMap
=
new
HashMap
<>();
TruckTraceDTO
truckTraceDTO
=
new
TruckTraceDTO
();
truckTraceDTO
.
setLocation
(
new
BigDecimal
[]{
BigDecimal
.
ONE
,
BigDecimal
.
TEN
});
truckTraceDTO
.
setTruckNo
(
"truckNo1"
);
truckTraceMap
.
put
(
"truckNo1"
,
truckTraceDTO
);
when
(
redisTemplate
.
opsForHash
()).
thenReturn
(
hashOps
);
when
(
hashOps
.
entries
(
RedisConstants
.
ZJXL_TRUCK_TRACE_LIST
)).
thenReturn
(
truckTraceMap
);
OrderGoods
orderGoods
=
new
OrderGoods
();
//货单
when
(
orderGoodsDao
.
getByOrderGoodsNo
(
child1
.
getOrderGoodsNo
())).
thenReturn
(
Optional
.
of
(
orderGoods
));
when
(
driverNoticeConfigService
.
listConfig
()).
thenReturn
(
mockDriverNoticeConfigVO
());
// 调用方法
orderChildService
.
orderChildMessageNotice
();
//验证运单状态
assertEquals
(
child1
.
getEnterExitSendStatus
(),
OrderChildEnum
.
EnterExitSendStatus
.
INIT
.
getCode
());
assertEquals
(
child1
.
getExitNoticeStatus
(),
OrderChildEnum
.
ExitNoticeStatus
.
NOT_NOTIFIED
.
getCode
());
//看日志为已发短信
}
/**
* 状态为到达货源地,未超出范围,修改驶入驶出状态,修改通知状态
*/
@Test
void
testOrderChildMessageNotice_inRange
()
{
//模拟两个运单
List
<
OrderChild
>
mockOrderChildList
=
new
ArrayList
<>();
OrderChild
child1
=
new
OrderChild
();
child1
.
setChildNo
(
"childNo1"
);
child1
.
setOrderGoodsNo
(
"orderGoods1"
);
child1
.
setTruckNo
(
"truckNo1"
);
//驶离
child1
.
setEnterExitSendStatus
(
OrderChildEnum
.
EnterExitSendStatus
.
DRIVE_OUT
.
getCode
());
child1
.
setRemoveLoadLimitStatus
(
0
);
child1
.
setExitNoticeStatus
(
1
);
//到达货源地
child1
.
setStatus
(
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
());
child1
.
setDriverMobile
(
"12345678901"
);
mockOrderChildList
.
add
(
child1
);
when
(
orderChildDao
.
listOrderChild
(
anyList
(),
any
(),
any
())).
thenReturn
(
mockOrderChildList
);
Map
<
String
,
TruckTraceDTO
>
truckTraceMap
=
new
HashMap
<>();
TruckTraceDTO
truckTraceDTO
=
new
TruckTraceDTO
();
truckTraceDTO
.
setLocation
(
new
BigDecimal
[]{
BigDecimal
.
ONE
,
BigDecimal
.
TEN
});
truckTraceDTO
.
setTruckNo
(
"truckNo1"
);
truckTraceMap
.
put
(
"truckNo1"
,
truckTraceDTO
);
when
(
redisTemplate
.
opsForHash
()).
thenReturn
(
hashOps
);
when
(
hashOps
.
entries
(
RedisConstants
.
ZJXL_TRUCK_TRACE_LIST
)).
thenReturn
(
truckTraceMap
);
OrderGoods
orderGoods
=
new
OrderGoods
();
//货单
when
(
orderGoodsDao
.
getByOrderGoodsNo
(
child1
.
getOrderGoodsNo
())).
thenReturn
(
Optional
.
of
(
orderGoods
));
when
(
driverNoticeConfigService
.
listConfig
()).
thenReturn
(
mockDriverNoticeConfigVO
());
// gdRoute
GdRouteDTO
gdRoute
=
new
GdRouteDTO
();
// 未超出范围
gdRoute
.
setDistance
(
1000
);
// 假设高德服务返回了一个有效的路线
Mockito
.
when
(
gdService
.
getRoute
(
any
(),
any
(),
any
(),
any
())).
thenReturn
(
Collections
.
singletonList
(
gdRoute
));
// 调用方法
orderChildService
.
orderChildMessageNotice
();
//验证运单状态 -> 驶入
assertEquals
(
child1
.
getEnterExitSendStatus
(),
OrderChildEnum
.
EnterExitSendStatus
.
DRIVE_IN
.
getCode
());
// 通知状态改为未通知
assertEquals
(
child1
.
getExitNoticeStatus
(),
OrderChildEnum
.
ExitNoticeStatus
.
NOT_NOTIFIED
.
getCode
());
}
private
DriverNoticeConfigVO
mockDriverNoticeConfigVO
()
{
DriverNoticeConfigVO
configVO
=
new
DriverNoticeConfigVO
();
//启用
configVO
.
setStatus
(
1
);
//距离2公里
configVO
.
setNoticeTriggerDistance
(
new
BigDecimal
(
2
));
return
configVO
;
}
}
performance-web/src/test/java/com/clx/performance/service/impl/OrderChildServiceImpl3Test.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
service
.
impl
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dto.gd.GdRouteDTO
;
import
com.clx.performance.enums.EnabledStatusEnum
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.param.app.OrderChildLoadRangeCheckParam
;
import
com.clx.performance.service.OrderChildOperateLimitConfigService
;
import
com.clx.performance.utils.gd.GdService
;
import
com.clx.performance.vo.app.OrderChildLoadRangeCheckResultVO
;
import
com.clx.performance.vo.pc.OrderChildOperateLimitConfigVO
;
import
com.msl.common.base.Optional
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Test
;
import
org.junit.jupiter.api.extension.ExtendWith
;
import
org.mockito.InjectMocks
;
import
org.mockito.Mock
;
import
org.mockito.junit.jupiter.MockitoExtension
;
import
org.mockito.junit.jupiter.MockitoSettings
;
import
org.mockito.quality.Strictness
;
import
java.math.BigDecimal
;
import
java.util.Collections
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertEquals
;
import
static
org
.
mockito
.
Mockito
.*;
@ExtendWith
(
MockitoExtension
.
class
)
@MockitoSettings
(
strictness
=
Strictness
.
LENIENT
)
class
OrderChildServiceImpl3Test
{
@Mock
private
OrderGoodsDao
orderGoodsDao
;
@Mock
private
OrderChildDao
orderChildDao
;
@Mock
private
GdService
gdService
;
@Mock
private
OrderChildOperateLimitConfigService
orderChildOperateLimitConfigService
;
@InjectMocks
private
OrderChildServiceImpl
orderChildService
;
private
OrderChildLoadRangeCheckParam
param
;
@BeforeEach
void
setUp
()
{
param
=
new
OrderChildLoadRangeCheckParam
();
param
.
setChildNo
(
"testChildNo"
);
param
.
setLatitude
(
BigDecimal
.
TEN
);
param
.
setLongitude
(
BigDecimal
.
TEN
);
}
/**
* 无配置情况
*/
@Test
void
loadRangeCheck_whenConfigIsNull_shouldReturnError
()
{
when
(
orderChildDao
.
getByChildNo
(
param
.
getChildNo
())).
thenReturn
(
Optional
.
of
(
new
OrderChild
()));
when
(
orderGoodsDao
.
getByOrderGoodsNo
(
anyString
())).
thenReturn
(
Optional
.
of
(
new
OrderGoods
()));
OrderChildLoadRangeCheckResultVO
result
=
orderChildService
.
loadRangeCheck
(
param
);
assertEquals
(
PerformanceResultEnum
.
ORDER_CHILD_LOAD_LIMIT_CONFIG_ERROR
.
getCode
(),
result
.
getCode
());
}
@Test
void
loadRangeCheck_whenConfigIsDisabled_shouldReturnDisabled
()
{
OrderChildOperateLimitConfigVO
config
=
new
OrderChildOperateLimitConfigVO
();
config
.
setStatus
(
EnabledStatusEnum
.
DISABLE
.
getCode
());
// 限制装车距离为1.5
config
.
setAllowUploadDistance
(
new
BigDecimal
(
"1.5"
));
OrderChild
orderChild
=
new
OrderChild
();
orderChild
.
setOrderGoodsNo
(
"ordergoodsno"
);
orderChild
.
setOrderNo
(
"orderno"
);
orderChild
.
setChildNo
(
"orderno"
);
orderChild
.
setStatus
(
OrderChildEnum
.
Status
.
GO_TO_SEND
.
getCode
());
OrderGoods
orderGoods
=
new
OrderGoods
();
when
(
orderChildOperateLimitConfigService
.
listConfig
()).
thenReturn
(
config
);
when
(
orderChildDao
.
getByChildNo
(
param
.
getChildNo
())).
thenReturn
(
Optional
.
of
(
orderChild
));
when
(
orderGoodsDao
.
getByOrderGoodsNo
(
anyString
())).
thenReturn
(
Optional
.
of
(
orderGoods
));
GdRouteDTO
route
=
new
GdRouteDTO
();
route
.
setDistance
(
2000
);
when
(
gdService
.
getRoute
(
any
(),
any
(),
any
(),
any
())).
thenReturn
(
Collections
.
singletonList
(
route
));
OrderChildLoadRangeCheckResultVO
result
=
orderChildService
.
loadRangeCheck
(
param
);
assertEquals
(
PerformanceResultEnum
.
ORDER_CHILD_LOAD_LIMIT_CONFIG_DISABLED
.
getCode
(),
result
.
getCode
());
}
/**
* 在装车范围内,不进行提示
*/
@Test
void
loadRangeCheck_ok
()
{
OrderChildOperateLimitConfigVO
config
=
new
OrderChildOperateLimitConfigVO
();
config
.
setStatus
(
EnabledStatusEnum
.
ENABLE
.
getCode
());
// 限制装车距离为1.5
config
.
setAllowUploadDistance
(
new
BigDecimal
(
"1.5"
));
OrderChild
orderChild
=
new
OrderChild
();
orderChild
.
setOrderGoodsNo
(
"ordergoodsno"
);
orderChild
.
setOrderNo
(
"orderno"
);
orderChild
.
setChildNo
(
"orderno"
);
orderChild
.
setStatus
(
OrderChildEnum
.
Status
.
GO_TO_SEND
.
getCode
());
OrderGoods
orderGoods
=
new
OrderGoods
();
when
(
orderChildOperateLimitConfigService
.
listConfig
()).
thenReturn
(
config
);
when
(
orderChildDao
.
getByChildNo
(
param
.
getChildNo
())).
thenReturn
(
Optional
.
of
(
orderChild
));
when
(
orderGoodsDao
.
getByOrderGoodsNo
(
anyString
())).
thenReturn
(
Optional
.
of
(
orderGoods
));
GdRouteDTO
route
=
new
GdRouteDTO
();
//距离装车距离为1000
route
.
setDistance
(
1000
);
when
(
gdService
.
getRoute
(
any
(),
any
(),
any
(),
any
())).
thenReturn
(
Collections
.
singletonList
(
route
));
OrderChildLoadRangeCheckResultVO
result
=
orderChildService
.
loadRangeCheck
(
param
);
assertEquals
(
OrderChildEnum
.
NeedAlertEnum
.
OK
.
getCode
(),
result
.
getCode
());
}
/**
* 运单不存在
*/
@Test
void
loadRangeCheck_whenOrderChildNotFound_shouldReturnNotFound
()
{
OrderChildOperateLimitConfigVO
config
=
new
OrderChildOperateLimitConfigVO
();
config
.
setStatus
(
EnabledStatusEnum
.
ENABLE
.
getCode
());
// 限制装车距离为1.5
config
.
setAllowUploadDistance
(
new
BigDecimal
(
"1.5"
));
when
(
orderChildOperateLimitConfigService
.
listConfig
()).
thenReturn
(
config
);
when
(
orderChildDao
.
getByChildNo
(
param
.
getChildNo
())).
thenReturn
(
new
Optional
<>());
OrderChildLoadRangeCheckResultVO
result
=
orderChildService
.
loadRangeCheck
(
param
);
assertEquals
(
PerformanceResultEnum
.
ORDER_CHILD_NO_FOUND
.
getCode
(),
result
.
getCode
());
assertEquals
(
OrderChildEnum
.
NeedAlertEnum
.
FAIL
.
getCode
(),
result
.
getNeedAlert
());
}
}
performance-web/src/test/java/com/clx/performance/service/impl/OrderChildServiceImplTest.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
service
.
impl
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.OrderGoodsDao
;
import
com.clx.performance.dto.gd.GdRouteDTO
;
import
com.clx.performance.enums.PerformanceResultEnum
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.OrderGoods
;
import
com.clx.performance.param.app.OrderChildLoadRangeCheckParam
;
import
com.clx.performance.service.OrderChildOperateLimitConfigService
;
import
com.clx.performance.utils.gd.GdService
;
import
com.clx.performance.vo.app.OrderChildLoadRangeCheckResultVO
;
import
com.clx.performance.vo.pc.OrderChildOperateLimitConfigVO
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.InjectMocks
;
import
org.mockito.Mock
;
import
org.mockito.Mockito
;
import
org.mockito.junit.MockitoJUnitRunner
;
import
java.math.BigDecimal
;
import
java.util.Arrays
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
mockito
.
ArgumentMatchers
.
any
;
import
static
org
.
mockito
.
Mockito
.
when
;
@RunWith
(
MockitoJUnitRunner
.
class
)
public
class
OrderChildServiceImplTest
{
@InjectMocks
private
OrderChildServiceImpl
orderChildService
;
@Mock
private
OrderChildOperateLimitConfigService
orderChildOperateLimitConfigService
;
@Mock
private
GdService
gdService
;
@Mock
private
OrderGoodsDao
orderGoodsDao
;
@Mock
private
OrderChildDao
orderChildDao
;
private
OrderChildLoadRangeCheckParam
param
;
private
OrderChildOperateLimitConfigVO
config
;
@Before
public
void
setUp
()
{
param
=
new
OrderChildLoadRangeCheckParam
();
param
.
setLatitude
(
new
BigDecimal
(
"32.2304"
));
param
.
setLongitude
(
new
BigDecimal
(
"122.4737"
));
OrderChild
orderChild
=
new
OrderChild
();
orderChild
.
setOrderGoodsNo
(
"123456789"
);
orderChild
.
setTruckNo
(
"黑A88888"
);
Mockito
.<
com
.
msl
.
common
.
base
.
Optional
<
OrderChild
>>
when
(
orderChildDao
.
getByChildNo
(
param
.
getChildNo
())).
thenReturn
(
com
.
msl
.
common
.
base
.
Optional
.
of
(
orderChild
));
// 预设的返回值,根据具体业务逻辑可能需要调整
OrderGoods
orderGoods
=
new
OrderGoods
();
orderGoods
.
setSendLatitude
(
BigDecimal
.
valueOf
(
31.2304
));
orderGoods
.
setSendLongitude
(
BigDecimal
.
valueOf
(
121.4737
));
Mockito
.<
com
.
msl
.
common
.
base
.
Optional
<
OrderGoods
>>
when
(
orderGoodsDao
.
getByOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
())).
thenReturn
(
com
.
msl
.
common
.
base
.
Optional
.
of
(
orderGoods
));
// Mock配置
config
=
new
OrderChildOperateLimitConfigVO
();
config
.
setAllowUploadDistance
(
BigDecimal
.
valueOf
(
2
));
config
.
setStatus
(
1
);
when
(
orderChildOperateLimitConfigService
.
listConfig
()).
thenReturn
(
config
);
}
@Test
public
void
testLoadRangeCheckSuccess
()
{
GdRouteDTO
gdRoute
=
new
GdRouteDTO
();
gdRoute
.
setDistance
(
1000
);
// 假设高德服务返回了一个有效的路线
Mockito
.
when
(
gdService
.
getRoute
(
any
(
BigDecimal
.
class
),
any
(
BigDecimal
.
class
),
any
(
BigDecimal
.
class
),
any
(
BigDecimal
.
class
))).
thenReturn
(
Arrays
.
asList
(
gdRoute
));
OrderChildLoadRangeCheckResultVO
result
=
orderChildService
.
loadRangeCheck
(
param
);
assertEquals
(
0
,
result
.
getCode
().
intValue
());
assertEquals
(
"验证通过"
,
result
.
getMsg
());
}
@Test
public
void
testLoadRangeCheckFailDueToConfigNull
()
{
// 假设没有配置
when
(
orderChildOperateLimitConfigService
.
listConfig
()).
thenReturn
(
null
);
OrderChildLoadRangeCheckResultVO
result
=
orderChildService
.
loadRangeCheck
(
param
);
assertEquals
(
PerformanceResultEnum
.
ORDER_CHILD_LOAD_LIMIT_CONFIG_ERROR
.
getCode
(),
result
.
getCode
().
intValue
());
assertEquals
(
PerformanceResultEnum
.
ORDER_CHILD_LOAD_LIMIT_CONFIG_ERROR
.
getMsg
(),
result
.
getMsg
());
}
@Test
public
void
testLoadRangeCheckFailDueToDisabledConfig
()
{
// 假设配置被禁用
OrderChildOperateLimitConfigVO
config
=
new
OrderChildOperateLimitConfigVO
();
config
.
setStatus
(
0
);
config
.
setAllowUploadDistance
(
new
BigDecimal
(
"2"
));
when
(
orderChildOperateLimitConfigService
.
listConfig
()).
thenReturn
(
config
);
OrderChildLoadRangeCheckResultVO
result
=
orderChildService
.
loadRangeCheck
(
param
);
assertEquals
(
0
,
result
.
getNeedAlert
().
intValue
());
assertEquals
(
PerformanceResultEnum
.
ORDER_CHILD_LOAD_LIMIT_CONFIG_DISABLED
.
getCode
(),
result
.
getCode
().
intValue
());
assertEquals
(
PerformanceResultEnum
.
ORDER_CHILD_LOAD_LIMIT_CONFIG_DISABLED
.
getMsg
(),
result
.
getMsg
());
}
@Test
public
void
testLoadRangeCheckFailDueToTruckLocation
()
{
param
.
setLatitude
(
null
);
param
.
setLongitude
(
null
);
OrderChildLoadRangeCheckResultVO
result
=
orderChildService
.
loadRangeCheck
(
param
);
assertEquals
(
PerformanceResultEnum
.
TRUCK_LOCATION_ERROR
.
getCode
(),
result
.
getCode
().
intValue
());
assertEquals
(
String
.
format
(
PerformanceResultEnum
.
TRUCK_LOCATION_ERROR
.
getMsg
(),
config
.
getAllowUploadDistance
()),
result
.
getMsg
());
}
@Test
public
void
testLoadRangeCheckFailDueToDistanceOut
()
{
GdRouteDTO
gdRoute
=
new
GdRouteDTO
();
gdRoute
.
setDistance
(
5000
);
Mockito
.
when
(
gdService
.
getRoute
(
any
(
BigDecimal
.
class
),
any
(
BigDecimal
.
class
),
any
(
BigDecimal
.
class
),
any
(
BigDecimal
.
class
))).
thenReturn
(
Arrays
.
asList
(
gdRoute
));
OrderChildLoadRangeCheckResultVO
result
=
orderChildService
.
loadRangeCheck
(
param
);
assertEquals
(
PerformanceResultEnum
.
TRUCK_LOCATION_OUT_OF_SEND_RANGE
.
getCode
(),
result
.
getCode
().
intValue
());
assertEquals
(
String
.
format
(
PerformanceResultEnum
.
TRUCK_LOCATION_OUT_OF_SEND_RANGE
.
getMsg
(),
config
.
getAllowUploadDistance
()),
result
.
getMsg
());
}
}
performance-web/src/test/java/com/clx/performance/sqlProvider/OrderChildSqlProviderTest.java
0 → 100644
浏览文件 @
ad4fd014
package
com
.
clx
.
performance
.
sqlProvider
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.param.pc.ArtificialCancelOrderQueryParam
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.JUnit4
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@RunWith
(
JUnit4
.
class
)
public
class
OrderChildSqlProviderTest
{
@Test
public
void
testFindArtificialCancelOrderWithParams
()
{
ArtificialCancelOrderQueryParam
param
=
new
ArtificialCancelOrderQueryParam
();
param
.
setOrderChildNo
(
"testChildNo"
);
param
.
setTruckNo
(
"testTruckNo"
);
OrderChildSqlProvider
orderChildSqlProvider
=
new
OrderChildSqlProvider
();
String
sql
=
orderChildSqlProvider
.
findArtificialCancelOrder
(
param
);
String
expectedSql
=
"SELECT child_no, goods_name, freight_price, order_no, "
+
"send_address, receive_address, "
+
"driver_user_no, driver_name, driver_mobile, "
+
"truck_no, unload_pound_no, weight, "
+
"cancel_remark, pound_status, status, "
+
"DATE_FORMAT(load_deadline, '%Y-%m-%d %H:%i:%s') AS loadDeadline, "
+
"DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') AS createTime, "
+
"DATE_FORMAT(unload_time, '%Y-%m-%d %H:%i:%s') AS unloadTime "
+
"FROM order_child "
+
"WHERE 1=1 "
+
"AND child_no = #{param.orderChildNo} "
+
"AND truck_no = #{param.truckNo} "
+
"AND status IN (10, 30, 40, 50, 60, 70, 80)"
;
Assert
.
assertEquals
(
"SQL statement does not match expected output"
,
expectedSql
,
sql
);
}
@Test
public
void
testFindArtificialCancelOrderWithoutParams
()
{
ArtificialCancelOrderQueryParam
param
=
new
ArtificialCancelOrderQueryParam
();
OrderChildSqlProvider
orderChildSqlProvider
=
new
OrderChildSqlProvider
();
String
sql
=
orderChildSqlProvider
.
findArtificialCancelOrder
(
param
);
List
<
Integer
>
statusList
=
Arrays
.
asList
(
OrderChildEnum
.
Status
.
CREATED
.
getCode
(),
OrderChildEnum
.
Status
.
GO_TO_SEND
.
getCode
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
(),
OrderChildEnum
.
Status
.
LOAD
.
getCode
(),
OrderChildEnum
.
Status
.
GO_TO_RECEIVE
.
getCode
(),
OrderChildEnum
.
Status
.
ARRIVE_RECEIVE
.
getCode
(),
OrderChildEnum
.
Status
.
UNLOAD
.
getCode
()
);
String
expectedSql
=
"SELECT child_no, goods_name, freight_price, order_no, "
+
"send_address, receive_address, "
+
"driver_user_no, driver_name, driver_mobile, "
+
"truck_no, unload_pound_no, weight, "
+
"cancel_remark, pound_status, status, "
+
"DATE_FORMAT(load_deadline, '%Y-%m-%d %H:%i:%s') AS loadDeadline, "
+
"DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') AS createTime, "
+
"DATE_FORMAT(unload_time, '%Y-%m-%d %H:%i:%s') AS unloadTime "
+
"FROM order_child "
+
"WHERE 1=1 "
+
"AND status IN ("
+
String
.
join
(
", "
,
statusList
.
stream
().
map
(
String:
:
valueOf
).
collect
(
Collectors
.
toList
()))
+
")"
;
Assert
.
assertEquals
(
"SQL statement does not match expected output for empty parameters"
,
expectedSql
,
sql
);
}
}
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论