Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-performance
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
姜武杰
clx-performance
Commits
309f1b30
提交
309f1b30
authored
5月 11, 2024
作者:
刘海泉
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
commit es code
上级
98c1cff1
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
240 行增加
和
0 行删除
+240
-0
TruckTraceServiceImpl.java
...performance/service/impl/trace/TruckTraceServiceImpl.java
+217
-0
TruckTraceService.java
.../com/clx/performance/service/trace/TruckTraceService.java
+23
-0
没有找到文件。
performance-web/src/main/java/com/clx/performance/service/impl/trace/TruckTraceServiceImpl.java
0 → 100644
浏览文件 @
309f1b30
package
com
.
clx
.
performance
.
service
.
impl
.
trace
;
import
com.clx.performance.esplus.mapper.DriverTraceESPlusMapper
;
import
com.clx.performance.esplus.mapper.TruckTraceESPlusMapper
;
import
com.clx.performance.esplus.model.DriverTraceESPlus
;
import
com.clx.performance.esplus.model.TruckTraceESPlus
;
import
com.clx.performance.param.temp.DriverTraceAddParam
;
import
com.clx.performance.param.temp.TruckTraceAddParam
;
import
com.clx.performance.service.trace.TruckTraceService
;
import
com.clx.performance.struct.trace.DriverTraceStruct
;
import
com.clx.performance.struct.trace.TruckTraceStruct
;
import
com.clx.performance.utils.LocalDateTimeUtils
;
import
com.clx.performance.vo.pc.trace.DriverTraceVO
;
import
com.clx.performance.vo.pc.trace.DriverTruckTraceVO
;
import
lombok.extern.slf4j.Slf4j
;
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
;
@Autowired
private
DriverTraceESPlusMapper
driverTraceESPlusMapper
;
@Autowired
private
TruckTraceStruct
truckTraceStruct
;
@Autowired
private
DriverTraceStruct
driverTraceStruct
;
@Override
public
List
<
DriverTruckTraceVO
>
listTruckTraceByTime
(
String
truckNo
,
String
beginTime
,
String
endTime
)
{
List
<
TruckTraceESPlus
>
list
=
truckTraceESPlusMapper
.
selectList
(
new
LambdaEsQueryWrapper
<
TruckTraceESPlus
>()
.
eq
(
TruckTraceESPlus:
:
getTruckNo
,
truckNo
)
.
ge
(
TruckTraceESPlus:
:
getGpsTime
,
beginTime
)
.
le
(
TruckTraceESPlus:
:
getGpsTime
,
endTime
)
.
orderByAsc
(
"gpsTime"
)
);
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
traceList
;
}
@Override
public
List
<
DriverTraceVO
>
listDriverTraceByTime
(
Long
userNo
,
String
beginTime
,
String
endTime
)
{
List
<
DriverTraceESPlus
>
list
=
driverTraceESPlusMapper
.
selectList
(
new
LambdaEsQueryWrapper
<
DriverTraceESPlus
>()
.
eq
(
DriverTraceESPlus:
:
getUserNo
,
userNo
)
.
ge
(
DriverTraceESPlus:
:
getPositionTime
,
beginTime
)
.
le
(
DriverTraceESPlus:
:
getPositionTime
,
endTime
)
.
orderByAsc
(
"positionTime"
)
);
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
traceList
;
}
@Override
public
void
truckTraceSave
(
TruckTraceAddParam
param
){
List
<
TruckTraceESPlus
>
list
=
new
ArrayList
<>();
for
(
TruckTraceAddParam
.
TruckTraceItem
item
:
param
.
getTraceList
())
{
TruckTraceESPlus
es
=
new
TruckTraceESPlus
();
es
.
setTruckNo
(
item
.
getTruckNo
());
es
.
setAngle
(
item
.
getAngle
());
es
.
setHeight
(
item
.
getHeight
());
es
.
setLocation
(
item
.
getLocation
());
es
.
setGpsTime
(
item
.
getGpsTime
());
es
.
setMileage
(
item
.
getMileage
());
es
.
setSpeed
(
item
.
getSpeed
());
es
.
setCreateTime
(
LocalDateTimeUtils
.
formatTime
());
list
.
add
(
es
);
}
truckTraceESPlusMapper
.
insertBatch
(
list
);
}
@Override
public
void
driverTraceSave
(
DriverTraceAddParam
param
){
List
<
DriverTraceESPlus
>
list
=
new
ArrayList
<>();
for
(
DriverTraceAddParam
.
DriverTraceItem
item
:
param
.
getTraceList
())
{
DriverTraceESPlus
es
=
new
DriverTraceESPlus
();
es
.
setUserNo
(
item
.
getUserNo
());
es
.
setDataType
(
item
.
getDataType
());
es
.
setLocation
(
item
.
getLocation
());
es
.
setPositionTime
(
item
.
getGpsTime
());
es
.
setCreateTime
(
LocalDateTimeUtils
.
formatTime
());
es
.
setModifiedTime
(
es
.
getCreateTime
());
list
.
add
(
es
);
}
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/trace/TruckTraceService.java
0 → 100644
浏览文件 @
309f1b30
package
com
.
clx
.
performance
.
service
.
trace
;
import
com.clx.performance.param.temp.DriverTraceAddParam
;
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
{
List
<
DriverTruckTraceVO
>
listTruckTraceByTime
(
String
truckNo
,
String
beginTime
,
String
endTime
);
List
<
DriverTraceVO
>
listDriverTraceByTime
(
Long
userNo
,
String
beginTime
,
String
endTime
);
void
truckTraceSave
(
TruckTraceAddParam
param
);
void
driverTraceSave
(
DriverTraceAddParam
param
);
BigDecimal
[]
getCurrentPosition
(
String
truckNo
,
Long
userNo
);
int
getParkTime
(
String
truckNo
,
Long
userNo
);
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论