Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
2ff61b0b
提交
2ff61b0b
authored
5月 11, 2024
作者:
艾庆国
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'v14.4_vehicle_warn_20240425' into dev
上级
9bda48ed
3a3c197f
全部展开
显示空白字符变更
内嵌
并排
正在显示
62 个修改的文件
包含
2076 行增加
和
45 行删除
+2076
-45
VehicleWarnChildEnum.java
...x/performance/enums/vehiclewarn/VehicleWarnChildEnum.java
+48
-0
VehicleWarnConfigEnum.java
.../performance/enums/vehiclewarn/VehicleWarnConfigEnum.java
+3
-3
VehicleWarnRangEnum.java
...lx/performance/enums/vehiclewarn/VehicleWarnRangEnum.java
+50
-0
TruckTraceSyncMqParam.java
...clx/performance/param/mq/trace/TruckTraceSyncMqParam.java
+1
-0
VehicleWarnChildAddMqParam.java
...ance/param/mq/vehiclewarn/VehicleWarnChildAddMqParam.java
+22
-0
VehicleWarnTruckWarnMqParam.java
...nce/param/mq/vehiclewarn/VehicleWarnTruckWarnMqParam.java
+22
-0
VehicleWarnTruckWarnNoticeMqParam.java
...ram/mq/vehiclewarn/VehicleWarnTruckWarnNoticeMqParam.java
+22
-0
PageVehicleWarnInfoParam.java
...rmance/param/pc/vehiclewarn/PageVehicleWarnInfoParam.java
+5
-0
DriverTraceVO.java
...n/java/com/clx/performance/vo/pc/trace/DriverTraceVO.java
+2
-0
VehicleWarnInfoVO.java
.../clx/performance/vo/pc/vehiclewarn/VehicleWarnInfoVO.java
+21
-4
ClxMessageConfig.java
...ain/java/com/clx/performance/config/ClxMessageConfig.java
+4
-0
RabbitVehicleWarnConfig.java
...a/com/clx/performance/config/RabbitVehicleWarnConfig.java
+64
-0
RabbitKeyVehicleWarnConstants.java
...x/performance/constant/RabbitKeyVehicleWarnConstants.java
+54
-0
TempVehicleWarnController.java
...erformance/controller/temp/TempVehicleWarnController.java
+46
-0
VehicleWarnChildDaoImpl.java
...ormance/dao/impl/vehiclewarn/VehicleWarnChildDaoImpl.java
+51
-0
VehicleWarnConfigDaoImpl.java
...rmance/dao/impl/vehiclewarn/VehicleWarnConfigDaoImpl.java
+7
-0
VehicleWarnInfoDaoImpl.java
...formance/dao/impl/vehiclewarn/VehicleWarnInfoDaoImpl.java
+68
-0
VehicleWarnRangeDaoImpl.java
...ormance/dao/impl/vehiclewarn/VehicleWarnRangeDaoImpl.java
+26
-0
VehicleWarnUserDaoImpl.java
...formance/dao/impl/vehiclewarn/VehicleWarnUserDaoImpl.java
+9
-0
VehicleWarnChildDao.java
.../clx/performance/dao/vehiclewarn/VehicleWarnChildDao.java
+18
-0
VehicleWarnConfigDao.java
...clx/performance/dao/vehiclewarn/VehicleWarnConfigDao.java
+3
-0
VehicleWarnInfoDao.java
...m/clx/performance/dao/vehiclewarn/VehicleWarnInfoDao.java
+10
-0
VehicleWarnRangeDao.java
.../clx/performance/dao/vehiclewarn/VehicleWarnRangeDao.java
+12
-0
VehicleWarnUserDao.java
...m/clx/performance/dao/vehiclewarn/VehicleWarnUserDao.java
+4
-0
VehicleWarnCommonInfoDTO.java
...performance/dto/vehiclewarn/VehicleWarnCommonInfoDTO.java
+32
-0
DriverTraceESPlus.java
...a/com/clx/performance/esplus/model/DriverTraceESPlus.java
+3
-0
TruckTraceJob.java
.../src/main/java/com/clx/performance/job/TruckTraceJob.java
+0
-24
VehicleTraceJob.java
...n/java/com/clx/performance/job/trace/VehicleTraceJob.java
+52
-0
VehicleWarnJob.java
...a/com/clx/performance/job/vehiclewarn/VehicleWarnJob.java
+76
-0
VehicleWarnChildAddListener.java
...nce/listener/vehiclewarn/VehicleWarnChildAddListener.java
+43
-0
VehicleWarnDelayListener.java
...rmance/listener/vehiclewarn/VehicleWarnDelayListener.java
+43
-0
VehicleWarnTruckWarnListener.java
...ce/listener/vehiclewarn/VehicleWarnTruckWarnListener.java
+43
-0
VehicleWarnTruckWarnNoticeListener.java
...tener/vehiclewarn/VehicleWarnTruckWarnNoticeListener.java
+43
-0
VehicleWarnChildMapper.java
...erformance/mapper/vehiclewarn/VehicleWarnChildMapper.java
+12
-0
VehicleWarnRangMapper.java
...performance/mapper/vehiclewarn/VehicleWarnRangMapper.java
+12
-0
VehicleWarnChild.java
...m/clx/performance/model/vehiclewarn/VehicleWarnChild.java
+55
-0
VehicleWarnInfo.java
...om/clx/performance/model/vehiclewarn/VehicleWarnInfo.java
+2
-0
VehicleWarnRang.java
...om/clx/performance/model/vehiclewarn/VehicleWarnRang.java
+46
-0
OrderChildPostService.java
.../clx/performance/service/child/OrderChildPostService.java
+1
-0
OrderChildServiceImpl.java
...m/clx/performance/service/impl/OrderChildServiceImpl.java
+2
-2
OrderChildPostServiceImpl.java
...ormance/service/impl/child/OrderChildPostServiceImpl.java
+13
-0
TruckTraceMqHandlerServiceImpl.java
...ce/service/impl/trace/TruckTraceMqHandlerServiceImpl.java
+22
-1
TruckTraceMqServiceImpl.java
...rformance/service/impl/trace/TruckTraceMqServiceImpl.java
+2
-1
TruckTraceServiceImpl.java
...performance/service/impl/trace/TruckTraceServiceImpl.java
+113
-4
VehicleWarnCommonServiceImpl.java
...ervice/impl/vehiclewarn/VehicleWarnCommonServiceImpl.java
+183
-0
VehicleWarnInfoServiceImpl.java
.../service/impl/vehiclewarn/VehicleWarnInfoServiceImpl.java
+17
-4
VehicleWarnLoadAndUnloadWarnServiceImpl.java
.../vehiclewarn/VehicleWarnLoadAndUnloadWarnServiceImpl.java
+104
-0
VehicleWarnMqHandlerServiceImpl.java
...ice/impl/vehiclewarn/VehicleWarnMqHandlerServiceImpl.java
+0
-0
VehicleWarnMqServiceImpl.java
...ce/service/impl/vehiclewarn/VehicleWarnMqServiceImpl.java
+58
-0
VehicleWarnParkWarnServiceImpl.java
...vice/impl/vehiclewarn/VehicleWarnParkWarnServiceImpl.java
+145
-0
VehicleWarnReceiveAddressWarnServiceImpl.java
...vehiclewarn/VehicleWarnReceiveAddressWarnServiceImpl.java
+153
-0
VehicleWarnSendAddressWarnServiceImpl.java
...pl/vehiclewarn/VehicleWarnSendAddressWarnServiceImpl.java
+116
-0
TruckTraceMqService.java
...om/clx/performance/service/trace/TruckTraceMqService.java
+1
-1
TruckTraceService.java
.../com/clx/performance/service/trace/TruckTraceService.java
+5
-0
VehicleWarnCommonService.java
...ormance/service/vehiclewarn/VehicleWarnCommonService.java
+27
-0
VehicleWarnLoadAndUnloadWarnService.java
...vice/vehiclewarn/VehicleWarnLoadAndUnloadWarnService.java
+11
-0
VehicleWarnMqHandlerService.java
...ance/service/vehiclewarn/VehicleWarnMqHandlerService.java
+19
-0
VehicleWarnMqService.java
...performance/service/vehiclewarn/VehicleWarnMqService.java
+10
-0
VehicleWarnParkWarnService.java
...mance/service/vehiclewarn/VehicleWarnParkWarnService.java
+12
-0
VehicleWarnReceiveAddressWarnService.java
...ice/vehiclewarn/VehicleWarnReceiveAddressWarnService.java
+12
-0
VehicleWarnSendAddressWarnService.java
...ervice/vehiclewarn/VehicleWarnSendAddressWarnService.java
+13
-0
VehicleWarnInfoSqlProvider.java
...e/sqlProvider/vehiclewarn/VehicleWarnInfoSqlProvider.java
+3
-1
没有找到文件。
performance-api/src/main/java/com/clx/performance/enums/vehiclewarn/VehicleWarnChildEnum.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
enums
.
vehiclewarn
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.Optional
;
public
enum
VehicleWarnChildEnum
{
;
@Getter
@AllArgsConstructor
public
enum
TraceStatus
{
DISABLE
(
0
,
"禁止"
),
ENABLE
(
1
,
"启用"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
TraceStatus
>
getByCode
(
int
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
==
code
).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
TraceStatus:
:
getMsg
).
orElse
(
null
);
}
}
@Getter
@AllArgsConstructor
public
enum
WarnStatus
{
DISABLE
(
0
,
"禁止"
),
ENABLE
(
1
,
"启用"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
WarnStatus
>
getByCode
(
int
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
==
code
).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
WarnStatus:
:
getMsg
).
orElse
(
null
);
}
}
}
performance-api/src/main/java/com/clx/performance/enums/vehiclewarn/VehicleWarnConfigEnum.java
浏览文件 @
2ff61b0b
...
...
@@ -12,13 +12,13 @@ public enum VehicleWarnConfigEnum {
@Getter
@AllArgsConstructor
public
enum
WarnType
{
GOTO
_SEND_DELAY
(
1
,
"运单-到达货源地延误"
),
ARRIVE
_SEND_DELAY
(
1
,
"运单-到达货源地延误"
),
GOTO_SEND_TIMEOUT
(
2
,
"运单-前往货源地超时"
),
GOTO
_RECEIVE_DELAY
(
3
,
"运单-到达目的地延误"
),
ARRIVE
_RECEIVE_DELAY
(
3
,
"运单-到达目的地延误"
),
GOTO_RECEIVE_TIMEOUT
(
4
,
"运单-前往目的地超时"
),
PARK_TIMEOUT
(
5
,
"运单-停留超时"
),
YES
(
6
,
"运单-敏感区停留"
),
SENSITIVE_AREA_PARK_TIMEOUT
(
6
,
"运单-敏感区停留"
),
LOAD_TIMEOUT
(
7
,
"运单-装车超时"
),
UNLOAD_TIMEOUT
(
8
,
"运单-卸车超时"
),
DELAY
(
9
,
"运单-运单延误"
),
...
...
performance-api/src/main/java/com/clx/performance/enums/vehiclewarn/VehicleWarnRangEnum.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
enums
.
vehiclewarn
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
import
java.util.Optional
;
public
enum
VehicleWarnRangEnum
{
;
@Getter
@AllArgsConstructor
public
enum
WarnRange
{
CHILD
(
1
,
"运单"
),
ORDER_GOODS
(
2
,
"货单"
),
ALL
(
3
,
"全部"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
WarnRange
>
getByCode
(
int
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
==
code
).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
WarnRange:
:
getMsg
).
orElse
(
null
);
}
}
@Getter
@AllArgsConstructor
public
enum
Status
{
ENABLE
(
1
,
"有效"
),
DISABLE
(
2
,
"无效"
),
;
private
final
Integer
code
;
private
final
String
msg
;
public
static
Optional
<
Status
>
getByCode
(
int
code
)
{
return
Arrays
.
stream
(
values
()).
filter
(
e
->
e
.
code
==
code
).
findFirst
();
}
public
static
String
getMsgByCode
(
int
code
)
{
return
getByCode
(
code
).
map
(
Status:
:
getMsg
).
orElse
(
null
);
}
}
}
performance-api/src/main/java/com/clx/performance/param/mq/trace/TruckTraceSyncMqParam.java
浏览文件 @
2ff61b0b
...
...
@@ -16,6 +16,7 @@ import lombok.ToString;
@ToString
@NoArgsConstructor
public
class
TruckTraceSyncMqParam
{
private
String
childNo
;
//运单编号
private
String
truckNo
;
//车牌号
private
String
beginTime
;
//开始时间
private
String
endTime
;
//结束时间
...
...
performance-api/src/main/java/com/clx/performance/param/mq/vehiclewarn/VehicleWarnChildAddMqParam.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
param
.
mq
.
vehiclewarn
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
/**
* @Author: aiqingguo
* @Description: 新增
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
VehicleWarnChildAddMqParam
{
private
String
childNo
;
//运单编号
}
performance-api/src/main/java/com/clx/performance/param/mq/vehiclewarn/VehicleWarnTruckWarnMqParam.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
param
.
mq
.
vehiclewarn
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
/**
* @Author: aiqingguo
* @Description: 新增
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
VehicleWarnTruckWarnMqParam
{
private
String
childNo
;
//运单编号
}
performance-api/src/main/java/com/clx/performance/param/mq/vehiclewarn/VehicleWarnTruckWarnNoticeMqParam.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
param
.
mq
.
vehiclewarn
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
/**
* @Author: aiqingguo
* @Description: 通知
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public
class
VehicleWarnTruckWarnNoticeMqParam
{
private
Integer
infoId
;
//id
}
performance-api/src/main/java/com/clx/performance/param/pc/vehiclewarn/PageVehicleWarnInfoParam.java
浏览文件 @
2ff61b0b
...
...
@@ -23,6 +23,11 @@ public class PageVehicleWarnInfoParam extends PageParam {
@ApiModelProperty
(
value
=
"处理状态:1待处理 2已处理 3暂停预警"
,
example
=
"1"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"发货地址"
,
example
=
"北京"
)
private
String
sendAddress
;
@ApiModelProperty
(
value
=
"收货地址"
,
example
=
"山西"
)
private
String
receiveAddress
;
@ApiModelProperty
(
value
=
"开始时间"
,
example
=
""
)
private
String
beginTime
;
@ApiModelProperty
(
value
=
"结束时间"
,
example
=
""
)
...
...
performance-api/src/main/java/com/clx/performance/vo/pc/trace/DriverTraceVO.java
浏览文件 @
2ff61b0b
...
...
@@ -18,6 +18,8 @@ public class DriverTraceVO {
private
BigDecimal
latitude
;
@ApiModelProperty
(
value
=
"GPS 时间"
)
private
String
gpsTime
;
@ApiModelProperty
(
value
=
"速度"
)
private
BigDecimal
speed
;
@ApiModelProperty
(
value
=
"停留时长(min)"
,
example
=
"12.3"
)
private
BigDecimal
stayTime
=
BigDecimal
.
ZERO
;
@ApiModelProperty
(
value
=
"车辆状态:1空车 2重车"
,
example
=
"1"
)
...
...
performance-api/src/main/java/com/clx/performance/vo/pc/vehiclewarn/VehicleWarnInfoVO.java
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
vo
.
pc
.
vehiclewarn
;
import
cn.hutool.core.date.LocalDateTimeUtil
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnConfigEnum
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnInfoEnum
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
org.apache.commons.lang3.StringUtils
;
import
java.time.LocalDateTime
;
import
java.util.Objects
;
/**
* @Author: aiqinguo
...
...
@@ -77,12 +79,27 @@ public class VehicleWarnInfoVO {
private
String
takeTime
;
@ApiModelProperty
(
value
=
"预警时间"
,
example
=
""
)
private
String
warnTime
;
@ApiModelProperty
(
value
=
"预警暂停时间"
,
example
=
""
)
private
String
suspendTime
;
@ApiModelProperty
(
value
=
"处理状态:1待处理 2已处理 3暂停预警"
,
example
=
"1"
)
private
Integer
status
;
public
Integer
getStatus
()
{
if
(
Objects
.
equals
(
status
,
VehicleWarnInfoEnum
.
Status
.
RESOLVE
.
getCode
()))
{
return
VehicleWarnInfoEnum
.
Status
.
RESOLVE
.
getCode
();}
if
(
StringUtils
.
isNotBlank
(
suspendTime
)){
if
(
LocalDateTimeUtil
.
parse
(
suspendTime
).
isBefore
(
LocalDateTime
.
now
()))
{
return
VehicleWarnInfoEnum
.
Status
.
INIT
.
getCode
();
}
else
{
return
VehicleWarnInfoEnum
.
Status
.
SUSPEND
.
getCode
();
}
}
return
VehicleWarnInfoEnum
.
Status
.
INIT
.
getCode
();
}
@ApiModelProperty
(
value
=
"处理状态:1待处理 2已处理 3暂停预警"
,
example
=
"待处理"
)
private
String
statusMsg
;
public
String
getStatusMsg
()
{
return
VehicleWarnInfoEnum
.
Status
.
getMsgByCode
(
status
);
return
VehicleWarnInfoEnum
.
Status
.
getMsgByCode
(
getStatus
()
);
}
@ApiModelProperty
(
value
=
"创建人"
,
example
=
""
)
private
String
createBy
;
...
...
performance-web/src/main/java/com/clx/performance/config/ClxMessageConfig.java
浏览文件 @
2ff61b0b
...
...
@@ -29,4 +29,8 @@ public class ClxMessageConfig {
//转账支付-还款单短信模板
private
String
repaymentTemplateCode
;
//车辆报警短信模板
private
String
vehicleWarnTemplateCode
;
//车辆报警渠道id
private
Integer
vehicleWarnChannelId
;
}
performance-web/src/main/java/com/clx/performance/config/RabbitVehicleWarnConfig.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
config
;
import
com.clx.performance.constant.RabbitKeyVehicleWarnConstants
;
import
org.springframework.amqp.core.Binding
;
import
org.springframework.amqp.core.BindingBuilder
;
import
org.springframework.amqp.core.DirectExchange
;
import
org.springframework.amqp.core.Queue
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @Author: aiqingguo
* @Description: 货款往来明细 MQ
* @Date: 2023-10-12 16:27:30
* @Version: 1.0
*/
@Configuration
public
class
RabbitVehicleWarnConfig
{
@Bean
public
DirectExchange
vehicleWarnDefaultExchange
()
{
return
new
DirectExchange
(
RabbitKeyVehicleWarnConstants
.
DEFAULT_EXCHANGE
);
}
@Bean
public
Queue
vehicleWarnDefaultDelayQueue
()
{
Map
<
String
,
Object
>
params
=
new
HashMap
<>(
8
);
params
.
put
(
"x-message-ttl"
,
15
*
60
*
1000
);
params
.
put
(
"x-max-length"
,
5000000
);
params
.
put
(
"x-dead-letter-exchange"
,
RabbitKeyVehicleWarnConstants
.
DEFAULT_EXCHANGE
);
params
.
put
(
"x-dead-letter-routing-key"
,
RabbitKeyVehicleWarnConstants
.
DEFAULT_DEAD_ROUTING_KEY
);
return
new
Queue
(
RabbitKeyVehicleWarnConstants
.
DEFAULT_DELAY_QUEUE
,
true
,
false
,
false
,
params
);
}
@Bean
public
Binding
vehicleWarnDefaultDelayQueueBinding
()
{
return
BindingBuilder
.
bind
(
vehicleWarnDefaultDelayQueue
()).
to
(
vehicleWarnDefaultExchange
()).
with
(
RabbitKeyVehicleWarnConstants
.
DEFAULT_DELAY_ROUTING_KEY
);
}
@Bean
public
Queue
vehicleWarnDefaultDeadQueue
()
{
return
new
Queue
(
RabbitKeyVehicleWarnConstants
.
DEFAULT_DEAD_QUEUE
);
}
@Bean
public
Binding
vehicleWarnDefaultDeadQueueBinding
()
{
return
BindingBuilder
.
bind
(
vehicleWarnDefaultDeadQueue
()).
to
(
vehicleWarnDefaultExchange
()).
with
(
RabbitKeyVehicleWarnConstants
.
DEFAULT_DEAD_ROUTING_KEY
);
}
/**
* 新增
*/
@Bean
public
Queue
vehicleWarnChildAddQueue
()
{
return
new
Queue
(
RabbitKeyVehicleWarnConstants
.
ORDER_CHILD_ADD_QUEUE
);
}
@Bean
public
Binding
vehicleWarnChildAddQueueBinding
()
{
return
BindingBuilder
.
bind
(
vehicleWarnChildAddQueue
()).
to
(
vehicleWarnDefaultExchange
()).
with
(
RabbitKeyVehicleWarnConstants
.
ORDER_CHILD_ADD_ROUTING_KEY
);
}
}
performance-web/src/main/java/com/clx/performance/constant/RabbitKeyVehicleWarnConstants.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
constant
;
/**
* @Author: aiqingguo
* @Description: 车辆预警-mq
* @Date: 2023-10-19 15:10:10
* @Version: 1.0
*/
public
class
RabbitKeyVehicleWarnConstants
{
private
static
final
String
PREFIX
=
"clx-performance.vehicleWarn."
;
private
static
final
String
EXCHANGE
=
".exchange"
;
private
static
final
String
QUEUE
=
".queue"
;
private
static
final
String
QUEUE_ROUTING_KEY
=
".routing.key"
;
private
static
final
String
DELAY_QUEUE
=
".delay.queue"
;
private
static
final
String
DELAY_ROUTING_KEY
=
".delay.routing.key"
;
private
static
final
String
DEAD_QUEUE
=
".dead.queue"
;
private
static
final
String
DEAD_ROUTING_KEY
=
".dead.routing.key"
;
private
RabbitKeyVehicleWarnConstants
()
{
}
/**
* 缺省交换机
*/
public
static
final
String
DEFAULT_EXCHANGE
=
PREFIX
+
"default"
+
EXCHANGE
;
/**
* 缺省延迟队列
*/
public
static
final
String
DEFAULT_DELAY_QUEUE
=
PREFIX
+
"default"
+
DELAY_QUEUE
;
public
static
final
String
DEFAULT_DELAY_ROUTING_KEY
=
PREFIX
+
"default"
+
DELAY_ROUTING_KEY
;
public
static
final
String
DEFAULT_DEAD_QUEUE
=
PREFIX
+
"default"
+
DEAD_QUEUE
;
public
static
final
String
DEFAULT_DEAD_ROUTING_KEY
=
PREFIX
+
"default"
+
DEAD_ROUTING_KEY
;
/**
* 新增
*/
public
static
final
String
ORDER_CHILD_ADD_QUEUE
=
PREFIX
+
"orderChild.add"
+
QUEUE
;
public
static
final
String
ORDER_CHILD_ADD_ROUTING_KEY
=
PREFIX
+
"orderChild.add"
+
QUEUE_ROUTING_KEY
;
/**
* 车辆预警
*/
public
static
final
String
TRUCK_WARN_QUEUE
=
PREFIX
+
"truck.warn"
+
QUEUE
;
public
static
final
String
TRUCK_WARN_ROUTING_KEY
=
PREFIX
+
"truck.warn"
+
QUEUE_ROUTING_KEY
;
/**
* 车辆预警通知
*/
public
static
final
String
TRUCK_WARN_NOTICE_QUEUE
=
PREFIX
+
"truckWarn.notice"
+
QUEUE
;
public
static
final
String
TRUCK_WARN_NOTICE_ROUTING_KEY
=
PREFIX
+
"truckWarn.notice"
+
QUEUE_ROUTING_KEY
;
}
performance-web/src/main/java/com/clx/performance/controller/temp/TempVehicleWarnController.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
controller
.
temp
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnMqHandlerService
;
import
com.msl.common.result.Result
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
/**
* @Author: aiqingguo
* @Description: 临时接口
* @Date: 2023-8-21 12:10:16
* @Version: 1.0
*/
@Slf4j
@RestController
@RequestMapping
(
value
=
"/temp/vehicleWarn"
)
public
class
TempVehicleWarnController
{
@Autowired
private
VehicleWarnMqHandlerService
vehicleWarnMqHandlerService
;
@ApiOperation
(
value
=
"发送预警短信"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/sendSms"
)
public
Result
sendSms
(
List
<
String
>
mobileList
,
String
warnName
,
String
truckNo
,
String
childNo
)
{
vehicleWarnMqHandlerService
.
sendSms
(
mobileList
,
warnName
,
truckNo
,
childNo
);
return
Result
.
ok
();
}
@ApiOperation
(
value
=
"发送预警外呼"
,
notes
=
"<br>By:艾庆国"
)
@PostMapping
(
"/sendClink"
)
public
Result
sendClink
(
List
<
String
>
mobileList
,
String
warnName
,
String
truckNo
,
String
childNo
)
{
vehicleWarnMqHandlerService
.
sendClink
(
mobileList
,
warnName
,
truckNo
,
childNo
);
return
Result
.
ok
();
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/vehiclewarn/VehicleWarnChildDaoImpl.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
dao
.
impl
.
vehiclewarn
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnChildDao
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnChildEnum
;
import
com.clx.performance.mapper.vehiclewarn.VehicleWarnChildMapper
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnChild
;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
class
VehicleWarnChildDaoImpl
extends
BaseDaoImpl
<
VehicleWarnChildMapper
,
VehicleWarnChild
,
Integer
>
implements
VehicleWarnChildDao
{
@Override
public
boolean
updateTraceTime
(
VehicleWarnChild
item
)
{
return
update
(
lUdWrapper
()
.
eq
(
VehicleWarnChild:
:
getId
,
item
.
getId
())
.
set
(
VehicleWarnChild:
:
getTraceStatus
,
item
.
getTraceStatus
())
.
set
(
VehicleWarnChild:
:
getTraceTime
,
item
.
getTraceTime
())
);
}
@Override
public
boolean
updateReceiveAddressDistance
(
VehicleWarnChild
item
)
{
return
update
(
lUdWrapper
()
.
eq
(
VehicleWarnChild:
:
getId
,
item
.
getId
())
.
set
(
VehicleWarnChild:
:
getReceiveAddressDistance
,
item
.
getReceiveAddressDistance
())
);
}
@Override
public
Optional
<
VehicleWarnChild
>
findByChildNo
(
String
childNo
)
{
return
Optional
.
of
(
childNo
)
.
map
(
item
->
lQrWrapper
().
eq
(
VehicleWarnChild:
:
getChildNo
,
item
))
.
map
(
super
::
getOne
);
}
@Override
public
List
<
VehicleWarnChild
>
ListTruckNoOfTrace
()
{
return
list
(
lQrWrapper
().
select
(
VehicleWarnChild:
:
getChildNo
,
VehicleWarnChild:
:
getTruckNo
).
eq
(
VehicleWarnChild:
:
getTraceStatus
,
VehicleWarnChildEnum
.
TraceStatus
.
ENABLE
.
getCode
()));
}
@Override
public
List
<
VehicleWarnChild
>
ListTruckNoOfWarn
()
{
return
list
(
lQrWrapper
().
select
(
VehicleWarnChild:
:
getChildNo
,
VehicleWarnChild:
:
getTruckNo
).
eq
(
VehicleWarnChild:
:
getTraceStatus
,
VehicleWarnChildEnum
.
WarnStatus
.
ENABLE
.
getCode
()));
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/vehiclewarn/VehicleWarnConfigDaoImpl.java
浏览文件 @
2ff61b0b
...
...
@@ -11,6 +11,8 @@ import com.msl.common.base.Optional;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
class
VehicleWarnConfigDaoImpl
extends
BaseDaoImpl
<
VehicleWarnConfigMapper
,
VehicleWarnConfig
,
Integer
>
implements
VehicleWarnConfigDao
{
...
...
@@ -69,6 +71,11 @@ public class VehicleWarnConfigDaoImpl extends BaseDaoImpl<VehicleWarnConfigMappe
.
map
(
super
::
getOne
);
}
@Override
public
List
<
VehicleWarnConfig
>
listByWarnType
(
Integer
warnType
)
{
return
list
(
lQrWrapper
().
eq
(
VehicleWarnConfig:
:
getWarnType
,
warnType
));
}
@Override
public
IPage
<
VehicleWarnConfig
>
pageByParam
(
PageVehicleWarnConfigParam
param
)
{
Page
<
VehicleWarnConfig
>
page
=
Page
.
of
(
param
.
getPage
(),
param
.
getPageSize
());
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/vehiclewarn/VehicleWarnInfoDaoImpl.java
浏览文件 @
2ff61b0b
...
...
@@ -3,6 +3,8 @@ package com.clx.performance.dao.impl.vehiclewarn;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnInfoDao
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnInfoEnum
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnRangEnum
;
import
com.clx.performance.mapper.vehiclewarn.VehicleWarnInfoMapper
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnInfo
;
import
com.clx.performance.param.pc.vehiclewarn.PageVehicleWarnInfoParam
;
...
...
@@ -10,6 +12,10 @@ import com.msl.common.base.Optional;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
@Repository
public
class
VehicleWarnInfoDaoImpl
extends
BaseDaoImpl
<
VehicleWarnInfoMapper
,
VehicleWarnInfo
,
Integer
>
implements
VehicleWarnInfoDao
{
...
...
@@ -21,6 +27,49 @@ public class VehicleWarnInfoDaoImpl extends BaseDaoImpl<VehicleWarnInfoMapper, V
);
}
@Override
public
boolean
batchUpdateStatus
(
List
<
Integer
>
idList
,
Integer
status
)
{
return
update
(
lUdWrapper
()
.
in
(
VehicleWarnInfo:
:
getId
,
idList
)
.
set
(
VehicleWarnInfo:
:
getStatus
,
status
)
);
}
@Override
public
boolean
updateSuspendTime
(
VehicleWarnInfo
item
,
Integer
warnRang
)
{
if
(
Objects
.
equals
(
warnRang
,
VehicleWarnRangEnum
.
WarnRange
.
CHILD
.
getCode
()))
{
return
update
(
lUdWrapper
()
.
eq
(
VehicleWarnInfo:
:
getId
,
item
.
getId
())
.
ne
(
VehicleWarnInfo:
:
getStatus
,
VehicleWarnInfoEnum
.
Status
.
RESOLVE
)
.
set
(
VehicleWarnInfo:
:
getSuspendTime
,
item
.
getSuspendTime
())
);
}
else
if
(
Objects
.
equals
(
warnRang
,
VehicleWarnRangEnum
.
WarnRange
.
ORDER_GOODS
.
getCode
()))
{
return
update
(
lUdWrapper
()
.
eq
(
VehicleWarnInfo:
:
getWarnConfigId
,
item
.
getWarnConfigId
())
.
eq
(
VehicleWarnInfo:
:
getOrderGoodsNo
,
item
.
getOrderGoodsNo
())
.
ne
(
VehicleWarnInfo:
:
getStatus
,
VehicleWarnInfoEnum
.
Status
.
RESOLVE
)
.
set
(
VehicleWarnInfo:
:
getSuspendTime
,
item
.
getSuspendTime
())
);
}
else
{
return
update
(
lUdWrapper
()
.
eq
(
VehicleWarnInfo:
:
getWarnConfigId
,
item
.
getWarnConfigId
())
.
ne
(
VehicleWarnInfo:
:
getStatus
,
VehicleWarnInfoEnum
.
Status
.
RESOLVE
)
.
set
(
VehicleWarnInfo:
:
getSuspendTime
,
item
.
getSuspendTime
())
);
}
}
@Override
public
boolean
updateWarnTime
(
VehicleWarnInfo
item
)
{
return
update
(
lUdWrapper
()
.
eq
(
VehicleWarnInfo:
:
getId
,
item
.
getId
())
.
set
(
VehicleWarnInfo:
:
getWarnTime
,
item
.
getWarnTime
())
);
}
@Override
public
Optional
<
VehicleWarnInfo
>
findById
(
Integer
id
)
{
return
Optional
.
of
(
id
)
...
...
@@ -31,6 +80,25 @@ public class VehicleWarnInfoDaoImpl extends BaseDaoImpl<VehicleWarnInfoMapper, V
.
map
(
super
::
getOne
);
}
@Override
public
Optional
<
VehicleWarnInfo
>
findByChildNoAndWarnConfigId
(
String
childNo
,
Integer
warnConfigId
)
{
return
Optional
.
of
(
childNo
)
.
map
(
item
->
lQrWrapper
()
.
eq
(
VehicleWarnInfo:
:
getChildNo
,
childNo
)
.
eq
(
VehicleWarnInfo:
:
getWarnConfigId
,
warnConfigId
)
.
last
(
"limit 1"
)
)
.
map
(
super
::
getOne
);
}
@Override
public
List
<
VehicleWarnInfo
>
listSuspendTimeout
()
{
return
list
(
lQrWrapper
()
.
eq
(
VehicleWarnInfo:
:
getStatus
,
VehicleWarnInfoEnum
.
Status
.
SUSPEND
.
getCode
())
.
lt
(
VehicleWarnInfo:
:
getSuspendTime
,
LocalDateTime
.
now
())
);
}
@Override
public
IPage
<
VehicleWarnInfo
>
pageByParam
(
PageVehicleWarnInfoParam
param
)
{
...
...
performance-web/src/main/java/com/clx/performance/dao/impl/vehiclewarn/VehicleWarnRangeDaoImpl.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
dao
.
impl
.
vehiclewarn
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnRangeDao
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnRangEnum
;
import
com.clx.performance.mapper.vehiclewarn.VehicleWarnRangMapper
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnRang
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Repository
public
class
VehicleWarnRangeDaoImpl
extends
BaseDaoImpl
<
VehicleWarnRangMapper
,
VehicleWarnRang
,
Integer
>
implements
VehicleWarnRangeDao
{
@Override
public
List
<
VehicleWarnRang
>
ListByWarnConfigId
(
Integer
warnConfigId
)
{
return
list
(
lQrWrapper
()
.
eq
(
VehicleWarnRang:
:
getWarnConfigId
,
warnConfigId
)
.
eq
(
VehicleWarnRang:
:
getStatus
,
VehicleWarnRangEnum
.
Status
.
ENABLE
.
getCode
())
.
le
(
VehicleWarnRang:
:
getWarnEndTime
,
LocalDateTime
.
now
())
.
orderByDesc
(
VehicleWarnRang:
:
getId
)
);
}
}
performance-web/src/main/java/com/clx/performance/dao/impl/vehiclewarn/VehicleWarnUserDaoImpl.java
浏览文件 @
2ff61b0b
...
...
@@ -11,6 +11,8 @@ import com.msl.common.base.Optional;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
class
VehicleWarnUserDaoImpl
extends
BaseDaoImpl
<
VehicleWarnUserMapper
,
VehicleWarnUser
,
Integer
>
implements
VehicleWarnUserDao
{
...
...
@@ -61,6 +63,13 @@ public class VehicleWarnUserDaoImpl extends BaseDaoImpl<VehicleWarnUserMapper, V
.
map
(
super
::
getOne
);
}
@Override
public
List
<
VehicleWarnUser
>
listAllEnable
()
{
return
list
(
lQrWrapper
()
.
eq
(
VehicleWarnUser:
:
getDeleteStatus
,
VehicleWarnUserEnum
.
DeleteStatus
.
NO
.
getCode
())
);
}
@Override
public
IPage
<
VehicleWarnUser
>
pageByParam
(
PageVehicleWarnUserParam
param
)
{
Page
<
VehicleWarnUser
>
page
=
Page
.
of
(
param
.
getPage
(),
param
.
getPageSize
());
...
...
performance-web/src/main/java/com/clx/performance/dao/vehiclewarn/VehicleWarnChildDao.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
dao
.
vehiclewarn
;
import
com.clx.performance.mapper.vehiclewarn.VehicleWarnChildMapper
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnChild
;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.BaseDao
;
import
java.util.List
;
public
interface
VehicleWarnChildDao
extends
BaseDao
<
VehicleWarnChildMapper
,
VehicleWarnChild
,
Integer
>
{
boolean
updateTraceTime
(
VehicleWarnChild
item
);
boolean
updateReceiveAddressDistance
(
VehicleWarnChild
item
);
Optional
<
VehicleWarnChild
>
findByChildNo
(
String
childNo
);
List
<
VehicleWarnChild
>
ListTruckNoOfTrace
();
List
<
VehicleWarnChild
>
ListTruckNoOfWarn
();
}
performance-web/src/main/java/com/clx/performance/dao/vehiclewarn/VehicleWarnConfigDao.java
浏览文件 @
2ff61b0b
...
...
@@ -7,6 +7,8 @@ import com.clx.performance.param.pc.vehiclewarn.PageVehicleWarnConfigParam;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.BaseDao
;
import
java.util.List
;
public
interface
VehicleWarnConfigDao
extends
BaseDao
<
VehicleWarnConfigMapper
,
VehicleWarnConfig
,
Integer
>
{
boolean
updateConfig
(
VehicleWarnConfig
item
);
...
...
@@ -15,6 +17,7 @@ public interface VehicleWarnConfigDao extends BaseDao<VehicleWarnConfigMapper, V
Optional
<
VehicleWarnConfig
>
findById
(
Integer
id
);
Optional
<
VehicleWarnConfig
>
findByName
(
String
name
);
List
<
VehicleWarnConfig
>
listByWarnType
(
Integer
warnType
);
IPage
<
VehicleWarnConfig
>
pageByParam
(
PageVehicleWarnConfigParam
param
);
...
...
performance-web/src/main/java/com/clx/performance/dao/vehiclewarn/VehicleWarnInfoDao.java
浏览文件 @
2ff61b0b
...
...
@@ -7,11 +7,21 @@ import com.clx.performance.param.pc.vehiclewarn.PageVehicleWarnInfoParam;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.BaseDao
;
import
java.util.List
;
public
interface
VehicleWarnInfoDao
extends
BaseDao
<
VehicleWarnInfoMapper
,
VehicleWarnInfo
,
Integer
>
{
boolean
updateStatus
(
VehicleWarnInfo
item
);
boolean
batchUpdateStatus
(
List
<
Integer
>
idList
,
Integer
status
);
boolean
updateSuspendTime
(
VehicleWarnInfo
item
,
Integer
warnRang
);
boolean
updateWarnTime
(
VehicleWarnInfo
item
);
Optional
<
VehicleWarnInfo
>
findById
(
Integer
id
);
Optional
<
VehicleWarnInfo
>
findByChildNoAndWarnConfigId
(
String
childNo
,
Integer
warnConfigId
);
List
<
VehicleWarnInfo
>
listSuspendTimeout
();
IPage
<
VehicleWarnInfo
>
pageByParam
(
PageVehicleWarnInfoParam
param
);
...
...
performance-web/src/main/java/com/clx/performance/dao/vehiclewarn/VehicleWarnRangeDao.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
dao
.
vehiclewarn
;
import
com.clx.performance.mapper.vehiclewarn.VehicleWarnRangMapper
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnRang
;
import
com.msl.common.dao.BaseDao
;
import
java.util.List
;
public
interface
VehicleWarnRangeDao
extends
BaseDao
<
VehicleWarnRangMapper
,
VehicleWarnRang
,
Integer
>
{
List
<
VehicleWarnRang
>
ListByWarnConfigId
(
Integer
warnConfigId
);
}
performance-web/src/main/java/com/clx/performance/dao/vehiclewarn/VehicleWarnUserDao.java
浏览文件 @
2ff61b0b
...
...
@@ -7,6 +7,8 @@ import com.clx.performance.param.pc.vehiclewarn.PageVehicleWarnUserParam;
import
com.msl.common.base.Optional
;
import
com.msl.common.dao.BaseDao
;
import
java.util.List
;
public
interface
VehicleWarnUserDao
extends
BaseDao
<
VehicleWarnUserMapper
,
VehicleWarnUser
,
Integer
>
{
boolean
updateUser
(
VehicleWarnUser
item
);
...
...
@@ -16,6 +18,8 @@ public interface VehicleWarnUserDao extends BaseDao<VehicleWarnUserMapper, Vehic
Optional
<
VehicleWarnUser
>
findById
(
Integer
id
);
Optional
<
VehicleWarnUser
>
findByMobile
(
String
mobile
);
List
<
VehicleWarnUser
>
listAllEnable
();
IPage
<
VehicleWarnUser
>
pageByParam
(
PageVehicleWarnUserParam
param
);
}
performance-web/src/main/java/com/clx/performance/dto/vehiclewarn/VehicleWarnCommonInfoDTO.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
dto
.
vehiclewarn
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
@Getter
@Setter
@NoArgsConstructor
public
class
VehicleWarnCommonInfoDTO
{
BigDecimal
[]
currentPosition
;
//当前位置
Integer
sendAddressDistance
;
//距货源地址距离
Integer
receiveAddressDistance
;
//距目的地址距离
Integer
sendAddressTime
;
//距货源地址时间
Integer
receiveAddressTime
;
//距目的地址时间
Boolean
suspendStatus
;
//是否暂停 0:未暂停 1:暂停
private
LocalDateTime
lastArriveSendTime
;
//最晚到达货源地时间
private
LocalDateTime
lastArriveReceiveTime
;
//最晚到达目的地时间
LocalDateTime
currentTime
;
//当前时间
private
LocalDateTime
transportEndTime
;
//拉运结束时间
}
performance-web/src/main/java/com/clx/performance/esplus/model/DriverTraceESPlus.java
浏览文件 @
2ff61b0b
...
...
@@ -26,6 +26,9 @@ public class DriverTraceESPlus {
@IndexField
(
fieldType
=
FieldType
.
GEO_POINT
)
private
BigDecimal
[]
location
;
//位置
@ApiModelProperty
(
"速度"
)
private
BigDecimal
speed
;
@IndexField
(
fieldType
=
FieldType
.
DATE
)
private
String
positionTime
;
...
...
performance-web/src/main/java/com/clx/performance/job/TruckTraceJob.java
浏览文件 @
2ff61b0b
...
...
@@ -102,28 +102,4 @@ public class TruckTraceJob {
}
}
/**
* 车辆轨迹同步
*/
@XxlJob
(
"truckTraceSync"
)
public
void
truckTraceSync
()
{
try
{
List
<
String
>
truckNoList
=
new
ArrayList
<>();
log
.
info
(
"车辆轨迹同步, size:{}"
,
truckNoList
.
size
());
for
(
String
truckNo
:
truckNoList
)
{
LocalDateTime
now
=
LocalDateTime
.
now
();
// 发送mq (同步车辆轨迹)
truckTraceMqService
.
truckTracSync
(
truckNo
,
LocalDateTimeUtils
.
formatTime
(
now
.
minusSeconds
(
600
)),
LocalDateTimeUtils
.
formatTime
(
now
));
}
}
catch
(
Exception
e
)
{
log
.
warn
(
"车辆轨迹同步失败,异常原因:{}"
,
e
);
JobLog
.
error
(
"车辆轨迹同步失败,异常原因====================="
,
e
);
}
}
}
performance-web/src/main/java/com/clx/performance/job/trace/VehicleTraceJob.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
job
.
trace
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnChildDao
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnChild
;
import
com.clx.performance.service.trace.TruckTraceMqService
;
import
com.clx.performance.utils.LocalDateTimeUtils
;
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
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Slf4j
@Component
public
class
VehicleTraceJob
{
@Autowired
private
VehicleWarnChildDao
vehicleWarnChildDao
;
@Autowired
private
TruckTraceMqService
truckTraceMqService
;
/**
* 车辆轨迹同步
*/
@XxlJob
(
"truckTraceSync"
)
public
void
truckTraceSync
()
{
try
{
List
<
VehicleWarnChild
>
list
=
vehicleWarnChildDao
.
ListTruckNoOfTrace
();
log
.
info
(
"车辆轨迹同步, size:{}"
,
list
.
size
());
for
(
VehicleWarnChild
item
:
list
)
{
LocalDateTime
now
=
LocalDateTime
.
now
();
LocalDateTime
beginTime
=
now
.
minusSeconds
(
600
);
// 发送mq (同步车辆轨迹)
truckTraceMqService
.
truckTracSync
(
item
.
getTruckNo
(),
item
.
getTruckNo
(),
LocalDateTimeUtils
.
formatTime
(
beginTime
),
LocalDateTimeUtils
.
formatTime
(
now
));
}
}
catch
(
Exception
e
)
{
log
.
warn
(
"车辆轨迹同步失败,异常原因:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
JobLog
.
error
(
"车辆轨迹同步失败,异常原因====================="
,
e
);
}
}
}
performance-web/src/main/java/com/clx/performance/job/vehiclewarn/VehicleWarnJob.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
job
.
vehiclewarn
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnChildDao
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnInfoDao
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnInfoEnum
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnChild
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnInfo
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnMqService
;
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
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Slf4j
@Component
public
class
VehicleWarnJob
{
@Autowired
private
VehicleWarnChildDao
vehicleWarnChildDao
;
@Autowired
private
VehicleWarnMqService
vehicleWarnMqService
;
@Autowired
private
VehicleWarnInfoDao
vehicleWarnInfoDao
;
/**
* 车辆监控预警
*/
@XxlJob
(
"vehicleWarnTruckWarn"
)
public
void
vehicleWarnTruckWarn
()
{
try
{
List
<
VehicleWarnChild
>
list
=
vehicleWarnChildDao
.
ListTruckNoOfWarn
();
log
.
info
(
"车辆监控预警, size:{}"
,
list
.
size
());
for
(
VehicleWarnChild
item
:
list
)
{
LocalDateTime
now
=
LocalDateTime
.
now
();
LocalDateTime
beginTime
=
now
.
minusSeconds
(
600
);
// 发送mq (车辆预警)
vehicleWarnMqService
.
truckWarn
(
item
.
getChildNo
());
}
}
catch
(
Exception
e
)
{
log
.
warn
(
"车辆监控预警失败,异常原因:{}"
,
ExceptionUtils
.
getStackTrace
(
e
));
JobLog
.
error
(
"车辆监控预警失败,异常原因====================="
,
e
);
}
}
// /**
// * 预警暂停取消
// */
// @XxlJob("vehicleWarnSuspendCancel")
// public void vehicleWarnSuspendCancel() {
//
// try {
//
// List<VehicleWarnInfo> list = vehicleWarnInfoDao.listSuspendTimeout();
// log.info("预警暂停取消, size:{}", list.size());
//
// vehicleWarnInfoDao.batchUpdateStatus(list.stream().map(item->item.getId()).collect(Collectors.toList()), VehicleWarnInfoEnum.Status.INIT.getCode());
//
// } catch (Exception e) {
// log.warn("预警暂停取消失败,异常原因:{}", ExceptionUtils.getStackTrace(e));
// JobLog.error("预警暂停取消失败,异常原因=====================", e);
// }
// }
}
performance-web/src/main/java/com/clx/performance/listener/vehiclewarn/VehicleWarnChildAddListener.java
0 → 100644
浏览文件 @
2ff61b0b
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.VehicleWarnChildAddMqParam
;
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
VehicleWarnChildAddListener
{
@Autowired
private
VehicleWarnMqHandlerService
vehicleWarnMqHandlerService
;
@RabbitListener
(
queues
=
RabbitKeyVehicleWarnConstants
.
ORDER_CHILD_ADD_QUEUE
)
public
void
process
(
Message
message
)
{
try
{
log
.
info
(
"车辆预警-运单新增, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
VehicleWarnChildAddMqParam
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"车辆预警-运单新增 失败"
,
e
);
}
}
private
void
process
(
VehicleWarnChildAddMqParam
mq
){
vehicleWarnMqHandlerService
.
orderChildAdd
(
mq
);
}
}
performance-web/src/main/java/com/clx/performance/listener/vehiclewarn/VehicleWarnDelayListener.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
listener
.
vehiclewarn
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.clx.performance.common.MqDelay
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeySettlementConstants
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.rabbit.annotation.RabbitListener
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @Author: 艾庆国
* @Description: 车辆预警 mq
* @Date: 2023-10-20 16:14:30
* @Version: 1.0
*/
@Slf4j
@Component
public
class
VehicleWarnDelayListener
{
@Autowired
private
RabbitTemplate
rabbitTemplate
;
@RabbitListener
(
queues
=
RabbitKeySettlementConstants
.
DEFAULT_DEAD_QUEUE
)
public
void
process
(
Message
message
)
{
try
{
log
.
info
(
"车辆预警-延迟, message:{}"
,
message
);
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
MqDelay
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"车辆预警-延迟 失败"
,
e
);
}
}
void
process
(
MqDelay
mq
){
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
mq
.
getData
()).
getBytes
()).
build
();
rabbitTemplate
.
send
(
mq
.
getExchange
(),
mq
.
getRouterKey
(),
message
);
}
}
performance-web/src/main/java/com/clx/performance/listener/vehiclewarn/VehicleWarnTruckWarnListener.java
0 → 100644
浏览文件 @
2ff61b0b
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.VehicleWarnTruckWarnMqParam
;
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
VehicleWarnTruckWarnListener
{
@Autowired
private
VehicleWarnMqHandlerService
vehicleWarnMqHandlerService
;
@RabbitListener
(
queues
=
RabbitKeyVehicleWarnConstants
.
TRUCK_WARN_QUEUE
)
public
void
process
(
Message
message
)
{
try
{
log
.
info
(
"车辆预警-运单预警, message:{}"
,
new
String
(
message
.
getBody
()));
process
(
JSON
.
parseObject
(
new
String
(
message
.
getBody
()),
new
TypeReference
<
MqWrapper
<
VehicleWarnTruckWarnMqParam
>>(){}).
getData
());
}
catch
(
Exception
e
){
log
.
info
(
"车辆预警-运单预警 失败"
,
e
);
}
}
private
void
process
(
VehicleWarnTruckWarnMqParam
mq
){
vehicleWarnMqHandlerService
.
truckWarn
(
mq
);
}
}
performance-web/src/main/java/com/clx/performance/listener/vehiclewarn/VehicleWarnTruckWarnNoticeListener.java
0 → 100644
浏览文件 @
2ff61b0b
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/mapper/vehiclewarn/VehicleWarnChildMapper.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
mapper
.
vehiclewarn
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnChild
;
import
org.apache.ibatis.annotations.Mapper
;
@Mapper
public
interface
VehicleWarnChildMapper
extends
BaseMapper
<
VehicleWarnChild
>
{
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/mapper/vehiclewarn/VehicleWarnRangMapper.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
mapper
.
vehiclewarn
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnRang
;
import
org.apache.ibatis.annotations.Mapper
;
@Mapper
public
interface
VehicleWarnRangMapper
extends
BaseMapper
<
VehicleWarnRang
>
{
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/model/vehiclewarn/VehicleWarnChild.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
model
.
vehiclewarn
;
import
com.baomidou.mybatisplus.annotation.IdType
;
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
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
/**
* @Author: aiqinguo
* @Description: 车辆预警运单表
* @Date: 2024/04/28 14:36:58
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName
(
autoResultMap
=
true
)
public
class
VehicleWarnChild
implements
HasKey
<
Integer
>
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
//id
private
String
childNo
;
//运单编号
private
String
orderGoodsNo
;
//货单编号
private
String
truckNo
;
//车牌号
private
Long
driverUserNo
;
//司机用户编号
private
BigDecimal
sendLongitude
;
//发货地址经度
private
BigDecimal
sendLatitude
;
//发货地址纬度
private
BigDecimal
receiveLongitude
;
//收货地址经度
private
BigDecimal
receiveLatitude
;
//收货地址纬度
private
Integer
arriveSendExpectTime
;
//预计到达货源地时间 (min)
private
Integer
arriveReceiveExpectTime
;
//预计到达目的地时间 (min)
private
LocalDateTime
takeTime
;
//接单时间
private
Integer
receiveAddressDistance
;
//距离目的地距离(m)
private
LocalDateTime
traceTime
;
//轨迹更新时间
private
Integer
traceStatus
;
//轨迹更新状态:0禁止 1启用
private
Integer
wanStatus
;
//预警更新状态:0禁用 1启用
private
Integer
status
;
//状态
private
LocalDateTime
createTime
;
//创建时间
private
LocalDateTime
modifiedTime
;
//修改时间
@Override
@KeyColumn
(
"id"
)
public
Integer
gainKey
()
{
return
this
.
id
;
}
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/model/vehiclewarn/VehicleWarnInfo.java
浏览文件 @
2ff61b0b
...
...
@@ -30,6 +30,7 @@ public class VehicleWarnInfo implements HasKey<Integer> {
private
String
warnName
;
//预警名称
private
Integer
warnType
;
//预警类型
private
Integer
warnLevel
;
//预警级别
private
String
orderGoodsNo
;
//货单编号
private
String
childNo
;
//运单编号
private
Integer
sendAddressId
;
//发货地址id
private
String
sendAddress
;
//发货地址
...
...
@@ -42,6 +43,7 @@ public class VehicleWarnInfo implements HasKey<Integer> {
private
String
driverName
;
//司机姓名
private
String
driverMobile
;
//司机手机号
private
LocalDateTime
takeTime
;
//接单时间
private
LocalDateTime
suspendTime
;
//预警暂停时间
private
LocalDateTime
warnTime
;
//预警时间
private
Integer
status
;
//处理状态:1待处理 2已处理 3暂停预警
private
String
createBy
;
//创建人
...
...
performance-web/src/main/java/com/clx/performance/model/vehiclewarn/VehicleWarnRang.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
model
.
vehiclewarn
;
import
com.baomidou.mybatisplus.annotation.IdType
;
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
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
lombok.ToString
;
import
java.time.LocalDateTime
;
/**
* @Author: aiqinguo
* @Description: 预警范围
* @Date: 2024/05/06 15:21:27
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName
(
autoResultMap
=
true
)
public
class
VehicleWarnRang
implements
HasKey
<
Integer
>
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
//id
private
Integer
warnConfigId
;
//预警配置id
private
String
warnName
;
//预警名称
private
Integer
warnRang
;
//预警屏蔽范围:1运单 2货单 3全部
private
String
orderNo
;
//货单编号
private
String
childNo
;
//运单编号
private
LocalDateTime
warnEndTime
;
//预警屏蔽结束时间
private
Integer
status
;
//状态:1有效 2无效
private
String
createBy
;
//创建人
private
LocalDateTime
createTime
;
//创建时间
private
LocalDateTime
modifiedTime
;
//修改时间
@Override
@KeyColumn
(
"id"
)
public
Integer
gainKey
()
{
return
this
.
id
;
}
}
\ No newline at end of file
performance-web/src/main/java/com/clx/performance/service/child/OrderChildPostService.java
浏览文件 @
2ff61b0b
...
...
@@ -4,6 +4,7 @@ import com.clx.performance.model.OrderChild;
public
interface
OrderChildPostService
{
void
orderChildAdd
(
String
childNo
);
void
orderChildArriveReceiveAddress
(
OrderChild
orderChild
);
void
orderChildDriverConfirm
(
OrderChild
orderChild
);
...
...
performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
浏览文件 @
2ff61b0b
...
...
@@ -425,8 +425,8 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildLogService
.
saveDriverOrderChildLog
(
childNo
,
OrderChildLogEnum
.
Type
.
CREATED
.
getCode
(),
OrderChildLogEnum
.
Type
.
CREATED
.
getMsg
(),
loginUserInfo
.
getUserNo
(),
loginUserInfo
.
getUserName
());
//
发送mq 新增运单
orderChild
Mq
Service
.
orderChildAdd
(
orderChild
.
getChildNo
());
//
司机接单后置逻辑
orderChild
Post
Service
.
orderChildAdd
(
orderChild
.
getChildNo
());
SaveOrderChildVO
result
=
new
SaveOrderChildVO
();
result
.
setChildNo
(
childNo
);
...
...
performance-web/src/main/java/com/clx/performance/service/impl/child/OrderChildPostServiceImpl.java
浏览文件 @
2ff61b0b
...
...
@@ -9,6 +9,7 @@ import com.clx.performance.service.IntegralMqService;
import
com.clx.performance.service.OrderChildMqService
;
import
com.clx.performance.service.breakcontract.BreakContractDriverRecordService
;
import
com.clx.performance.service.child.OrderChildPostService
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnMqService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -26,6 +27,18 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
@Autowired
private
BreakContractDriverRecordService
breakContractDriverRecordService
;
@Autowired
private
VehicleWarnMqService
vehicleWarnMqService
;
@Override
public
void
orderChildAdd
(
String
childNo
)
{
// 发送mq 新增运单
orderChildMqService
.
orderChildAdd
(
childNo
);
// 发送mq (运单新增)
vehicleWarnMqService
.
orderChildAdd
(
childNo
);
}
@Override
public
void
orderChildArriveReceiveAddress
(
OrderChild
orderChild
)
{
// 保存违约记录
...
...
performance-web/src/main/java/com/clx/performance/service/impl/trace/TruckTraceMqHandlerServiceImpl.java
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
impl
.
trace
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnChildDao
;
import
com.clx.performance.dto.zjxl.TruckTraceDTO
;
import
com.clx.performance.enums.ResultEnum
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnChildEnum
;
import
com.clx.performance.esplus.mapper.TruckTraceESPlusMapper
;
import
com.clx.performance.esplus.model.TruckTraceESPlus
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnChild
;
import
com.clx.performance.param.mq.trace.TruckTraceSyncMqParam
;
import
com.clx.performance.param.temp.TruckTraceAddParam
;
import
com.clx.performance.service.trace.TruckTraceMqHandlerService
;
import
com.clx.performance.utils.LocalDateTimeUtils
;
import
com.clx.performance.utils.zjxl.ZjxlGpsService
;
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.util.ArrayList
;
...
...
@@ -22,12 +28,25 @@ public class TruckTraceMqHandlerServiceImpl implements TruckTraceMqHandlerServic
@Autowired
private
ZjxlGpsService
zjxlGpsService
;
@Autowired
private
VehicleWarnChildDao
vehicleWarnChildDao
;
@Autowired
private
OrderChildDao
orderChildDao
;
@Autowired
private
TruckTraceESPlusMapper
truckTraceESPlusMapper
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
truckTracSync
(
TruckTraceSyncMqParam
mq
)
{
VehicleWarnChild
vehicleWarnChild
=
vehicleWarnChildDao
.
findByChildNo
(
mq
.
getChildNo
()).
orElseThrow
(
ResultEnum
.
DATA_NOT_FIND
);
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
mq
.
getChildNo
()).
orElseThrow
(
ResultEnum
.
DATA_NOT_FIND
);
if
(
orderChild
.
getFinishTime
()
!=
null
)
{
vehicleWarnChild
.
setTraceStatus
(
VehicleWarnChildEnum
.
TraceStatus
.
DISABLE
.
getCode
());
}
vehicleWarnChild
.
setTraceTime
(
LocalDateTimeUtils
.
parseTime
(
mq
.
getEndTime
()));
List
<
TruckTraceDTO
>
list
=
zjxlGpsService
.
getTruckTrace
(
mq
.
getTruckNo
(),
mq
.
getBeginTime
(),
mq
.
getEndTime
());
if
(
list
.
isEmpty
())
{
return
;}
...
...
@@ -49,6 +68,8 @@ public class TruckTraceMqHandlerServiceImpl implements TruckTraceMqHandlerServic
// 保存
truckTraceESPlusMapper
.
insertBatch
(
esList
);
// 更新同步时间
vehicleWarnChildDao
.
updateTraceTime
(
vehicleWarnChild
);
}
}
performance-web/src/main/java/com/clx/performance/service/impl/trace/TruckTraceMqServiceImpl.java
浏览文件 @
2ff61b0b
...
...
@@ -21,8 +21,9 @@ public class TruckTraceMqServiceImpl implements TruckTraceMqService {
private
RabbitTemplate
rabbitTemplate
;
@Override
public
void
truckTracSync
(
String
truckNo
,
String
beginTime
,
String
endTime
)
{
public
void
truckTracSync
(
String
childNo
,
String
truckNo
,
String
beginTime
,
String
endTime
)
{
TruckTraceSyncMqParam
mq
=
new
TruckTraceSyncMqParam
();
mq
.
setChildNo
(
childNo
);
mq
.
setTruckNo
(
truckNo
);
mq
.
setBeginTime
(
beginTime
);
mq
.
setEndTime
(
endTime
);
...
...
performance-web/src/main/java/com/clx/performance/service/impl/trace/TruckTraceServiceImpl.java
浏览文件 @
2ff61b0b
...
...
@@ -17,12 +17,18 @@ import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.time.Duration
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
@Slf4j
@Service
public
class
TruckTraceServiceImpl
implements
TruckTraceService
{
// 停留速度
private
static
final
Integer
PARK_SPEED
=
5
;
@Autowired
private
TruckTraceESPlusMapper
truckTraceESPlusMapper
;
...
...
@@ -43,11 +49,22 @@ public class TruckTraceServiceImpl implements TruckTraceService {
.
orderByAsc
(
"gpsTime"
)
);
List
<
DriverTruckTraceVO
>
tr
uckTr
aceList
=
truckTraceStruct
.
convert
(
list
);
List
<
DriverTruckTraceVO
>
traceList
=
truckTraceStruct
.
convert
(
list
);
// 停留时长计算
Integer
parkIdx
=
null
;
for
(
int
i
=
0
;
i
<
traceList
.
size
();
i
++){
if
(
traceList
.
get
(
i
).
getSpeed
().
compareTo
(
new
BigDecimal
(
PARK_SPEED
))
<
0
){
parkIdx
=
i
;
}
else
{
if
(
parkIdx
==
null
)
{
continue
;}
long
stayTime
=
Duration
.
between
(
LocalDateTimeUtils
.
parseTime
(
traceList
.
get
(
parkIdx
).
getGpsTime
()),
LocalDateTimeUtils
.
parseTime
(
traceList
.
get
(
i
).
getGpsTime
())).
getSeconds
();
traceList
.
get
(
parkIdx
).
setStayTime
(
new
BigDecimal
(
stayTime
).
divide
(
new
BigDecimal
(
60
),
1
,
RoundingMode
.
HALF_UP
));
}
}
return
tr
uckTr
aceList
;
return
traceList
;
}
@Override
...
...
@@ -59,10 +76,22 @@ public class TruckTraceServiceImpl implements TruckTraceService {
.
orderByAsc
(
"positionTime"
)
);
List
<
DriverTraceVO
>
truckTraceList
=
driverTraceStruct
.
convert
(
list
);
List
<
DriverTraceVO
>
traceList
=
driverTraceStruct
.
convert
(
list
);
// 停留时长计算
Integer
parkIdx
=
null
;
for
(
int
i
=
0
;
i
<
traceList
.
size
();
i
++){
if
(
traceList
.
get
(
i
).
getSpeed
().
compareTo
(
new
BigDecimal
(
PARK_SPEED
))
<
0
){
parkIdx
=
i
;
}
else
{
if
(
parkIdx
==
null
)
{
continue
;}
long
stayTime
=
Duration
.
between
(
LocalDateTimeUtils
.
parseTime
(
traceList
.
get
(
parkIdx
).
getGpsTime
()),
LocalDateTimeUtils
.
parseTime
(
traceList
.
get
(
i
).
getGpsTime
())).
getSeconds
();
traceList
.
get
(
parkIdx
).
setStayTime
(
new
BigDecimal
(
stayTime
).
divide
(
new
BigDecimal
(
60
),
1
,
RoundingMode
.
HALF_UP
));
}
}
return
tr
uckTr
aceList
;
return
traceList
;
}
...
...
@@ -105,4 +134,84 @@ public class TruckTraceServiceImpl implements TruckTraceService {
driverTraceESPlusMapper
.
insertBatch
(
list
);
}
@Override
public
BigDecimal
[]
getCurrentPosition
(
String
truckNo
,
Long
userNo
)
{
String
beginTime
=
LocalDateTimeUtils
.
formatTime
(
LocalDateTime
.
now
().
minusMinutes
(
5
));
String
endTime
=
LocalDateTimeUtils
.
formatTime
();
// 车辆
List
<
TruckTraceESPlus
>
list
=
truckTraceESPlusMapper
.
selectList
(
new
LambdaEsQueryWrapper
<
TruckTraceESPlus
>()
.
eq
(
TruckTraceESPlus:
:
getTruckNo
,
truckNo
)
.
ge
(
TruckTraceESPlus:
:
getGpsTime
,
beginTime
)
.
le
(
TruckTraceESPlus:
:
getGpsTime
,
endTime
)
.
orderByDesc
(
"gpsTime"
)
.
limit
(
1
)
);
if
(!
list
.
isEmpty
()){
return
list
.
get
(
0
).
getLocation
();
}
// 司机
List
<
DriverTraceESPlus
>
list1
=
driverTraceESPlusMapper
.
selectList
(
new
LambdaEsQueryWrapper
<
DriverTraceESPlus
>()
.
eq
(
DriverTraceESPlus:
:
getUserNo
,
userNo
)
.
ge
(
DriverTraceESPlus:
:
getPositionTime
,
beginTime
)
.
le
(
DriverTraceESPlus:
:
getPositionTime
,
endTime
)
.
orderByDesc
(
"positionTime"
)
.
limit
(
1
)
);
if
(!
list1
.
isEmpty
()){
return
list1
.
get
(
0
).
getLocation
();
}
return
null
;
}
@Override
public
int
getParkTime
(
String
truckNo
,
Long
userNo
)
{
String
beginTime
=
LocalDateTimeUtils
.
formatTime
(
LocalDateTime
.
now
().
minusDays
(
1
));
String
endTime
=
LocalDateTimeUtils
.
formatTime
();
// 车辆
List
<
TruckTraceESPlus
>
list
=
truckTraceESPlusMapper
.
selectList
(
new
LambdaEsQueryWrapper
<
TruckTraceESPlus
>()
.
eq
(
TruckTraceESPlus:
:
getTruckNo
,
truckNo
)
.
gt
(
TruckTraceESPlus:
:
getSpeed
,
PARK_SPEED
)
.
ge
(
TruckTraceESPlus:
:
getGpsTime
,
beginTime
)
.
le
(
TruckTraceESPlus:
:
getGpsTime
,
endTime
)
.
orderByAsc
(
"gpsTime"
)
.
limit
(
1
)
);
if
(!
list
.
isEmpty
()){
list
=
truckTraceESPlusMapper
.
selectList
(
new
LambdaEsQueryWrapper
<
TruckTraceESPlus
>()
.
eq
(
TruckTraceESPlus:
:
getTruckNo
,
truckNo
)
.
gt
(
TruckTraceESPlus:
:
getSpeed
,
PARK_SPEED
)
.
gt
(
TruckTraceESPlus:
:
getGpsTime
,
list
.
get
(
0
).
getGpsTime
())
.
le
(
TruckTraceESPlus:
:
getGpsTime
,
endTime
)
.
orderByDesc
(
"gpsTime"
)
);
return
(
int
)
Duration
.
between
(
LocalDateTimeUtils
.
parseTime
(
list
.
get
(
0
).
getGpsTime
()),
LocalDateTimeUtils
.
parseTime
(
list
.
get
(
list
.
size
()
-
1
).
getGpsTime
())).
toMinutes
();
}
// 司机
List
<
DriverTraceESPlus
>
list1
=
driverTraceESPlusMapper
.
selectList
(
new
LambdaEsQueryWrapper
<
DriverTraceESPlus
>()
.
eq
(
DriverTraceESPlus:
:
getUserNo
,
userNo
)
.
ge
(
DriverTraceESPlus:
:
getPositionTime
,
beginTime
)
.
le
(
DriverTraceESPlus:
:
getPositionTime
,
endTime
)
.
orderByAsc
(
"positionTime"
)
.
limit
(
1
)
);
if
(!
list1
.
isEmpty
()){
list1
=
driverTraceESPlusMapper
.
selectList
(
new
LambdaEsQueryWrapper
<
DriverTraceESPlus
>()
.
eq
(
DriverTraceESPlus:
:
getUserNo
,
userNo
)
.
eq
(
DriverTraceESPlus:
:
getSpeed
,
PARK_SPEED
)
.
ge
(
DriverTraceESPlus:
:
getPositionTime
,
list1
.
get
(
0
).
getPositionTime
())
.
le
(
DriverTraceESPlus:
:
getPositionTime
,
endTime
)
.
orderByDesc
(
"positionTime"
)
);
return
(
int
)
Duration
.
between
(
LocalDateTimeUtils
.
parseTime
(
list1
.
get
(
0
).
getPositionTime
()),
LocalDateTimeUtils
.
parseTime
(
list1
.
get
(
list1
.
size
()
-
1
).
getPositionTime
())).
toMinutes
();
}
return
0
;
}
}
performance-web/src/main/java/com/clx/performance/service/impl/vehiclewarn/VehicleWarnCommonServiceImpl.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
impl
.
vehiclewarn
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnInfoDao
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnRangeDao
;
import
com.clx.performance.dto.gd.GdRouteDTO
;
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.trace.TruckTraceService
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnCommonService
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnMqService
;
import
com.clx.performance.utils.gd.GdService
;
import
com.msl.common.exception.ServiceSystemException
;
import
com.msl.common.utils.gps.GpsUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
@Slf4j
@Service
public
class
VehicleWarnCommonServiceImpl
implements
VehicleWarnCommonService
{
private
static
final
Integer
MIN_FER_HOUR
=
60
;
private
static
final
Integer
SEC_FER_MIN
=
60
;
@Autowired
private
TruckTraceService
truckTraceService
;
@Autowired
private
GdService
gdService
;
@Autowired
private
VehicleWarnRangeDao
vehicleWarnRangeDao
;
@Autowired
private
VehicleWarnInfoDao
vehicleWarnInfoDao
;
@Autowired
private
VehicleWarnMqService
vehicleWarnMqService
;
@Override
public
void
vehicleWarnInfoUpdate
(
OrderChild
orderChild
,
VehicleWarnInfo
vehicleWarnInfo
,
VehicleWarnConfig
vehicleWarnConfig
){
// 更新
if
(
vehicleWarnInfo
!=
null
){
// 计算下次生效时间
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
.
updateWarnTime
(
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
.
setOrderGoodsNo
(
orderChild
.
getOrderGoodsNo
());
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
());
}
/**
* 暂停检测
*/
@Override
public
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
item
.
getWarnEndTime
().
isAfter
(
LocalDateTime
.
now
());
}
if
(
Objects
.
equals
(
item
.
getWarnRang
(),
VehicleWarnRangEnum
.
WarnRange
.
ORDER_GOODS
.
getCode
())){
if
(
Objects
.
equals
(
vehicleWarnChild
.
getOrderGoodsNo
(),
item
.
getOrderNo
()))
{
return
item
.
getWarnEndTime
().
isAfter
(
LocalDateTime
.
now
());
}
}
if
(
Objects
.
equals
(
item
.
getWarnRang
(),
VehicleWarnRangEnum
.
WarnRange
.
CHILD
.
getCode
())){
if
(
Objects
.
equals
(
vehicleWarnChild
.
getChildNo
(),
item
.
getChildNo
()))
{
return
item
.
getWarnEndTime
().
isAfter
(
LocalDateTime
.
now
());
}
}
}
}
return
false
;
}
/**
* 获取当前位置
*/
@Override
public
BigDecimal
[]
getCurrentPosition
(
String
truckNo
,
Long
userNo
){
BigDecimal
[]
currentPosition
=
truckTraceService
.
getCurrentPosition
(
truckNo
,
userNo
);
return
currentPosition
;
}
/**
* 获取需要时间(min)
*/
@Override
public
int
getNeedTime
(
BigDecimal
originLongitude
,
BigDecimal
originLatitude
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
){
try
{
List
<
GdRouteDTO
>
gdRouteDTOS
=
gdService
.
getRoute
(
originLongitude
,
originLatitude
,
destinationLongitude
,
destinationLatitude
);
if
(!
gdRouteDTOS
.
isEmpty
()){
return
gdRouteDTOS
.
get
(
0
).
getDuration
()
/
SEC_FER_MIN
;
}
}
catch
(
ServiceSystemException
e
)
{
log
.
info
(
"获取高德线路失败, msg:{}"
,
e
.
getMessage
());
}
return
0
;
}
/**
* 获取需要时间(min)
*/
@Override
public
int
getNeedTime
(
BigDecimal
[]
currentPosition
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
)
{
if
(
currentPosition
==
null
)
{
return
0
;}
return
getNeedTime
(
currentPosition
[
0
],
currentPosition
[
1
],
destinationLongitude
,
destinationLatitude
);
}
/**
* 获取需要距离(m)
*/
@Override
public
int
getNeedDistance
(
BigDecimal
[]
currentPosition
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
){
int
needDistance
=
0
;
if
(
currentPosition
==
null
)
{
return
0
;}
try
{
List
<
GdRouteDTO
>
gdRouteDTOS
=
gdService
.
getRoute
(
currentPosition
[
0
],
currentPosition
[
1
],
destinationLongitude
,
destinationLatitude
);
if
(!
gdRouteDTOS
.
isEmpty
()){
needDistance
=
gdRouteDTOS
.
get
(
0
).
getDistance
();
}
}
catch
(
ServiceSystemException
e
)
{
log
.
info
(
"获取高德线路失败, msg:{}"
,
e
.
getMessage
());
}
return
needDistance
;
}
@Override
public
Integer
getDistance
(
BigDecimal
[]
currentPosition
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
)
{
if
(
currentPosition
==
null
)
{
return
null
;}
return
GpsUtil
.
distanceM
(
currentPosition
[
0
],
currentPosition
[
1
],
destinationLongitude
,
destinationLatitude
);
}
}
performance-web/src/main/java/com/clx/performance/service/impl/vehiclewarn/VehicleWarnInfoServiceImpl.java
浏览文件 @
2ff61b0b
...
...
@@ -34,6 +34,7 @@ import java.util.List;
@Slf4j
@Service
public
class
VehicleWarnInfoServiceImpl
implements
VehicleWarnInfoService
{
private
final
Integer
TRUCK_TRACE_DAY_MAX
=
3
;
@Autowired
private
VehicleWarnInfoDao
vehicleWarnInfoDao
;
...
...
@@ -54,8 +55,9 @@ public class VehicleWarnInfoServiceImpl implements VehicleWarnInfoService {
UserSessionData
loginUserInfo
=
TokenUtil
.
getLoginUserInfo
();
VehicleWarnInfo
vehicleWarnInfo
=
vehicleWarnInfoDao
.
findById
(
param
.
getId
()).
orElseThrow
(
ResultEnum
.
DATA_NOT_FIND
);
vehicleWarnInfo
.
setStatus
(
VehicleWarnInfoEnum
.
Status
.
SUSPEND
.
getCode
());
vehicleWarnInfoDao
.
updateStatus
(
vehicleWarnInfo
);
vehicleWarnInfo
.
setSuspendTime
(
LocalDateTimeUtils
.
parseTime
(
param
.
getWarnEndTime
()));
vehicleWarnInfoDao
.
updateSuspendTime
(
vehicleWarnInfo
,
param
.
getWarnRang
());
VehicleWarnLog
vehicleWarnLog
=
new
VehicleWarnLog
();
vehicleWarnLog
.
setInfoId
(
vehicleWarnInfo
.
getId
());
...
...
@@ -96,7 +98,7 @@ public class VehicleWarnInfoServiceImpl implements VehicleWarnInfoService {
OrderChild
orderChild
=
orderChildDao
.
getByChildNo
(
vehicleWarnInfo
.
getChildNo
()).
orElseThrow
(
ResultEnum
.
DATA_NOT_FIND
);
LocalDateTime
beginTime
=
vehicleWarnInfo
.
getTakeTime
();
LocalDateTime
endTime
=
vehicleWarnInfo
.
getTakeTime
();
LocalDateTime
endTime
=
LocalDateTime
.
now
();
if
(
orderChild
.
getArriveSendTime
()
!=
null
)
{
endTime
=
orderChild
.
getArriveSendTime
();}
if
(
orderChild
.
getLoadTime
()
!=
null
)
{
endTime
=
orderChild
.
getLoadTime
();}
if
(
orderChild
.
getArriveReceiveTime
()
!=
null
)
{
endTime
=
orderChild
.
getArriveReceiveTime
();}
...
...
@@ -104,11 +106,22 @@ public class VehicleWarnInfoServiceImpl implements VehicleWarnInfoService {
if
(
orderChild
.
getConfirmTime
()
!=
null
)
{
endTime
=
orderChild
.
getConfirmTime
();}
if
(
orderChild
.
getSettleTime
()
!=
null
)
{
endTime
=
orderChild
.
getSettleTime
();}
if
(
orderChild
.
getFinishTime
()
!=
null
)
{
endTime
=
orderChild
.
getFinishTime
();}
if
(
endTime
.
isAfter
(
beginTime
.
plusDays
(
3
)))
{
endTime
=
beginTime
.
plusDays
(
3
);}
//最多查询3天
if
(
endTime
.
isAfter
(
beginTime
.
plusDays
(
TRUCK_TRACE_DAY_MAX
)))
{
endTime
=
beginTime
.
plusDays
(
TRUCK_TRACE_DAY_MAX
);}
//最多查询3天
List
<
DriverTruckTraceVO
>
truckTraceList
=
truckTraceService
.
listTruckTraceByTime
(
vehicleWarnInfo
.
getTruckNo
(),
LocalDateTimeUtils
.
formatTime
(
beginTime
),
LocalDateTimeUtils
.
formatTime
(
endTime
));
List
<
DriverTraceVO
>
driverTraceList
=
truckTraceService
.
listDriverTraceByTime
(
vehicleWarnInfo
.
getDriverUserNo
(),
LocalDateTimeUtils
.
formatTime
(
beginTime
),
LocalDateTimeUtils
.
formatTime
(
endTime
));
// 接单重车、卸车空车
for
(
DriverTruckTraceVO
item
:
truckTraceList
)
{
item
.
setTruckStatus
(
1
);
if
(
orderChild
.
getCancelTime
()
!=
null
){
if
(
LocalDateTimeUtils
.
parseTime
(
item
.
getGpsTime
()).
isAfter
(
orderChild
.
getCancelTime
())){
item
.
setTruckStatus
(
0
);}
}
if
(
orderChild
.
getUnloadTime
()
!=
null
){
if
(
LocalDateTimeUtils
.
parseTime
(
item
.
getGpsTime
()).
isAfter
(
orderChild
.
getUnloadTime
())){
item
.
setTruckStatus
(
0
);}
}
}
VehicleTraceVO
result
=
new
VehicleTraceVO
();
result
.
setDriverTraceList
(
driverTraceList
);
result
.
setTruckTraceList
(
truckTraceList
);
...
...
performance-web/src/main/java/com/clx/performance/service/impl/vehiclewarn/VehicleWarnLoadAndUnloadWarnServiceImpl.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
impl
.
vehiclewarn
;
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.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.service.vehiclewarn.VehicleWarnCommonService
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnLoadAndUnloadWarnService
;
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
VehicleWarnCommonService
vehicleWarnCommonService
;
/**
* 装车超时
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@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
.
findByChildNoAndWarnConfigId
(
vehicleWarnChild
.
getChildNo
(),
vehicleWarnConfig
.
getId
()).
orNull
();
if
(
vehicleWarnInfo
!=
null
&&
Objects
.
equals
(
vehicleWarnInfo
.
getStatus
(),
VehicleWarnInfoEnum
.
Status
.
RESOLVE
.
getCode
())){
return
;
}
// 暂停检测
boolean
suspend
=
vehicleWarnCommonService
.
suspendCheck
(
vehicleWarnChild
,
vehicleWarnConfig
.
getId
());
if
(
suspend
)
{
return
;}
// 超时判断
int
time
=
vehicleWarnConfig
.
getTimeoutRatio
().
multiply
(
new
BigDecimal
(
MIN_FER_HOUR
)).
intValue
();
if
(
orderChild
.
getArriveSendTime
().
plusMinutes
(
time
).
isAfter
(
LocalDateTime
.
now
())){
return
;}
// 更新
vehicleWarnCommonService
.
vehicleWarnInfoUpdate
(
orderChild
,
vehicleWarnInfo
,
vehicleWarnConfig
);
}
/**
* 到达货源地超时
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@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
.
findByChildNoAndWarnConfigId
(
vehicleWarnChild
.
getChildNo
(),
vehicleWarnConfig
.
getId
()).
orNull
();
if
(
vehicleWarnInfo
!=
null
&&
Objects
.
equals
(
vehicleWarnInfo
.
getStatus
(),
VehicleWarnInfoEnum
.
Status
.
RESOLVE
.
getCode
())){
return
;
}
// 暂停检测
boolean
suspend
=
vehicleWarnCommonService
.
suspendCheck
(
vehicleWarnChild
,
vehicleWarnConfig
.
getId
());
if
(
suspend
)
{
return
;}
// 超时判断
int
time
=
vehicleWarnConfig
.
getTimeoutRatio
().
multiply
(
new
BigDecimal
(
MIN_FER_HOUR
)).
intValue
();
if
(
orderChild
.
getArriveReceiveTime
().
plusMinutes
(
time
).
isAfter
(
LocalDateTime
.
now
())){
return
;}
// 更新
vehicleWarnCommonService
.
vehicleWarnInfoUpdate
(
orderChild
,
vehicleWarnInfo
,
vehicleWarnConfig
);
}
}
performance-web/src/main/java/com/clx/performance/service/impl/vehiclewarn/VehicleWarnMqHandlerServiceImpl.java
0 → 100644
浏览文件 @
2ff61b0b
差异被折叠。
点击展开。
performance-web/src/main/java/com/clx/performance/service/impl/vehiclewarn/VehicleWarnMqServiceImpl.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
impl
.
vehiclewarn
;
import
com.alibaba.fastjson.JSON
;
import
com.clx.performance.common.MqDelay
;
import
com.clx.performance.common.MqWrapper
;
import
com.clx.performance.constant.RabbitKeyVehicleWarnConstants
;
import
com.clx.performance.param.mq.vehiclewarn.VehicleWarnChildAddMqParam
;
import
com.clx.performance.param.mq.vehiclewarn.VehicleWarnTruckWarnMqParam
;
import
com.clx.performance.param.mq.vehiclewarn.VehicleWarnTruckWarnNoticeMqParam
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnMqService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.core.Message
;
import
org.springframework.amqp.core.MessageBuilder
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
@Slf4j
@Service
public
class
VehicleWarnMqServiceImpl
implements
VehicleWarnMqService
{
@Autowired
private
RabbitTemplate
rabbitTemplate
;
@Override
public
void
orderChildAdd
(
String
childNo
)
{
VehicleWarnChildAddMqParam
mq
=
new
VehicleWarnChildAddMqParam
();
mq
.
setChildNo
(
childNo
);
MqDelay
delay
=
new
MqDelay
<>(
RabbitKeyVehicleWarnConstants
.
DEFAULT_EXCHANGE
,
RabbitKeyVehicleWarnConstants
.
ORDER_CHILD_ADD_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
message
.
getMessageProperties
().
setExpiration
(
"5000"
);
rabbitTemplate
.
send
(
RabbitKeyVehicleWarnConstants
.
DEFAULT_EXCHANGE
,
RabbitKeyVehicleWarnConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
@Override
public
void
truckWarn
(
String
childNo
)
{
VehicleWarnTruckWarnMqParam
mq
=
new
VehicleWarnTruckWarnMqParam
();
mq
.
setChildNo
(
childNo
);
MqDelay
delay
=
new
MqDelay
<>(
RabbitKeyVehicleWarnConstants
.
DEFAULT_EXCHANGE
,
RabbitKeyVehicleWarnConstants
.
TRUCK_WARN_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
message
.
getMessageProperties
().
setExpiration
(
"5000"
);
rabbitTemplate
.
send
(
RabbitKeyVehicleWarnConstants
.
DEFAULT_EXCHANGE
,
RabbitKeyVehicleWarnConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
@Override
public
void
truckWarnNotice
(
Integer
infoId
)
{
VehicleWarnTruckWarnNoticeMqParam
mq
=
new
VehicleWarnTruckWarnNoticeMqParam
();
mq
.
setInfoId
(
infoId
);
MqDelay
delay
=
new
MqDelay
<>(
RabbitKeyVehicleWarnConstants
.
DEFAULT_EXCHANGE
,
RabbitKeyVehicleWarnConstants
.
TRUCK_WARN_NOTICE_ROUTING_KEY
,
new
MqWrapper
<>(
mq
));
Message
message
=
MessageBuilder
.
withBody
(
JSON
.
toJSONString
(
new
MqWrapper
<>(
delay
)).
getBytes
()).
build
();
message
.
getMessageProperties
().
setExpiration
(
"5000"
);
rabbitTemplate
.
send
(
RabbitKeyVehicleWarnConstants
.
DEFAULT_EXCHANGE
,
RabbitKeyVehicleWarnConstants
.
DEFAULT_DELAY_ROUTING_KEY
,
message
);
}
}
performance-web/src/main/java/com/clx/performance/service/impl/vehiclewarn/VehicleWarnParkWarnServiceImpl.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
impl
.
vehiclewarn
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnConfigDao
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnInfoDao
;
import
com.clx.performance.dto.vehiclewarn.VehicleWarnCommonInfoDTO
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnConfigEnum
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnInfoEnum
;
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.service.trace.TruckTraceService
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnCommonService
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnParkWarnService
;
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.util.List
;
import
java.util.Objects
;
@Slf4j
@Service
public
class
VehicleWarnParkWarnServiceImpl
implements
VehicleWarnParkWarnService
{
private
static
final
Integer
MIN_FER_HOUR
=
60
;
private
static
final
Integer
DISTANCE_DEFAULT
=
2000
;
@Autowired
private
VehicleWarnConfigDao
vehicleWarnConfigDao
;
@Autowired
private
VehicleWarnInfoDao
vehicleWarnInfoDao
;
@Autowired
private
TruckTraceService
truckTraceService
;
@Autowired
private
VehicleWarnCommonService
vehicleWarnCommonService
;
/**
* 停留超时
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
packTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnCommonInfoDTO
commonInfo
){
// 未装车前往目的地判断
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
())){
// 首次不处理预警
if
(
vehicleWarnChild
.
getReceiveAddressDistance
()
==
null
){
return
;
}
else
{
Integer
needDistance
=
commonInfo
.
getReceiveAddressDistance
();
// 未前往目的地不处理预警
if
(
vehicleWarnChild
.
getReceiveAddressDistance
()-
needDistance
<
DISTANCE_DEFAULT
){
return
;}
}
}
// 停留时间
int
parkTime
=
truckTraceService
.
getParkTime
(
vehicleWarnChild
.
getTruckNo
(),
vehicleWarnChild
.
getDriverUserNo
());
if
(
parkTime
==
0
)
{
return
;}
List
<
VehicleWarnConfig
>
vehicleWarnConfigList
=
vehicleWarnConfigDao
.
listByWarnType
(
VehicleWarnConfigEnum
.
WarnType
.
PARK_TIMEOUT
.
getCode
());
if
(
vehicleWarnConfigList
.
isEmpty
())
{
return
;}
for
(
VehicleWarnConfig
item
:
vehicleWarnConfigList
)
{
doParkTimeout
(
orderChild
,
vehicleWarnChild
,
item
,
parkTime
);
}
}
private
void
doParkTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnConfig
vehicleWarnConfig
,
int
parkTimee
){
VehicleWarnInfo
vehicleWarnInfo
=
vehicleWarnInfoDao
.
findByChildNoAndWarnConfigId
(
vehicleWarnChild
.
getChildNo
(),
vehicleWarnConfig
.
getId
()).
orNull
();
if
(
vehicleWarnInfo
!=
null
&&
Objects
.
equals
(
vehicleWarnInfo
.
getStatus
(),
VehicleWarnInfoEnum
.
Status
.
RESOLVE
.
getCode
())){
return
;
}
// 暂停检测
boolean
suspend
=
vehicleWarnCommonService
.
suspendCheck
(
vehicleWarnChild
,
vehicleWarnConfig
.
getId
());
if
(
suspend
)
{
return
;}
// 超时判断
int
time
=
vehicleWarnConfig
.
getTimeoutRatio
().
multiply
(
new
BigDecimal
(
MIN_FER_HOUR
)).
intValue
();
if
(
parkTimee
>
time
){
return
;}
// 更新
vehicleWarnCommonService
.
vehicleWarnInfoUpdate
(
orderChild
,
vehicleWarnInfo
,
vehicleWarnConfig
);
}
@Override
public
void
sensitiveAreaParkTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnCommonInfoDTO
commonInfo
)
{
// 未装车前往目的地判断
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
())){
// 首次不处理预警
if
(
vehicleWarnChild
.
getReceiveAddressDistance
()
==
null
){
return
;
}
else
{
Integer
needDistance
=
commonInfo
.
getReceiveAddressDistance
();
// 未前往目的地不处理预警
if
(
vehicleWarnChild
.
getReceiveAddressDistance
()-
needDistance
<
DISTANCE_DEFAULT
){
return
;}
}
}
// 停留时间
int
parkTime
=
truckTraceService
.
getParkTime
(
vehicleWarnChild
.
getTruckNo
(),
vehicleWarnChild
.
getDriverUserNo
());
if
(
parkTime
==
0
)
{
return
;}
List
<
VehicleWarnConfig
>
vehicleWarnConfigList
=
vehicleWarnConfigDao
.
listByWarnType
(
VehicleWarnConfigEnum
.
WarnType
.
SENSITIVE_AREA_PARK_TIMEOUT
.
getCode
());
if
(
vehicleWarnConfigList
.
isEmpty
())
{
return
;}
for
(
VehicleWarnConfig
item
:
vehicleWarnConfigList
)
{
doSensitiveParkTimeout
(
orderChild
,
vehicleWarnChild
,
item
,
commonInfo
);
}
}
private
void
doSensitiveParkTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnConfig
vehicleWarnConfig
,
VehicleWarnCommonInfoDTO
commonInfo
){
VehicleWarnInfo
vehicleWarnInfo
=
vehicleWarnInfoDao
.
findByChildNoAndWarnConfigId
(
vehicleWarnChild
.
getChildNo
(),
vehicleWarnConfig
.
getId
()).
orNull
();
if
(
vehicleWarnInfo
!=
null
&&
Objects
.
equals
(
vehicleWarnInfo
.
getStatus
(),
VehicleWarnInfoEnum
.
Status
.
RESOLVE
.
getCode
())){
return
;
}
// 敏感区距离
Integer
sensitiveDistance
=
vehicleWarnCommonService
.
getDistance
(
commonInfo
.
getCurrentPosition
(),
vehicleWarnConfig
.
getLongitude
(),
vehicleWarnConfig
.
getLatitude
());
if
(
sensitiveDistance
==
null
||
sensitiveDistance
>
vehicleWarnConfig
.
getRadius
())
{
return
;}
// 暂停检测
boolean
suspend
=
vehicleWarnCommonService
.
suspendCheck
(
vehicleWarnChild
,
vehicleWarnConfig
.
getId
());
if
(
suspend
)
{
return
;}
// 更新
vehicleWarnCommonService
.
vehicleWarnInfoUpdate
(
orderChild
,
vehicleWarnInfo
,
vehicleWarnConfig
);
}
}
performance-web/src/main/java/com/clx/performance/service/impl/vehiclewarn/VehicleWarnReceiveAddressWarnServiceImpl.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
impl
.
vehiclewarn
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnConfigDao
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnInfoDao
;
import
com.clx.performance.dto.vehiclewarn.VehicleWarnCommonInfoDTO
;
import
com.clx.performance.enums.OrderChildEnum
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnConfigEnum
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnInfoEnum
;
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.service.vehiclewarn.VehicleWarnCommonService
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnReceiveAddressWarnService
;
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.math.RoundingMode
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
@Slf4j
@Service
public
class
VehicleWarnReceiveAddressWarnServiceImpl
implements
VehicleWarnReceiveAddressWarnService
{
private
static
final
Integer
DISTANCE_DEFAULT
=
2000
;
@Autowired
private
VehicleWarnConfigDao
vehicleWarnConfigDao
;
@Autowired
private
VehicleWarnInfoDao
vehicleWarnInfoDao
;
@Autowired
private
VehicleWarnCommonService
vehicleWarnCommonService
;
/**
* 前往目的地超时
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
gotoReceiveAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnCommonInfoDTO
commonInfo
){
if
(
vehicleWarnChild
.
getArriveReceiveExpectTime
()
==
null
)
{
return
;}
// 未装车前往目的地判断
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
())){
// 首次不处理预警
if
(
vehicleWarnChild
.
getReceiveAddressDistance
()
==
null
){
return
;
}
else
{
Integer
needDistance
=
commonInfo
.
getReceiveAddressDistance
();
// 未前往目的地不处理预警
if
(
vehicleWarnChild
.
getReceiveAddressDistance
()-
needDistance
<
DISTANCE_DEFAULT
){
return
;}
// 假定当前已装车
orderChild
.
setLoadTime
(
LocalDateTime
.
now
());
}
}
// 理论时间
Integer
expectTime
=
vehicleWarnChild
.
getArriveReceiveExpectTime
();
// 计算需要的时间
Integer
needTime
=
commonInfo
.
getReceiveAddressTime
();
List
<
VehicleWarnConfig
>
vehicleWarnConfigList
=
vehicleWarnConfigDao
.
listByWarnType
(
VehicleWarnConfigEnum
.
WarnType
.
GOTO_RECEIVE_TIMEOUT
.
getCode
());
if
(
vehicleWarnConfigList
.
isEmpty
())
{
return
;}
for
(
VehicleWarnConfig
item
:
vehicleWarnConfigList
)
{
doGotoReceiveAddressTimeout
(
orderChild
,
vehicleWarnChild
,
item
,
expectTime
,
needTime
);
}
}
private
void
doGotoReceiveAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnConfig
vehicleWarnConfig
,
Integer
expectTime
,
Integer
needTime
){
VehicleWarnInfo
vehicleWarnInfo
=
vehicleWarnInfoDao
.
findByChildNoAndWarnConfigId
(
vehicleWarnChild
.
getChildNo
(),
vehicleWarnConfig
.
getId
()).
orNull
();
if
(
vehicleWarnInfo
!=
null
&&
Objects
.
equals
(
vehicleWarnInfo
.
getStatus
(),
VehicleWarnInfoEnum
.
Status
.
RESOLVE
.
getCode
())){
return
;
}
// 暂停检测
boolean
suspend
=
vehicleWarnCommonService
.
suspendCheck
(
vehicleWarnChild
,
vehicleWarnConfig
.
getId
());
if
(
suspend
)
{
return
;}
LocalDateTime
loadTime
=
orderChild
.
getLoadTime
();
// 超时判断
int
time
=
vehicleWarnConfig
.
getTimeoutRatio
().
multiply
(
new
BigDecimal
(
expectTime
)).
divide
(
new
BigDecimal
(
"100"
),
0
,
RoundingMode
.
HALF_UP
).
intValue
();
if
(
loadTime
.
plusMinutes
(
expectTime
).
plusMinutes
(
time
).
isAfter
(
LocalDateTime
.
now
().
plusMinutes
(
needTime
))){
return
;}
// 更新
vehicleWarnCommonService
.
vehicleWarnInfoUpdate
(
orderChild
,
vehicleWarnInfo
,
vehicleWarnConfig
);
}
/**
* 到达目的地超时
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
arriveReceiveAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnCommonInfoDTO
commonInfo
){
if
(
vehicleWarnChild
.
getArriveReceiveExpectTime
()
==
null
)
{
return
;}
// 未装车前往目的地判断
if
(
Objects
.
equals
(
orderChild
.
getStatus
(),
OrderChildEnum
.
Status
.
ARRIVE_SEND
.
getCode
())){
// 首次不处理预警
if
(
vehicleWarnChild
.
getReceiveAddressDistance
()
==
null
){
return
;
}
else
{
Integer
needDistance
=
commonInfo
.
getReceiveAddressDistance
();
// 未前往目的地不处理预警
if
(
vehicleWarnChild
.
getReceiveAddressDistance
()-
needDistance
<
DISTANCE_DEFAULT
){
return
;}
}
}
// 计算需要的时间
int
needTime
=
commonInfo
.
getReceiveAddressTime
();
LocalDateTime
lastArriveReceiveTime
=
commonInfo
.
getLastArriveReceiveTime
();
// 超时判断
LocalDateTime
now
=
commonInfo
.
getCurrentTime
();
if
(
lastArriveReceiveTime
.
isAfter
(
now
.
plusMinutes
(
needTime
)))
{
return
;}
List
<
VehicleWarnConfig
>
vehicleWarnConfigList
=
vehicleWarnConfigDao
.
listByWarnType
(
VehicleWarnConfigEnum
.
WarnType
.
ARRIVE_RECEIVE_DELAY
.
getCode
());
if
(
vehicleWarnConfigList
.
isEmpty
())
{
return
;}
for
(
VehicleWarnConfig
item
:
vehicleWarnConfigList
)
{
doArriveReceiveAddressTimeout
(
orderChild
,
vehicleWarnChild
,
item
);
}
}
private
void
doArriveReceiveAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnConfig
vehicleWarnConfig
){
VehicleWarnInfo
vehicleWarnInfo
=
vehicleWarnInfoDao
.
findByChildNoAndWarnConfigId
(
vehicleWarnChild
.
getChildNo
(),
vehicleWarnConfig
.
getId
()).
orNull
();
if
(
vehicleWarnInfo
!=
null
&&
Objects
.
equals
(
vehicleWarnInfo
.
getStatus
(),
VehicleWarnInfoEnum
.
Status
.
RESOLVE
.
getCode
())){
return
;
}
// 暂停检测
boolean
suspend
=
vehicleWarnCommonService
.
suspendCheck
(
vehicleWarnChild
,
vehicleWarnConfig
.
getId
());
if
(
suspend
)
{
return
;}
// 更新
vehicleWarnCommonService
.
vehicleWarnInfoUpdate
(
orderChild
,
vehicleWarnInfo
,
vehicleWarnConfig
);
}
}
performance-web/src/main/java/com/clx/performance/service/impl/vehiclewarn/VehicleWarnSendAddressWarnServiceImpl.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
impl
.
vehiclewarn
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnConfigDao
;
import
com.clx.performance.dao.vehiclewarn.VehicleWarnInfoDao
;
import
com.clx.performance.dto.vehiclewarn.VehicleWarnCommonInfoDTO
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnConfigEnum
;
import
com.clx.performance.enums.vehiclewarn.VehicleWarnInfoEnum
;
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.service.vehiclewarn.VehicleWarnCommonService
;
import
com.clx.performance.service.vehiclewarn.VehicleWarnSendAddressWarnService
;
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.math.RoundingMode
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Objects
;
@Slf4j
@Service
public
class
VehicleWarnSendAddressWarnServiceImpl
implements
VehicleWarnSendAddressWarnService
{
@Autowired
private
VehicleWarnConfigDao
vehicleWarnConfigDao
;
@Autowired
private
VehicleWarnInfoDao
vehicleWarnInfoDao
;
@Autowired
private
VehicleWarnCommonService
vehicleWarnCommonService
;
/**
* 前往货源地超时
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
gotoSendAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnCommonInfoDTO
commonInfo
){
if
(
vehicleWarnChild
.
getArriveSendExpectTime
()
==
null
)
{
return
;}
long
expectTime
=
vehicleWarnChild
.
getArriveReceiveExpectTime
();
// 计算需要的时间
Integer
needTime
=
commonInfo
.
getSendAddressTime
();
List
<
VehicleWarnConfig
>
vehicleWarnConfigList
=
vehicleWarnConfigDao
.
listByWarnType
(
VehicleWarnConfigEnum
.
WarnType
.
GOTO_SEND_TIMEOUT
.
getCode
());
if
(
vehicleWarnConfigList
.
isEmpty
())
{
return
;}
for
(
VehicleWarnConfig
item
:
vehicleWarnConfigList
)
{
doGotoSendAddressTimeout
(
orderChild
,
vehicleWarnChild
,
item
,
expectTime
,
needTime
);
}
}
private
void
doGotoSendAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnConfig
vehicleWarnConfig
,
long
expectTime
,
Integer
needTime
){
VehicleWarnInfo
vehicleWarnInfo
=
vehicleWarnInfoDao
.
findByChildNoAndWarnConfigId
(
vehicleWarnChild
.
getChildNo
(),
vehicleWarnConfig
.
getId
()).
orNull
();
if
(
vehicleWarnInfo
!=
null
&&
Objects
.
equals
(
vehicleWarnInfo
.
getStatus
(),
VehicleWarnInfoEnum
.
Status
.
RESOLVE
.
getCode
())){
return
;
}
// 暂停检测
boolean
suspend
=
vehicleWarnCommonService
.
suspendCheck
(
vehicleWarnChild
,
vehicleWarnConfig
.
getId
());
if
(
suspend
)
{
return
;}
// 超时判断
int
time
=
vehicleWarnConfig
.
getTimeoutRatio
().
multiply
(
new
BigDecimal
(
expectTime
)).
divide
(
new
BigDecimal
(
"100"
),
0
,
RoundingMode
.
HALF_UP
).
intValue
();
if
(
orderChild
.
getPayTime
().
plusMinutes
(
expectTime
).
plusMinutes
(
time
).
isAfter
(
LocalDateTime
.
now
().
plusMinutes
(
needTime
))){
return
;}
// 更新
vehicleWarnCommonService
.
vehicleWarnInfoUpdate
(
orderChild
,
vehicleWarnInfo
,
vehicleWarnConfig
);
}
/**
* 到达货源地超时
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
arriveSendAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnCommonInfoDTO
commonInfo
){
if
(
vehicleWarnChild
.
getArriveSendExpectTime
()
==
null
)
{
return
;}
// 计算需要的时间
Integer
needTime
=
commonInfo
.
getSendAddressTime
();
// 超时判断
LocalDateTime
now
=
LocalDateTime
.
now
();
if
(
vehicleWarnChild
.
getTakeTime
().
plusMinutes
(
vehicleWarnChild
.
getArriveSendExpectTime
()).
isAfter
(
now
.
plusMinutes
(
needTime
)))
{
return
;}
List
<
VehicleWarnConfig
>
vehicleWarnConfigList
=
vehicleWarnConfigDao
.
listByWarnType
(
VehicleWarnConfigEnum
.
WarnType
.
ARRIVE_SEND_DELAY
.
getCode
());
if
(
vehicleWarnConfigList
.
isEmpty
())
{
return
;}
for
(
VehicleWarnConfig
item
:
vehicleWarnConfigList
)
{
doArriveSendAddressTimeout
(
orderChild
,
vehicleWarnChild
,
item
);
}
}
private
void
doArriveSendAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnConfig
vehicleWarnConfig
){
VehicleWarnInfo
vehicleWarnInfo
=
vehicleWarnInfoDao
.
findByChildNoAndWarnConfigId
(
vehicleWarnChild
.
getChildNo
(),
vehicleWarnConfig
.
getId
()).
orNull
();
if
(
vehicleWarnInfo
!=
null
&&
Objects
.
equals
(
vehicleWarnInfo
.
getStatus
(),
VehicleWarnInfoEnum
.
Status
.
RESOLVE
.
getCode
())){
return
;
}
// 暂停检测
boolean
suspend
=
vehicleWarnCommonService
.
suspendCheck
(
vehicleWarnChild
,
vehicleWarnConfig
.
getId
());
if
(
suspend
)
{
return
;}
// 更新
vehicleWarnCommonService
.
vehicleWarnInfoUpdate
(
orderChild
,
vehicleWarnInfo
,
vehicleWarnConfig
);
}
}
performance-web/src/main/java/com/clx/performance/service/trace/TruckTraceMqService.java
浏览文件 @
2ff61b0b
...
...
@@ -2,7 +2,7 @@ package com.clx.performance.service.trace;
public
interface
TruckTraceMqService
{
void
truckTracSync
(
String
truckNo
,
String
beginTime
,
String
endTime
);
void
truckTracSync
(
String
childNo
,
String
truckNo
,
String
beginTime
,
String
endTime
);
}
performance-web/src/main/java/com/clx/performance/service/trace/TruckTraceService.java
浏览文件 @
2ff61b0b
...
...
@@ -5,6 +5,7 @@ import com.clx.performance.param.temp.TruckTraceAddParam;
import
com.clx.performance.vo.pc.trace.DriverTraceVO
;
import
com.clx.performance.vo.pc.trace.DriverTruckTraceVO
;
import
java.math.BigDecimal
;
import
java.util.List
;
public
interface
TruckTraceService
{
...
...
@@ -15,4 +16,8 @@ public interface TruckTraceService {
void
truckTraceSave
(
TruckTraceAddParam
param
);
void
driverTraceSave
(
DriverTraceAddParam
param
);
BigDecimal
[]
getCurrentPosition
(
String
truckNo
,
Long
userNo
);
int
getParkTime
(
String
truckNo
,
Long
userNo
);
}
performance-web/src/main/java/com/clx/performance/service/vehiclewarn/VehicleWarnCommonService.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
vehiclewarn
;
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
java.math.BigDecimal
;
public
interface
VehicleWarnCommonService
{
void
vehicleWarnInfoUpdate
(
OrderChild
orderChild
,
VehicleWarnInfo
vehicleWarnInfo
,
VehicleWarnConfig
vehicleWarnConfig
);
boolean
suspendCheck
(
VehicleWarnChild
vehicleWarnChild
,
Integer
warnConfigId
);
BigDecimal
[]
getCurrentPosition
(
String
truckNo
,
Long
userNo
);
int
getNeedTime
(
BigDecimal
originLongitude
,
BigDecimal
originLatitude
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
);
int
getNeedTime
(
BigDecimal
[]
currentPosition
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
);
int
getNeedDistance
(
BigDecimal
[]
currentPosition
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
);
Integer
getDistance
(
BigDecimal
[]
currentPosition
,
BigDecimal
destinationLongitude
,
BigDecimal
destinationLatitude
);
}
performance-web/src/main/java/com/clx/performance/service/vehiclewarn/VehicleWarnLoadAndUnloadWarnService.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
vehiclewarn
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnChild
;
public
interface
VehicleWarnLoadAndUnloadWarnService
{
void
loadTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
);
void
unloadTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
);
}
performance-web/src/main/java/com/clx/performance/service/vehiclewarn/VehicleWarnMqHandlerService.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
vehiclewarn
;
import
com.clx.performance.param.mq.vehiclewarn.VehicleWarnChildAddMqParam
;
import
com.clx.performance.param.mq.vehiclewarn.VehicleWarnTruckWarnMqParam
;
import
com.clx.performance.param.mq.vehiclewarn.VehicleWarnTruckWarnNoticeMqParam
;
import
java.util.List
;
public
interface
VehicleWarnMqHandlerService
{
void
orderChildAdd
(
VehicleWarnChildAddMqParam
mq
);
void
truckWarn
(
VehicleWarnTruckWarnMqParam
mq
);
void
truckWarnNotice
(
VehicleWarnTruckWarnNoticeMqParam
mq
);
void
sendSms
(
List
<
String
>
mobileList
,
String
warnName
,
String
truckNo
,
String
childNo
);
void
sendClink
(
List
<
String
>
mobileList
,
String
warnName
,
String
truckNo
,
String
childNo
);
}
performance-web/src/main/java/com/clx/performance/service/vehiclewarn/VehicleWarnMqService.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
vehiclewarn
;
public
interface
VehicleWarnMqService
{
void
orderChildAdd
(
String
childNo
);
void
truckWarn
(
String
childNo
);
void
truckWarnNotice
(
Integer
infoId
);
}
performance-web/src/main/java/com/clx/performance/service/vehiclewarn/VehicleWarnParkWarnService.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
vehiclewarn
;
import
com.clx.performance.dto.vehiclewarn.VehicleWarnCommonInfoDTO
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnChild
;
public
interface
VehicleWarnParkWarnService
{
void
packTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnCommonInfoDTO
commonInfo
);
void
sensitiveAreaParkTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnCommonInfoDTO
commonInfo
);
}
performance-web/src/main/java/com/clx/performance/service/vehiclewarn/VehicleWarnReceiveAddressWarnService.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
vehiclewarn
;
import
com.clx.performance.dto.vehiclewarn.VehicleWarnCommonInfoDTO
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnChild
;
public
interface
VehicleWarnReceiveAddressWarnService
{
void
gotoReceiveAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnCommonInfoDTO
commonInfo
);
void
arriveReceiveAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnCommonInfoDTO
commonInfo
);
}
performance-web/src/main/java/com/clx/performance/service/vehiclewarn/VehicleWarnSendAddressWarnService.java
0 → 100644
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
service
.
vehiclewarn
;
import
com.clx.performance.dto.vehiclewarn.VehicleWarnCommonInfoDTO
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.vehiclewarn.VehicleWarnChild
;
public
interface
VehicleWarnSendAddressWarnService
{
void
gotoSendAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnCommonInfoDTO
commonInfo
);
void
arriveSendAddressTimeout
(
OrderChild
orderChild
,
VehicleWarnChild
vehicleWarnChild
,
VehicleWarnCommonInfoDTO
commonInfo
);
}
performance-web/src/main/java/com/clx/performance/sqlProvider/vehiclewarn/VehicleWarnInfoSqlProvider.java
浏览文件 @
2ff61b0b
package
com
.
clx
.
performance
.
sqlProvider
.
vehiclewarn
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.clx.performance.param.pc.vehiclewarn.PageVehicleWarnConfigParam
;
import
com.clx.performance.param.pc.vehiclewarn.PageVehicleWarnInfoParam
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.ibatis.annotations.Param
;
...
...
@@ -26,6 +25,9 @@ public class VehicleWarnInfoSqlProvider {
if
(
Objects
.
nonNull
(
param
.
getWarnLevel
()))
{
WHERE
(
"warn_level = #{param.warnLevel}"
);}
if
(
Objects
.
nonNull
(
param
.
getStatus
()))
{
WHERE
(
"status = #{param.status}"
);}
if
(
StringUtils
.
isNotBlank
(
param
.
getSendAddress
()))
{
WHERE
(
"send_address like CONCAT('%',#{param.sendAddress},'%')"
);}
if
(
StringUtils
.
isNotBlank
(
param
.
getReceiveAddress
()))
{
WHERE
(
"receive_address like CONCAT('%',#{param.receiveAddress},'%')"
);}
if
(
StringUtils
.
isNotBlank
(
param
.
getBeginTime
()))
{
WHERE
(
"create_time >= #{param.beginTime}"
);}
if
(
StringUtils
.
isNotBlank
(
param
.
getEndTime
()))
{
WHERE
(
"create_time <= #{param.endTime}"
);}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论