Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
06c8bb40
Commit
06c8bb40
authored
May 08, 2023
by
lisong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加0点里程切分定时任务
parent
bd0e3901
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
183 additions
and
2 deletions
+183
-2
WlCarMileageController.java
...eejoin/equipmanage/controller/WlCarMileageController.java
+13
-0
WlCarMileageMapper.java
...va/com/yeejoin/equipmanage/mapper/WlCarMileageMapper.java
+5
-1
IWlCarMileageService.java
...com/yeejoin/equipmanage/service/IWlCarMileageService.java
+7
-0
WlCarMileageServiceImpl.java
...oin/equipmanage/service/impl/WlCarMileageServiceImpl.java
+141
-1
application-dev.properties
...ystem-equip/src/main/resources/application-dev.properties
+6
-0
WlCarMileageMapper.xml
...em-equip/src/main/resources/mapper/WlCarMileageMapper.xml
+11
-0
No files found.
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/controller/WlCarMileageController.java
View file @
06c8bb40
...
...
@@ -246,4 +246,17 @@ public class WlCarMileageController {
@DateTimeFormat
(
pattern
=
"yyyy-MM"
)
@RequestParam
(
"date"
)
Date
date
)
{
return
iWlCarMileageService
.
getCalender
(
id
,
date
);
}
/**
* 里程切分
*/
@RequestMapping
(
value
=
"/mileageSegmentation"
,
method
=
RequestMethod
.
GET
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"里程切分"
,
notes
=
"里程切分"
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
public
void
mileageSegmentation
()
{
iWlCarMileageService
.
mileageSegmentation
();
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/mapper/WlCarMileageMapper.java
View file @
06c8bb40
...
...
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.yeejoin.equipmanage.common.entity.WlCarMileage
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* 车量里程表 Mapper 接口
*
...
...
@@ -13,8 +15,10 @@ import org.apache.ibatis.annotations.Param;
*/
public
interface
WlCarMileageMapper
extends
BaseMapper
<
WlCarMileage
>
{
Page
<
WlCarMileage
>
page
(
Page
<
WlCarMileage
>
page
,
@Param
(
"wlCarMileage"
)
WlCarMileage
wlCarMileage
);
Page
<
WlCarMileage
>
page
(
Page
<
WlCarMileage
>
page
,
@Param
(
"wlCarMileage"
)
WlCarMileage
wlCarMileage
,
@Param
(
"mileageParameter"
)
Double
mileageParameter
);
Double
totalMileage
(
String
iotCode
);
List
<
WlCarMileage
>
list
();
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/service/IWlCarMileageService.java
View file @
06c8bb40
...
...
@@ -25,4 +25,11 @@ public interface IWlCarMileageService extends IService<WlCarMileage> {
Map
<
String
,
Boolean
>
getCalender
(
long
id
,
Date
date
);
/**
* 里程切分(0点若里程未结束,自动切分设置结束信息,并开始新里程)
*/
void
mileageSegmentation
();
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/service/impl/WlCarMileageServiceImpl.java
View file @
06c8bb40
...
...
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yeejoin.equipmanage.common.entity.Car
;
import
com.yeejoin.equipmanage.common.entity.WlCarMileage
;
import
com.yeejoin.equipmanage.common.utils.CoordinateUtil
;
import
com.yeejoin.equipmanage.common.utils.HttpUtil
;
import
com.yeejoin.equipmanage.controller.Coordinate
;
import
com.yeejoin.equipmanage.fegin.IotFeign
;
...
...
@@ -15,7 +16,11 @@ import com.yeejoin.equipmanage.mapper.WlCarMileageMapper;
import
com.yeejoin.equipmanage.service.ICarService
;
import
com.yeejoin.equipmanage.service.IWlCarMileageService
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.ibatis.logging.Log
;
import
org.apache.ibatis.logging.LogFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
...
...
@@ -49,13 +54,20 @@ public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlC
@Autowired
ICarService
iCarService
;
@Value
(
"${mileage.parameter}"
)
private
Double
mileageParameter
;
protected
Log
log
=
LogFactory
.
getLog
(
WlCarMileageServiceImpl
.
class
);
private
final
String
GUIDE_KEY
=
"813684495d9a3981dd2c7694916fe404"
;
private
final
String
GUIDE_URL
=
"https://restapi.amap.com/v4/grasproad/driving?"
;
private
final
String
GUIDE_ADDRESS_URL
=
"https://restapi.amap.com/v3/geocode/regeo?"
;
@Override
public
Page
<
WlCarMileage
>
page
(
Page
<
WlCarMileage
>
page
,
WlCarMileage
wlCarMileage
)
{
return
this
.
baseMapper
.
page
(
page
,
wlCarMileage
);
return
this
.
baseMapper
.
page
(
page
,
wlCarMileage
,
mileageParameter
);
}
@Override
...
...
@@ -261,4 +273,132 @@ public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlC
return
data
;
}
@Override
@Scheduled
(
cron
=
"${mileage.segmentation.cron}"
)
public
void
mileageSegmentation
()
{
List
<
WlCarMileage
>
list
=
this
.
baseMapper
.
list
();
list
.
forEach
(
item
->
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
item
.
getDate
());
calendar
.
add
(
Calendar
.
DATE
,
1
);
Date
date
=
calendar
.
getTime
();
if
(!
ObjectUtils
.
isEmpty
(
item
.
getIotCode
())
&&
item
.
getIotCode
().
length
()
>
8
)
{
// 查询车辆上报信息
ResponseModel
<
List
<
Object
>>
result
=
iotFeign
.
getLiveData
(
item
.
getIotCode
().
substring
(
0
,
8
),
item
.
getIotCode
().
substring
(
8
),
item
.
getStartTime
(),
new
Date
(
new
Date
().
getTime
()
+
2000
));
List
<
Object
>
list1
=
result
.
getResult
();
// 获取最后一个有坐标的数据
JSONObject
lastObj
=
null
;
// 过滤空坐标
List
<
Object
>
filterList
=
new
ArrayList
<
Object
>();
for
(
int
i
=
0
;
i
<
list1
.
size
();
i
++)
{
JSONObject
Obj
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
list1
.
get
(
i
)));
if
(
Obj
.
get
(
"FireCar_Longitude"
)
!=
null
&&
Obj
.
get
(
"FireCar_Latitude"
)
!=
null
&&
Obj
.
getDoubleValue
(
"FireCar_Longitude"
)
!=
0
&&
Obj
.
getDoubleValue
(
"FireCar_Latitude"
)
!=
0
)
{
filterList
.
add
(
list1
.
get
(
i
));
// 获取第一个不为空的坐标
if
(
lastObj
==
null
)
{
lastObj
=
Obj
;
}
}
}
if
(
lastObj
==
null
)
{
lastObj
=
new
JSONObject
();
lastObj
.
put
(
"FireCar_Longitude"
,
0.0
);
lastObj
.
put
(
"FireCar_Latitude"
,
0.0
);
lastObj
.
put
(
"time"
,
0
);
lastObj
.
put
(
"FireCar_Speed"
,
0
);
}
// 当前坐标
double
startLongitude
=
lastObj
.
getDoubleValue
(
"FireCar_Longitude"
);
double
startLatitude
=
lastObj
.
getDoubleValue
(
"FireCar_Latitude"
);
// 当前速度
double
v
=
Double
.
parseDouble
(
String
.
valueOf
(
lastObj
.
get
(
"FireCar_Speed"
)));
int
ceil
=
(
int
)
Math
.
ceil
(
v
);
item
.
setStartSpeed
(
ceil
);
double
travel
=
0.0
;
// 获取里程
for
(
int
i
=
0
;
i
<
filterList
.
size
()
-
1
;
i
++)
{
JSONObject
start
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filterList
.
get
(
i
)));
JSONObject
end
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filterList
.
get
(
i
+
1
)));
travel
+=
CoordinateUtil
.
distance
(
start
.
getDoubleValue
(
"FireCar_Latitude"
),
start
.
getDoubleValue
(
"FireCar_Longitude"
),
end
.
getDoubleValue
(
"FireCar_Latitude"
),
end
.
getDoubleValue
(
"FireCar_Longitude"
));
}
// 查询车辆最新位置
String
address
=
getAddress
(
startLongitude
,
startLatitude
);
// 里程耗时
long
takeTime
=
(
date
.
getTime
())
-
(
item
.
getStartTime
().
getTime
());
// 修改0点未结束里程记录
item
.
setEndSpeed
(
ceil
);
item
.
setEndTime
(
date
);
item
.
setEndLatitude
(
startLatitude
);
item
.
setEndLongitude
(
startLongitude
);
item
.
setEndName
(
address
);
item
.
setTravel
(
new
BigDecimal
(
travel
/
1000
).
setScale
(
1
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
item
.
setTakeTime
(
takeTime
);
this
.
getBaseMapper
().
updateById
(
item
);
// 从0点开启新里程
item
.
setStartName
(
address
);
item
.
setDate
(
date
);
item
.
setId
(
null
);
item
.
setEndSpeed
(
null
);
item
.
setEndTime
(
null
);
item
.
setEndLatitude
(
null
);
item
.
setEndLongitude
(
null
);
item
.
setEndName
(
null
);
item
.
setTravel
(
null
);
item
.
setTakeTime
(
null
);
item
.
setStartSpeed
(
ceil
);
item
.
setStartTime
(
item
.
getDate
());
item
.
setStartLongitude
(
startLongitude
);
item
.
setStartLatitude
(
startLatitude
);
this
.
baseMapper
.
insert
(
item
);
}
});
}
private
String
getAddress
(
double
longitude
,
double
lantitude
)
{
StringBuilder
api
=
new
StringBuilder
(
GUIDE_ADDRESS_URL
);
api
.
append
(
"key="
).
append
(
GUIDE_KEY
).
append
(
"&location="
).
append
(
longitude
).
append
(
","
).
append
(
lantitude
)
.
append
(
"&radius=1000"
).
append
(
"&batch=false"
).
append
(
"&extensions=base"
).
append
(
"&roadlevel=0"
)
.
append
(
"&batch=false"
);
StringBuilder
res
=
new
StringBuilder
();
BufferedReader
in
=
null
;
try
{
System
.
out
.
println
(
api
.
toString
());
URL
url
=
new
URL
(
api
.
toString
());
HttpURLConnection
conn
=
(
HttpURLConnection
)
url
.
openConnection
();
conn
.
setDoOutput
(
true
);
conn
.
setRequestMethod
(
"POST"
);
in
=
new
BufferedReader
(
new
InputStreamReader
(
conn
.
getInputStream
(),
"UTF-8"
));
String
line
;
while
((
line
=
in
.
readLine
())
!=
null
)
{
res
.
append
(
line
).
append
(
"\n"
);
}
JSONObject
object
=
JSONObject
.
parseObject
(
res
.
toString
());
JSONObject
regeocode
=
object
.
getJSONObject
(
"regeocode"
);
String
address
=
regeocode
.
getString
(
"formatted_address"
);
if
(
"[]"
.
equals
(
address
))
{
address
=
"无效坐标"
;
}
res
=
new
StringBuilder
(
address
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
in
!=
null
)
{
in
.
close
();
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
return
res
.
toString
();
}
}
amos-boot-system-equip/src/main/resources/application-dev.properties
View file @
06c8bb40
...
...
@@ -130,3 +130,8 @@ is.open.telemetering=false
# 水池液位相关信号
water.level.indexKey
=
FHS_FirePoolDevice_WaterLevel,FHS_LevelDetector_WaterLevel,FHS_WirelessliquidDetector_WaterLevel,CAFS_FoamTank_FoamTankLevel,CAFS_WaterTank_WaterTankLevel
# 江西电建-车辆里程过滤参数(单位KM)
mileage.parameter
=
0.5
# 江西电建-车辆里程跨天记录切分(每日0点执行)
mileage.segmentation.cron
=
0 20 16 * * ?
\ No newline at end of file
amos-boot-system-equip/src/main/resources/mapper/WlCarMileageMapper.xml
View file @
06c8bb40
...
...
@@ -29,6 +29,7 @@
FROM wl_car_mileage
LEFT JOIN wl_car ON wl_car.iot_code = wl_car_mileage.iot_code
<where>
wl_car_mileage.travel >= #{mileageParameter}
<if
test=
"wlCarMileage.carId != null"
>
AND wl_car.id = #{wlCarMileage.carId}
</if>
...
...
@@ -43,4 +44,14 @@
</if>
</where>
</select>
<select
id=
"list"
resultType=
"com.yeejoin.equipmanage.common.entity.WlCarMileage"
>
SELECT
*
FROM
`wl_car_mileage` wcm
WHERE
wcm.date = DATE_FORMAT( NOW( ), '%Y-%m-%d' )
AND wcm.start_time IS NOT NULL
AND wcm.end_time IS NULL
</select>
</mapper>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment