Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
81736e74
提交
81736e74
authored
8月 09, 2024
作者:
jiangwujie
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feature(电子围栏): 短信通知逻辑实现
上级
f4c03ff7
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
101 行增加
和
9 行删除
+101
-9
ClxMessageConfig.java
...ain/java/com/clx/performance/config/ClxMessageConfig.java
+8
-0
OrderChildServiceImpl.java
...m/clx/performance/service/impl/OrderChildServiceImpl.java
+93
-9
没有找到文件。
performance-web/src/main/java/com/clx/performance/config/ClxMessageConfig.java
浏览文件 @
81736e74
...
...
@@ -35,5 +35,13 @@ public class ClxMessageConfig {
private
Integer
vehicleWarnChannelId
;
//线路报警短信模板
private
String
lineWarnTemplateCode
;
/**
* 上传装货信息短信模板
*/
private
String
uploadLoadInfo
;
/**
* 提示监装信息短信模板
*/
private
String
noticeSupervision
;
}
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
浏览文件 @
81736e74
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,7 @@ 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.TencentCloudApiOcrConfig
;
import
com.clx.performance.constant.RedisConstants
;
import
com.clx.performance.constant.RedissonConstants
;
...
...
@@ -247,6 +251,10 @@ public class OrderChildServiceImpl implements OrderChildService {
private
OrderChildOperateLimitConfigService
orderChildOperateLimitConfigService
;
@Autowired
private
DriverNoticeConfigService
driverNoticeConfigService
;
@Autowired
private
ClxMessageOpenapiFeign
clxMessageOpenapiFeign
;
@Autowired
private
ClxMessageConfig
messageConfig
;
@PostConstruct
public
void
init
(){
...
...
@@ -3155,8 +3163,8 @@ public class OrderChildServiceImpl implements OrderChildService {
//查询平台车辆的定位信息
Map
<
String
,
TruckTraceDTO
>
truckTraceMap
=
redisTemplate
.
opsForHash
().
entries
(
RedisConstants
.
ZJXL_TRUCK_TRACE_LIST
);
//查询平台
到达货源地
的订单
List
<
Integer
>
list
=
Collections
.
singletonList
(
OrderChildEnum
.
Status
.
ARRIVE_SEN
D
.
getCode
());
//查询平台
(到达货源地、已装货)
的订单
List
<
Integer
>
list
=
Arrays
.
asList
(
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
(),
OrderChildEnum
.
Status
.
LOA
D
.
getCode
());
LocalDateTime
endTime
=
LocalDateTime
.
now
();
LocalDateTime
startTime
=
endTime
.
minusMonths
(
1
);
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
listOrderChild
(
list
,
startTime
,
endTime
);
...
...
@@ -3192,21 +3200,97 @@ public class OrderChildServiceImpl implements OrderChildService {
}
//距离
Integer
distance
=
route
.
getDistance
();
//超出货源地x公里范围了,且通知状态为未通知
if
(
distance
>=
driverNoticeConfigVO
.
getNoticeTriggerDistanceMeter
())
{
if
(
Objects
.
equals
(
child
.
getEnterExitSendStatus
(),
OrderChildEnum
.
EnterExitSendStatus
.
DRIVE_OUT
.
getCode
())
&&
Objects
.
equals
(
child
.
getExitNoticeStatus
(),
OrderChildEnum
.
ExitNoticeStatus
.
NOT_NOTIFIED
.
getCode
())
// 超出货源地+通知触发距离
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
()))
{
sendLoadSms
(
child
.
getDriverMobile
(),
child
.
getTruckNo
(),
child
.
getChildNo
());
}
// todo 监装位置
String
supervisionAddress
=
""
;
// 已装货
if
(
Objects
.
equals
(
child
.
getStatus
(),
OrderChildEnum
.
Status
.
LOAD
.
getCode
()))
{
sendSupervisionSms
(
child
.
getDriverMobile
(),
child
.
getTruckNo
(),
child
.
getChildNo
(),
supervisionAddress
);
}
// 修改 通知状态 为已通知
child
.
setExitNoticeStatus
(
OrderChildEnum
.
ExitNoticeStatus
.
NOTIFIED
.
getCode
());
child
.
setEnterExitSendStatus
(
OrderChildEnum
.
EnterExitSendStatus
.
DRIVE_OUT
.
getCode
());
}
// orderChild.getExitNoticeStatus(OrderChildEnum.ExitNoticeStatus.NOT_NOTICE.getCode());
}
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
());
}
}
}
}
}
/**
* 发送上传装货信息短信
* ①判断运单是否装车完成,如未完成,发送短信给运单关联司机,
* 【当前车牌号${truckNo},运单${childNo}未上传装车信息,请上传后再驶离货源地,如需帮助请联系客服。】
* truckNo:当前运单关联车牌号
* childNo:运单单号
*
* @param mobile 手机号
* @param truckNo 当前运单关联车牌号
* @param childNo 运单单号
*/
private
void
sendLoadSms
(
String
mobile
,
String
truckNo
,
String
childNo
)
{
AliSmsMessageReq
req
=
new
AliSmsMessageReq
();
// 模板CODE
//SMS_470795021
req
.
setTemplateCode
(
messageConfig
.
getUploadLoadInfo
());
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
.
getNoticeSupervision
());
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
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论