Commit 5421f63a authored by KeYong's avatar KeYong

Merge branch 'develop_dl' of http://39.98.45.134:8090/moa/amos-boot-biz into develop_dl

parents ac9a93e0 65242508
...@@ -116,13 +116,18 @@ public class Car extends BaseEntity { ...@@ -116,13 +116,18 @@ public class Car extends BaseEntity {
@ApiModelProperty(value = "机构编码") @ApiModelProperty(value = "机构编码")
@TableField("biz_org_code") @TableField("biz_org_code")
private String bizOrgCode; private String bizOrgCode;
// 2023年11月6日 11点16分添加
@ApiModelProperty(value = "司机")
@TableField("driver")
private String driver;
// 2023年11月6日 11点16分添加
@ApiModelProperty(value = "联系电话")
@TableField("phone")
private String phone;
// 2023年11月6日 11点16分添加
@ApiModelProperty(value = "速度阈值")
@TableField("max_speed")
private Double maxSpeed;
@ApiModelProperty(value = "图片") @ApiModelProperty(value = "图片")
@TableField(exist = false) @TableField(exist = false)
private List<UploadFile> img; private List<UploadFile> img;
...@@ -177,7 +182,6 @@ public class Car extends BaseEntity { ...@@ -177,7 +182,6 @@ public class Car extends BaseEntity {
@TableField(exist = false) @TableField(exist = false)
private String iotStatus; private String iotStatus;
@TableField(exist = false) @TableField(exist = false)
private Long categoryId; private Long categoryId;
...@@ -232,4 +236,6 @@ public class Car extends BaseEntity { ...@@ -232,4 +236,6 @@ public class Car extends BaseEntity {
@TableField(exist = false) @TableField(exist = false)
private String iotDeviceName; private String iotDeviceName;
@TableField(exist = false)
private Double monthTravel;
} }
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.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;
}
...@@ -75,6 +75,11 @@ ...@@ -75,6 +75,11 @@
<version>2.4</version> <version>2.4</version>
<classifier>jdk15</classifier> <classifier>jdk15</classifier>
</dependency> </dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.10</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
package com.yeejoin.equipmanage.controller; package com.yeejoin.equipmanage.controller;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
...@@ -73,22 +74,14 @@ public class CarController extends AbstractBaseController { ...@@ -73,22 +74,14 @@ public class CarController extends AbstractBaseController {
@Lazy @Lazy
ICarService iCarService; ICarService iCarService;
@Autowired @Autowired
private EquipmentMapper equipmentMapper;
@Autowired
ISystemDicService iSystemDicService; ISystemDicService iSystemDicService;
@Autowired @Autowired
private EquipmentCategoryMapper equipmentCategoryMapper;
@Autowired
ICarInfoService iCarInfoService; ICarInfoService iCarInfoService;
@Autowired @Autowired
ICarPropertyService iCarPropertyService; ICarPropertyService iCarPropertyService;
@Autowired @Autowired
CarInfoMapper carInfoMapper; CarInfoMapper carInfoMapper;
@Autowired @Autowired
private ManufacturerInfoMapper manufacturerInfoMapper;
@Autowired
private CarPropertyMapper carPropertyMapper;
@Autowired
IEquipmentOnCarService iEquipmentOnCarService; IEquipmentOnCarService iEquipmentOnCarService;
@Autowired @Autowired
ExtinguishantOnCarMapper extinguishantOnCarMapper; ExtinguishantOnCarMapper extinguishantOnCarMapper;
...@@ -97,35 +90,42 @@ public class CarController extends AbstractBaseController { ...@@ -97,35 +90,42 @@ public class CarController extends AbstractBaseController {
@Autowired @Autowired
CarMapper carMapper; CarMapper carMapper;
@Autowired @Autowired
private EquipmentIndexMapper equipmentIndexMapper;
@Autowired
EquipmentDetailMapper equipmentDetailMapper; EquipmentDetailMapper equipmentDetailMapper;
@Autowired @Autowired
EquipmentQrcodeMapper equipmentQrcodeMapper; EquipmentQrcodeMapper equipmentQrcodeMapper;
@Resource(name = "productionQRCodeFactoryMap")
private Map<String, ProductionQRCode> messageHandMap;
@Autowired @Autowired
ICarLonAndLatDataService iCarLonAndLatDataService; ICarLonAndLatDataService iCarLonAndLatDataService;
@Lazy @Lazy
@Autowired @Autowired
IEquipmentService iEquipmentService; IEquipmentService iEquipmentService;
@Autowired @Autowired
IEquipmentDetailService iEquipmentDetailService; IEquipmentDetailService iEquipmentDetailService;
@Autowired @Autowired
IEquipmentQrcodeService iEquipmentQrcodeService; IEquipmentQrcodeService iEquipmentQrcodeService;
@Autowired @Autowired
IEquipmentIndexService iEquipmentIndexService; IEquipmentIndexService iEquipmentIndexService;
@Autowired
ISourceStatistics iSourceStatistics;
@Autowired
JcsFeign jcsFeign;
@Autowired
FireFightingSystemServiceImpl fireFightingSystemServiceImpl;
@Autowired
private EquipmentMapper equipmentMapper;
@Autowired
private EquipmentCategoryMapper equipmentCategoryMapper;
@Autowired
private ManufacturerInfoMapper manufacturerInfoMapper;
@Autowired
private CarPropertyMapper carPropertyMapper;
@Autowired
private EquipmentIndexMapper equipmentIndexMapper;
@Resource(name = "productionQRCodeFactoryMap")
private Map<String, ProductionQRCode> messageHandMap;
@Autowired @Autowired
private ISyncDataService syncDataService; private ISyncDataService syncDataService;
@Value("${redis_equip_type_count}") @Value("${redis_equip_type_count}")
private String equipTypeAndCount; private String equipTypeAndCount;
@Value("${redis_car_type_count}") @Value("${redis_car_type_count}")
private String carTypeAndCount; private String carTypeAndCount;
@Autowired @Autowired
...@@ -136,26 +136,14 @@ public class CarController extends AbstractBaseController { ...@@ -136,26 +136,14 @@ public class CarController extends AbstractBaseController {
private String appKeyApp; private String appKeyApp;
@Value("${iot.vehicle.track}") @Value("${iot.vehicle.track}")
private String iotServerName; private String iotServerName;
@Value("${systemctl.sync.switch}") @Value("${systemctl.sync.switch}")
private Boolean syncSwitch; private Boolean syncSwitch;
@Value("${auth-key-fire-car}") @Value("${auth-key-fire-car}")
private String carAuthKey; private String carAuthKey;
@Value("${auth-key-fire-iot-equip:fire_iot-equip_info}") @Value("${auth-key-fire-iot-equip:fire_iot-equip_info}")
private String iotAuthKey; private String iotAuthKey;
@Autowired
ISourceStatistics iSourceStatistics;
@Autowired @Autowired
private RedisUtils redisUtils; private RedisUtils redisUtils;
@Autowired
JcsFeign jcsFeign;
@Autowired
FireFightingSystemServiceImpl fireFightingSystemServiceImpl;
@Value("${iot.code.prefix.have.used:20210003,20210004,20210005}") @Value("${iot.code.prefix.have.used:20210003,20210004,20210005}")
private String haveUsedIotPrefix; private String haveUsedIotPrefix;
...@@ -198,12 +186,12 @@ public class CarController extends AbstractBaseController { ...@@ -198,12 +186,12 @@ public class CarController extends AbstractBaseController {
} }
// 验证车辆code唯一性 // 验证车辆code唯一性
String iotCode = car.getIotCode(); String iotCode = car.getIotCode();
if(StringUtils.isNotEmpty(iotCode) && StringUtils.isNotEmpty(iotCode.trim())){ if (StringUtils.isNotEmpty(iotCode) && StringUtils.isNotEmpty(iotCode.trim())) {
Car ar= carMapper.getCarsByIotCode(car.getIotCode()); Car ar = carMapper.getCarsByIotCode(car.getIotCode());
if(ar!=null){ if (ar != null) {
throw new BadRequest("物联编码重复"); throw new BadRequest("物联编码重复");
} }
if(StringUtils.isNotEmpty(haveUsedIotPrefix) && Arrays.stream(haveUsedIotPrefix.split(",")).anyMatch(iotCode::startsWith)){ if (StringUtils.isNotEmpty(haveUsedIotPrefix) && Arrays.stream(haveUsedIotPrefix.split(",")).anyMatch(iotCode::startsWith)) {
throw new BadRequest("物联编码航班已占用"); throw new BadRequest("物联编码航班已占用");
} }
} }
...@@ -270,7 +258,6 @@ public class CarController extends AbstractBaseController { ...@@ -270,7 +258,6 @@ public class CarController extends AbstractBaseController {
// } // }
@Async("equipAsyncExecutor") @Async("equipAsyncExecutor")
public void refreshAllCount() { public void refreshAllCount() {
// 清空单位装备分类树缓存 // 清空单位装备分类树缓存
...@@ -349,26 +336,25 @@ public class CarController extends AbstractBaseController { ...@@ -349,26 +336,25 @@ public class CarController extends AbstractBaseController {
// saveFile(carInstance);视频图片文件后期统一处理 // saveFile(carInstance);视频图片文件后期统一处理
String iotCode = car.getIotCode(); String iotCode = car.getIotCode();
if(StringUtil.isNotEmpty(iotCode) && StringUtils.isNotEmpty(iotCode.trim())){ if (StringUtil.isNotEmpty(iotCode) && StringUtils.isNotEmpty(iotCode.trim())) {
Car ar= carMapper.getCarsByIotCodeExcludeCarId(car.getIotCode(),car.getId()); Car ar = carMapper.getCarsByIotCodeExcludeCarId(car.getIotCode(), car.getId());
if(ar != null){ if (ar != null) {
throw new BadRequest("物联编码重复"); throw new BadRequest("物联编码重复");
} }
if(StringUtils.isNotEmpty(haveUsedIotPrefix) && Arrays.stream(haveUsedIotPrefix.split(",")).anyMatch(iotCode::startsWith)){ if (StringUtils.isNotEmpty(haveUsedIotPrefix) && Arrays.stream(haveUsedIotPrefix.split(",")).anyMatch(iotCode::startsWith)) {
throw new BadRequest("物联编码航班已占用"); throw new BadRequest("物联编码航班已占用");
} }
} }
//用来解绑车辆 //用来解绑车辆
if (!ObjectUtils.isEmpty(car.getTeamId())){ if (!ObjectUtils.isEmpty(car.getTeamId())) {
jcsFeign.getUserCar(car.getId(),car.getTeamId()); jcsFeign.getUserCar(car.getId(), car.getTeamId());
} }
Equipment equipment = iEquipmentService.getById(car.getEquipmentId()); Equipment equipment = iEquipmentService.getById(car.getEquipmentId());
car.setName(equipment != null ? equipment.getName() : null); car.setName(equipment != null ? equipment.getName() : null);
if (ObjectUtils.isEmpty(car.getBizOrgName()) && !ObjectUtils.isEmpty(car.getBizOrgCode())) { if (ObjectUtils.isEmpty(car.getBizOrgName()) && !ObjectUtils.isEmpty(car.getBizOrgCode())) {
FeignClientResult<Map<String, Object>> result = Privilege.companyClient.queryByOrgcode(car.getBizOrgCode()); FeignClientResult<Map<String, Object>> result = Privilege.companyClient.queryByOrgcode(car.getBizOrgCode());
System.out.println("==============================" + JSONObject.toJSONString(result.getResult())); System.out.println("==============================" + JSONObject.toJSONString(result.getResult()));
...@@ -421,7 +407,7 @@ public class CarController extends AbstractBaseController { ...@@ -421,7 +407,7 @@ public class CarController extends AbstractBaseController {
* @return * @return
*/ */
@RequestMapping(value = "/{id}", method = RequestMethod.GET) @RequestMapping(value = "/{id}", method = RequestMethod.GET)
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(httpMethod = "GET", value = "根据id查询", notes = "根据id查询") @ApiOperation(httpMethod = "GET", value = "根据id查询", notes = "根据id查询")
public Car selectById(HttpServletRequest request, @PathVariable Long id) { public Car selectById(HttpServletRequest request, @PathVariable Long id) {
return iCarService.selectOneById(id); return iCarService.selectOneById(id);
...@@ -429,6 +415,7 @@ public class CarController extends AbstractBaseController { ...@@ -429,6 +415,7 @@ public class CarController extends AbstractBaseController {
/** /**
* 电建项目-车辆信息详情(表单组件格式导致白屏修复) * 电建项目-车辆信息详情(表单组件格式导致白屏修复)
*
* @param request * @param request
* @param id * @param id
* @return * @return
...@@ -466,7 +453,7 @@ public class CarController extends AbstractBaseController { ...@@ -466,7 +453,7 @@ public class CarController extends AbstractBaseController {
@RequestMapping(value = "/peoperty", method = RequestMethod.POST) @RequestMapping(value = "/peoperty", method = RequestMethod.POST)
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "根据id查询", notes = "根据id查询") @ApiOperation(httpMethod = "POST", value = "根据id查询", notes = "根据id查询")
public Map<String, Object> getCarPropertyByCarIds(@RequestBody List<Long> carIds) { public Map<String, Object> getCarPropertyByCarIds(@RequestBody List<Long> carIds) {
return iCarPropertyService.getCarPropertyByCarIds(carIds); return iCarPropertyService.getCarPropertyByCarIds(carIds);
} }
...@@ -486,7 +473,7 @@ public class CarController extends AbstractBaseController { ...@@ -486,7 +473,7 @@ public class CarController extends AbstractBaseController {
/** /**
* 根据车辆id查询车辆详情信息,供iot_tree展示 * 根据车辆id查询车辆详情信息,供iot_tree展示
* *
* @param carNum * @param id
* @return * @return
*/ */
@RequestMapping(value = "/threeDimensional/getCarDetailById/{id}", method = RequestMethod.GET) @RequestMapping(value = "/threeDimensional/getCarDetailById/{id}", method = RequestMethod.GET)
...@@ -1176,8 +1163,8 @@ public class CarController extends AbstractBaseController { ...@@ -1176,8 +1163,8 @@ public class CarController extends AbstractBaseController {
Map<Long, List<CarIndexVo>> map = null; Map<Long, List<CarIndexVo>> map = null;
// String orgCode = getOrgCode(); // String orgCode = getOrgCode();
ReginParams ReginParams=getSelectedOrgInfo(); ReginParams ReginParams = getSelectedOrgInfo();
String orgCode= ReginParams.getPersonIdentity().getBizOrgCode(); String orgCode = ReginParams.getPersonIdentity().getBizOrgCode();
List<CarIndexVo> carVoList = iCarService.getCarsIotInfo(orgCode); List<CarIndexVo> carVoList = iCarService.getCarsIotInfo(orgCode);
if (!carVoList.isEmpty()) { if (!carVoList.isEmpty()) {
...@@ -1331,7 +1318,7 @@ public class CarController extends AbstractBaseController { ...@@ -1331,7 +1318,7 @@ public class CarController extends AbstractBaseController {
public ResponseModel getTeamCarList(@RequestParam(required = false) Long id, public ResponseModel getTeamCarList(@RequestParam(required = false) Long id,
@RequestParam(required = false) String sequenceNbr, @RequestParam(required = false) String sequenceNbr,
@RequestParam(required = false) Double longitude, @RequestParam(required = false) Double latitude) { @RequestParam(required = false) Double longitude, @RequestParam(required = false) Double latitude) {
return CommonResponseUtil.success(iCarService.getTeamCarList(sequenceNbr,id, longitude, latitude)); return CommonResponseUtil.success(iCarService.getTeamCarList(sequenceNbr, id, longitude, latitude));
} }
/** /**
...@@ -1350,7 +1337,7 @@ public class CarController extends AbstractBaseController { ...@@ -1350,7 +1337,7 @@ public class CarController extends AbstractBaseController {
/** /**
* 根据查询车辆简要信息 * 根据查询车辆简要信息
* *
* @param id * @param carNum
* @return * @return
*/ */
@RequestMapping(value = "/state/info", method = RequestMethod.GET) @RequestMapping(value = "/state/info", method = RequestMethod.GET)
...@@ -1396,82 +1383,100 @@ public class CarController extends AbstractBaseController { ...@@ -1396,82 +1383,100 @@ public class CarController extends AbstractBaseController {
return ResponseHelper.buildResponse(iCarService.getQRCode(id)); return ResponseHelper.buildResponse(iCarService.getQRCode(id));
} }
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/location", method = RequestMethod.GET) @RequestMapping(value = "/location", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "获取二维码图片", notes = "获取二维码图片") @ApiOperation(httpMethod = "GET", value = "获取二维码图片", notes = "获取二维码图片")
public ResponseModel<Object> location() throws Exception { public ResponseModel<Object> location() throws Exception {
return ResponseHelper.buildResponse(iCarService.location()); return ResponseHelper.buildResponse(iCarService.location());
} }
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/getCountOfCar", method = RequestMethod.GET) @RequestMapping(value = "/getCountOfCar", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "车辆统计-获取车辆总数", notes = "车辆统计-获取车辆总数") @ApiOperation(httpMethod = "GET", value = "车辆统计-获取车辆总数", notes = "车辆统计-获取车辆总数")
public Map<String, Integer> getCountOfCar() { public Map<String, Integer> getCountOfCar() {
return iCarService.getCountOfCar(); return iCarService.getCountOfCar();
} }
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/getCountOfCarBelongCompany", method = RequestMethod.GET) @RequestMapping(value = "/getCountOfCarBelongCompany", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "车辆统计-获取车辆归属单位总数", notes = "车辆统计-获取车辆归属单位总数") @ApiOperation(httpMethod = "GET", value = "车辆统计-获取车辆归属单位总数", notes = "车辆统计-获取车辆归属单位总数")
public ResponseModel<Integer> getCountOfCarBelongCompany() { public ResponseModel<Integer> getCountOfCarBelongCompany() {
return CommonResponseUtil.success(iCarService.getCountOfCarBelongCompany()); return CommonResponseUtil.success(iCarService.getCountOfCarBelongCompany());
} }
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/getCarCategoryInfo", method = RequestMethod.GET) @RequestMapping(value = "/getCarCategoryInfo", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "车辆统计-获取车辆分类用途信息", notes = "车辆统计-获取车辆分类用途信息") @ApiOperation(httpMethod = "GET", value = "车辆统计-获取车辆分类用途信息", notes = "车辆统计-获取车辆分类用途信息")
public List<ChartIntegerDto> getCarCategoryInfo() { public List<ChartIntegerDto> getCarCategoryInfo() {
return iCarService.getCarCategoryInfo(); return iCarService.getCarCategoryInfo();
} }
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/getCarEquipStateInfo", method = RequestMethod.GET) @RequestMapping(value = "/getCarEquipStateInfo", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "车辆统计-获取设备状态信息", notes = "车辆统计-获取设备状态信息") @ApiOperation(httpMethod = "GET", value = "车辆统计-获取设备状态信息", notes = "车辆统计-获取设备状态信息")
public Page<CarEquipStateInfoDto> getCarEquipStateInfo() { public Page<CarEquipStateInfoDto> getCarEquipStateInfo() {
return iCarService.getCarEquipStateInfo(); return iCarService.getCarEquipStateInfo();
} }
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/getCarEquipAlarmInfoDto", method = RequestMethod.GET) @RequestMapping(value = "/getCarEquipAlarmInfoDto", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "车辆统计-获取设备告警信息", notes = "车辆统计-获取设备告警信息") @ApiOperation(httpMethod = "GET", value = "车辆统计-获取设备告警信息", notes = "车辆统计-获取设备告警信息")
public Page<CarEquipAlarmInfoDto> getCarEquipAlarmInfoDto() { public Page<CarEquipAlarmInfoDto> getCarEquipAlarmInfoDto(@RequestParam(required = false) String keyWord) {
return iCarService.getCarEquipAlarmInfoDto(); return iCarService.getCarEquipAlarmInfoDto(keyWord);
} }
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/getCarBelongAreaInfo", method = RequestMethod.GET) @RequestMapping(value = "/getCarBelongAreaInfo", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "车辆统计-获取车辆归属信息接口", notes = "车辆统计-获取车辆归属信息接口") @ApiOperation(httpMethod = "GET", value = "车辆统计-获取车辆归属信息接口", notes = "车辆统计-获取车辆归属信息接口")
public List<ChartIntegerDto> getCarBelongAreaInfo() { public List<ChartIntegerDto> getCarBelongAreaInfo() {
return iCarService.getCarBelongAreaInfo(); return iCarService.getCarBelongAreaInfo();
} }
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/getCarAreaInfo", method = RequestMethod.GET) @RequestMapping(value = "/getCarAreaInfo", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "车辆统计-获取片区车辆归属信息接口", notes = "车辆统计-获取片区车辆归属信息接口") @ApiOperation(httpMethod = "GET", value = "车辆统计-获取片区车辆归属信息接口", notes = "车辆统计-获取片区车辆归属信息接口")
public Page<CarAreaInfoDto> getCarAreaInfo(@RequestParam String areaName) { public Page<CarAreaInfoDto> getCarAreaInfo(@RequestParam String areaName) {
return iCarService.getCarAreaInfo(areaName); return iCarService.getCarAreaInfo(areaName);
} }
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/getCarMileageInfoByMoth", method = RequestMethod.GET) @RequestMapping(value = "/getCarMileageInfoByMoth", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "车辆统计-按照月份统计车辆里程", notes = "车辆统计-按照月份统计车辆里程") @ApiOperation(httpMethod = "GET", value = "车辆统计-按照月份统计车辆里程", notes = "车辆统计-按照月份统计车辆里程")
public Page<MileageDto> getCarMileageInfoByMoth(@RequestParam String date) { public BasicTableDataDto getCarMileageInfoByMoth(@RequestParam(required = false) String date, @RequestParam Integer current, @RequestParam Integer size,@RequestParam(required = false) String keyWord) {
return iCarService.getCarMileageInfoByMoth(date); return iCarService.getCarMileageInfoByMoth(date, current, size, keyWord);
} }
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/exportCarMileageInfoByMoth", method = RequestMethod.GET) @RequestMapping(value = "/exportCarMileageInfoByMoth", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "车辆统计-按照月份统计导出车辆里程", notes = "车辆统计-按照月份统计导出车辆里程") @ApiOperation(httpMethod = "GET", value = "车辆统计-按照月份统计导出车辆里程", notes = "车辆统计-按照月份统计导出车辆里程")
public void exportCarMileageInfoByMoth(@RequestParam String date, HttpServletResponse response) { public void exportCarMileageInfoByMoth(@RequestParam(required = false) String date,@RequestParam(required = false) String keyWord, HttpServletResponse response) {
List<CarExportDto> list = this.iCarService.exportCarMileageInfoByMoth(date); List<CarExportDto> list = this.iCarService.exportCarMileageInfoByMoth(date,keyWord);
String name = "车辆里程月度统计表-"+date; if (org.springframework.util.StringUtils.isEmpty(date)) {
FileHelper.exportExcel(list,name,name,CarExportDto.class,UUID.randomUUID().toString()+".xls",response); date = DateUtil.format(new Date(), "yyyy-MM");
}
String name = "车辆里程月度统计表-" + date;
FileHelper.exportExcel(list, name, name, CarExportDto.class, UUID.randomUUID().toString() + ".xls", response);
} }
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/getCarMileageInfoByMothOFDay", method = RequestMethod.GET) @RequestMapping(value = "/getCarMileageInfoByMothOFDay", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "车辆统计-按照月份统计每天的车辆里程", notes = "车辆统计-按照月份统计每天的车辆里程") @ApiOperation(httpMethod = "GET", value = "车辆统计-按照月份统计每天的车辆里程", notes = "车辆统计-按照月份统计每天的车辆里程")
public ZZChartsDto getCarMileageInfoByMothOFDay(@RequestParam String iotCode) { public ZZChartsDto getCarMileageInfoByMothOFDay(@RequestParam String iotCode) {
return iCarService.getCarMileageInfoByMothOFDay(iotCode); return iCarService.getCarMileageInfoByMothOFDay(iotCode);
} }
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/getCarExcepitonTrack", method = RequestMethod.GET) @RequestMapping(value = "/getCarExcepitonTrack", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "车辆统计-按照日期范围获取异常车辆", notes = "车辆统计-按照日期范围获取异常车辆") @ApiOperation(httpMethod = "GET", value = "车辆统计-按照日期范围获取异常车辆", notes = "车辆统计-按照日期范围获取异常车辆")
public Page<CarExceptionDto> getCarExcepitonTrack(@RequestParam Integer type) { public Page<CarExceptionDto> getCarExcepitonTrack(@RequestParam Integer type,@RequestParam(required = false) String keyWord) {
return iCarService.getCarExcepitonTrack(type); 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) {
return iCarService.getCarWarningRecord(keyWord);
}
} }
...@@ -86,7 +86,7 @@ public class BasicTableDataDto { ...@@ -86,7 +86,7 @@ public class BasicTableDataDto {
// } // }
// ] // ]
// } // }
private MypageDto dataGridMock; private DataGridMock dataGridMock;
private List<ColModel> colModel ; private List<ColModel> colModel ;
} }
...@@ -9,6 +9,10 @@ public class CarExportDto { ...@@ -9,6 +9,10 @@ public class CarExportDto {
private String code; private String code;
@Excel(name="车牌号") @Excel(name="车牌号")
private String carNumber; private String carNumber;
@Excel(name = "司机")
private String driver;
@Excel(name = "联系电话")
private String phone;
@Excel(name="所属单位") @Excel(name="所属单位")
private String orgName; private String orgName;
@Excel(name="车辆型号") @Excel(name="车辆型号")
...@@ -17,4 +21,5 @@ public class CarExportDto { ...@@ -17,4 +21,5 @@ public class CarExportDto {
private String displacement; private String displacement;
@Excel(name = "里程数(km)") @Excel(name = "里程数(km)")
private String totalTravel; private String totalTravel;
} }
package com.yeejoin.equipmanage.dto;
import io.swagger.models.auth.In;
import lombok.Data;
import java.util.List;
@Data
public class DataGridMock {
private int current;
private int total;
private boolean pagination;
private int totalPage;
private List dataList;
public DataGridMock(int current, int total, boolean pagination, int totalPage, List dataList) {
this.current = current;
this.total = total;
this.pagination = pagination;
this.totalPage = totalPage;
this.dataList = dataList;
}
}
...@@ -4,10 +4,18 @@ import lombok.Data; ...@@ -4,10 +4,18 @@ import lombok.Data;
@Data @Data
public class MileageDto { public class MileageDto {
private String carCode; //车辆编号
private String carNum; private String carCode;
private Double totalTravel; //车牌号
private String total; private String carNum;
//iotCode+date //百分比
private String iotCode; private Double totalTravel;
//当月总里程
private String total;
//车辆排名
private String number;
//iotCode+date
private String iotCode;
//所属单位
private String bizOrgName;
} }
package com.yeejoin.equipmanage.dto;
import io.swagger.models.auth.In;
import lombok.Data;
import java.util.List;
@Data
public class MypageDto {
private Integer current ;
private Integer total;
private Boolean pagination;
private Integer totalPage;
private List dataList;
private Integer pageSize;
}
package com.yeejoin.equipmanage.listener; 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.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.equipmanage.common.entity.Car; 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.common.entity.WlCarMileage;
import com.yeejoin.equipmanage.fegin.IotFeign; import com.yeejoin.equipmanage.fegin.IotFeign;
import com.yeejoin.equipmanage.mapper.WlCarSpeedWaringRecordMapper;
import com.yeejoin.equipmanage.service.ICarService; import com.yeejoin.equipmanage.service.ICarService;
import com.yeejoin.equipmanage.service.IWlCarMileageService; import com.yeejoin.equipmanage.service.IWlCarMileageService;
import com.yeejoin.equipmanage.thread.ThreadCar; import com.yeejoin.equipmanage.thread.ThreadCar;
...@@ -43,8 +47,13 @@ public class CarIotNewListener extends EmqxListener { ...@@ -43,8 +47,13 @@ public class CarIotNewListener extends EmqxListener {
@Autowired @Autowired
private IotFeign iotFeign; private IotFeign iotFeign;
@Autowired
private WlCarSpeedWaringRecordMapper wlCarSpeedWaringRecordMapper;
@Value("${mileage.clippingtime:600000}") @Value("${mileage.clippingtime:600000}")
private Long clipping_time; private Long clipping_time;
@Value("${default.maxspeed:70.0}")
private Double defaultMaxSpeed;
private final String GUIDE_KEY = "813684495d9a3981dd2c7694916fe404"; private final String GUIDE_KEY = "813684495d9a3981dd2c7694916fe404";
private final String GUIDE_URL = "https://restapi.amap.com/v3/geocode/regeo?"; private final String GUIDE_URL = "https://restapi.amap.com/v3/geocode/regeo?";
...@@ -191,7 +200,9 @@ public class CarIotNewListener extends EmqxListener { ...@@ -191,7 +200,9 @@ public class CarIotNewListener extends EmqxListener {
double startLongitude = jsonObject.getDoubleValue("FireCar_Longitude"); double startLongitude = jsonObject.getDoubleValue("FireCar_Longitude");
double startLatitude = jsonObject.getDoubleValue("FireCar_Latitude"); double startLatitude = jsonObject.getDoubleValue("FireCar_Latitude");
int direction = jsonObject.getIntValue("direction"); 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)); Car car = iCarService.getOne(new LambdaQueryWrapper<Car>().eq(Car::getIotCode, iotCode));
if (car != null && startLongitude != 0 && startLatitude != 0) { if (car != null && startLongitude != 0 && startLatitude != 0) {
...@@ -208,7 +219,22 @@ public class CarIotNewListener extends EmqxListener { ...@@ -208,7 +219,22 @@ public class CarIotNewListener extends EmqxListener {
mqttMessage.setPayload(sendArr.toJSONString().getBytes()); mqttMessage.setPayload(sendArr.toJSONString().getBytes());
car.setLongitude(startLongitude); car.setLongitude(startLongitude);
car.setLatitude(startLatitude); car.setLatitude(startLatitude);
if(!ObjectUtils.isEmpty(car.getMaxSpeed())){
maxSpeed =car.getMaxSpeed();
}
iCarService.updateById(car); 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("-----------推送车辆位置消息到到地图成功--------"); logger.info("-----------推送车辆位置消息到到地图成功--------");
try { try {
emqkeeper.getMqttClient().publish("car/location", mqttMessage); emqkeeper.getMqttClient().publish("car/location", mqttMessage);
......
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> {
}
...@@ -8,10 +8,7 @@ import com.yeejoin.equipmanage.common.datasync.entity.FireVehicle; ...@@ -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.CarFusionDto;
import com.yeejoin.equipmanage.common.dto.CarInfoDto; import com.yeejoin.equipmanage.common.dto.CarInfoDto;
import com.yeejoin.equipmanage.common.dto.CarStatusInfoDto; import com.yeejoin.equipmanage.common.dto.CarStatusInfoDto;
import com.yeejoin.equipmanage.common.entity.Car; import com.yeejoin.equipmanage.common.entity.*;
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.dto.CarDto; import com.yeejoin.equipmanage.common.entity.dto.CarDto;
import com.yeejoin.equipmanage.common.entity.dto.CarEquipAlarmInfoDto; import com.yeejoin.equipmanage.common.entity.dto.CarEquipAlarmInfoDto;
import com.yeejoin.equipmanage.common.entity.dto.CarEquipStateInfoDto; import com.yeejoin.equipmanage.common.entity.dto.CarEquipStateInfoDto;
...@@ -19,6 +16,7 @@ import com.yeejoin.equipmanage.common.entity.vo.CarIndexVo; ...@@ -19,6 +16,7 @@ import com.yeejoin.equipmanage.common.entity.vo.CarIndexVo;
import com.yeejoin.equipmanage.common.entity.vo.CarPropertyVo; import com.yeejoin.equipmanage.common.entity.vo.CarPropertyVo;
import com.yeejoin.equipmanage.common.vo.*; import com.yeejoin.equipmanage.common.vo.*;
import com.yeejoin.equipmanage.dto.*; import com.yeejoin.equipmanage.dto.*;
import javassist.compiler.ast.Keyword;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -200,19 +198,18 @@ public interface ICarService extends IService<Car> { ...@@ -200,19 +198,18 @@ public interface ICarService extends IService<Car> {
Map<String,Integer> getCountOfCarBelongCompany(); Map<String,Integer> getCountOfCarBelongCompany();
List<ChartIntegerDto> getCarCategoryInfo() ; List<ChartIntegerDto> getCarCategoryInfo() ;
Page<CarEquipStateInfoDto> getCarEquipStateInfo(); Page<CarEquipStateInfoDto> getCarEquipStateInfo();
Page<CarEquipAlarmInfoDto> getCarEquipAlarmInfoDto(); Page<CarEquipAlarmInfoDto> getCarEquipAlarmInfoDto(String keyWord);
List<ChartIntegerDto>getCarBelongAreaInfo() ; List<ChartIntegerDto>getCarBelongAreaInfo() ;
Page<CarAreaInfoDto> getCarAreaInfo(String areaName ) ; Page<CarAreaInfoDto> getCarAreaInfo(String areaName ) ;
Page<MileageDto> getCarMileageInfoByMoth(String date); BasicTableDataDto getCarMileageInfoByMoth(String date, Integer current, Integer pageSize,String keyWord);
List<CarExportDto> exportCarMileageInfoByMoth(String date); List<CarExportDto> exportCarMileageInfoByMoth(String date,String keyWord);
ZZChartsDto getCarMileageInfoByMothOFDay(String iotCode); 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>> updateCarStartStatus(); List<Map<String, String>> updateCarStartStatus();
/** /**
* 赋码 * 赋码
*/ */
......
package com.yeejoin.equipmanage.service.impl; package com.yeejoin.equipmanage.service.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
...@@ -20,7 +21,6 @@ import com.yeejoin.amos.component.feign.model.FeignClientResult; ...@@ -20,7 +21,6 @@ import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel; import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.privilege.model.UserOrgTreeModel;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.equipmanage.common.datasync.entity.FireVehicle; import com.yeejoin.equipmanage.common.datasync.entity.FireVehicle;
import com.yeejoin.equipmanage.common.dto.CarFusionDto; import com.yeejoin.equipmanage.common.dto.CarFusionDto;
...@@ -67,7 +67,6 @@ import javax.servlet.http.HttpServletRequest; ...@@ -67,7 +67,6 @@ import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.PrintStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZoneId; import java.time.ZoneId;
...@@ -141,7 +140,8 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS ...@@ -141,7 +140,8 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
@Autowired @Autowired
EquipmentSpecificMapper equipmentSpecificMapper; EquipmentSpecificMapper equipmentSpecificMapper;
@Autowired
WlCarSpeedWaringRecordMapper wlCarSpeedWaringRecordMapper;
@Autowired @Autowired
private RemoteSecurityService remoteSecurityService; private RemoteSecurityService remoteSecurityService;
...@@ -1380,7 +1380,9 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS ...@@ -1380,7 +1380,9 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
if (!ObjectUtils.isEmpty(car.getIotCode())) { if (!ObjectUtils.isEmpty(car.getIotCode())) {
Double monthTravel=0.0;
Double totalTravel = 0.0; Double totalTravel = 0.0;
String currentYearAndMonth = DateUtil.format(new Date(), "yyyy-MM");
LambdaQueryWrapper<WlCarMileage> wrapper = new LambdaQueryWrapper<WlCarMileage>(); LambdaQueryWrapper<WlCarMileage> wrapper = new LambdaQueryWrapper<WlCarMileage>();
wrapper.eq(WlCarMileage::getIotCode, car.getIotCode()); wrapper.eq(WlCarMileage::getIotCode, car.getIotCode());
wrapper.ge(WlCarMileage::getTravel, 0.5); wrapper.ge(WlCarMileage::getTravel, 0.5);
...@@ -1392,9 +1394,13 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS ...@@ -1392,9 +1394,13 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
//判断当前车辆全程是否异常,如果时速小于阈值 则对数据进行返回 否则不予返回 //判断当前车辆全程是否异常,如果时速小于阈值 则对数据进行返回 否则不予返回
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(); totalTravel += wl.getTravel();
if(DateUtil.format(wl.getStartTime(),"yyyy-MM").equals(currentYearAndMonth)){
monthTravel += wl.getTravel();
}
} }
} }
car.setTotalTravel(Double.valueOf(String.format("%.1f",totalTravel))); car.setTotalTravel(Double.valueOf(String.format("%.1f",totalTravel)));
car.setMonthTravel(Double.valueOf(String.format("%.1f",monthTravel)));
WlCarMileage last = iWlCarMileageService WlCarMileage last = iWlCarMileageService
.getOne(new LambdaQueryWrapper<WlCarMileage>().eq(WlCarMileage::getIotCode, car.getIotCode()) .getOne(new LambdaQueryWrapper<WlCarMileage>().eq(WlCarMileage::getIotCode, car.getIotCode())
.orderByDesc(WlCarMileage::getEndTime).last("limit 1")); .orderByDesc(WlCarMileage::getEndTime).last("limit 1"));
...@@ -1814,14 +1820,20 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS ...@@ -1814,14 +1820,20 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
} }
@Override @Override
public Page<CarEquipAlarmInfoDto> getCarEquipAlarmInfoDto() { public Page<CarEquipAlarmInfoDto> getCarEquipAlarmInfoDto(String keyWord) {
Page<CarEquipAlarmInfoDto> page = new Page<>(); 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)||car.getOwnership().contains(keyWord)).collect(Collectors.toList());
}
List<CarEquipAlarmInfoDto> carEquipAlarmInfoDtoList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
list.get(i).setNo(i+1); CarEquipAlarmInfoDto carEquipAlarmInfoDto=new CarEquipAlarmInfoDto();
list.get(i).setAlarmMessage("该设备电量低于"+carEquipAlarmBatteryNumber+"%!"); carEquipAlarmInfoDto.setCarNum(list.get(i).getCarNum());
carEquipAlarmInfoDto.setNo(i+1);
carEquipAlarmInfoDto.setAlarmMessage("该设备电量低于"+carEquipAlarmBatteryNumber+"%!");
} }
page.setRecords(list); page.setRecords(carEquipAlarmInfoDtoList);
page.setTotal(list.size()); page.setTotal(list.size());
page.setCurrent(1); page.setCurrent(1);
page.setSize(10); page.setSize(10);
...@@ -1878,57 +1890,75 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS ...@@ -1878,57 +1890,75 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
} }
@Override @Override
public Page<MileageDto> getCarMileageInfoByMoth(String date) { public BasicTableDataDto getCarMileageInfoByMoth(String date,Integer current,Integer pageSize,String keyWord) {
Page<MileageDto> page = new Page<>(); BasicTableDataDto basicTableDataDto = new BasicTableDataDto();
List<ColModel> colModels = new ArrayList<>();
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<MileageDto> mileageDtoList = new ArrayList<>();
List<Car> list = this.list(); List<Car> list = this.list();
if(StringUtils.isNotEmpty(keyWord)){
list=list.stream().filter(car -> car.getBizOrgName().contains(keyWord)||car.getOwnership().contains(keyWord)).collect(Collectors.toList());
}
if (list.size() > 0) { if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
MileageDto mileageDto = new MileageDto(); MileageDto mileageDto = new MileageDto();
Double totalTravel = iWlCarMileageService.getTotalTravelByIotCodeAndDate(date, list.get(i).getIotCode()); Car car = list.get(i);
mileageDto.setCarNum(list.get(i).getCarNum()); Double totalTravel = iWlCarMileageService.getTotalTravelByIotCodeAndDate(date, car.getIotCode());
mileageDto.setCarCode(list.get(i).getRemark()); mileageDto.setCarNum(car.getCarNum());
mileageDto.setIotCode(date + "::" + list.get(i).getIotCode()); mileageDto.setCarCode(car.getRemark());
mileageDto.setBizOrgName(car.getBizOrgName());
mileageDto.setIotCode(date + "::" + car.getIotCode());
if (totalTravel != null) { if (totalTravel != null) {
mileageDto.setTotalTravel((totalTravel / carMaxTravel) * 100); // mileageDto.setTotalTravel((totalTravel / carMaxTravel) * 100);
mileageDto.setTotalTravel(totalTravel);
} else { } else {
totalTravel= 0.0; totalTravel= 0.0;
mileageDto.setTotalTravel(totalTravel); mileageDto.setTotalTravel(totalTravel);
} }
mileageDto.setTotal(totalTravel+"KM"); mileageDto.setTotal(String.format("%.1f",totalTravel)+"KM");
mileageDtoList.add(mileageDto); mileageDtoList.add(mileageDto);
} }
} }
mileageDtoList = mileageDtoList.stream().sorted(Comparator.comparing(MileageDto::getTotalTravel).reversed()).collect(Collectors.toList()); mileageDtoList = mileageDtoList.stream().sorted(Comparator.comparing(MileageDto::getTotalTravel).reversed()).collect(Collectors.toList());
page.setRecords(mileageDtoList); Integer from=(current-1)*pageSize>mileageDtoList.size()?mileageDtoList.size():(current-1)*pageSize;
page.setTotal(mileageDtoList.size()); Integer to=current*pageSize>mileageDtoList.size()?mileageDtoList.size():current*pageSize;
page.setCurrent(1); DataGridMock mypageDto=new DataGridMock(current,mileageDtoList.size(),true,current,mileageDtoList.subList(from,to));
page.setSize(10); basicTableDataDto.setDataGridMock(mypageDto);
return page; basicTableDataDto.setColModel(colModels);
return basicTableDataDto;
} }
@Override @Override
public List<CarExportDto> exportCarMileageInfoByMoth(String date) { public List<CarExportDto> exportCarMileageInfoByMoth(String date,String keyWord) {
List<CarExportDto> carExportDtos = new ArrayList<>(); List<CarExportDto> carExportDtos = new ArrayList<>();
List<Car> list = this.list(); List<Car> list = this.list();
if(StringUtils.isNotEmpty(keyWord)){
list=list.stream().filter(car -> car.getBizOrgName().contains(keyWord)||car.getOwnership().contains(keyWord)).collect(Collectors.toList());
}
if (list.size() > 0) { if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
CarExportDto carExportDto = new CarExportDto(); CarExportDto carExportDto = new CarExportDto();
Double totalTravel = iWlCarMileageService.getTotalTravelByIotCodeAndDate(date, list.get(i).getIotCode());
Car car = list.get(i); Car car = list.get(i);
carExportDto.setCode(car.getCode()); Double totalTravel = iWlCarMileageService.getTotalTravelByIotCodeAndDate(date, car.getIotCode());
carExportDto.setCode(car.getRemark());
carExportDto.setCarNumber(car.getCarNum()); carExportDto.setCarNumber(car.getCarNum());
carExportDto.setDriver(car.getDriver());
carExportDto.setPhone(car.getPhone());
carExportDto.setOrgName(car.getBizOrgName()); carExportDto.setOrgName(car.getBizOrgName());
carExportDto.setStandard(car.getStandard()); carExportDto.setStandard(car.getStandard());
carExportDto.setDisplacement(car.getDisplacement()); carExportDto.setDisplacement(car.getDisplacement());
if(totalTravel!=null){ if(totalTravel!=null){
carExportDto.setTotalTravel(String.valueOf(totalTravel)); carExportDto.setTotalTravel(String.format("%.1f",totalTravel)+"KM");
}else { }else {
carExportDto.setTotalTravel("0"); carExportDto.setTotalTravel("0.0KM");
} }
carExportDtos.add(carExportDto); carExportDtos.add(carExportDto);
} }
} }
Collections.sort(carExportDtos,(e1,e2)->Double.valueOf(e2.getTotalTravel()).compareTo(Double.valueOf(e1.getTotalTravel())));
return carExportDtos; return carExportDtos;
} }
...@@ -1960,21 +1990,25 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS ...@@ -1960,21 +1990,25 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
} }
@Override @Override
public Page<CarExceptionDto> getCarExcepitonTrack(Integer type) { public Page<CarExceptionDto> getCarExcepitonTrack(Integer type,String keyWord) {
Page<CarExceptionDto> page = new Page<>(); Page<CarExceptionDto> page = new Page<>();
List<CarExceptionDto> carExceptionDtos = new ArrayList<>(); List<CarExceptionDto> carExceptionDtos = new ArrayList<>();
LocalDate localDate = LocalDate.now(ZoneId.of("+8")); LocalDate localDate = LocalDate.now(ZoneId.of("+8"));
String startDate = localDate.plusDays(-1).toString(); 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(); List<Car> list = this.list();
if(StringUtils.isNotEmpty(keyWord)){
list=list.stream().filter(car -> car.getBizOrgName().contains(keyWord)||car.getOwnership().contains(keyWord)).collect(Collectors.toList());
}
if (list.size() > 0) { if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
CarExceptionDto carExceptionDto = new CarExceptionDto(); CarExceptionDto carExceptionDto = new CarExceptionDto();
Car car = list.get(i);
Double totalTravel = iWlCarMileageService.getTotalTravelByIotCodeAndDateProd(startDate,endDate,list.get(i).getIotCode()); Double totalTravel = iWlCarMileageService.getTotalTravelByIotCodeAndDateProd(startDate,endDate,list.get(i).getIotCode());
if (!(totalTravel != null && totalTravel> 0.0)) { if (!(totalTravel != null && totalTravel> 0.0)) {
carExceptionDto.setCarId(String.valueOf(list.get(i).getId())); carExceptionDto.setCarId(String.valueOf(car.getId()));
carExceptionDto.setCarNumber(list.get(i).getCarNum()); carExceptionDto.setCarNumber(car.getCarNum());
carExceptionDto.setBelongStation(list.get(i).getBizOrgName()); carExceptionDto.setBelongStation(car.getBizOrgName());
carExceptionDtos.add(carExceptionDto); carExceptionDtos.add(carExceptionDto);
} }
} }
...@@ -1987,6 +2021,25 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS ...@@ -1987,6 +2021,25 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
} }
@Override @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>> updateCarStartStatus() { public List<Map<String, String>> updateCarStartStatus() {
return carPropertyMapper.selectIndexByTime(CAR_START_INDEX_KEY); return carPropertyMapper.selectIndexByTime(CAR_START_INDEX_KEY);
} }
......
package com.yeejoin.equipmanage.service.impl; package com.yeejoin.equipmanage.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
...@@ -24,11 +26,13 @@ import org.slf4j.Logger; ...@@ -24,11 +26,13 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.typroject.tyboot.component.emq.EmqKeeper; import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
...@@ -75,7 +79,9 @@ public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlC ...@@ -75,7 +79,9 @@ public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlC
private Double mileageParameter; private Double mileageParameter;
@Resource @Resource
private EmqKeeper emqKeeper; private EmqKeeper emqKeeper;
@Autowired
@Lazy
private IWlCarMileageService iWlCarMileageService;
public static List<String> getDayByMonth(Date date) { public static List<String> getDayByMonth(Date date) {
List<String> data = new ArrayList<>(); List<String> data = new ArrayList<>();
try { try {
...@@ -478,12 +484,44 @@ public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlC ...@@ -478,12 +484,44 @@ public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlC
@Override @Override
public Double getTotalTravelByIotCodeAndDate(String date, String iotCode) { public Double getTotalTravelByIotCodeAndDate(String date, String iotCode) {
return this.baseMapper.getTotalTravelByIotCodeAndDate(date, iotCode); if(StringUtils.isEmpty(date)){
date = DateUtil.format(new Date(),"yyyy-MM");
}
Double totalTravel = 0.0;
LambdaQueryWrapper<WlCarMileage> wrapper = new LambdaQueryWrapper<WlCarMileage>();
wrapper.eq(WlCarMileage::getIotCode,iotCode);
wrapper.ge(WlCarMileage::getTravel, 0.5);
wrapper.isNotNull(WlCarMileage::getEndTime);
wrapper.isNotNull(WlCarMileage::getStartTime);
wrapper.like(WlCarMileage::getStartTime,date);
List<WlCarMileage> list = iWlCarMileageService.list(wrapper);
for (WlCarMileage wl : list) {
//判断当前车辆全程是否异常,如果时速小于阈值 则对数据进行返回 否则不予返回
if (!org.springframework.util.ObjectUtils.isEmpty(wl.getTakeTime()) && !org.springframework.util.ObjectUtils.isEmpty(wl.getTravel()) && ((wl.getTravel() / (wl.getTakeTime() / 3600000.0)) < CAR_MAX_SPEED)) {
totalTravel += wl.getTravel();
}
}
return totalTravel;
} }
@Override @Override
public Double getTotalTravelByIotCodeAndDateProd(String startDate, String endDate, String iotCode) { public Double getTotalTravelByIotCodeAndDateProd(String startDate, String endDate, String iotCode) {
return this.baseMapper.getTotalTravelByIotCodeAndDateProd(startDate, endDate, iotCode); Double totalTravel = 0.0;
LambdaQueryWrapper<WlCarMileage> wrapper = new LambdaQueryWrapper<WlCarMileage>();
wrapper.eq(WlCarMileage::getIotCode,iotCode);
wrapper.ge(WlCarMileage::getTravel, 0.5);
wrapper.isNotNull(WlCarMileage::getEndTime);
wrapper.isNotNull(WlCarMileage::getStartTime);
wrapper.ge(WlCarMileage::getEndTime,endDate);
wrapper.le(WlCarMileage::getStartTime,startDate);
List<WlCarMileage> list = iWlCarMileageService.list(wrapper);
for (WlCarMileage wl : list) {
//判断当前车辆全程是否异常,如果时速小于阈值 则对数据进行返回 否则不予返回
if (!org.springframework.util.ObjectUtils.isEmpty(wl.getTakeTime()) && !org.springframework.util.ObjectUtils.isEmpty(wl.getTravel()) && ((wl.getTravel() / (wl.getTakeTime() / 3600000.0)) < CAR_MAX_SPEED)) {
totalTravel += wl.getTravel();
}
}
return totalTravel;
} }
/** /**
......
...@@ -1950,7 +1950,11 @@ ...@@ -1950,7 +1950,11 @@
And wlc.equip_status = #{equipTypeAmountPage.equipStatus} And wlc.equip_status = #{equipTypeAmountPage.equipStatus}
</if> </if>
<if test="equipTypeAmountPage.keyword!=null and equipTypeAmountPage.keyword!=''"> <if test="equipTypeAmountPage.keyword!=null and equipTypeAmountPage.keyword!=''">
And (wlc.`NAME` LIKE CONCAT('%',#{equipTypeAmountPage.keyword},'%') OR wlc.car_num LIKE CONCAT('%',#{equipTypeAmountPage.keyword},'%')) And (wlc.`NAME` LIKE CONCAT('%',#{equipTypeAmountPage.keyword},'%')
OR wlc.car_num LIKE CONCAT('%',#{equipTypeAmountPage.keyword},'%')
OR wlc.biz_org_name LIKE CONCAT('%',#{equipTypeAmountPage.keyword},'%')
OR wlc.ownership LIKE CONCAT('%',#{equipTypeAmountPage.keyword},'%')
)
</if> </if>
)s2 )s2
<if test="equipTypeAmountPage.warehouseStructureName!=null and equipTypeAmountPage.warehouseStructureName!=''"> <if test="equipTypeAmountPage.warehouseStructureName!=null and equipTypeAmountPage.warehouseStructureName!=''">
......
...@@ -58,8 +58,7 @@ ...@@ -58,8 +58,7 @@
SELECT SUM(travel) SELECT SUM(travel)
FROM wl_car_mileage FROM wl_car_mileage
WHERE date LIKE concat('%',#{date},'%') WHERE date LIKE concat('%',#{date},'%')
AND AND iot_code = #{iotCode}
iot_code = #{iotCode}
</select> </select>
<select id ="getTotalTravelByIotCodeAndDateProd" resultType="Double"> <select id ="getTotalTravelByIotCodeAndDateProd" resultType="Double">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment