2025年10月10日 1.0.4 增加重点隐患车辆电子围栏接口/ZDYH/getFenceData

隐患区域数据接口/ZDYH/getHiddenDangerAreaData
                                    违法车辆数据接口/ZDYH/getFatigueData
main
gaoshuguang 1 month ago
parent a82f2bca47
commit 001ca63907

@ -19,6 +19,21 @@ import java.util.Map;
public class ZDYHDataController {
@Resource
private ZDYHDataService zdyhDataService;
@PostMapping("/ZDYH/getFatigueData")
public Result getFatigueData(@RequestBody Map<String, Object> params) {
String uuid = UuidUtil.getUuid();
return zdyhDataService.getFatigueData(params, uuid);
}
@PostMapping("/ZDYH/getHiddenDangerAreaData")
public Result getHiddenDangerAreaData(@RequestBody Map<String, Object> params) {
String uuid = UuidUtil.getUuid();
return zdyhDataService.getHiddenDangerAreaData(params, uuid);
}
@PostMapping("/ZDYH/getFenceData")
public Result getFenceData(@RequestBody Map<String, Object> params) {
String uuid = UuidUtil.getUuid();
return zdyhDataService.getFenceData(params, uuid);
}
@PostMapping("/ZDYH/getWarningData")
public Result getWarningData(@RequestBody Map<String, Object> params) {
String uuid = UuidUtil.getUuid();

@ -0,0 +1,107 @@
package com.nmggs.query.entity.fx;
import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
*
*
* @author: shuguang
* @date: 2025-10-09
*/
@Data
@TableName("zdyh_fatigue_vehicle")
public class FatigueVehicle {
/**
*
*/
@TableField("plateno")
@JSONField(name = "plateno")
private String plateno;
/**
* 1- 2- 3-
*/
@TableField("vehicletype")
@JSONField(name = "vehicletype")
private Integer vehicletype;
/**
* 1-2-3-4-
*/
@TableField("datatype")
@JSONField(name = "datatype")
private Integer datatype;
/**
*
*/
@TableField("equipmentid")
@JSONField(name = "equipmentid")
private Integer equipmentid;
/**
*
*/
@TableField("equipmentname")
@JSONField(name = "equipmentname")
private String equipmentname;
/**
* YYYY-MM-DD HH:mm:ss
*/
@TableField("enforcementtime")
@JSONField(name = "enforcementtime")
private String enforcementtime;
/**
* YYYY-MM-DD HH:mm:ss
*/
@TableField("violationstarttime")
@JSONField(name = "violationstarttime")
private String violationstarttime;
/**
* YYYY-MM-DD HH:mm:ss
*/
@TableField("violationendtime")
@JSONField(name = "violationendtime")
private String violationendtime;
/**
*
*/
@TableField("violationminute")
@JSONField(name = "violationminute")
private Integer violationminute;
/**
* km/h
*/
@TableField("speedlimit")
@JSONField(name = "speedlimit")
private Integer speedlimit;
/**
* km/h
*/
@TableField("actualspeed")
@JSONField(name = "actualspeed")
private Integer actualspeed;
/**
* 线
*/
@TableField("endviolationtime")
@JSONField(name = "endviolationtime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private String endviolationtime;
/**
*
*/
@TableField("inserttime")
@JSONField(name = "inserttime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date inserttime;
}

@ -0,0 +1,163 @@
package com.nmggs.query.entity.fx;
import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* @author: shuguang
* @date: 20251009
* @description:
*/
@Data
@TableName("zdyh_fence_info")
public class FenceInfo {
/**
*
*/
@TableField("fenceid")
@JSONField(name = "fenceid")
private String fenceid;
/**
*
*/
@TableField("equipmentid")
@JSONField(name = "equipmentid")
private Integer equipmentid;
/**
*
*/
@TableField("equipmentname")
@JSONField(name = "equipmentname")
private String equipmentname;
/**
*
*/
@TableField("departmentno")
@JSONField(name = "departmentno")
private Integer departmentno;
/**
*
*/
@TableField("departmentname")
@JSONField(name = "departmentname")
private String departmentname;
/**
*
*/
@TableField("pilenumber")
@JSONField(name = "pilenumber")
private String pilenumber;
/**
*
*/
@TableField("lng")
@JSONField(name = "lng")
private String lng;
/**
*
*/
@TableField("lat")
@JSONField(name = "lat")
private String lat;
/**
* km/h
*/
@TableField("highwayspeedlimit")
@JSONField(name = "highwayspeedlimit")
private Integer highwayspeedlimit;
/**
* km/h
*/
@TableField("lowspeedlimit")
@JSONField(name = "lowspeedlimit")
private Integer lowspeedlimit;
/**
* 1-2-
*/
@TableField("ispark")
@JSONField(name = "ispark")
private Integer ispark;
/**
* km
*/
@TableField("monitormileage")
@JSONField(name = "monitormileage")
private Integer monitormileage;
/**
*
*/
@TableField("updatetime")
@JSONField(name = "updatetime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updatetime;
/**
*
*/
@TableField("beginLeftLat")
@JSONField(name = "beginLeftLat")
private String beginLeftLat;
/**
*
*/
@TableField("beginLeftLng")
@JSONField(name = "beginLeftLng")
private String beginLeftLng;
/**
*
*/
@TableField("beginRightLat")
@JSONField(name = "beginRightLat")
private String beginRightLat;
/**
*
*/
@TableField("beginRightLng")
@JSONField(name = "beginRightLng")
private String beginRightLng;
/**
*
*/
@TableField("endLeftLat")
@JSONField(name = "endLeftLat")
private String endLeftLat;
/**
*
*/
@TableField("endLeftLng")
@JSONField(name = "endLeftLng")
private String endLeftLng;
/**
*
*/
@TableField("endRightLat")
@JSONField(name = "endRightLat")
private String endRightLat;
/**
*
*/
@TableField("endRightLon")
@JSONField(name = "endRightLon")
private String endRightLon;
}

@ -0,0 +1,217 @@
package com.nmggs.query.entity.fx;
import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* @author: shuguang
* @date: 2025-10-09
* @description:
*/
@Data
@TableName("zdyh_hidden_danger_area_info")
public class HiddenDangerAreaInfo {
/**
* YYYY-MM-DD
*/
@TableField("classdate")
@JSONField(name = "classdate")
private String classdate;
/**
*
*/
@TableField("fenceid")
@JSONField(name = "fenceid")
private String fenceid;
/**
*
*/
@TableField("equipmentid")
@JSONField(name = "equipmentid")
private Integer equipmentid;
/**
*
*/
@TableField("equipmentname")
@JSONField(name = "equipmentname")
private String equipmentname;
/**
*
*/
@TableField("departmentno")
@JSONField(name = "departmentno")
private Integer departmentno;
/**
*
*/
@TableField("departmentname")
@JSONField(name = "departmentname")
private String departmentname;
/**
*
*/
@TableField("pilenumber")
@JSONField(name = "pilenumber")
private String pilenumber;
/**
*
*/
@TableField("fatiguecount")
@JSONField(name = "fatiguecount")
private Integer fatiguecount;
/**
*
*/
@TableField("truckfatiguecount")
@JSONField(name = "truckfatiguecount")
private Integer truckfatiguecount;
/**
*
*/
@TableField("dangerfatiguecount")
@JSONField(name = "dangerfatiguecount")
private Integer dangerfatiguecount;
/**
*
*/
@TableField("carfatiguecount")
@JSONField(name = "carfatiguecount")
private Integer carfatiguecount;
/**
*
*/
@TableField("severefatiguecount")
@JSONField(name = "severefatiguecount")
private Integer severefatiguecount;
/**
*
*/
@TableField("truckseverefatiguecount")
@JSONField(name = "truckseverefatiguecount")
private Integer truckseverefatiguecount;
/**
*
*/
@TableField("dangerseverefatiguecount")
@JSONField(name = "dangerseverefatiguecount")
private Integer dangerseverefatiguecount;
/**
*
*/
@TableField("carseverefatiguecount")
@JSONField(name = "carseverefatiguecount")
private Integer carseverefatiguecount;
/**
*
*/
@TableField("speedcount")
@JSONField(name = "speedcount")
private Integer speedcount;
/**
*
*/
@TableField("truckspeedcount")
@JSONField(name = "truckspeedcount")
private Integer truckspeedcount;
/**
*
*/
@TableField("dangerspeedcount")
@JSONField(name = "dangerspeedcount")
private Integer dangerspeedcount;
/**
*
*/
@TableField("carspeedcount")
@JSONField(name = "carspeedcount")
private Integer carspeedcount;
/**
*
*/
@TableField("facilitycount")
@JSONField(name = "facilitycount")
private Integer facilitycount;
/**
*
*/
@TableField("truckfacilitycount")
@JSONField(name = "truckfacilitycount")
private Integer truckfacilitycount;
/**
*
*/
@TableField("dangerfacilitycount")
@JSONField(name = "dangerfacilitycount")
private Integer dangerfacilitycount;
/**
*
*/
@TableField("carfacilitycount")
@JSONField(name = "carfacilitycount")
private Integer carfacilitycount;
/**
*
*/
@TableField("feeevasioncount")
@JSONField(name = "feeevasioncount")
private Integer feeevasioncount;
/**
*
*/
@TableField("truckfeeevasioncount")
@JSONField(name = "truckfeeevasioncount")
private Integer truckfeeevasioncount;
/**
*
*/
@TableField("dangerfeeevasioncount")
@JSONField(name = "dangerfeeevasioncount")
private Integer dangerfeeevasioncount;
/**
*
*/
@TableField("carfeeevasioncount")
@JSONField(name = "carfeeevasioncount")
private Integer carfeeevasioncount;
/**
*
*/
@TableField("updatetime")
@JSONField(name = "updatetime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updatetime;
}

@ -219,6 +219,12 @@ public class MobileWeighInfo {
@JSONField(name = "UploadAddress")
@TableField("UploadAddress")
private String uploadAddress;
/**
*
*/
@JSONField(name = "StaName")
@TableField("StaName")
private String staName;
@TableField("insertTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

@ -0,0 +1,16 @@
package com.nmggs.query.mapper.fx;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmggs.query.entity.fx.FatigueVehicle;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20251009 16:52
* @description:
*/
@Mapper
@DS("fx")
public interface FatigueVehicleMapper extends BaseMapper<FatigueVehicle> {
}

@ -0,0 +1,17 @@
package com.nmggs.query.mapper.fx;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmggs.query.entity.fx.FenceInfo;
import com.nmggs.query.entity.fx.HiddenDangerAreaInfo;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20251009 16:52
* @description:
*/
@Mapper
@DS("fx")
public interface FenceInfoMapper extends BaseMapper<FenceInfo> {
}

@ -0,0 +1,16 @@
package com.nmggs.query.mapper.fx;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmggs.query.entity.fx.HiddenDangerAreaInfo;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20251009 16:53
* @description:
*/
@Mapper
@DS("fx")
public interface HiddenDangerAreaInfoMapper extends BaseMapper<HiddenDangerAreaInfo> {
}

@ -42,4 +42,38 @@ public interface ZDYHDataService {
* @date 2025-09-16 15:47
*/
Result getWarningData(Map<String, Object> params, String uuid);
/**
*
*
* @param params
* @param uuid uuid
* @return com.nmggs.query.common.exception.Result
* @author shuguang
* @date 2025-09-16 15:47
*/
Result getFenceData(Map<String, Object> params, String uuid);
/**
*
*
* @param params
* @param uuid uuid
* @return com.nmggs.query.common.exception.Result
* @author shuguang
* @date 2025-09-16 15:47
*/
Result getHiddenDangerAreaData(Map<String, Object> params, String uuid);
/**
*
*
* @param params
* @param uuid uuid
* @return com.nmggs.query.common.exception.Result
* @author shuguang
* @date 2025-09-16 15:47
*/
Result getFatigueData(Map<String, Object> params, String uuid);
}

@ -13,10 +13,16 @@ import com.nmggs.query.common.utils.SM4Utils;
import com.nmggs.query.entity.ResData;
import com.nmggs.query.entity.fx.EquipmentInfo;
import com.nmggs.query.entity.fx.EquipmentStatistics;
import com.nmggs.query.entity.fx.FatigueVehicle;
import com.nmggs.query.entity.fx.FenceInfo;
import com.nmggs.query.entity.fx.HiddenDangerAreaInfo;
import com.nmggs.query.entity.fx.UseInfo;
import com.nmggs.query.entity.fx.WarningInfo;
import com.nmggs.query.mapper.fx.EquipmentInfoMapper;
import com.nmggs.query.mapper.fx.EquipmentStatisticsMapper;
import com.nmggs.query.mapper.fx.FatigueVehicleMapper;
import com.nmggs.query.mapper.fx.FenceInfoMapper;
import com.nmggs.query.mapper.fx.HiddenDangerAreaInfoMapper;
import com.nmggs.query.mapper.fx.UseInfoMapper;
import com.nmggs.query.mapper.fx.WarningInfoMapper;
import com.nmggs.query.service.ZDYHDataService;
@ -44,6 +50,12 @@ public class ZDYHDataServiceImpl implements ZDYHDataService {
private WarningInfoMapper warningInfoMapper;
@Resource
private EquipmentStatisticsMapper equipmentStatisticsMapper;
@Resource
private FatigueVehicleMapper fatigueVehicleMapper;
@Resource
private FenceInfoMapper fenceInfoMapper;
@Resource
private HiddenDangerAreaInfoMapper hiddenDangerAreaInfoMapper;
/**
*
@ -219,6 +231,179 @@ public class ZDYHDataServiceImpl implements ZDYHDataService {
return Result.success("接收数据成功");
}
/**
*
*
* @param params
* @param uuid uuid
* @return com.nmggs.query.common.exception.Result
* @author shuguang
* @date 2025-09-16 15:47
*/
@Override
@ExecutionTimeLogger
public Result getFenceData(Map<String, Object> params, String uuid) {
log.info("[uuid:{}]-开始接收重点隐患车辆电子围栏数据", uuid);
String authKey = PropertiesUtil.getValue("authKey");
String dataJson = conversionJson(params, uuid);
// 解析响应数据
ResData resData = JSON.parseObject(dataJson, ResData.class);
// 提取密钥和加密数据
String returnedKey = resData.getKey();
String encryptedData = resData.getData();
// 解密数据
String decryptedData = SM4Utils.sm4Decrypt(encryptedData, SM4Utils.sm4Decrypt(returnedKey, authKey));
// 将解密后的数据解析为 FenceInfo 列表
List<FenceInfo> infoList = JSON.parseArray(decryptedData, FenceInfo.class);
int updateCount = 0;
int insertCount = 0;
if (infoList != null && infoList.size() > 0) {
for (FenceInfo info : infoList) {
String fenceid = info.getFenceid();
String pilenumber = info.getPilenumber();
info.setUpdatetime(new Date());
QueryWrapper<FenceInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("fenceid", fenceid)
.eq("pilenumber",pilenumber);
boolean exists = fenceInfoMapper.exists(queryWrapper);
if (exists) {
UpdateWrapper<FenceInfo> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("fenceid", fenceid)
.eq("pilenumber",pilenumber);
fenceInfoMapper.update(info, updateWrapper);
updateCount++;
} else {
fenceInfoMapper.insert(info);
insertCount++;
}
}
}
log.info("[uuid:{}]-接收重点隐患车辆电子围栏数据完成,更新数量:{},插入数量:{}", uuid, updateCount, insertCount);
return Result.success("接收数据成功");
}
/**
*
*
* @param params
* @param uuid uuid
* @return com.nmggs.query.common.exception.Result
* @author shuguang
* @date 2025-09-16 15:47
*/
@Override
@ExecutionTimeLogger
public Result getHiddenDangerAreaData(Map<String, Object> params, String uuid) {
log.info("[uuid:{}]-开始接收重点隐患车辆隐患区域数据", uuid);
String authKey = PropertiesUtil.getValue("authKey");
String dataJson = conversionJson(params, uuid);
// 解析响应数据
ResData resData = JSON.parseObject(dataJson, ResData.class);
// 提取密钥和加密数据
String returnedKey = resData.getKey();
String encryptedData = resData.getData();
// 解密数据
String decryptedData = SM4Utils.sm4Decrypt(encryptedData, SM4Utils.sm4Decrypt(returnedKey, authKey));
// 将解密后的数据解析为 HiddenDangerAreaInfo 列表
List<HiddenDangerAreaInfo> infoList = JSON.parseArray(decryptedData, HiddenDangerAreaInfo.class);
int updateCount = 0;
int insertCount = 0;
if (infoList != null && infoList.size() > 0) {
for (HiddenDangerAreaInfo info : infoList) {
String fenceid = info.getFenceid();
String pilenumber = info.getPilenumber();
info.setUpdatetime(new Date());
QueryWrapper<HiddenDangerAreaInfo> queryWrapper = new QueryWrapper<>();
queryWrapper
.eq("fenceid", fenceid)
.eq("pilenumber", pilenumber)
.eq("classdate", info.getClassdate());
boolean exists = hiddenDangerAreaInfoMapper.exists(queryWrapper);
if (exists) {
UpdateWrapper<HiddenDangerAreaInfo> updateWrapper = new UpdateWrapper<>();
updateWrapper
.eq("fenceid", fenceid)
.eq("pilenumber", pilenumber)
.eq("classdate", info.getClassdate());
hiddenDangerAreaInfoMapper.update(info, updateWrapper);
updateCount++;
} else {
hiddenDangerAreaInfoMapper.insert(info);
insertCount++;
}
}
}
log.info("[uuid:{}]-接收重点隐患车辆隐患区域数据完成,更新数量:{},插入数量:{}", uuid, updateCount, insertCount);
return Result.success("接收数据成功");
}
/**
*
*
* @param params
* @param uuid uuid
* @return com.nmggs.query.common.exception.Result
* @author shuguang
* @date 2025-09-16 15:47
*/
@Override
@ExecutionTimeLogger
public Result getFatigueData(Map<String, Object> params, String uuid) {
log.info("[uuid:{}]-开始接收重点隐患车辆违法车辆数据", uuid);
String authKey = PropertiesUtil.getValue("authKey");
String dataJson = conversionJson(params, uuid);
// 解析响应数据
ResData resData = JSON.parseObject(dataJson, ResData.class);
// 提取密钥和加密数据
String returnedKey = resData.getKey();
String encryptedData = resData.getData();
// 解密数据
String decryptedData = SM4Utils.sm4Decrypt(encryptedData, SM4Utils.sm4Decrypt(returnedKey, authKey));
// 将解密后的数据解析为 FatigueVehicle 列表
List<FatigueVehicle> infoList = JSON.parseArray(decryptedData, FatigueVehicle.class);
int updateCount = 0;
int insertCount = 0;
if (infoList != null && infoList.size() > 0) {
for (FatigueVehicle info : infoList) {
String plateno = info.getPlateno();
Integer vehicletype = info.getVehicletype();
Integer datatype = info.getDatatype();
String enforcementtime = info.getEnforcementtime();
info.setInserttime(new Date());
QueryWrapper<FatigueVehicle> queryWrapper = new QueryWrapper<>();
queryWrapper
.eq("plateno", plateno)
.eq("vehicletype", vehicletype)
.eq("datatype", datatype)
.eq("enforcementtime", enforcementtime);
boolean exists = fatigueVehicleMapper.exists(queryWrapper);
if (exists) {
UpdateWrapper<FatigueVehicle> updateWrapper = new UpdateWrapper<>();
updateWrapper
.eq("plateno", plateno)
.eq("vehicletype", vehicletype)
.eq("datatype", datatype)
.eq("enforcementtime", enforcementtime);
fatigueVehicleMapper.update(info, updateWrapper);
updateCount++;
} else {
fatigueVehicleMapper.insert(info);
insertCount++;
}
}
}
log.info("[uuid:{}]-接收重点隐患车辆违法车辆数据完成,更新数量:{},插入数量:{}", uuid, updateCount, insertCount);
return Result.success("接收数据成功");
}
private String conversionJson(Map<String, Object> map, String uuid) {
String result = "";
// 使用ObjectMapper将List<Map<String, Object>>转换为JSON字符串

@ -12,3 +12,7 @@
同时增加返回json进行SM4加密文件也进行SM4加密
2 2025年09月10日 1.0.1 修改通过堡垒机转发相关请求
3 2025年09月28日 1.0.2 增加ETC 门架计费扣费交易数据上传接口/DCPC/uploadEtcGantryPassData
4 2025年09月29日 1.0.3 mobile_weigh_info增加StaName字段
5 2025年10月10日 1.0.4 增加重点隐患车辆电子围栏接口/ZDYH/getFenceData
隐患区域数据接口/ZDYH/getHiddenDangerAreaData
违法车辆数据接口/ZDYH/getFatigueData
Loading…
Cancel
Save