Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
5e41b15a
提交
5e41b15a
authored
6月 12, 2024
作者:
李瑞鑫
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'v16.0_screen_20240522'
上级
3208a1fc
12316d97
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
371 行增加
和
0 行删除
+371
-0
TruckPositionDao.java
...c/main/java/com/clx/performance/dao/TruckPositionDao.java
+21
-0
TruckPositionDaoImpl.java
...va/com/clx/performance/dao/impl/TruckPositionDaoImpl.java
+34
-0
TruckPositionJob.java
...va/com/clx/performance/job/position/TruckPositionJob.java
+163
-0
TruckPositionMapper.java
.../java/com/clx/performance/mapper/TruckPositionMapper.java
+23
-0
TruckPosition.java
...rc/main/java/com/clx/performance/model/TruckPosition.java
+86
-0
TruckPositionProvider.java
...om/clx/performance/sqlProvider/TruckPositionProvider.java
+44
-0
没有找到文件。
performance-web/src/main/java/com/clx/performance/dao/TruckPositionDao.java
0 → 100644
浏览文件 @
5e41b15a
package
com
.
clx
.
performance
.
dao
;
import
com.clx.performance.mapper.TruckPositionMapper
;
import
com.clx.performance.model.TruckPosition
;
import
com.msl.common.dao.BaseDao
;
import
java.util.List
;
/**
* 车辆位置;
*
* @author : jiangwenye
* @date : 2024-05-29
*/
public
interface
TruckPositionDao
extends
BaseDao
<
TruckPositionMapper
,
TruckPosition
,
Integer
>
{
void
updateTruckPositionStatus
(
Integer
deleteStatus
,
List
<
String
>
truckNoList
);
void
replaceTruckPosition
(
List
<
TruckPosition
>
truckPositionList
);
}
performance-web/src/main/java/com/clx/performance/dao/impl/TruckPositionDaoImpl.java
0 → 100644
浏览文件 @
5e41b15a
package
com
.
clx
.
performance
.
dao
.
impl
;
import
cn.hutool.core.collection.CollectionUtil
;
import
com.clx.performance.dao.TruckPositionDao
;
import
com.clx.performance.mapper.TruckPositionMapper
;
import
com.clx.performance.model.TruckPosition
;
import
com.msl.common.dao.impl.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* 车辆位置;
*
* @author : jiangwenye
* @date : 2024-05-29
*/
@Repository
public
class
TruckPositionDaoImpl
extends
BaseDaoImpl
<
TruckPositionMapper
,
TruckPosition
,
Integer
>
implements
TruckPositionDao
{
@Override
public
void
updateTruckPositionStatus
(
Integer
deleteStatus
,
List
<
String
>
truckNoList
)
{
update
(
lUdWrapper
()
.
set
(
TruckPosition:
:
getDeleteStatus
,
deleteStatus
)
.
notIn
(
CollectionUtil
.
isNotEmpty
(
truckNoList
),
TruckPosition:
:
getTruckNo
,
truckNoList
)
);
}
@Override
public
void
replaceTruckPosition
(
List
<
TruckPosition
>
truckPositionList
)
{
baseMapper
.
replaceTruckPosition
(
truckPositionList
);
}
}
performance-web/src/main/java/com/clx/performance/job/position/TruckPositionJob.java
0 → 100644
浏览文件 @
5e41b15a
package
com
.
clx
.
performance
.
job
.
position
;
import
com.alibaba.fastjson.JSON
;
import
com.clx.order.enums.DeleteStatusEnum
;
import
com.clx.performance.constant.RedisConstants
;
import
com.clx.performance.dao.OrderChildDao
;
import
com.clx.performance.dao.TruckPositionDao
;
import
com.clx.performance.dto.zjxl.TruckTraceDTO
;
import
com.clx.performance.model.OrderChild
;
import
com.clx.performance.model.TruckPosition
;
import
com.clx.performance.service.trace.TruckTraceService
;
import
com.clx.performance.vo.pc.trace.DriverTraceVO
;
import
com.clx.user.feign.TruckFeign
;
import
com.clx.user.feign.UserClxFeign
;
import
com.clx.user.vo.feign.TruckOwnerInfoVO
;
import
com.msl.common.enums.ResultCodeEnum
;
import
com.msl.common.job.JobLog
;
import
com.msl.common.result.Result
;
import
com.msl.common.utils.DateUtils
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.temporal.ChronoUnit
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* 车辆位置;
*
* @author : jiangwenye
* @date : 2024-05-29
*/
@Slf4j
@Component
public
class
TruckPositionJob
{
@Autowired
(
required
=
false
)
UserClxFeign
userClxFeign
;
@Autowired
(
required
=
false
)
TruckFeign
truckFeign
;
@Autowired
RedisTemplate
redisTemplate
;
@Autowired
TruckTraceService
truckTraceService
;
@Autowired
OrderChildDao
orderChildDao
;
@Autowired
TruckPositionDao
truckPositionDao
;
/**
* 车辆位置
*/
@XxlJob
(
"truckPosition"
)
public
void
truckPosition
()
{
try
{
getPlatformTruckPosition
();
}
catch
(
Exception
e
)
{
log
.
warn
(
"定时任务获取平台车辆当前定位信息失败,异常原因:{}"
,
e
);
JobLog
.
error
(
"定时任务获取平台车辆当前定位信息失败,异常原因====================="
,
e
);
}
}
/**
* @Author kavin
* @Description 定时获取平台车辆的定位
* @Param []
* @return
**/
public
void
getPlatformTruckPosition
(){
Result
<
List
<
String
>>
result
=
userClxFeign
.
getPlatformTruckList
();
log
.
info
(
"通过clx-user服务获取平台认证成功车辆,返回结果:{}"
,
JSON
.
toJSONString
(
result
));
if
(
Objects
.
equals
(
result
.
getCode
(),
ResultCodeEnum
.
SUCCESS
.
getCode
())){
List
<
TruckPosition
>
truckPositionList
=
new
ArrayList
<>();
List
<
String
>
truckNos
=
result
.
getData
();
//处理不在内的车牌号均至为失效
truckPositionDao
.
updateTruckPositionStatus
(
DeleteStatusEnum
.
YES
.
getCode
(),
truckNos
);
if
(
CollectionUtils
.
isEmpty
(
truckNos
)){
return
;
}
//有效运单集合
List
<
OrderChild
>
orderChildList
=
orderChildDao
.
selectListWithEmptyCarList
();
Map
<
String
,
OrderChild
>
truckChildStatusMap
=
orderChildList
.
stream
()
.
collect
(
Collectors
.
toMap
(
item
->
item
.
getTruckNo
(),
item
->
item
,(
v1
,
v2
)
->
v2
));
//获取缓存中所有车辆位置信息
Map
<
String
,
TruckTraceDTO
>
truckTraceMap
=
redisTemplate
.
opsForHash
().
entries
(
RedisConstants
.
ZJXL_TRUCK_TRACE_LIST
);
LocalDateTime
now
=
LocalDateTime
.
now
();
LocalDateTime
beginTime
=
now
.
plus
(-
5
,
ChronoUnit
.
MINUTES
);
String
beginTimeStr
=
DateUtils
.
formatDateTime
(
beginTime
,
"yyyy-MM-dd HH:mm:ss"
).
get
();
String
endTimeStr
=
DateUtils
.
formatDateTime
(
now
,
"yyyy-MM-dd HH:mm:ss"
).
get
();
//既没接单 又没有中交兴路坐标的车辆集合
List
<
String
>
noZJXLNoChildTruckNos
=
new
ArrayList
<>();
for
(
String
truckNo
:
truckNos
){
TruckTraceDTO
trace
=
truckTraceMap
.
get
(
truckNo
);
OrderChild
child
=
truckChildStatusMap
.
get
(
truckNo
);
if
(
Objects
.
isNull
(
trace
)){
//无中交轨迹
TruckPosition
position
=
new
TruckPosition
();
position
.
setTruckNo
(
truckNo
);
position
.
setDeleteStatus
(
DeleteStatusEnum
.
NO
.
getCode
());
Long
userNo
=
null
;
if
(
Objects
.
isNull
(
child
)){
//车辆当前没有运单 取车主手机位置
Result
<
TruckOwnerInfoVO
>
truckOwnerResult
=
truckFeign
.
getTruckOwnerInfo
(
truckNo
);
if
(
Objects
.
equals
(
truckOwnerResult
.
getCode
(),
ResultCodeEnum
.
SUCCESS
.
getCode
())){
userNo
=
truckOwnerResult
.
getData
().
getUserNo
();
}
}
else
{
position
.
setChildNo
(
child
.
getChildNo
());
//车辆有运单 取运单司机手机位置
userNo
=
child
.
getDriverUserNo
();
}
if
(
Objects
.
nonNull
(
userNo
)){
List
<
DriverTraceVO
>
traceVOS
=
truckTraceService
.
listDriverTraceByTime
(
userNo
,
beginTimeStr
,
endTimeStr
);
if
(!
CollectionUtils
.
isEmpty
(
traceVOS
)){
position
.
setLatitude
(
traceVOS
.
get
(
0
).
getLatitude
());
position
.
setLongitude
(
traceVOS
.
get
(
0
).
getLongitude
());
}
}
truckPositionList
.
add
(
position
);
}
else
{
//有中交轨迹
TruckPosition
position
=
new
TruckPosition
();
position
.
setTruckNo
(
truckNo
);
position
.
setDeleteStatus
(
DeleteStatusEnum
.
NO
.
getCode
());
if
(
Objects
.
nonNull
(
child
)){
position
.
setChildNo
(
child
.
getChildNo
());
}
BigDecimal
[]
location
=
trace
.
getLocation
();
if
(
location
.
length
>
1
){
position
.
setLatitude
(
location
[
1
]);
position
.
setLongitude
(
location
[
0
]);
}
truckPositionList
.
add
(
position
);
}
}
//保存
truckPositionDao
.
replaceTruckPosition
(
truckPositionList
);
}
else
{
log
.
info
(
"通过clx-user服务获取平台认证成功车辆,获取失败"
);
}
}
}
performance-web/src/main/java/com/clx/performance/mapper/TruckPositionMapper.java
0 → 100644
浏览文件 @
5e41b15a
package
com
.
clx
.
performance
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.clx.performance.model.TruckPosition
;
import
com.clx.performance.sqlProvider.TruckPositionProvider
;
import
org.apache.ibatis.annotations.InsertProvider
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
* 车辆位置;
*
* @author : jiangwenye
* @date : 2024-05-29
*/
@Mapper
public
interface
TruckPositionMapper
extends
BaseMapper
<
TruckPosition
>
{
@InsertProvider
(
type
=
TruckPositionProvider
.
class
,
method
=
"replaceTruckPosition"
)
void
replaceTruckPosition
(
List
<
TruckPosition
>
truckPositionList
);
}
performance-web/src/main/java/com/clx/performance/model/TruckPosition.java
0 → 100644
浏览文件 @
5e41b15a
package
com
.
clx
.
performance
.
model
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.msl.common.config.KeyColumn
;
import
com.msl.common.model.HasKey
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.experimental.Accessors
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
/**
* 车辆位置;
*
* @author : jiangwenye
* @date : 2024-05-29
*/
@Getter
@Setter
@Accessors
(
chain
=
true
)
@TableName
(
"truck_position"
)
public
class
TruckPosition
implements
HasKey
<
Integer
>
{
/**
* id
*/
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
/**
* 车牌号
*/
@TableField
(
"truck_no"
)
private
String
truckNo
;
/**
* 运单编号
*/
@TableField
(
"child_no"
)
private
String
childNo
;
/**
* 运单状态
*/
@TableField
(
"child_status"
)
private
Integer
childStatus
;;
/**
* 运单目的地所在省份
*/
@TableField
(
"child_province"
)
private
String
childProvince
;
/**
* 车辆位置所在省份
*/
@TableField
(
"truck_province"
)
private
String
truckProvince
;
/**
* 经度
*/
@TableField
(
"longitude"
)
private
BigDecimal
longitude
;
/**
* 纬度
*/
@TableField
(
"latitude"
)
private
BigDecimal
latitude
;
/**
* 删除状态: 0-否;1-是
*/
@TableField
(
"delete_status"
)
private
Integer
deleteStatus
;
/**
* 创建时间
*/
@TableField
(
"create_time"
)
private
LocalDateTime
createTime
;
@TableField
(
"modified_time"
)
private
LocalDateTime
modifiedTime
;
@KeyColumn
(
"id"
)
@Override
public
Integer
gainKey
()
{
return
id
;
}
}
performance-web/src/main/java/com/clx/performance/sqlProvider/TruckPositionProvider.java
0 → 100644
浏览文件 @
5e41b15a
package
com
.
clx
.
performance
.
sqlProvider
;
import
com.clx.order.enums.DeleteStatusEnum
;
import
com.clx.performance.model.TruckPosition
;
import
org.apache.commons.lang.StringUtils
;
import
java.util.List
;
import
java.util.Objects
;
/**
* 车辆位置;
*
* @author : jiangwenye
* @date : 2024-05-29
*/
public
class
TruckPositionProvider
{
public
String
replaceTruckPosition
(
List
<
TruckPosition
>
truckPositionList
)
{
StringBuffer
sqlList
=
new
StringBuffer
();
sqlList
.
append
(
" REPLACE INTO truck_position "
+
"(truck_no,child_no,child_status,child_province,truck_province,"
+
"longitude,latitude,delete_status) "
+
" VALUES "
);
for
(
int
i
=
0
;
i
<
truckPositionList
.
size
();
i
++)
{
TruckPosition
tp
=
truckPositionList
.
get
(
i
);
sqlList
.
append
(
" ('"
)
.
append
(
tp
.
getTruckNo
()).
append
(
"','"
)
.
append
(
StringUtils
.
isEmpty
(
tp
.
getChildNo
())?
""
:
tp
.
getChildNo
()).
append
(
"',"
)
.
append
(
Objects
.
isNull
(
tp
.
getChildStatus
())?
0
:
tp
.
getChildStatus
()).
append
(
",'"
)
.
append
(
StringUtils
.
isEmpty
(
tp
.
getChildProvince
())?
""
:
tp
.
getChildProvince
()).
append
(
"','"
)
.
append
(
StringUtils
.
isEmpty
(
tp
.
getTruckProvince
())?
""
:
tp
.
getTruckProvince
()).
append
(
"',"
)
.
append
(
Objects
.
isNull
(
tp
.
getLongitude
())?
0
:
tp
.
getLongitude
()).
append
(
","
)
.
append
(
Objects
.
isNull
(
tp
.
getLatitude
())?
0
:
tp
.
getLatitude
()).
append
(
","
)
.
append
(
DeleteStatusEnum
.
NO
.
getCode
())
.
append
(
")"
);
if
(
i
<
truckPositionList
.
size
()
-
1
)
{
sqlList
.
append
(
","
);
}
}
return
sqlList
.
toString
();
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论