Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
6004a946
提交
6004a946
authored
5月 08, 2024
作者:
艾庆国
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
运单预警
上级
34a2f185
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
241 行增加
和
0 行删除
+241
-0
VehicleWarnTruckWarnNoticeListener.java
...tener/vehiclewarn/VehicleWarnTruckWarnNoticeListener.java
+43
-0
VehicleWarnLoadAndUnloadWarnServiceImpl.java
.../vehiclewarn/VehicleWarnLoadAndUnloadWarnServiceImpl.java
+187
-0
VehicleWarnReceiveAddressWarnServiceImpl.java
...vehiclewarn/VehicleWarnReceiveAddressWarnServiceImpl.java
+0
-0
VehicleWarnReceiveAddressWarnService.java
...ice/vehiclewarn/VehicleWarnReceiveAddressWarnService.java
+11
-0
没有找到文件。
performance-web/src/main/java/com/clx/performance/listener/vehiclewarn/VehicleWarnTruckWarnNoticeListener.java
0 → 100644
浏览文件 @
6004a946
package
com
.
clx
.
performance
.
listener
.
vehiclewarn
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeyVehicleWarnConstants
;
import
com.clx.performance.param.mq.vehiclewarn.VehicleWarnTruckWarnNoticeMqParam
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnMqHandlerService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @Author: 艾庆国
* @Description: 运单预警通知 mq
* @Date: 2023-10-20 16:34:40
* @Version: 1.0
*/
@Slf4j
@Component
public
class
VehicleWarnTruckWarnNoticeListener
{
@Autowired
private
VehicleWarnMqHandlerService
vehicleWarnMqHandlerService
;
@RabbitListener
(
queues
=
RabbitKeyVehicleWarnConstants
.
TRUCK_WARN_NOTICE_QUEUE
)
public
void
process
(
Message
message
)
{
try
{
log
.
info
(
"车辆预警-运单预警通知, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
VehicleWarnTruckWarnNoticeMqParam
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"车辆预警-运单预警通知 失败"
,
e
);
}
}
private
void
process
(
VehicleWarnTruckWarnNoticeMqParam
mq
){
vehicleWarnMqHandlerService
.
truckWarnNotice
(
mq
);
}
}
performance-web/src/main/java/com/clx/performance/service/impl/vehiclewarn/VehicleWarnLoadAndUnloadWarnServiceImpl.java
浏览文件 @
6004a946
package
com
.
clx
.
performance
.
service
.
impl
.
vehiclewarn
;
import
com.clx.performance.dao.impl.vehiclewarn.VehicleWarnRangeDaoImpl
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnConfigDao
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnInfoDao
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnConfigEnum
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnInfoEnum
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnRangEnum
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnChild
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnConfig
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnInfo
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnRang
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnLoadAndUnloadWarnService
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnMqService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
@Slf4j
@Service
public
class
VehicleWarnLoadAndUnloadWarnServiceImpl
implements
VehicleWarnLoadAndUnloadWarnService
{
private
static
final
Integer
MIN_FER_HOUR
=
60
;
@Autowired
private
VehicleWarnConfigDao
vehicleWarnConfigDao
;
@Autowired
private
VehicleWarnInfoDao
vehicleWarnInfoDao
;
@Autowired
private
VehicleWarnRangeDaoImpl
vehicleWarnRangeDao
;
@Autowired
private
VehicleWarnMqService
vehicleWarnMqService
;
/**
* 装车超时
*/
...
...
@@ -18,9 +46,74 @@ public class VehicleWarnLoadAndUnloadWarnServiceImpl implements VehicleWarnLoadA
@Override
public
void
loadTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
){
List
<
VehicleWarnConfig
>
vehicleWarnConfigList
=
vehicleWarnConfigDao
.
listByWarnType
(
VehicleWarnConfigEnum
.
WarnType
.
LOAD_TIMEOUT
.
getCode
());
if
(
vehicleWarnConfigList
.
isEmpty
())
{
return
;}
for
(
VehicleWarnConfig
item
:
vehicleWarnConfigList
)
{
doLoadTimeout
(
orderChild
,
vehicleWarnChild
,
item
);
}
}
private
void
doLoadTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnConfig
vehicleWarnConfig
){
VehicleWarnInfo
vehicleWarnInfo
=
vehicleWarnInfoDao
.
findEnableByChildNoAndWarnConfigType
(
vehicleWarnChild
.
getChildNo
(),
vehicleWarnConfig
.
getId
()).
orNull
();
// 暂停检测
boolean
suspend
=
suspendCheck
(
vehicleWarnChild
,
vehicleWarnConfig
.
getId
());
// 已暂停
if
(
vehicleWarnInfo
!=
null
&&
Objects
.
equals
(
vehicleWarnInfo
.
getStatus
(),
VehicleWarnInfoEnum
.
Status
.
SUSPEND
.
getCode
())){
if
(
suspend
)
{
return
;}
// 暂停恢复
vehicleWarnInfo
.
setStatus
(
VehicleWarnInfoEnum
.
Status
.
INIT
.
getCode
());
vehicleWarnInfoDao
.
updateStatus
(
vehicleWarnInfo
);
}
// 超时判断
int
time
=
vehicleWarnConfig
.
getTimeoutRatio
().
multiply
(
new
BigDecimal
(
MIN_FER_HOUR
)).
intValue
();
if
(
orderChild
.
getArriveSendTime
().
plusMinutes
(
time
).
isAfter
(
LocalDateTime
.
now
())){
return
;}
// 更新
if
(
vehicleWarnInfo
!=
null
&&
Objects
.
equals
(
vehicleWarnInfo
.
getStatus
(),
VehicleWarnInfoEnum
.
Status
.
INIT
.
getCode
())){
// 计算下次生效时间
LocalDateTime
nextTime
=
vehicleWarnInfo
.
getWarnTime
().
plusMinutes
(
vehicleWarnConfig
.
getInterval
().
multiply
(
new
BigDecimal
(
MIN_FER_HOUR
)).
intValue
());
if
(
nextTime
.
isAfter
(
LocalDateTime
.
now
()))
{
return
;}
vehicleWarnInfo
.
setWarnTime
(
LocalDateTime
.
now
());
vehicleWarnInfoDao
.
updateWarn
(
vehicleWarnInfo
);
return
;
}
// 新增
vehicleWarnInfo
=
new
VehicleWarnInfo
();
vehicleWarnInfo
.
setWarnConfigId
(
vehicleWarnConfig
.
getId
());
vehicleWarnInfo
.
setWarnType
(
vehicleWarnConfig
.
getWarnType
());
vehicleWarnInfo
.
setWarnName
(
vehicleWarnConfig
.
getWarnName
());
vehicleWarnInfo
.
setWarnName
(
vehicleWarnConfig
.
getWarnName
());
vehicleWarnInfo
.
setWarnLevel
(
vehicleWarnConfig
.
getWarnLevel
());
vehicleWarnInfo
.
setChildNo
(
orderChild
.
getChildNo
());
vehicleWarnInfo
.
setSendAddressId
(
orderChild
.
getSendAddressId
());
vehicleWarnInfo
.
setSendAddress
(
orderChild
.
getSendAddress
());
vehicleWarnInfo
.
setReceiveAddressId
(
orderChild
.
getReceiveAddressId
());
vehicleWarnInfo
.
setReceiveAddress
(
orderChild
.
getReceiveAddress
());
vehicleWarnInfo
.
setTruckId
(
orderChild
.
getTruckId
());
vehicleWarnInfo
.
setTruckNo
(
orderChild
.
getTruckNo
());
vehicleWarnInfo
.
setDriverUserNo
(
orderChild
.
getDriverUserNo
());
vehicleWarnInfo
.
setDriverName
(
orderChild
.
getDriverName
());
vehicleWarnInfo
.
setDriverMobile
(
orderChild
.
getDriverMobile
());
vehicleWarnInfo
.
setTakeTime
(
orderChild
.
getPayTime
());
vehicleWarnInfo
.
setWarnTime
(
LocalDateTime
.
now
());
vehicleWarnInfoDao
.
saveEntity
(
vehicleWarnInfo
);
// 发送mq (预警通知)
vehicleWarnMqService
.
truckWarnNotice
(
vehicleWarnInfo
.
getId
());
}
/**
* 到达货源地超时
*/
...
...
@@ -28,6 +121,100 @@ public class VehicleWarnLoadAndUnloadWarnServiceImpl implements VehicleWarnLoadA
@Override
public
void
unloadTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
){
List
<
VehicleWarnConfig
>
vehicleWarnConfigList
=
vehicleWarnConfigDao
.
listByWarnType
(
VehicleWarnConfigEnum
.
WarnType
.
UNLOAD_TIMEOUT
.
getCode
());
if
(
vehicleWarnConfigList
.
isEmpty
())
{
return
;}
for
(
VehicleWarnConfig
item
:
vehicleWarnConfigList
)
{
doUnloadTimeout
(
orderChild
,
vehicleWarnChild
,
item
);
}
}
private
void
doUnloadTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnConfig
vehicleWarnConfig
){
VehicleWarnInfo
vehicleWarnInfo
=
vehicleWarnInfoDao
.
findEnableByChildNoAndWarnConfigType
(
vehicleWarnChild
.
getChildNo
(),
vehicleWarnConfig
.
getId
()).
orNull
();
// 暂停检测
boolean
suspend
=
suspendCheck
(
vehicleWarnChild
,
vehicleWarnConfig
.
getId
());
// 已暂停
if
(
vehicleWarnInfo
!=
null
&&
Objects
.
equals
(
vehicleWarnInfo
.
getStatus
(),
VehicleWarnInfoEnum
.
Status
.
SUSPEND
.
getCode
())){
if
(
suspend
)
{
return
;}
// 暂停恢复
vehicleWarnInfo
.
setStatus
(
VehicleWarnInfoEnum
.
Status
.
INIT
.
getCode
());
vehicleWarnInfoDao
.
updateStatus
(
vehicleWarnInfo
);
}
// 超时判断
int
time
=
vehicleWarnConfig
.
getTimeoutRatio
().
multiply
(
new
BigDecimal
(
MIN_FER_HOUR
)).
intValue
();
if
(
orderChild
.
getArriveReceiveTime
().
plusMinutes
(
time
).
isAfter
(
LocalDateTime
.
now
())){
return
;}
// 更新
if
(
vehicleWarnInfo
!=
null
&&
Objects
.
equals
(
vehicleWarnInfo
.
getStatus
(),
VehicleWarnInfoEnum
.
Status
.
INIT
.
getCode
())){
// 计算下次生效时间
LocalDateTime
nextTime
=
vehicleWarnInfo
.
getWarnTime
().
plusMinutes
(
vehicleWarnConfig
.
getInterval
().
multiply
(
new
BigDecimal
(
MIN_FER_HOUR
)).
intValue
());
if
(
nextTime
.
isAfter
(
LocalDateTime
.
now
()))
{
return
;}
vehicleWarnInfo
.
setWarnTime
(
LocalDateTime
.
now
());
vehicleWarnInfoDao
.
updateWarn
(
vehicleWarnInfo
);
return
;
}
// 新增
vehicleWarnInfo
=
new
VehicleWarnInfo
();
vehicleWarnInfo
.
setWarnConfigId
(
vehicleWarnConfig
.
getId
());
vehicleWarnInfo
.
setWarnType
(
vehicleWarnConfig
.
getWarnType
());
vehicleWarnInfo
.
setWarnName
(
vehicleWarnConfig
.
getWarnName
());
vehicleWarnInfo
.
setWarnLevel
(
vehicleWarnConfig
.
getWarnLevel
());
vehicleWarnInfo
.
setChildNo
(
orderChild
.
getChildNo
());
vehicleWarnInfo
.
setSendAddressId
(
orderChild
.
getSendAddressId
());
vehicleWarnInfo
.
setSendAddress
(
orderChild
.
getSendAddress
());
vehicleWarnInfo
.
setReceiveAddressId
(
orderChild
.
getReceiveAddressId
());
vehicleWarnInfo
.
setReceiveAddress
(
orderChild
.
getReceiveAddress
());
vehicleWarnInfo
.
setTruckId
(
orderChild
.
getTruckId
());
vehicleWarnInfo
.
setTruckNo
(
orderChild
.
getTruckNo
());
vehicleWarnInfo
.
setDriverUserNo
(
orderChild
.
getDriverUserNo
());
vehicleWarnInfo
.
setDriverName
(
orderChild
.
getDriverName
());
vehicleWarnInfo
.
setDriverMobile
(
orderChild
.
getDriverMobile
());
vehicleWarnInfo
.
setTakeTime
(
orderChild
.
getPayTime
());
vehicleWarnInfo
.
setWarnTime
(
LocalDateTime
.
now
());
vehicleWarnInfoDao
.
saveEntity
(
vehicleWarnInfo
);
// 发送mq (预警通知)
vehicleWarnMqService
.
truckWarnNotice
(
vehicleWarnInfo
.
getId
());
}
/**
* 暂停检测
*/
private
boolean
suspendCheck
(
VehicleWarnChild
vehicleWarnChild
,
Integer
warnConfigId
){
// 报警暂停
List
<
VehicleWarnRang
>
vehicleWarnRangList
=
vehicleWarnRangeDao
.
ListByWarnConfigId
(
warnConfigId
);
if
(!
vehicleWarnRangList
.
isEmpty
()){
for
(
VehicleWarnRang
item
:
vehicleWarnRangList
)
{
if
(
Objects
.
equals
(
item
.
getWarnRang
(),
VehicleWarnRangEnum
.
WarnRange
.
ALL
.
getCode
())){
return
true
;
}
if
(
Objects
.
equals
(
item
.
getWarnRang
(),
VehicleWarnRangEnum
.
WarnRange
.
ORDER
.
getCode
())){
if
(
Objects
.
equals
(
vehicleWarnChild
.
getOrderNo
(),
item
.
getOrderNo
()))
{
return
true
;
}
}
if
(
Objects
.
equals
(
item
.
getWarnRang
(),
VehicleWarnRangEnum
.
WarnRange
.
CHILD
.
getCode
())){
if
(
Objects
.
equals
(
vehicleWarnChild
.
getChildNo
(),
item
.
getChildNo
()))
{
return
true
;
}
}
}
}
return
false
;
}
}
performance-web/src/main/java/com/clx/performance/service/impl/vehiclewarn/VehicleWarnReceiveAddressWarnServiceImpl.java
0 → 100644
浏览文件 @
6004a946
差异被折叠。
点击展开。
performance-web/src/main/java/com/clx/performance/service/vehiclewarn/VehicleWarnReceiveAddressWarnService.java
0 → 100644
浏览文件 @
6004a946
package
com
.
clx
.
performance
.
service
.
vehiclewarn
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnChild
;
public
interface
VehicleWarnReceiveAddressWarnService
{
void
gotoReceiveAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
);
void
arriveReceiveAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
);
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论