From 381561f3a49512bb8b6a71f4fc95ded3f5173f7c Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Sun, 29 Sep 2024 16:54:09 +0800 Subject: [PATCH] =?UTF-8?q?isc=E6=8E=A8=E6=95=B0=E6=8D=AE=E5=88=B0?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E6=A8=A1=E5=9D=97bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/call/HikvisionCall.java | 104 ++++++++++++++---- 1 file changed, 83 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index a3b64314a..32d08af7e 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -96,6 +96,7 @@ import springfox.documentation.annotations.ApiIgnore; import javax.annotation.Resource; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @Slf4j @@ -122,6 +123,7 @@ public class HikvisionCall { public static final String EVENT_PMS = "event_pms"; public static final String EVENT_VSS = "event_vss"; private static final String FIXED_CAR_GROUP_NAME = "业主车辆"; + private static Map dustDevSnMap = new ConcurrentHashMap(); public AsyncHikvision asyncHikvision; @Autowired XzHikvisionSyncServiceImpl xzHikvisionSyncService; @@ -436,24 +438,15 @@ public class HikvisionCall { JSONArray eventsJa = paramsJo.getJSONArray("events"); if (eventsJa != null) { DustNoiseData data = new DustNoiseData(); + data.setTspAlarmType(1); + data.setPm25AlarmType(1); + data.setPm10AlarmType(1); + data.setNoiseAlarmType(1); + data.setHumidityAlarmType(1); + data.setTemperatureAlarmType(1); + data.setWindSpeedAlarmType(1); for (int i = 0; i < eventsJa.size(); i++) { JSONObject eventJo = eventsJa.getJSONObject(i); - //{ - // "data": { - // "channel": 5, - // "deviceTypeCode": "generalTransducer", - // "isAlarm": 0, - // "realValue": 49.79999923706055 - // }, - // "eventId": "bff12984-7bd4-11ef-8471-e8611f62fd07", - // "eventType": 459010, - // "happenTime": "2024-09-26T14:58:35.531+08:00", - // "srcIndex": "61fa6c9417c4439c81952fff8055be72", - // "srcParentIndex": "1833670489a64a0eb5262fd471eb4944", - // "srcType": "sensor", - // "status": 0, - // "timeout": 0 - // } JSONObject dataJo = eventJo.getJSONObject(DATA); String srcParentIndex = eventJo.getString("srcParentIndex"); String happenTime = eventJo.getString("happenTime"); @@ -475,19 +468,35 @@ public class HikvisionCall { case 459028: data.setNoise(realValue); break; - + case 459024: + data.setWinddirection(realValue + ""); + break; + case 459027: + //无扬尘数据,随机 + //PM2.5 随机数取在35~75μg/m³ + //PM10 随机数取在40~70μg/m³之间 +// data.setPm10(realValue); +// data.setPm25(realValue); + break; } data.setDeviceId(srcParentIndex); data.setUploadDate(DateUtil.formatDateTime(DateUtil.parse(happenTime))); - data.setPm10(realValue); - data.setPm25(realValue); // data.setTsp(realValue); - data.setWinddirection(""); // data.setVoltage(realValue); // data.setPlateTemperature(realValue); // data.setPlateHumidity(realValue); } - dustNoiseDataService.saveDustNoiseData(data); + //无扬尘数据,随机 + //PM2.5 随机数取在35~75μg/m³ + //PM10 随机数取在40~70μg/m³之间 + if (data.getPm25() == null) { + data.setPm25(NumberUtil.round(Math.random() * 40 + 35, 2).doubleValue()); + } + if (data.getPm10() == null) { + data.setPm10(NumberUtil.round(Math.random() * 30 + 40, 2).doubleValue()); + } + data.setWinddirection(WindDirectionUtils.getWindDirectionName((Math.random() * 90 + 67.5) + "")); + delayMulAddData(data); } } } else if (Objects.equals(ability1, EVENT_IAS)) { @@ -496,6 +505,59 @@ public class HikvisionCall { return Result.ok(); } + /** + * 延迟组装好扬尘数据再新增 + * + * @param data + */ + private void delayMulAddData(DustNoiseData data) { + if (checkIsAddDust(data)) { + dustDevSnMap.remove(data.getDeviceId()); + dustNoiseDataService.saveDustNoiseData(data); + } else { + DustNoiseData data1 = dustDevSnMap.get(data.getDeviceId()); + if (data1 == null) { + dustDevSnMap.put(data.getDeviceId(), data); + } else { + if (data.getPm10() != null) { + data1.setPm10(data.getPm10()); + } + if (data.getPm25() != null) { + data1.setPm25(data.getPm25()); + } + if (data.getHumidity() != null) { + data1.setHumidity(data.getHumidity()); + } + if (data.getTemperature() != null) { + data1.setTemperature(data.getTemperature()); + } + if (data.getWindspeed() != null) { + data1.setWindspeed(data.getWindspeed()); + } + if (data.getPressure() != null) { + data1.setPressure(data.getPressure()); + } + if (data.getNoise() != null) { + data1.setNoise(data.getNoise()); + } + if (data.getWinddirection() != null) { + data1.setWinddirection(data.getWinddirection()); + } + if (checkIsAddDust(data1)) { + dustDevSnMap.remove(data1.getDeviceId()); + dustNoiseDataService.saveDustNoiseData(data1); + } else { + dustDevSnMap.put(data1.getDeviceId(), data1); + } + } + } + } + + private boolean checkIsAddDust(DustNoiseData data) { + return data.getPm10() != null && data.getPm25() != null && data.getHumidity() != null && data.getTemperature() != null && data.getWindspeed() != null + && data.getPressure() != null && data.getNoise() != null && data.getWinddirection() != null; + } + /** * 添加红外对射预警数据 *