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
57852ef3
Commit
57852ef3
authored
Nov 08, 2023
by
李秀明
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop_dl' into develop_dl
# Conflicts: # amos-boot-system-patrol/src/main/resources/db/mapper/dbTemplate_plan_task.xml
parents
8e8b2fa2
f03986dc
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
675 additions
and
512 deletions
+675
-512
CarSpeedWarningRecord.java
...join/equipmanage/common/entity/CarSpeedWarningRecord.java
+56
-0
SignMapper.java
...m/yeejoin/amos/boot/module/jcs/api/mapper/SignMapper.java
+1
-1
SignMapper.xml
...t-module-jcs-api/src/main/resources/mapper/SignMapper.xml
+11
-9
CarController.java
...ava/com/yeejoin/equipmanage/controller/CarController.java
+24
-12
CarExportDto.java
...c/main/java/com/yeejoin/equipmanage/dto/CarExportDto.java
+2
-0
MileageDto.java
...src/main/java/com/yeejoin/equipmanage/dto/MileageDto.java
+2
-0
CarIotNewListener.java
...a/com/yeejoin/equipmanage/listener/CarIotNewListener.java
+27
-1
WlCarSpeedWaringRecordMapper.java
...join/equipmanage/mapper/WlCarSpeedWaringRecordMapper.java
+7
-0
ICarService.java
...ain/java/com/yeejoin/equipmanage/service/ICarService.java
+10
-14
CarServiceImpl.java
.../com/yeejoin/equipmanage/service/impl/CarServiceImpl.java
+487
-424
MqttReceiveServiceImpl.java
...join/equipmanage/service/impl/MqttReceiveServiceImpl.java
+3
-1
application-dev.properties
...ystem-equip/src/main/resources/application-dev.properties
+41
-36
application.properties
...ot-system-equip/src/main/resources/application.properties
+4
-14
No files found.
amos-boot-module/amos-boot-module-api/amos-boot-module-equip-api/src/main/java/com/yeejoin/equipmanage/common/entity/CarSpeedWarningRecord.java
0 → 100644
View file @
57852ef3
package
com
.
yeejoin
.
equipmanage
.
common
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler
;
import
com.yeejoin.equipmanage.common.entity.publics.BaseEntity
;
import
com.yeejoin.equipmanage.common.entity.vo.EquipmentOnCarAppVO
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.springframework.data.elasticsearch.annotations.Field
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* 消防车信息
*
* @author wujiang
* @date 2020-07-07
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
@TableName
(
value
=
"wl_car_speed_warning_record"
,
autoResultMap
=
true
)
@ApiModel
(
value
=
"车辆告警信息实体类"
,
description
=
"车辆告警信息"
)
public
class
CarSpeedWarningRecord
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"车牌号"
)
private
String
carNum
;
@ApiModelProperty
(
value
=
"告警时间"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
waringDate
;
@ApiModelProperty
(
value
=
"超速值"
)
@TableField
(
"over_speed"
)
private
Double
overSpeed
;
@ApiModelProperty
(
value
=
"机构/部门名称"
)
@TableField
(
"biz_org_name"
)
private
String
bizOrgName
;
// 2023年11月6日 11点16分添加
@ApiModelProperty
(
value
=
"司机"
)
@TableField
(
"driver"
)
private
String
driver
;
// 2023年11月6日 11点16分添加
@ApiModelProperty
(
value
=
"联系电话"
)
@TableField
(
"phone"
)
private
String
phone
;
@ApiModelProperty
(
value
=
"联系电话"
)
@TableField
(
"ownership"
)
private
String
ownership
;
}
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/mapper/SignMapper.java
View file @
57852ef3
...
...
@@ -23,7 +23,7 @@ public interface SignMapper extends BaseMapper<Sign> {
IPage
<
SinStaticDto
>
queryStaticForPage
(
IPage
<?>
page
,
SinStaticDto
dto
);
List
<
Map
<
String
,
Object
>>
queryPeopleInfo
(
SinStaticDto
dto
);
List
<
Map
<
String
,
Object
>>
queryPeopleInfo
(
@Param
(
"dto"
)
SinStaticDto
dto
);
int
queryPersonNum
(
String
bizOgrCode
);
...
...
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/resources/mapper/SignMapper.xml
View file @
57852ef3
...
...
@@ -93,12 +93,16 @@
) s1
LEFT JOIN (
SELECT
count(
userId)
signNum,
s.*
count(
s0.userId) AS
signNum,
s
0
.*
FROM
(
SELECT
DISTINCT sign.user_id userId,
s.*
FROM
(
SELECT DISTINCT
sign.user_id userId,
date,
biz_org_Name bizOrgName,
biz_org_code bizOrgCode,
...
...
@@ -113,13 +117,11 @@
and sign.biz_org_code like CONCAT(#{dto.bizOrgCode},'%')
</if>
</where>
group by
date,
biz_org_code,
user_id
order by
sign.sign_time desc
ORDER BY
sign.sign_time DESC
) s
) s0
GROUP BY s0.date
) s2 ON s2.date = s1.date
GROUP BY
s1.date
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/controller/CarController.java
View file @
57852ef3
...
...
@@ -473,7 +473,7 @@ public class CarController extends AbstractBaseController {
/**
* 根据车辆id查询车辆详情信息,供iot_tree展示
*
* @param
carNum
* @param
id
* @return
*/
@RequestMapping
(
value
=
"/threeDimensional/getCarDetailById/{id}"
,
method
=
RequestMethod
.
GET
)
...
...
@@ -1337,7 +1337,7 @@ public class CarController extends AbstractBaseController {
/**
* 根据查询车辆简要信息
*
* @param
id
* @param
carNum
* @return
*/
@RequestMapping
(
value
=
"/state/info"
,
method
=
RequestMethod
.
GET
)
...
...
@@ -1415,15 +1415,15 @@ public class CarController extends AbstractBaseController {
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@RequestMapping
(
value
=
"/getCarEquipStateInfo"
,
method
=
RequestMethod
.
GET
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"车辆统计-获取设备状态信息"
,
notes
=
"车辆统计-获取设备状态信息"
)
public
Page
<
CarEquipStateInfoDto
>
getCarEquipStateInfo
()
{
return
iCarService
.
getCarEquipStateInfo
();
public
Page
<
CarEquipStateInfoDto
>
getCarEquipStateInfo
(
@RequestParam
(
required
=
false
)
String
keyWord
,
@RequestParam
String
flag
)
{
return
iCarService
.
getCarEquipStateInfo
(
keyWord
);
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@RequestMapping
(
value
=
"/getCarEquipAlarmInfoDto"
,
method
=
RequestMethod
.
GET
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"车辆统计-获取设备告警信息"
,
notes
=
"车辆统计-获取设备告警信息"
)
public
Page
<
CarEquipAlarmInfoDto
>
getCarEquipAlarmInfoDto
()
{
return
iCarService
.
getCarEquipAlarmInfoDto
();
public
Page
<
CarEquipAlarmInfoDto
>
getCarEquipAlarmInfoDto
(
@RequestParam
(
required
=
false
)
String
keyWord
,
@RequestParam
String
flag
)
{
return
iCarService
.
getCarEquipAlarmInfoDto
(
keyWord
);
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
...
...
@@ -1443,15 +1443,15 @@ public class CarController extends AbstractBaseController {
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@RequestMapping
(
value
=
"/getCarMileageInfoByMoth"
,
method
=
RequestMethod
.
GET
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"车辆统计-按照月份统计车辆里程"
,
notes
=
"车辆统计-按照月份统计车辆里程"
)
public
BasicTableDataDto
getCarMileageInfoByMoth
(
@RequestParam
(
required
=
false
)
String
date
,
@RequestParam
Integer
current
,
@RequestParam
Integer
size
)
{
return
iCarService
.
getCarMileageInfoByMoth
(
date
,
current
,
size
);
public
BasicTableDataDto
getCarMileageInfoByMoth
(
@RequestParam
(
required
=
false
)
String
date
,
@RequestParam
Integer
current
,
@RequestParam
Integer
size
,
@RequestParam
(
required
=
false
)
String
keyWord
)
{
return
iCarService
.
getCarMileageInfoByMoth
(
date
,
current
,
size
,
keyWord
);
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@RequestMapping
(
value
=
"/exportCarMileageInfoByMoth"
,
method
=
RequestMethod
.
GET
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"车辆统计-按照月份统计导出车辆里程"
,
notes
=
"车辆统计-按照月份统计导出车辆里程"
)
public
void
exportCarMileageInfoByMoth
(
@RequestParam
(
required
=
false
)
String
date
,
HttpServletResponse
response
)
{
List
<
CarExportDto
>
list
=
this
.
iCarService
.
exportCarMileageInfoByMoth
(
date
);
public
void
exportCarMileageInfoByMoth
(
@RequestParam
(
required
=
false
)
String
date
,
@RequestParam
(
required
=
false
)
String
keyWord
,
HttpServletResponse
response
)
{
List
<
CarExportDto
>
list
=
this
.
iCarService
.
exportCarMileageInfoByMoth
(
date
,
keyWord
);
if
(
org
.
springframework
.
util
.
StringUtils
.
isEmpty
(
date
))
{
date
=
DateUtil
.
format
(
new
Date
(),
"yyyy-MM"
);
}
...
...
@@ -1469,7 +1469,19 @@ public class CarController extends AbstractBaseController {
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@RequestMapping
(
value
=
"/getCarExcepitonTrack"
,
method
=
RequestMethod
.
GET
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"车辆统计-按照日期范围获取异常车辆"
,
notes
=
"车辆统计-按照日期范围获取异常车辆"
)
public
Page
<
CarExceptionDto
>
getCarExcepitonTrack
(
@RequestParam
Integer
type
)
{
return
iCarService
.
getCarExcepitonTrack
(
type
);
public
Page
<
CarExceptionDto
>
getCarExcepitonTrack
(
@RequestParam
Integer
type
,
@RequestParam
(
required
=
false
)
String
keyWord
)
{
return
iCarService
.
getCarExcepitonTrack
(
type
,
keyWord
);
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@RequestMapping
(
value
=
"/getCarWarningRecord"
,
method
=
RequestMethod
.
GET
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"车辆统计-获取超速信息"
,
notes
=
"车辆统计-获取超速信息"
)
public
Page
<
CarSpeedWarningRecord
>
getCarWarningRecord
(
@RequestParam
(
required
=
false
)
String
keyWord
,
@RequestParam
String
flag
)
{
return
iCarService
.
getCarWarningRecord
(
keyWord
);
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@RequestMapping
(
value
=
"/getBizOrgName"
,
method
=
RequestMethod
.
GET
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"车辆统计-获取归属单位下拉框值"
,
notes
=
"车辆统计-获取归属单位下拉框值"
)
public
List
<
Map
<
String
,
String
>>
getBizOrgName
(
@RequestParam
(
required
=
false
)
String
keyWord
)
{
return
iCarService
.
getBizOrgName
();
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/dto/CarExportDto.java
View file @
57852ef3
...
...
@@ -22,4 +22,6 @@ public class CarExportDto {
@Excel
(
name
=
"里程数(km)"
)
private
String
totalTravel
;
private
String
totalTravelValue
;
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/dto/MileageDto.java
View file @
57852ef3
...
...
@@ -16,4 +16,6 @@ public class MileageDto {
private
String
number
;
//iotCode+date
private
String
iotCode
;
//所属单位
private
String
bizOrgName
;
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/listener/CarIotNewListener.java
View file @
57852ef3
package
com
.
yeejoin
.
equipmanage
.
listener
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yeejoin.equipmanage.common.entity.Car
;
import
com.yeejoin.equipmanage.common.entity.CarSpeedWarningRecord
;
import
com.yeejoin.equipmanage.common.entity.WlCarMileage
;
import
com.yeejoin.equipmanage.fegin.IotFeign
;
import
com.yeejoin.equipmanage.mapper.WlCarSpeedWaringRecordMapper
;
import
com.yeejoin.equipmanage.service.ICarService
;
import
com.yeejoin.equipmanage.service.IWlCarMileageService
;
import
com.yeejoin.equipmanage.thread.ThreadCar
;
...
...
@@ -43,8 +47,13 @@ public class CarIotNewListener extends EmqxListener {
@Autowired
private
IotFeign
iotFeign
;
@Autowired
private
WlCarSpeedWaringRecordMapper
wlCarSpeedWaringRecordMapper
;
@Value
(
"${mileage.clippingtime:600000}"
)
private
Long
clipping_time
;
@Value
(
"${default.maxspeed:70.0}"
)
private
Double
defaultMaxSpeed
;
private
final
String
GUIDE_KEY
=
"813684495d9a3981dd2c7694916fe404"
;
private
final
String
GUIDE_URL
=
"https://restapi.amap.com/v3/geocode/regeo?"
;
...
...
@@ -191,7 +200,9 @@ public class CarIotNewListener extends EmqxListener {
double
startLongitude
=
jsonObject
.
getDoubleValue
(
"FireCar_Longitude"
);
double
startLatitude
=
jsonObject
.
getDoubleValue
(
"FireCar_Latitude"
);
int
direction
=
jsonObject
.
getIntValue
(
"direction"
);
String
waringDate
=
jsonObject
.
getString
(
"createdTime"
);
Double
speed
=
jsonObject
.
getDoubleValue
(
"FireCar_Speed"
);
Double
maxSpeed
=
defaultMaxSpeed
;
// 地图推送消息
Car
car
=
iCarService
.
getOne
(
new
LambdaQueryWrapper
<
Car
>().
eq
(
Car:
:
getIotCode
,
iotCode
));
if
(
car
!=
null
&&
startLongitude
!=
0
&&
startLatitude
!=
0
)
{
...
...
@@ -208,7 +219,22 @@ public class CarIotNewListener extends EmqxListener {
mqttMessage
.
setPayload
(
sendArr
.
toJSONString
().
getBytes
());
car
.
setLongitude
(
startLongitude
);
car
.
setLatitude
(
startLatitude
);
if
(!
ObjectUtils
.
isEmpty
(
car
.
getMaxSpeed
())){
maxSpeed
=
car
.
getMaxSpeed
();
}
iCarService
.
updateById
(
car
);
if
(
speed
>
maxSpeed
){
CarSpeedWarningRecord
carSpeedWarningRecord
=
new
CarSpeedWarningRecord
();
carSpeedWarningRecord
.
setCarNum
(
car
.
getCarNum
());
carSpeedWarningRecord
.
setDriver
(
car
.
getDriver
());
carSpeedWarningRecord
.
setPhone
(
car
.
getPhone
());
carSpeedWarningRecord
.
setOverSpeed
(
speed
-
maxSpeed
);
carSpeedWarningRecord
.
setOwnership
(
car
.
getOwnership
());
carSpeedWarningRecord
.
setBizOrgName
(
car
.
getBizOrgName
());
carSpeedWarningRecord
.
setWaringDate
(
DateUtil
.
parse
(
waringDate
,
DatePattern
.
NORM_DATETIME_PATTERN
));
wlCarSpeedWaringRecordMapper
.
insert
(
carSpeedWarningRecord
);
logger
.
info
(
"-----------触发车辆超速告警成功--------"
);
}
logger
.
info
(
"-----------推送车辆位置消息到到地图成功--------"
);
try
{
emqkeeper
.
getMqttClient
().
publish
(
"car/location"
,
mqttMessage
);
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/mapper/WlCarSpeedWaringRecordMapper.java
0 → 100644
View file @
57852ef3
package
com
.
yeejoin
.
equipmanage
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yeejoin.equipmanage.common.entity.CarSpeedWarningRecord
;
public
interface
WlCarSpeedWaringRecordMapper
extends
BaseMapper
<
CarSpeedWarningRecord
>
{
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/service/ICarService.java
View file @
57852ef3
...
...
@@ -8,10 +8,7 @@ import com.yeejoin.equipmanage.common.datasync.entity.FireVehicle;
import
com.yeejoin.equipmanage.common.dto.CarFusionDto
;
import
com.yeejoin.equipmanage.common.dto.CarInfoDto
;
import
com.yeejoin.equipmanage.common.dto.CarStatusInfoDto
;
import
com.yeejoin.equipmanage.common.entity.Car
;
import
com.yeejoin.equipmanage.common.entity.CarInfo
;
import
com.yeejoin.equipmanage.common.entity.CarProperty
;
import
com.yeejoin.equipmanage.common.entity.EquipmentCategory
;
import
com.yeejoin.equipmanage.common.entity.*
;
import
com.yeejoin.equipmanage.common.entity.dto.CarDto
;
import
com.yeejoin.equipmanage.common.entity.dto.CarEquipAlarmInfoDto
;
import
com.yeejoin.equipmanage.common.entity.dto.CarEquipStateInfoDto
;
...
...
@@ -19,11 +16,9 @@ import com.yeejoin.equipmanage.common.entity.vo.CarIndexVo;
import
com.yeejoin.equipmanage.common.entity.vo.CarPropertyVo
;
import
com.yeejoin.equipmanage.common.vo.*
;
import
com.yeejoin.equipmanage.dto.*
;
import
javassist.compiler.ast.Keyword
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.*
;
/**
* 消防车信息 服务类
...
...
@@ -199,20 +194,21 @@ public interface ICarService extends IService<Car> {
// 获取车辆归属单位总数
Map
<
String
,
Integer
>
getCountOfCarBelongCompany
();
List
<
ChartIntegerDto
>
getCarCategoryInfo
()
;
Page
<
CarEquipStateInfoDto
>
getCarEquipStateInfo
();
Page
<
CarEquipAlarmInfoDto
>
getCarEquipAlarmInfoDto
();
Page
<
CarEquipStateInfoDto
>
getCarEquipStateInfo
(
String
keyWord
);
Page
<
CarEquipAlarmInfoDto
>
getCarEquipAlarmInfoDto
(
String
keyWord
);
List
<
ChartIntegerDto
>
getCarBelongAreaInfo
()
;
Page
<
CarAreaInfoDto
>
getCarAreaInfo
(
String
areaName
)
;
BasicTableDataDto
getCarMileageInfoByMoth
(
String
date
,
Integer
current
,
Integer
pageSize
);
List
<
CarExportDto
>
exportCarMileageInfoByMoth
(
String
date
);
BasicTableDataDto
getCarMileageInfoByMoth
(
String
date
,
Integer
current
,
Integer
pageSize
,
String
keyWord
);
List
<
CarExportDto
>
exportCarMileageInfoByMoth
(
String
date
,
String
keyWord
);
ZZChartsDto
getCarMileageInfoByMothOFDay
(
String
iotCode
);
Page
<
CarExceptionDto
>
getCarExcepitonTrack
(
Integer
type
);
Page
<
CarExceptionDto
>
getCarExcepitonTrack
(
Integer
type
,
String
keyWord
);
Page
<
CarSpeedWarningRecord
>
getCarWarningRecord
(
String
keyWord
);
List
<
Map
<
String
,
String
>>
getBizOrgName
();
/**
* 查询车辆启动状态,赋码
*/
List
<
Map
<
String
,
String
>>
updateCarStartStatus
();
/**
* 赋码
*/
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/service/impl/CarServiceImpl.java
View file @
57852ef3
...
...
@@ -67,8 +67,8 @@ import javax.servlet.http.HttpServletRequest;
import
java.io.ByteArrayInputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.PrintStream
;
import
java.math.BigDecimal
;
import
java.text.Collator
;
import
java.time.LocalDate
;
import
java.time.ZoneId
;
import
java.util.*
;
...
...
@@ -85,6 +85,15 @@ import java.util.stream.Collectors;
@Service
public
class
CarServiceImpl
extends
ServiceImpl
<
CarMapper
,
Car
>
implements
ICarService
{
private
final
String
CAR_START_INDEX_KEY
=
"FireCar_Start"
;
@Autowired
protected
HttpServletRequest
request
;
@Autowired
EquipmentSpecificMapper
equipmentSpecificMapper
;
@Autowired
WlCarSpeedWaringRecordMapper
wlCarSpeedWaringRecordMapper
;
@Autowired
ISyncDataService
syncDataService
;
@Autowired
private
EquipmentCategoryMapper
equipmentCategoryMapper
;
private
List
<
Consumer
<
LossParams
>>
lossHandlers
;
...
...
@@ -124,8 +133,6 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
@Autowired
private
WarehouseStructureMapper
warehouseStructureMapper
;
@Autowired
protected
HttpServletRequest
request
;
@Autowired
private
IEquipmentService
iEquipmentService
;
@Autowired
private
IUploadFileService
iUploadFileService
;
...
...
@@ -138,50 +145,31 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
private
IManufacturerInfoService
iManufacturerInfoService
;
@Autowired
private
IJournalService
journalService
;
@Autowired
EquipmentSpecificMapper
equipmentSpecificMapper
;
@Autowired
private
RemoteSecurityService
remoteSecurityService
;
@Autowired
private
ICarPropertyService
carPropertyService
;
@Autowired
ISyncDataService
syncDataService
;
@Autowired
private
IEquipmentDetailService
iEquipmentDetailService
;
@Autowired
private
IEquipmentCategoryService
iEquipmentCategoryService
;
@Autowired
private
CarPropertyMapper
carPropertyMapper
;
@Value
(
"${equip.dict.car-state}"
)
private
String
carState
;
@Value
(
"${equip.dict.name-key}"
)
private
String
nameKeys
;
@Value
(
"${systemctl.sync.switch}"
)
private
Boolean
syncSwitch
;
@Value
(
"${equip.car.alarmBattery}"
)
private
Integer
carEquipAlarmBatteryNumber
;
@Value
(
"${equip.car.maxTravel}"
)
private
Double
carMaxTravel
;
@Autowired
@Lazy
private
IWlCarMileageService
iWlCarMileageService
;
private
final
String
CAR_START_INDEX_KEY
=
"FireCar_Start"
;
@Value
(
"${car.max.speed:100}"
)
private
Integer
CAR_MAX_SPEED
;
private
Integer
CAR_MAX_SPEED
;
/**
* 当前登录用户信息
...
...
@@ -404,193 +392,6 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
return
result
;
}
class
LossParams
{
private
Long
carId
;
private
Long
lossStateId
;
private
List
<
ExtinguishantLossRequest
>
extinguishants
;
private
Car
car
;
private
Map
<
Long
,
StockDetail
>
details
;
private
List
<
ExtinguishantOnCar
>
extinguishantOnCar
;
/**
* 记录明细账id,用户更新搜索
*/
private
Set
<
Long
>
stockDetailIds
;
/**
* 损耗单
*/
private
WastageBill
bill
;
public
LossParams
(
Long
carId
,
List
<
ExtinguishantLossRequest
>
extinguishants
)
{
this
.
carId
=
carId
;
this
.
extinguishants
=
extinguishants
;
setStockDetailIds
(
new
HashSet
<>());
}
public
StockDetail
getDetailById
(
Long
id
)
{
return
details
.
get
(
id
);
}
public
Long
getCarId
()
{
return
carId
;
}
public
void
setCarId
(
Long
carId
)
{
this
.
carId
=
carId
;
}
public
List
<
ExtinguishantLossRequest
>
getExtinguishants
()
{
return
extinguishants
;
}
public
void
setExtinguishants
(
List
<
ExtinguishantLossRequest
>
extinguishants
)
{
this
.
extinguishants
=
extinguishants
;
}
public
Car
getCar
()
{
return
car
;
}
public
void
setCar
(
Car
car
)
{
this
.
car
=
car
;
}
public
Map
<
Long
,
StockDetail
>
getDetails
()
{
return
details
;
}
public
void
setDetails
(
Map
<
Long
,
StockDetail
>
details
)
{
this
.
details
=
details
;
}
public
List
<
ExtinguishantOnCar
>
getExtinguishantOnCar
()
{
return
extinguishantOnCar
;
}
public
void
setExtinguishantOnCar
(
List
<
ExtinguishantOnCar
>
extinguishantOnCar
)
{
this
.
extinguishantOnCar
=
extinguishantOnCar
;
}
public
WastageBill
getBill
()
{
return
bill
;
}
public
void
setBill
(
WastageBill
bill
)
{
this
.
bill
=
bill
;
}
private
Double
equalLossCountHandler
(
ExtinguishantOnCar
ex
,
Double
lossCount
)
throws
Exception
{
try
{
StockDetail
stockDetail
=
getDetailById
(
ex
.
getStockDetailId
());
stockDetail
.
setStatus
(
EquipStatusEnum
.
LOSS
.
getCode
().
toString
());
stockDetail
.
setId
(
null
);
stockDetailMapper
.
insert
(
stockDetail
);
addStockDetailId
(
stockDetail
.
getId
());
// 查询库存
Stock
stock
=
stockMapper
.
selectById
(
stockDetail
.
getStockId
());
stock
.
setAmount
(
stock
.
getAmount
()
-
lossCount
);
stockMapper
.
updateById
(
stock
);
// 删除
extinguishantOnCarMapper
.
deleteById
(
ex
.
getId
());
// 损耗清单详情
WastageBillDetail
detail
=
new
WastageBillDetail
();
detail
.
setAmount
(
BigDecimal
.
valueOf
(
lossCount
));
detail
.
setStockDetailId
(
stockDetail
.
getId
());
detail
.
setWastageBillId
(
bill
.
getId
());
wastageBillDetailMapper
.
insert
(
detail
);
journalMapper
.
insert
(
createJournal
(
ex
,
stockDetail
.
getId
(),
null
));
return
0
d
;
}
catch
(
Exception
e
)
{
throw
e
;
}
}
private
Double
greaterThanLossCountHandler
(
ExtinguishantOnCar
ex
,
Double
lossCount
)
throws
Exception
{
try
{
StockDetail
stockDetail
=
getDetailById
(
ex
.
getStockDetailId
());
if
(
stockDetail
==
null
)
{
return
0
d
;
}
stockDetail
.
setAmount
(
stockDetail
.
getAmount
()
-
lossCount
);
stockDetailMapper
.
updateById
(
stockDetail
);
addStockDetailId
(
stockDetail
.
getId
());
StockDetail
stockDetailClone
=
new
StockDetail
();
BeanUtils
.
copyProperties
(
stockDetail
,
stockDetailClone
);
stockDetailClone
.
setId
(
null
);
stockDetailClone
.
setAmount
(
lossCount
);
stockDetailClone
.
setStatus
(
EquipStatusEnum
.
LOSS
.
getCode
().
toString
());
stockDetailMapper
.
insert
(
stockDetailClone
);
addStockDetailId
(
stockDetailClone
.
getId
());
Stock
stock
=
stockMapper
.
selectById
(
stockDetail
.
getStockId
());
stock
.
setAmount
(
stock
.
getAmount
()
-
lossCount
);
stockMapper
.
updateById
(
stock
);
ex
.
setAmount
(
ex
.
getAmount
()
-
lossCount
);
extinguishantOnCarMapper
.
updateById
(
ex
);
// 损耗清单详情
WastageBillDetail
detail
=
new
WastageBillDetail
();
detail
.
setAmount
(
BigDecimal
.
valueOf
(
lossCount
));
detail
.
setStockDetailId
(
stockDetailClone
.
getId
());
detail
.
setWastageBillId
(
bill
.
getId
());
wastageBillDetailMapper
.
insert
(
detail
);
journalMapper
.
insert
(
createJournal
(
ex
,
stockDetailClone
.
getId
(),
lossCount
));
return
0
d
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
}
}
public
Journal
createJournal
(
ExtinguishantOnCar
e
,
Long
stockDetailId
,
Double
amount
)
{
Journal
journal
=
new
Journal
();
Double
lossAmount
=
(
null
!=
amount
)
?
amount
:
e
.
getAmount
();
Long
lossStockDetailId
=
(
null
!=
stockDetailId
)
?
stockDetailId
:
e
.
getStockDetailId
();
journal
.
setAmount
(
lossAmount
);
journal
.
setCarId
(
getCarId
());
journal
.
setEquipmentDetailId
(
e
.
getEquipmentDetailId
());
journal
.
setUserId
(
Long
.
valueOf
(
getUser
().
getUserId
()));
// 查询EquipmentDetail
EquipmentDetail
equipmentDetail
=
equipmentDetailMapper
.
selectById
(
getDetailById
(
e
.
getStockDetailId
()).
getEquipmentDetailId
());
Equipment
equipment
=
iEquipmentService
.
getById
(
equipmentDetail
.
getEquipmentId
());
Unit
unit
=
unitMapper
.
selectById
(
equipment
.
getUnitId
());
journal
.
setRemark
(
String
.
format
(
"【%s】在车牌号为【%s】的车辆上,损耗了【%.2f】%s【%s】"
,
getUser
().
getRealName
(),
getCar
().
getCarNum
(),
lossAmount
,
unit
.
getName
(),
equipmentDetail
.
getName
()));
journal
.
setOrgCode
(
getCar
().
getOrgCode
());
journal
.
setStockDetailId
(
lossStockDetailId
);
journal
.
setState
(
getLossStateId
().
toString
());
return
journal
;
}
public
Set
<
Long
>
getStockDetailIds
()
{
return
stockDetailIds
;
}
public
void
setStockDetailIds
(
Set
<
Long
>
stockDetailIds
)
{
this
.
stockDetailIds
=
stockDetailIds
;
}
public
void
addStockDetailId
(
Long
id
)
{
stockDetailIds
.
add
(
id
);
}
public
Long
getLossStateId
()
{
return
lossStateId
;
}
public
void
setLossStateId
(
Long
lossStateId
)
{
this
.
lossStateId
=
lossStateId
;
}
}
@PostConstruct
public
void
init
()
{
if
(
null
==
loadingHandlers
)
{
...
...
@@ -617,7 +418,7 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
loadingHandlers
.
add
(
this
::
destocking
);
// loadingHandlers.add((p) ->
// loadingHandlers.add((p) ->
// AsynUtils.run(p.getStockDetailIds(), iRemoteSearchServer::updateStockDetails));
}
if
(
null
==
lossHandlers
)
{
...
...
@@ -765,146 +566,39 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
return
result
;
}
class
LoadingParams
{
private
Long
carId
;
private
String
loadingId
;
private
List
<
ExtinguishantRequeset
>
extinguishants
;
@Override
public
void
loadingEquipment
(
OnBoardEquipment
equipment
,
AgencyUserModel
user
)
{
List
<
Equip
>
eqs
=
generate
(
equipment
);
try
{
eqs
.
forEach
(
eq
->
{
StockDetail
detail
=
getEligibleStockDetail
(
eq
);
if
(
null
==
detail
)
{
throw
new
RuntimeException
(
"二维码为【"
+
eq
.
getQrCode
()
+
"】的装备库存量不足!"
);
}
updateStockDetail
(
detail
,
equipment
.
getType
(),
null
,
null
);
loading
(
detail
,
eq
);
generateJournal
(
detail
,
eq
,
equipment
.
getType
(),
user
,
null
);
});
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
.
getMessage
());
}
private
Car
car
;
}
private
Map
<
Long
,
StockDetail
>
details
;
private
Set
<
Long
>
stockDetailIds
;
public
LoadingParams
(
Long
carId
,
List
<
ExtinguishantRequeset
>
extinguishants
)
{
this
.
carId
=
carId
;
this
.
extinguishants
=
extinguishants
;
setStockDetailIds
(
new
HashSet
<>());
}
public
ExtinguishantOnCar
create
(
ExtinguishantRequeset
r
,
StockDetail
detail
)
{
ExtinguishantOnCar
extinguishantOnCar
=
new
ExtinguishantOnCar
();
extinguishantOnCar
.
setCarId
(
carId
);
extinguishantOnCar
.
setAmount
(
r
.
getAmount
());
extinguishantOnCar
.
setStockDetailId
(
detail
.
getId
());
extinguishantOnCar
.
setEquipmentDetailId
(
getDetailById
(
r
.
getStockDetailId
()).
getEquipmentDetailId
());
return
extinguishantOnCar
;
}
public
Journal
createJournal
(
ExtinguishantRequeset
r
,
Long
stockDetailId
)
{
// 查询EquipmentDetail
EquipmentDetail
equipmentDetail
=
equipmentDetailMapper
.
selectById
(
getDetailById
(
r
.
getStockDetailId
()).
getEquipmentDetailId
());
Equipment
equipment
=
iEquipmentService
.
getById
(
equipmentDetail
.
getEquipmentId
());
Unit
unit
=
unitMapper
.
selectById
(
equipment
.
getUnitId
());
Journal
journal
=
new
Journal
();
journal
.
setAmount
(
r
.
getAmount
());
journal
.
setCarId
(
getCarId
());
journal
.
setEquipmentDetailId
(
getDetailById
(
r
.
getStockDetailId
()).
getEquipmentDetailId
());
journal
.
setUserId
(
Long
.
valueOf
(
getUser
().
getUserId
()));
journal
.
setWarehouseStructureId
(
getDetailById
(
r
.
getStockDetailId
()).
getWarehouseStructureId
());
journal
.
setRemark
(
String
.
format
(
"【%s】向车牌号为【%s】的车辆上,装载了【%.2f】%s【%s】"
,
getUser
().
getRealName
(),
getCar
().
getCarNum
(),
r
.
getAmount
(),
unit
.
getName
(),
equipmentDetail
.
getName
()));
journal
.
setOrgCode
(
getCar
().
getOrgCode
());
journal
.
setStockDetailId
(
stockDetailId
);
journal
.
setState
(
getLoadingId
());
return
journal
;
}
public
StockDetail
getDetailById
(
Long
id
)
{
return
details
.
get
(
id
);
}
public
Long
getCarId
()
{
return
carId
;
}
public
void
setCarId
(
Long
carId
)
{
this
.
carId
=
carId
;
}
public
List
<
ExtinguishantRequeset
>
getExtinguishants
()
{
return
extinguishants
;
}
public
void
setExtinguishants
(
List
<
ExtinguishantRequeset
>
extinguishants
)
{
this
.
extinguishants
=
extinguishants
;
}
public
Car
getCar
()
{
return
car
;
}
public
void
setCar
(
Car
car
)
{
this
.
car
=
car
;
}
public
Map
<
Long
,
StockDetail
>
getDetails
()
{
return
details
;
}
public
void
setDetails
(
Map
<
Long
,
StockDetail
>
details
)
{
this
.
details
=
details
;
}
public
Set
<
Long
>
getStockDetailIds
()
{
return
stockDetailIds
;
}
public
void
setStockDetailIds
(
Set
<
Long
>
stockDetailIds
)
{
this
.
stockDetailIds
=
stockDetailIds
;
}
public
void
addStockDetailId
(
Long
id
)
{
stockDetailIds
.
add
(
id
);
}
public
String
getLoadingId
()
{
return
loadingId
;
}
public
void
setLoadingId
(
String
loadingId
)
{
this
.
loadingId
=
loadingId
;
}
}
@Override
public
void
loadingEquipment
(
OnBoardEquipment
equipment
,
AgencyUserModel
user
)
{
List
<
Equip
>
eqs
=
generate
(
equipment
);
try
{
eqs
.
forEach
(
eq
->
{
StockDetail
detail
=
getEligibleStockDetail
(
eq
);
if
(
null
==
detail
)
{
throw
new
RuntimeException
(
"二维码为【"
+
eq
.
getQrCode
()
+
"】的装备库存量不足!"
);
}
updateStockDetail
(
detail
,
equipment
.
getType
(),
null
,
null
);
loading
(
detail
,
eq
);
generateJournal
(
detail
,
eq
,
equipment
.
getType
(),
user
,
null
);
});
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
.
getMessage
());
}
}
private
void
loading
(
StockDetail
detail
,
Equip
eq
)
{
QueryWrapper
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
eq
(
"qr_code"
,
detail
.
getQrCode
());
EquipmentSpecific
equipmentSpecific
=
equipmentSpecificMapper
.
selectOne
(
queryWrapper
);
EquipmentOnCar
equipmentOnCar
=
new
EquipmentOnCar
();
equipmentOnCar
.
setCarId
(
eq
.
getCarId
());
equipmentOnCar
.
setStockDetailId
(
detail
.
getId
());
equipmentOnCar
.
setAmount
(
eq
.
getAmount
());
equipmentOnCar
.
setEquipmentDetailId
(
eq
.
getEquipmentDetailId
());
if
(
equipmentSpecific
!=
null
)
{
equipmentOnCar
.
setEquipmentSpecificId
(
equipmentSpecific
.
getId
());
}
equipmentOnCarMapper
.
insert
(
equipmentOnCar
);
}
private
void
loading
(
StockDetail
detail
,
Equip
eq
)
{
QueryWrapper
queryWrapper
=
new
QueryWrapper
();
queryWrapper
.
eq
(
"qr_code"
,
detail
.
getQrCode
());
EquipmentSpecific
equipmentSpecific
=
equipmentSpecificMapper
.
selectOne
(
queryWrapper
);
EquipmentOnCar
equipmentOnCar
=
new
EquipmentOnCar
();
equipmentOnCar
.
setCarId
(
eq
.
getCarId
());
equipmentOnCar
.
setStockDetailId
(
detail
.
getId
());
equipmentOnCar
.
setAmount
(
eq
.
getAmount
());
equipmentOnCar
.
setEquipmentDetailId
(
eq
.
getEquipmentDetailId
());
if
(
equipmentSpecific
!=
null
)
{
equipmentOnCar
.
setEquipmentSpecificId
(
equipmentSpecific
.
getId
());
}
equipmentOnCarMapper
.
insert
(
equipmentOnCar
);
}
private
void
generateJournal
(
StockDetail
detail
,
Equip
eq
,
String
type
,
AgencyUserModel
user
,
Long
shelfCellId
)
{
OnBoardEquipmentEnum
typeEnum
=
OnBoardEquipmentEnum
.
getEnum
(
type
);
...
...
@@ -1380,7 +1074,7 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
if
(!
ObjectUtils
.
isEmpty
(
car
.
getIotCode
()))
{
Double
monthTravel
=
0.0
;
Double
monthTravel
=
0.0
;
Double
totalTravel
=
0.0
;
String
currentYearAndMonth
=
DateUtil
.
format
(
new
Date
(),
"yyyy-MM"
);
LambdaQueryWrapper
<
WlCarMileage
>
wrapper
=
new
LambdaQueryWrapper
<
WlCarMileage
>();
...
...
@@ -1389,18 +1083,18 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
wrapper
.
isNotNull
(
WlCarMileage:
:
getEndTime
);
wrapper
.
isNotNull
(
WlCarMileage:
:
getStartTime
);
// .ge("travel", 0.5)
List
<
WlCarMileage
>
list
=
iWlCarMileageService
.
list
(
wrapper
);
List
<
WlCarMileage
>
list
=
iWlCarMileageService
.
list
(
wrapper
);
for
(
WlCarMileage
wl
:
list
)
{
//判断当前车辆全程是否异常,如果时速小于阈值 则对数据进行返回 否则不予返回
if
(!
ObjectUtils
.
isEmpty
(
wl
.
getTakeTime
())
&&
!
ObjectUtils
.
isEmpty
(
wl
.
getTravel
())
&&
((
wl
.
getTravel
()
/
(
wl
.
getTakeTime
()
/
3600000.0
))
<
CAR_MAX_SPEED
))
{
if
(!
ObjectUtils
.
isEmpty
(
wl
.
getTakeTime
())
&&
!
ObjectUtils
.
isEmpty
(
wl
.
getTravel
())
&&
((
wl
.
getTravel
()
/
(
wl
.
getTakeTime
()
/
3600000.0
))
<
CAR_MAX_SPEED
))
{
totalTravel
+=
wl
.
getTravel
();
if
(
DateUtil
.
format
(
wl
.
getStartTime
(),
"yyyy-MM"
).
equals
(
currentYearAndMonth
))
{
if
(
DateUtil
.
format
(
wl
.
getStartTime
(),
"yyyy-MM"
).
equals
(
currentYearAndMonth
))
{
monthTravel
+=
wl
.
getTravel
();
}
}
}
car
.
setTotalTravel
(
Double
.
valueOf
(
String
.
format
(
"%.1f"
,
totalTravel
)));
car
.
setMonthTravel
(
Double
.
valueOf
(
String
.
format
(
"%.1f"
,
monthTravel
)));
car
.
setTotalTravel
(
Double
.
valueOf
(
String
.
format
(
"%.1f"
,
totalTravel
)));
car
.
setMonthTravel
(
Double
.
valueOf
(
String
.
format
(
"%.1f"
,
monthTravel
)));
WlCarMileage
last
=
iWlCarMileageService
.
getOne
(
new
LambdaQueryWrapper
<
WlCarMileage
>().
eq
(
WlCarMileage:
:
getIotCode
,
car
.
getIotCode
())
.
orderByDesc
(
WlCarMileage:
:
getEndTime
).
last
(
"limit 1"
));
...
...
@@ -1607,7 +1301,6 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
return
carMapper
.
getCarStateInfoByCarNum
(
carNum
);
}
@Override
public
CarForUE4VO
getCarDetailByCarNumToThreeDimensional
(
Long
carId
,
String
orgCode
)
{
CarForUE4VO
carForUE4VO
=
new
CarForUE4VO
();
...
...
@@ -1641,7 +1334,6 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
return
carForUE4VO
;
}
@Override
public
Page
<
CarInfoDto
>
equipmentCarList
(
Page
<
CarInfoDto
>
pag
,
Long
teamId
,
String
name
,
String
code
,
Long
id
,
Boolean
isNo
)
{
...
...
@@ -1749,14 +1441,12 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
return
page
;
}
@Override
public
List
<
Car
>
location
()
{
List
<
Car
>
list
=
this
.
list
();
return
list
;
}
@Override
public
Map
<
String
,
Integer
>
getCountOfCar
()
{
Map
<
String
,
Integer
>
map
=
new
HashMap
<>();
...
...
@@ -1788,7 +1478,7 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
}
@Override
public
Page
<
CarEquipStateInfoDto
>
getCarEquipStateInfo
()
{
public
Page
<
CarEquipStateInfoDto
>
getCarEquipStateInfo
(
String
keyWord
)
{
// BasicTableDataDto basicTableDataDto = new BasicTableDataDto();
// List<ColModel> colModels = new ArrayList<>();
// colModels.add(new ColModel("carNum","车牌号"));
...
...
@@ -1796,19 +1486,39 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
// colModels.add(new ColModel("equipState","设备状态"));
// colModels.add(new ColModel("extra2","设备电量"));
Page
<
CarEquipStateInfoDto
>
page
=
new
Page
<>();
List
<
CarEquipStateInfoDto
>
list
=
carMapper
.
getCarEquipStateInfo
();
if
(
list
.
size
()
>
0
)
{
list
.
forEach
(
carEquipStateInfoDto
->
{
if
(
carEquipStateInfoDto
.
getExtra2
()
!=
null
)
{
carEquipStateInfoDto
.
setEquipState
(
"开机"
);
carEquipStateInfoDto
.
setExtra2
(
carEquipStateInfoDto
.
getExtra2
()
+
"%"
);
}
else
{
carEquipStateInfoDto
.
setEquipState
(
"关机"
);
carEquipStateInfoDto
.
setExtra2
(
"未上报"
);
}
});
List
<
CarEquipStateInfoDto
>
result
=
new
ArrayList
<>();
List
<
Car
>
list
=
this
.
list
();
if
(
StringUtils
.
isNotEmpty
(
keyWord
))
{
list
=
list
.
stream
().
filter
(
car
->
car
.
getBizOrgName
().
contains
(
keyWord
)).
collect
(
Collectors
.
toList
());
}
page
.
setRecords
(
list
);
list
=
list
.
stream
().
sorted
(
Comparator
.
comparing
(
Car:
:
getExtra2
,
Comparator
.
comparingDouble
(
Double:
:
valueOf
)).
reversed
()).
collect
(
Collectors
.
toList
());
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
Car
car
=
list
.
get
(
i
);
CarEquipStateInfoDto
carEquipStateInfoDto
=
new
CarEquipStateInfoDto
();
carEquipStateInfoDto
.
setCarNum
(
car
.
getCarNum
());
carEquipStateInfoDto
.
setBizOrgName
(
car
.
getBizOrgName
());
if
(
car
.
getExtra2
()
!=
null
)
{
carEquipStateInfoDto
.
setEquipState
(
"开机"
);
carEquipStateInfoDto
.
setExtra2
(
car
.
getExtra2
()
+
"%"
);
}
else
{
carEquipStateInfoDto
.
setEquipState
(
"关机"
);
carEquipStateInfoDto
.
setExtra2
(
"未上报"
);
}
result
.
add
(
carEquipStateInfoDto
);
}
// List<CarEquipStateInfoDto> list = carMapper.getCarEquipStateInfo();
//// if (list.size() > 0) {
//// list.forEach(carEquipStateInfoDto -> {
//// if (carEquipStateInfoDto.getExtra2() != null) {
//// carEquipStateInfoDto.setEquipState("开机");
//// carEquipStateInfoDto.setExtra2(carEquipStateInfoDto.getExtra2() + "%");
//// } else {
//// carEquipStateInfoDto.setEquipState("关机");
//// carEquipStateInfoDto.setExtra2("未上报");
//// }
//// });
//// }
page
.
setRecords
(
result
);
page
.
setTotal
(
list
.
size
());
page
.
setCurrent
(
1
);
page
.
setSize
(
10
);
...
...
@@ -1820,14 +1530,21 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
}
@Override
public
Page
<
CarEquipAlarmInfoDto
>
getCarEquipAlarmInfoDto
()
{
public
Page
<
CarEquipAlarmInfoDto
>
getCarEquipAlarmInfoDto
(
String
keyWord
)
{
Page
<
CarEquipAlarmInfoDto
>
page
=
new
Page
<>();
List
<
CarEquipAlarmInfoDto
>
list
=
carMapper
.
getCarEquipAlarmInfo
(
carEquipAlarmBatteryNumber
);
List
<
Car
>
list
=
this
.
list
().
stream
().
filter
(
car
->
Integer
.
valueOf
(
car
.
getExtra2
())
<
carEquipAlarmBatteryNumber
).
collect
(
Collectors
.
toList
());
if
(
StringUtils
.
isNotEmpty
(
keyWord
))
{
list
=
list
.
stream
().
filter
(
car
->
car
.
getBizOrgName
().
contains
(
keyWord
)).
collect
(
Collectors
.
toList
());
}
List
<
CarEquipAlarmInfoDto
>
carEquipAlarmInfoDtoList
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
list
.
get
(
i
).
setNo
(
i
+
1
);
list
.
get
(
i
).
setAlarmMessage
(
"该设备电量低于"
+
carEquipAlarmBatteryNumber
+
"%!"
);
CarEquipAlarmInfoDto
carEquipAlarmInfoDto
=
new
CarEquipAlarmInfoDto
();
carEquipAlarmInfoDto
.
setCarNum
(
list
.
get
(
i
).
getCarNum
());
carEquipAlarmInfoDto
.
setNo
(
i
+
1
);
carEquipAlarmInfoDto
.
setAlarmMessage
(
"该设备电量低于"
+
carEquipAlarmBatteryNumber
+
"%!"
);
carEquipAlarmInfoDtoList
.
add
(
carEquipAlarmInfoDto
);
}
page
.
setRecords
(
l
ist
);
page
.
setRecords
(
carEquipAlarmInfoDtoL
ist
);
page
.
setTotal
(
list
.
size
());
page
.
setCurrent
(
1
);
page
.
setSize
(
10
);
...
...
@@ -1856,26 +1573,26 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
}
@Override
public
Page
<
CarAreaInfoDto
>
getCarAreaInfo
(
String
areaName
)
{
public
Page
<
CarAreaInfoDto
>
getCarAreaInfo
(
String
areaName
)
{
Page
<
CarAreaInfoDto
>
page
=
new
Page
<>();
List
<
CarAreaInfoDto
>
list
=
new
ArrayList
<>();
CompanyModel
companyModelArea
=
Privilege
.
companyClient
.
queryByCompanyName
(
areaName
).
getResult
();
if
(
companyModelArea
!=
null
)
{
FeignClientResult
<
java
.
util
.
Collection
<
CompanyModel
>>
de
=
Privilege
.
companyClient
.
querySubAgencyTree
(
companyModelArea
.
getSequenceNbr
());
//如果是公司则获取所有片区
ArrayList
<
CompanyModel
>
companyModels
=
(
ArrayList
<
CompanyModel
>)
de
.
getResult
();
if
(
companyModels
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
companyModels
.
size
();
i
++)
{
CompanyModel
companyModel
=
companyModels
.
get
(
i
);
CarAreaInfoDto
carAreaInfoDto
=
new
CarAreaInfoDto
();
Integer
count
=
this
.
count
(
new
QueryWrapper
<
Car
>().
like
(
"biz_org_code"
,
companyModel
.
getOrgCode
()));
carAreaInfoDto
.
setNo
(
i
+
1
);
carAreaInfoDto
.
setName
(
companyModel
.
getCompanyName
());
carAreaInfoDto
.
setCountOfCar
(
count
);
list
.
add
(
carAreaInfoDto
);
}
}
}
CompanyModel
companyModelArea
=
Privilege
.
companyClient
.
queryByCompanyName
(
areaName
).
getResult
();
if
(
companyModelArea
!=
null
)
{
FeignClientResult
<
java
.
util
.
Collection
<
CompanyModel
>>
de
=
Privilege
.
companyClient
.
querySubAgencyTree
(
companyModelArea
.
getSequenceNbr
());
//如果是公司则获取所有片区
ArrayList
<
CompanyModel
>
companyModels
=
(
ArrayList
<
CompanyModel
>)
de
.
getResult
();
if
(
companyModels
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
companyModels
.
size
();
i
++)
{
CompanyModel
companyModel
=
companyModels
.
get
(
i
);
CarAreaInfoDto
carAreaInfoDto
=
new
CarAreaInfoDto
();
Integer
count
=
this
.
count
(
new
QueryWrapper
<
Car
>().
like
(
"biz_org_code"
,
companyModel
.
getOrgCode
()));
carAreaInfoDto
.
setNo
(
i
+
1
);
carAreaInfoDto
.
setName
(
companyModel
.
getCompanyName
());
carAreaInfoDto
.
setCountOfCar
(
count
);
list
.
add
(
carAreaInfoDto
);
}
}
}
page
.
setRecords
(
list
);
page
.
setTotal
(
list
.
size
());
page
.
setCurrent
(
1
);
...
...
@@ -1884,48 +1601,59 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
}
@Override
public
BasicTableDataDto
getCarMileageInfoByMoth
(
String
date
,
Integer
current
,
Integer
pageSize
)
{
public
BasicTableDataDto
getCarMileageInfoByMoth
(
String
date
,
Integer
current
,
Integer
pageSize
,
String
keyWord
)
{
BasicTableDataDto
basicTableDataDto
=
new
BasicTableDataDto
();
List
<
ColModel
>
colModels
=
new
ArrayList
<>();
colModels
.
add
(
new
ColModel
(
"carNum"
,
"车牌号"
));
colModels
.
add
(
new
ColModel
(
"carCode"
,
"编号"
));
colModels
.
add
(
new
ColModel
(
"total"
,
"当月里程"
));
colModels
.
add
(
new
ColModel
(
"carNum"
,
"车牌号"
));
colModels
.
add
(
new
ColModel
(
"carCode"
,
"编号"
));
colModels
.
add
(
new
ColModel
(
"bizOrgName"
,
"所属单位"
));
colModels
.
add
(
new
ColModel
(
"total"
,
"当月里程"
));
List
<
MileageDto
>
mileageDtoList
=
new
ArrayList
<>();
List
<
Car
>
list
=
this
.
list
();
if
(
StringUtils
.
isNotEmpty
(
keyWord
))
{
list
=
list
.
stream
().
filter
(
car
->
car
.
getBizOrgName
().
contains
(
keyWord
)).
collect
(
Collectors
.
toList
());
}
if
(
list
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
MileageDto
mileageDto
=
new
MileageDto
();
Double
totalTravel
=
iWlCarMileageService
.
getTotalTravelByIotCodeAndDate
(
date
,
list
.
get
(
i
).
getIotCode
());
mileageDto
.
setCarNum
(
list
.
get
(
i
).
getCarNum
());
mileageDto
.
setCarCode
(
list
.
get
(
i
).
getRemark
());
mileageDto
.
setIotCode
(
date
+
"::"
+
list
.
get
(
i
).
getIotCode
());
Car
car
=
list
.
get
(
i
);
Double
totalTravel
=
iWlCarMileageService
.
getTotalTravelByIotCodeAndDate
(
date
,
car
.
getIotCode
());
mileageDto
.
setCarNum
(
car
.
getCarNum
());
mileageDto
.
setCarCode
(
car
.
getRemark
());
mileageDto
.
setBizOrgName
(
car
.
getBizOrgName
());
mileageDto
.
setIotCode
(
date
+
"::"
+
car
.
getIotCode
());
if
(
totalTravel
!=
null
)
{
// mileageDto.setTotalTravel((totalTravel / carMaxTravel) * 100);
mileageDto
.
setTotalTravel
(
totalTravel
);
}
else
{
totalTravel
=
0.0
;
totalTravel
=
0.0
;
mileageDto
.
setTotalTravel
(
totalTravel
);
}
mileageDto
.
setTotal
(
String
.
format
(
"%.1f"
,
totalTravel
)+
"KM"
);
mileageDto
.
setTotal
(
String
.
format
(
"%.1f"
,
totalTravel
)
+
"KM"
);
mileageDtoList
.
add
(
mileageDto
);
}
}
mileageDtoList
=
mileageDtoList
.
stream
().
sorted
(
Comparator
.
comparing
(
MileageDto:
:
getTotalTravel
).
reversed
()).
collect
(
Collectors
.
toList
());
DataGridMock
mypageDto
=
new
DataGridMock
(
current
,
mileageDtoList
.
size
(),
true
,
current
,
mileageDtoList
.
subList
((
current
-
1
)*
pageSize
,
current
*
pageSize
));
Integer
from
=
(
current
-
1
)
*
pageSize
>
mileageDtoList
.
size
()
?
mileageDtoList
.
size
()
:
(
current
-
1
)
*
pageSize
;
Integer
to
=
current
*
pageSize
>
mileageDtoList
.
size
()
?
mileageDtoList
.
size
()
:
current
*
pageSize
;
DataGridMock
mypageDto
=
new
DataGridMock
(
current
,
mileageDtoList
.
size
(),
true
,
current
,
mileageDtoList
.
subList
(
from
,
to
));
basicTableDataDto
.
setDataGridMock
(
mypageDto
);
basicTableDataDto
.
setColModel
(
colModels
);
return
basicTableDataDto
;
}
@Override
public
List
<
CarExportDto
>
exportCarMileageInfoByMoth
(
String
date
)
{
public
List
<
CarExportDto
>
exportCarMileageInfoByMoth
(
String
date
,
String
keyWord
)
{
List
<
CarExportDto
>
carExportDtos
=
new
ArrayList
<>();
List
<
Car
>
list
=
this
.
list
();
if
(
StringUtils
.
isNotEmpty
(
keyWord
))
{
list
=
list
.
stream
().
filter
(
car
->
car
.
getBizOrgName
().
contains
(
keyWord
)).
collect
(
Collectors
.
toList
());
}
if
(
list
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
CarExportDto
carExportDto
=
new
CarExportDto
();
Double
totalTravel
=
iWlCarMileageService
.
getTotalTravelByIotCodeAndDate
(
date
,
list
.
get
(
i
).
getIotCode
()
);
Car
car
=
list
.
get
(
i
);
Car
car
=
list
.
get
(
i
);
Double
totalTravel
=
iWlCarMileageService
.
getTotalTravelByIotCodeAndDate
(
date
,
car
.
getIotCode
()
);
carExportDto
.
setCode
(
car
.
getRemark
());
carExportDto
.
setCarNumber
(
car
.
getCarNum
());
carExportDto
.
setDriver
(
car
.
getDriver
());
...
...
@@ -1933,21 +1661,23 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
carExportDto
.
setOrgName
(
car
.
getBizOrgName
());
carExportDto
.
setStandard
(
car
.
getStandard
());
carExportDto
.
setDisplacement
(
car
.
getDisplacement
());
if
(
totalTravel
!=
null
){
carExportDto
.
setTotalTravel
(
String
.
valueOf
(
totalTravel
));
}
else
{
carExportDto
.
setTotalTravel
(
"0"
);
if
(
totalTravel
!=
null
)
{
carExportDto
.
setTotalTravel
(
String
.
format
(
"%.1f"
,
totalTravel
)
+
"KM"
);
carExportDto
.
setTotalTravelValue
(
String
.
format
(
"%.1f"
,
totalTravel
));
}
else
{
carExportDto
.
setTotalTravel
(
"0KM"
);
carExportDto
.
setTotalTravelValue
(
"0.0"
);
}
carExportDtos
.
add
(
carExportDto
);
}
}
Collections
.
sort
(
carExportDtos
,
(
e1
,
e2
)->
Double
.
valueOf
(
e2
.
getTotalTravel
()).
compareTo
(
Double
.
valueOf
(
e1
.
getTotalTravel
())));
Collections
.
sort
(
carExportDtos
,
(
e1
,
e2
)
->
Double
.
valueOf
(
e2
.
getTotalTravelValue
()).
compareTo
(
Double
.
valueOf
(
e1
.
getTotalTravelValue
())));
return
carExportDtos
;
}
@Override
public
ZZChartsDto
getCarMileageInfoByMothOFDay
(
String
iotCode
)
{
ZZChartsDto
zzChartsDto
=
new
ZZChartsDto
();
ZZChartsDto
zzChartsDto
=
new
ZZChartsDto
();
//X轴数据
List
<
String
>
x
=
new
ArrayList
<>();
// Y轴数据
...
...
@@ -1959,10 +1689,10 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
calendar
.
set
(
Calendar
.
YEAR
,
Integer
.
parseInt
(
dates
[
0
]));
calendar
.
set
(
Calendar
.
MONTH
,
Integer
.
parseInt
(
dates
[
1
]));
for
(
int
i
=
0
;
i
<
calendar
.
getActualMaximum
(
Calendar
.
DATE
);
i
++)
{
String
dateStr
=
i
<
9
?
dates
[
1
]+
"-0"
+
(
i
+
1
)
:
dates
[
1
]
+
"-"
+
(
i
+
1
);
String
dateStr
=
i
<
9
?
dates
[
1
]
+
"-0"
+
(
i
+
1
)
:
dates
[
1
]
+
"-"
+
(
i
+
1
);
Double
totalTravel
=
iWlCarMileageService
.
getTotalTravelByIotCodeAndDate
(
dateStr
,
datas
[
1
]);
if
(
totalTravel
==
null
)
{
totalTravel
=
0.0
;
totalTravel
=
0.0
;
}
x
.
add
(
dateStr
);
y
.
add
(
totalTravel
);
...
...
@@ -1973,21 +1703,25 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
}
@Override
public
Page
<
CarExceptionDto
>
getCarExcepitonTrack
(
Integer
type
)
{
public
Page
<
CarExceptionDto
>
getCarExcepitonTrack
(
Integer
type
,
String
keyWord
)
{
Page
<
CarExceptionDto
>
page
=
new
Page
<>();
List
<
CarExceptionDto
>
carExceptionDtos
=
new
ArrayList
<>();
LocalDate
localDate
=
LocalDate
.
now
(
ZoneId
.
of
(
"+8"
));
String
startDate
=
localDate
.
plusDays
(-
1
).
toString
();
String
endDate
=
localDate
.
plusDays
((
0
-
type
)).
toString
();
String
endDate
=
localDate
.
plusDays
((
0
-
type
)).
toString
();
List
<
Car
>
list
=
this
.
list
();
if
(
StringUtils
.
isNotEmpty
(
keyWord
))
{
list
=
list
.
stream
().
filter
(
car
->
car
.
getBizOrgName
().
contains
(
keyWord
)).
collect
(
Collectors
.
toList
());
}
if
(
list
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
CarExceptionDto
carExceptionDto
=
new
CarExceptionDto
();
Double
totalTravel
=
iWlCarMileageService
.
getTotalTravelByIotCodeAndDateProd
(
startDate
,
endDate
,
list
.
get
(
i
).
getIotCode
());
if
(!(
totalTravel
!=
null
&&
totalTravel
>
0.0
))
{
carExceptionDto
.
setCarId
(
String
.
valueOf
(
list
.
get
(
i
).
getId
()));
carExceptionDto
.
setCarNumber
(
list
.
get
(
i
).
getCarNum
());
carExceptionDto
.
setBelongStation
(
list
.
get
(
i
).
getBizOrgName
());
Car
car
=
list
.
get
(
i
);
Double
totalTravel
=
iWlCarMileageService
.
getTotalTravelByIotCodeAndDateProd
(
startDate
,
endDate
,
list
.
get
(
i
).
getIotCode
());
if
(!(
totalTravel
!=
null
&&
totalTravel
>
0.0
))
{
carExceptionDto
.
setCarId
(
String
.
valueOf
(
car
.
getId
()));
carExceptionDto
.
setCarNumber
(
car
.
getCarNum
());
carExceptionDto
.
setBelongStation
(
car
.
getBizOrgName
());
carExceptionDtos
.
add
(
carExceptionDto
);
}
}
...
...
@@ -2000,6 +1734,41 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
}
@Override
public
Page
<
CarSpeedWarningRecord
>
getCarWarningRecord
(
String
keyWord
)
{
Page
<
CarSpeedWarningRecord
>
carSpeedWarningRecordPage
=
new
Page
<>();
Date
date
=
new
Date
();
String
endTime
=
DateUtil
.
format
(
date
,
DatePattern
.
NORM_DATETIME_FORMAT
);
date
=
DateUtil
.
offsetDay
(
date
,
-
15
);
String
startTime
=
DateUtil
.
format
(
date
,
DatePattern
.
NORM_DATETIME_FORMAT
);
List
<
CarSpeedWarningRecord
>
list
=
wlCarSpeedWaringRecordMapper
.
selectList
(
new
QueryWrapper
<
CarSpeedWarningRecord
>().
ge
(
"waring_date"
,
startTime
).
le
(
"waring_date"
,
endTime
));
if
(
StringUtils
.
isNotEmpty
(
keyWord
))
{
list
=
list
.
stream
().
filter
(
carSpeedWarningRecord
->
carSpeedWarningRecord
.
getBizOrgName
().
contains
(
keyWord
)
||
carSpeedWarningRecord
.
getOwnership
().
contains
(
keyWord
)).
collect
(
Collectors
.
toList
());
}
Collections
.
sort
(
list
,
(
e1
,
e2
)
->
e2
.
getOverSpeed
().
compareTo
(
e1
.
getOverSpeed
()));
carSpeedWarningRecordPage
.
setRecords
(
list
);
carSpeedWarningRecordPage
.
setTotal
(
list
.
size
());
carSpeedWarningRecordPage
.
setSize
(
1
);
carSpeedWarningRecordPage
.
setCurrent
(
1
);
return
carSpeedWarningRecordPage
;
}
@Override
public
List
<
Map
<
String
,
String
>>
getBizOrgName
()
{
List
<
Map
<
String
,
String
>>
result
=
new
ArrayList
<>();
List
<
Car
>
cars
=
this
.
list
(
new
QueryWrapper
<
Car
>().
groupBy
(
"biz_org_name"
));
List
<
String
>
orgNames
=
cars
.
stream
().
map
(
car
->
car
.
getBizOrgName
()).
collect
(
Collectors
.
toList
());
Comparator
comparator
=
Collator
.
getInstance
(
Locale
.
CHINA
);
Collections
.
sort
(
orgNames
,
(
p1
,
p2
)
->
comparator
.
compare
(
p1
,
p2
));
for
(
int
i
=
0
;
i
<
orgNames
.
size
();
i
++)
{
Map
<
String
,
String
>
item
=
new
HashMap
<>();
item
.
put
(
"text"
,
orgNames
.
get
(
i
));
item
.
put
(
"value"
,
orgNames
.
get
(
i
));
result
.
add
(
item
);
}
return
result
;
}
@Override
public
List
<
Map
<
String
,
String
>>
updateCarStartStatus
()
{
return
carPropertyMapper
.
selectIndexByTime
(
CAR_START_INDEX_KEY
);
}
...
...
@@ -2011,4 +1780,298 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
carMapper
.
updateStatusByIds
(
carIds
,
status
);
}
}
class
LossParams
{
private
Long
carId
;
private
Long
lossStateId
;
private
List
<
ExtinguishantLossRequest
>
extinguishants
;
private
Car
car
;
private
Map
<
Long
,
StockDetail
>
details
;
private
List
<
ExtinguishantOnCar
>
extinguishantOnCar
;
/**
* 记录明细账id,用户更新搜索
*/
private
Set
<
Long
>
stockDetailIds
;
/**
* 损耗单
*/
private
WastageBill
bill
;
public
LossParams
(
Long
carId
,
List
<
ExtinguishantLossRequest
>
extinguishants
)
{
this
.
carId
=
carId
;
this
.
extinguishants
=
extinguishants
;
setStockDetailIds
(
new
HashSet
<>());
}
public
StockDetail
getDetailById
(
Long
id
)
{
return
details
.
get
(
id
);
}
public
Long
getCarId
()
{
return
carId
;
}
public
void
setCarId
(
Long
carId
)
{
this
.
carId
=
carId
;
}
public
List
<
ExtinguishantLossRequest
>
getExtinguishants
()
{
return
extinguishants
;
}
public
void
setExtinguishants
(
List
<
ExtinguishantLossRequest
>
extinguishants
)
{
this
.
extinguishants
=
extinguishants
;
}
public
Car
getCar
()
{
return
car
;
}
public
void
setCar
(
Car
car
)
{
this
.
car
=
car
;
}
public
Map
<
Long
,
StockDetail
>
getDetails
()
{
return
details
;
}
public
void
setDetails
(
Map
<
Long
,
StockDetail
>
details
)
{
this
.
details
=
details
;
}
public
List
<
ExtinguishantOnCar
>
getExtinguishantOnCar
()
{
return
extinguishantOnCar
;
}
public
void
setExtinguishantOnCar
(
List
<
ExtinguishantOnCar
>
extinguishantOnCar
)
{
this
.
extinguishantOnCar
=
extinguishantOnCar
;
}
public
WastageBill
getBill
()
{
return
bill
;
}
public
void
setBill
(
WastageBill
bill
)
{
this
.
bill
=
bill
;
}
private
Double
equalLossCountHandler
(
ExtinguishantOnCar
ex
,
Double
lossCount
)
throws
Exception
{
try
{
StockDetail
stockDetail
=
getDetailById
(
ex
.
getStockDetailId
());
stockDetail
.
setStatus
(
EquipStatusEnum
.
LOSS
.
getCode
().
toString
());
stockDetail
.
setId
(
null
);
stockDetailMapper
.
insert
(
stockDetail
);
addStockDetailId
(
stockDetail
.
getId
());
// 查询库存
Stock
stock
=
stockMapper
.
selectById
(
stockDetail
.
getStockId
());
stock
.
setAmount
(
stock
.
getAmount
()
-
lossCount
);
stockMapper
.
updateById
(
stock
);
// 删除
extinguishantOnCarMapper
.
deleteById
(
ex
.
getId
());
// 损耗清单详情
WastageBillDetail
detail
=
new
WastageBillDetail
();
detail
.
setAmount
(
BigDecimal
.
valueOf
(
lossCount
));
detail
.
setStockDetailId
(
stockDetail
.
getId
());
detail
.
setWastageBillId
(
bill
.
getId
());
wastageBillDetailMapper
.
insert
(
detail
);
journalMapper
.
insert
(
createJournal
(
ex
,
stockDetail
.
getId
(),
null
));
return
0
d
;
}
catch
(
Exception
e
)
{
throw
e
;
}
}
private
Double
greaterThanLossCountHandler
(
ExtinguishantOnCar
ex
,
Double
lossCount
)
throws
Exception
{
try
{
StockDetail
stockDetail
=
getDetailById
(
ex
.
getStockDetailId
());
if
(
stockDetail
==
null
)
{
return
0
d
;
}
stockDetail
.
setAmount
(
stockDetail
.
getAmount
()
-
lossCount
);
stockDetailMapper
.
updateById
(
stockDetail
);
addStockDetailId
(
stockDetail
.
getId
());
StockDetail
stockDetailClone
=
new
StockDetail
();
BeanUtils
.
copyProperties
(
stockDetail
,
stockDetailClone
);
stockDetailClone
.
setId
(
null
);
stockDetailClone
.
setAmount
(
lossCount
);
stockDetailClone
.
setStatus
(
EquipStatusEnum
.
LOSS
.
getCode
().
toString
());
stockDetailMapper
.
insert
(
stockDetailClone
);
addStockDetailId
(
stockDetailClone
.
getId
());
Stock
stock
=
stockMapper
.
selectById
(
stockDetail
.
getStockId
());
stock
.
setAmount
(
stock
.
getAmount
()
-
lossCount
);
stockMapper
.
updateById
(
stock
);
ex
.
setAmount
(
ex
.
getAmount
()
-
lossCount
);
extinguishantOnCarMapper
.
updateById
(
ex
);
// 损耗清单详情
WastageBillDetail
detail
=
new
WastageBillDetail
();
detail
.
setAmount
(
BigDecimal
.
valueOf
(
lossCount
));
detail
.
setStockDetailId
(
stockDetailClone
.
getId
());
detail
.
setWastageBillId
(
bill
.
getId
());
wastageBillDetailMapper
.
insert
(
detail
);
journalMapper
.
insert
(
createJournal
(
ex
,
stockDetailClone
.
getId
(),
lossCount
));
return
0
d
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
e
;
}
}
public
Journal
createJournal
(
ExtinguishantOnCar
e
,
Long
stockDetailId
,
Double
amount
)
{
Journal
journal
=
new
Journal
();
Double
lossAmount
=
(
null
!=
amount
)
?
amount
:
e
.
getAmount
();
Long
lossStockDetailId
=
(
null
!=
stockDetailId
)
?
stockDetailId
:
e
.
getStockDetailId
();
journal
.
setAmount
(
lossAmount
);
journal
.
setCarId
(
getCarId
());
journal
.
setEquipmentDetailId
(
e
.
getEquipmentDetailId
());
journal
.
setUserId
(
Long
.
valueOf
(
getUser
().
getUserId
()));
// 查询EquipmentDetail
EquipmentDetail
equipmentDetail
=
equipmentDetailMapper
.
selectById
(
getDetailById
(
e
.
getStockDetailId
()).
getEquipmentDetailId
());
Equipment
equipment
=
iEquipmentService
.
getById
(
equipmentDetail
.
getEquipmentId
());
Unit
unit
=
unitMapper
.
selectById
(
equipment
.
getUnitId
());
journal
.
setRemark
(
String
.
format
(
"【%s】在车牌号为【%s】的车辆上,损耗了【%.2f】%s【%s】"
,
getUser
().
getRealName
(),
getCar
().
getCarNum
(),
lossAmount
,
unit
.
getName
(),
equipmentDetail
.
getName
()));
journal
.
setOrgCode
(
getCar
().
getOrgCode
());
journal
.
setStockDetailId
(
lossStockDetailId
);
journal
.
setState
(
getLossStateId
().
toString
());
return
journal
;
}
public
Set
<
Long
>
getStockDetailIds
()
{
return
stockDetailIds
;
}
public
void
setStockDetailIds
(
Set
<
Long
>
stockDetailIds
)
{
this
.
stockDetailIds
=
stockDetailIds
;
}
public
void
addStockDetailId
(
Long
id
)
{
stockDetailIds
.
add
(
id
);
}
public
Long
getLossStateId
()
{
return
lossStateId
;
}
public
void
setLossStateId
(
Long
lossStateId
)
{
this
.
lossStateId
=
lossStateId
;
}
}
class
LoadingParams
{
private
Long
carId
;
private
String
loadingId
;
private
List
<
ExtinguishantRequeset
>
extinguishants
;
private
Car
car
;
private
Map
<
Long
,
StockDetail
>
details
;
private
Set
<
Long
>
stockDetailIds
;
public
LoadingParams
(
Long
carId
,
List
<
ExtinguishantRequeset
>
extinguishants
)
{
this
.
carId
=
carId
;
this
.
extinguishants
=
extinguishants
;
setStockDetailIds
(
new
HashSet
<>());
}
public
ExtinguishantOnCar
create
(
ExtinguishantRequeset
r
,
StockDetail
detail
)
{
ExtinguishantOnCar
extinguishantOnCar
=
new
ExtinguishantOnCar
();
extinguishantOnCar
.
setCarId
(
carId
);
extinguishantOnCar
.
setAmount
(
r
.
getAmount
());
extinguishantOnCar
.
setStockDetailId
(
detail
.
getId
());
extinguishantOnCar
.
setEquipmentDetailId
(
getDetailById
(
r
.
getStockDetailId
()).
getEquipmentDetailId
());
return
extinguishantOnCar
;
}
public
Journal
createJournal
(
ExtinguishantRequeset
r
,
Long
stockDetailId
)
{
// 查询EquipmentDetail
EquipmentDetail
equipmentDetail
=
equipmentDetailMapper
.
selectById
(
getDetailById
(
r
.
getStockDetailId
()).
getEquipmentDetailId
());
Equipment
equipment
=
iEquipmentService
.
getById
(
equipmentDetail
.
getEquipmentId
());
Unit
unit
=
unitMapper
.
selectById
(
equipment
.
getUnitId
());
Journal
journal
=
new
Journal
();
journal
.
setAmount
(
r
.
getAmount
());
journal
.
setCarId
(
getCarId
());
journal
.
setEquipmentDetailId
(
getDetailById
(
r
.
getStockDetailId
()).
getEquipmentDetailId
());
journal
.
setUserId
(
Long
.
valueOf
(
getUser
().
getUserId
()));
journal
.
setWarehouseStructureId
(
getDetailById
(
r
.
getStockDetailId
()).
getWarehouseStructureId
());
journal
.
setRemark
(
String
.
format
(
"【%s】向车牌号为【%s】的车辆上,装载了【%.2f】%s【%s】"
,
getUser
().
getRealName
(),
getCar
().
getCarNum
(),
r
.
getAmount
(),
unit
.
getName
(),
equipmentDetail
.
getName
()));
journal
.
setOrgCode
(
getCar
().
getOrgCode
());
journal
.
setStockDetailId
(
stockDetailId
);
journal
.
setState
(
getLoadingId
());
return
journal
;
}
public
StockDetail
getDetailById
(
Long
id
)
{
return
details
.
get
(
id
);
}
public
Long
getCarId
()
{
return
carId
;
}
public
void
setCarId
(
Long
carId
)
{
this
.
carId
=
carId
;
}
public
List
<
ExtinguishantRequeset
>
getExtinguishants
()
{
return
extinguishants
;
}
public
void
setExtinguishants
(
List
<
ExtinguishantRequeset
>
extinguishants
)
{
this
.
extinguishants
=
extinguishants
;
}
public
Car
getCar
()
{
return
car
;
}
public
void
setCar
(
Car
car
)
{
this
.
car
=
car
;
}
public
Map
<
Long
,
StockDetail
>
getDetails
()
{
return
details
;
}
public
void
setDetails
(
Map
<
Long
,
StockDetail
>
details
)
{
this
.
details
=
details
;
}
public
Set
<
Long
>
getStockDetailIds
()
{
return
stockDetailIds
;
}
public
void
setStockDetailIds
(
Set
<
Long
>
stockDetailIds
)
{
this
.
stockDetailIds
=
stockDetailIds
;
}
public
void
addStockDetailId
(
Long
id
)
{
stockDetailIds
.
add
(
id
);
}
public
String
getLoadingId
()
{
return
loadingId
;
}
public
void
setLoadingId
(
String
loadingId
)
{
this
.
loadingId
=
loadingId
;
}
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-equip-biz/src/main/java/com/yeejoin/equipmanage/service/impl/MqttReceiveServiceImpl.java
View file @
57852ef3
...
...
@@ -202,6 +202,8 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
private
long
redisExpireTime
;
@Value
(
"${systemctl.sync.switch}"
)
private
Boolean
syncSwitch
;
@Value
(
"${dcs.send.message}"
)
private
Boolean
NRMsgSend
;
@Value
(
"${systemctl.amos.switch}"
)
private
Boolean
amosSwitch
;
@Value
(
"${isSendApp}"
)
...
...
@@ -1864,7 +1866,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
}
// 向南瑞平台推送报警消息
if
(!
bool
)
{
if
(!
bool
&&
NRMsgSend
)
{
syncDataService
.
syncCreatedSendAlarm
(
equipmentAlarmLogs
);
}
}
...
...
amos-boot-system-equip/src/main/resources/application-dev.properties
View file @
57852ef3
...
...
@@ -25,15 +25,12 @@ spring.security.user.name=admin
spring.security.user.password
=
a1234560
security.productApp
=
STUDIO_APP_MOBILE
amos.system.user.user-name
=
fas_system
amos.system.user.password
=
a1234560
amos.system.user.app-key
=
studio_normalapp_3056965
amos.system.user.product
=
STUDIO_APP_WEB
#redis
#redis
spring.redis.database
=
1
spring.redis.host
=
172.16.10.220
spring.redis.port
=
6379
...
...
@@ -55,88 +52,96 @@ mqtt.client.product.id=mqtt
mqtt.topic
=
topic_mqtt
spring.mqtt.completionTimeout
=
3000
#
定时任务
##
物联报表定时任务
#
\u5B9A\u65F6\u4EFB\u52A1
##
\u7269\u8054\u62A5\u8868\u5B9A\u65F6\u4EFB\u52A1
jobs.month.cron
=
0 50 0 1 * ?
jobs.day.cron
=
0 5 0 * * ?
jobs.week.cron
=
0 25 0 ? * 1
jobs.day.cron.old
=
0 25 0 * * ?
#
定时更新车辆二维码
#
\u5B9A\u65F6\u66F4\u65B0\u8F66\u8F86\u4E8C\u7EF4\u7801
update.car.qrCode
=
0 01 00 * * ?
#
数据同步开关
#
\u6570\u636E\u540C\u6B65\u5F00\u5173
systemctl.sync.switch
=
false
#
数据JCS开关
#
\u6570\u636EJCS\u5F00\u5173
systemctl.jcs.switch
=
false
#
平台数据开关
#
\u5E73\u53F0\u6570\u636E\u5F00\u5173
systemctl.amos.switch
=
false
isSendApp
=
false
#
报表数据地址
#
\u62A5\u8868\u6570\u636E\u5730\u5740
equip.report.url
=
/fire-fighting-system/ureport/preview?_u=file:
#数字化南瑞平台接口
#\u6570\u5B57\u5316\u5357\u745E\u5E73\u53F0\u63A5\u53E3
dcs.send.message
=
true
dcs.client-id
=
fire_system
dcs.grant-type
=
client_credentials
dcs.scope
=
all
dcs.token-key
=
dcs_token_key
dcs.client.secret
=
fire_system
dcs.x.hw.id
=
io.cs
dcs.x.hw.appKey
=
i!YmnHgJ=Ysz8V+O@ZG237inQKfixkQ.-#-P3IlR8fO%.#F!g%35Z#@tp$6G+52v
dcs.url.token
=
http://198.87.103.158:8001/auth-service/oauth/token
dcs.url.sendalarm
=
http://198.87.103.158:8001/alarm-service/appalarm/sendalarm
#
系统上线时间
#
\u7CFB\u7EDF\u4E0A\u7EBF\u65F6\u95F4
param.system.online.date
=
2019-02-12
#
视频转码服务开关 hls(关)/flv(开),默认关闭,数字换流站使用时开启
#
\u89C6\u9891\u8F6C\u7801\u670D\u52A1\u5F00\u5173 hls(\u5173)/flv(\u5F00),\u9ED8\u8BA4\u5173\u95ED\uFF0C\u6570\u5B57\u6362\u6D41\u7AD9\u4F7F\u7528\u65F6\u5F00\u542F
window.vedioFormat
=
hls
window.vedioFormat.video
=
flv
#
航天视频服务地址
#
\u822A\u5929\u89C6\u9891\u670D\u52A1\u5730\u5740
param.htvideo.url
=
http://192.168.4.174:9001;
#
南瑞视频转码服务地址
#
\u5357\u745E\u89C6\u9891\u8F6C\u7801\u670D\u52A1\u5730\u5740
param.nrvideo.url
=
http://198.87.103.158:8001;
#
南瑞视频平台通过视频id获取flv格式视频播放地址
#
\u5357\u745E\u89C6\u9891\u5E73\u53F0\u901A\u8FC7\u89C6\u9891id\u83B7\u53D6flv\u683C\u5F0F\u89C6\u9891\u64AD\u653E\u5730\u5740
param.nrflvbyvoideoid.url
=
http://192.168.4.159:10010/api/media/live
#
预案消防炮、消防泵设备维度类型
#
\u9884\u6848\u6D88\u9632\u70AE\u3001\u6D88\u9632\u6CF5\u8BBE\u5907\u7EF4\u5EA6\u7C7B\u578B
equipment.plan.monitor
=
92030200,92032200
equipment.plan.pump
=
92010600,92030600,92130400,92140200,92150300
#
机场使用特殊配置iotCode前缀,装备、车辆及导入使用到
#
机场使用
#
\u673A\u573A\u4F7F\u7528\u7279\u6B8A\u914D\u7F6EiotCode\u524D\u7F00\uFF0C\u88C5\u5907\u3001\u8F66\u8F86\u53CA\u5BFC\u5165\u4F7F\u7528\u5230
#
\u673A\u573A\u4F7F\u7528
#iot.code.prefix.have.used=20210003,20210004,20210005
#
电力使用
#
\u7535\u529B\u4F7F\u7528
iot.code.prefix.have.used
=
#
装备服务在接收到站端iot推送的装备数据后进行influxdb存库
#1.
在装备接口消息处向influxdb/{productKey}/{deviceName} 消息地址推送数据,iot负责存库
#2.
配置文件添加配置项开关,默认为关闭,该功能只使用于中心及系统
#
是否向iot推送消息
#
\u88C5\u5907\u670D\u52A1\u5728\u63A5\u6536\u5230\u7AD9\u7AEFiot\u63A8\u9001\u7684\u88C5\u5907\u6570\u636E\u540E\u8FDB\u884Cinfluxdb\u5B58\u5E93
#1.
\u5728\u88C5\u5907\u63A5\u53E3\u6D88\u606F\u5904\u5411influxdb/{productKey}/{deviceName} \u6D88\u606F\u5730\u5740\u63A8\u9001\u6570\u636E\uFF0Ciot\u8D1F\u8D23\u5B58\u5E93
#2.
\u914D\u7F6E\u6587\u4EF6\u6DFB\u52A0\u914D\u7F6E\u9879\u5F00\u5173\uFF0C\u9ED8\u8BA4\u4E3A\u5173\u95ED\uFF0C\u8BE5\u529F\u80FD\u53EA\u4F7F\u7528\u4E8E\u4E2D\u5FC3\u53CA\u7CFB\u7EDF
#
\u662F\u5426\u5411iot\u63A8\u9001\u6D88\u606F
isSendIot
=
false
#
报废前30日 发起提醒
#
\u62A5\u5E9F\u524D30\u65E5 \u53D1\u8D77\u63D0\u9192
equipment.scrap.day
=
30
#
提醒时间
#
\u63D0\u9192\u65F6\u95F4
equipment.scrap.cron
=
0 0 9 * * ?
#?????????????
equipment.pressurepump.start.cron
=
0 0 0 * * ?
#
稳压泵启动信号
#
\u7A33\u538B\u6CF5\u542F\u52A8\u4FE1\u53F7
equipment.pressurepump.start
=
FHS_PressurePump_Start
#
稳压泵管网压力信号
#
\u7A33\u538B\u6CF5\u7BA1\u7F51\u538B\u529B\u4FE1\u53F7
equipment.pressurepump.pipepressure
=
FHS_PipePressureDetector_PipePressure
#
站端标识
#
\u7AD9\u7AEF\u6807\u8BC6
state.code
=
GW190301
state.name
=
\u9526\u
5
c4f
\u6362\u
6d41
\u
7ad
9
state.name
=
\u9526\u
5
C4F
\u6362\u
6D41
\u
7AD
9
#
用于总部系统与站端系统逻辑区分,站端写zd总部默认为空
#
\u7528\u4E8E\u603B\u90E8\u7CFB\u7EDF\u4E0E\u7AD9\u7AEF\u7CFB\u7EDF\u903B\u8F91\u533A\u5206\uFF0C\u7AD9\u7AEF\u5199zd\u603B\u90E8\u9ED8\u8BA4\u4E3A\u7A7A
system.type
=
zd
#
是否开启遥测数据上报
#
\u662F\u5426\u5F00\u542F\u9065\u6D4B\u6570\u636E\u4E0A\u62A5
is.open.telemetering
=
false
#
水池液位相关信号
#
\u6C34\u6C60\u6DB2\u4F4D\u76F8\u5173\u4FE1\u53F7
water.level.indexKey
=
FHS_FirePoolDevice_WaterLevel,FHS_LevelDetector_WaterLevel,FHS_WirelessliquidDetector_WaterLevel,CAFS_FoamTank_FoamTankLevel,CAFS_WaterTank_WaterTankLevel
#
江西电建-车辆里程过滤参数(单位
KM)
#
\u6C5F\u897F\u7535\u5EFA-\u8F66\u8F86\u91CC\u7A0B\u8FC7\u6EE4\u53C2\u6570(\u5355\u4F4D
KM)
mileage.parameter
=
0.5
#
江西电建-车辆里程跨天记录切分(每日0点执行
)
#
\u6C5F\u897F\u7535\u5EFA-\u8F66\u8F86\u91CC\u7A0B\u8DE8\u5929\u8BB0\u5F55\u5207\u5206(\u6BCF\u65E50\u70B9\u6267\u884C
)
mileage.segmentation.cron
=
0 0 0 * * ?
mileage.clippingtime
=
600000
equip.car.alarmBattery
=
10
...
...
amos-boot-system-equip/src/main/resources/application.properties
View file @
57852ef3
...
...
@@ -24,7 +24,7 @@ pagehelper.support-methods-arguments=true
spring.main.allow-bean-definition-overriding
=
true
#liquibase
spring.liquibase.change-log
=
classpath:/changelog/changelog-master.xml
spring.liquibase.enabled
=
fals
e
spring.liquibase.enabled
=
tru
e
#\u4E0A\u4F20\u6587\u4EF6\u8BBE\u7F6E
spring.servlet.multipart.maxFileSize
=
100MB
...
...
@@ -95,17 +95,9 @@ firefightingsystem.detail.url=${server.servlet.context-path}/fire-fighting-syste
firefightingsystem.equip.alarms.url
=
${server.servlet.context-path}/fire-fighting-system/getEquipmentAlarmBySystemIdOrSourceIdVO
building.detail
=
${server.servlet.context-path}/building/findByInstanceId
building.floor.detail
=
${server.servlet.context-path}/building/getBuildDetaliByFloorId?instanceId=
dcs.client-id
=
fire_system
dcs.grant-type
=
client_credentials
dcs.scope
=
all
dcs.token-key
=
dcs_token_key
dcs.client.secret
=
fire_system
dcs.x.hw.id
=
NR_REST_APP
dcs.x.hw.appKey
=
s+YkvQhwilx91TRJHhNDmw==
# \u6545\u969C\u544A\u8B66/\u6D88\u9632\u544A\u8B66/\u8DD1\u9A6C\u706F\u6743\u9650\u6807\u8BC6 true \u673A\u573A / false \u7535\u529B
equip.enabled
=
false
#es\u50A8\u5B58\u7269\u8054\u65E5\u5FD7\u662F\u5426\u5220\u9664\u5F00\u5173
es.ESEquiplistSpecific.flag
=
true
#es\u50A8\u5B58\u6570\u636E\u65F6\u95F4\u5E74
...
...
@@ -120,9 +112,6 @@ spring.elasticsearch.rest.uris=http://${biz.elasticsearch.address}:9200
elasticsearch.username
=
elastic
elasticsearch.password
=
Yeejoin@2020
# \u6743\u9650\u6807\u8BC6-\u7269\u8054\u533A\u57DF
auth-key-area
=
area_info
# \u6743\u9650\u6807\u8BC6-\u6D88\u9632\u7CFB\u7EDF
...
...
@@ -161,7 +150,7 @@ spring.security.user.password=a1234560
stationCode
=
LSHLZ1bZAJU645Pgl7
##\u4EE3\u7801\u4E2D\u6709\u90E8\u5206\u903B\u8F91\u51B2\u7A81\u9700\u8981\u5904\u7406 \u4E3A\u533A\u5206\u673A\u573A\u548C\u7535\u529B\u903B\u8F91 \u589E\u52A0\u5F00\u5173 \u82E5\u4E3Atrue \u5219\u4E3A\u673A\u573A\u903B\u8F91 \u4E3Afalse \u5219\u4E3A\u7535\u529B\u903B\u8F91
logic
=
false
#
电站对接第三方查询设备kks码
#
\uFFFD\uFFFD\u057E\uFFFD\u053D\u04F5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u046F\uFFFD\u8C78kks\uFFFD\uFFFD
power.station.url
=
http://139.9.169.123:5024/process/DataInterface
#
电站104采集预警
#
\uFFFD\uFFFD\u057E104\uFFFD\u027C\uFFFD\u0524\uFFFD\uFFFD
power.station.warning
=
104/data/analysis
\ No newline at end of file
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