From ac45d7c34c899caae52514f0abf344a0d25b0e16 Mon Sep 17 00:00:00 2001 From: mengff <1198151809@qq.com> Date: Tue, 26 Mar 2024 14:38:46 +0800 Subject: [PATCH 1/4] =?UTF-8?q?--=E6=B3=A8=E9=87=8A=E6=8E=89=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E7=8E=87=E6=8B=96=E6=8B=BD=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/controller/StatusController.java | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/StatusController.java b/zc-business/src/main/java/com/zc/business/controller/StatusController.java index 5a4adb7a..0bbc786a 100644 --- a/zc-business/src/main/java/com/zc/business/controller/StatusController.java +++ b/zc-business/src/main/java/com/zc/business/controller/StatusController.java @@ -1,8 +1,10 @@ package com.zc.business.controller; +import com.github.pagehelper.util.StringUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; @@ -15,6 +17,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; @@ -31,6 +34,10 @@ public class StatusController extends BaseController { private StatusService statusService; @Autowired private DcDeviceServiceImpl dcDeviceService; + @Resource + private RedisCache redisCache; + + private static final String ORDERRULE = "orderRule";//排序策略key //设备列表 @ApiOperation("设备状态列表按时间和类型") @@ -95,6 +102,16 @@ public class StatusController extends BaseController { } + //按时间划分设备柱状图 + @ApiOperation("更新缓存规则") + @GetMapping ("/rule") + public AjaxResult setRule(String rule) + { + redisCache.setCacheSetValue(ORDERRULE,rule); + return AjaxResult.success(); + } + + @ApiOperation("根据设备Id查询折线图数据") @GetMapping("/deviceStatusList/{deviceId}") public AjaxResult getDeviceStatusList(@PathVariable Long deviceId) { @@ -251,11 +268,11 @@ public class StatusController extends BaseController { Integer lastKey = Collections.max(ipMap.keySet()); List lastEntry = ipMap.get(lastKey); Map> typeMap = lastEntry.stream().filter(iteam -> iteam.getType() != null).collect(Collectors.groupingBy(Status::getType)); - Map> subMap = new HashMap<>(); + Map> subMap = new HashMap<>(); itemTypeMap.forEach((key, value) -> { - Map maps = new HashMap<>(); + Map maps = new HashMap<>(); List groupItems = typeMap.get(key); if (groupItems == null) { //丢包率 @@ -317,7 +334,7 @@ public class StatusController extends BaseController { // // } //} - Map maps=new HashMap<>(); + Map maps=new HashMap<>(); double lostRate = lastEntry.stream() .mapToDouble(Status -> Double.parseDouble(Status.getLostRate().replace("%", ""))) // 去掉%,并转换为double .average().getAsDouble(); @@ -337,7 +354,19 @@ public class StatusController extends BaseController { //总数 maps.put("sum",String.valueOf(list.size())); subMap.put("全部设备",maps); - +// Map ruleMap=new HashMap<>(); +// String orderRule=redisCache.getCacheObject(ORDERRULE); +// if(StringUtil.isNotEmpty(orderRule)){ +// ruleMap.put("rule",orderRule); +// subMap.put("排序规则",ruleMap); +// }else{ +// String[] rules = {"全部设备","高清网络枪型固定摄像机","高清网络球形摄像机","桥下高清网络球形摄像机","360°全景摄像机","180°全景摄像机", +// "门架式可变信息标志","雨棚可变信息标志","站前悬臂式可变信息标志","气象检测器","路段语音广播系统","护栏碰撞预警系统","毫米波雷达", +// "合流区预警系统","激光疲劳唤醒","一类交通量调查站","智能行车诱导系统"}; +// orderRule= Arrays.toString(rules); +// ruleMap.put("rule",orderRule); +// subMap.put("排序规则",ruleMap); +// } return AjaxResult.success(subMap); } From b07864492dcaf227bbaa5fa7ac465e6b593ec9a4 Mon Sep 17 00:00:00 2001 From: "Mr.Wang" Date: Tue, 26 Mar 2024 17:37:46 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E4=BB=A3=E7=A0=81=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E4=BA=8B=E4=BB=B6id-=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=A2=84=E6=A1=88=E4=BA=8B=E4=BB=B6=E5=85=B3=E8=81=94=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DcEmergencyPlansController.java | 9 +++++ .../service/DcEmergencyPlansService.java | 8 ++++ .../impl/DcEmergencyPlansServiceImpl.java | 37 ++++++++++++++----- 3 files changed, 45 insertions(+), 9 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/DcEmergencyPlansController.java b/zc-business/src/main/java/com/zc/business/controller/DcEmergencyPlansController.java index 1163548e..d6b84c89 100644 --- a/zc-business/src/main/java/com/zc/business/controller/DcEmergencyPlansController.java +++ b/zc-business/src/main/java/com/zc/business/controller/DcEmergencyPlansController.java @@ -126,6 +126,15 @@ public class DcEmergencyPlansController extends BaseController { return AjaxResult.success(dcEmergencyPlansService.executionEventConfirmation(dcEventAnDcEmergencyPlans)); } + /** + * 根据事件id-查询预案事件关联表 + */ + @ApiOperation("根据事件id-查询预案事件关联表") + @GetMapping("/event/assoc/{id}") + public AjaxResult eventConfirm(@PathVariable("id") String id) { + return AjaxResult.success(dcEmergencyPlansService.selectEventPlanAssocByEventId(id)); + } + /** * 感知事件确定 */ diff --git a/zc-business/src/main/java/com/zc/business/service/DcEmergencyPlansService.java b/zc-business/src/main/java/com/zc/business/service/DcEmergencyPlansService.java index 2ecea0a2..de8faf8e 100644 --- a/zc-business/src/main/java/com/zc/business/service/DcEmergencyPlansService.java +++ b/zc-business/src/main/java/com/zc/business/service/DcEmergencyPlansService.java @@ -65,6 +65,14 @@ public interface DcEmergencyPlansService { */ JSONArray executionEventConfirmation(DcEventAnDcEmergencyPlans dcEventAnDcEmergencyPlans); + /** + * 根据事件id-查询预案事件关联表 + * + * @param eventId 事件id + * @return 结果 + */ + EventPlanAssoc selectEventPlanAssocByEventId(String eventId); + /** * 感知事件确定 * diff --git a/zc-business/src/main/java/com/zc/business/service/impl/DcEmergencyPlansServiceImpl.java b/zc-business/src/main/java/com/zc/business/service/impl/DcEmergencyPlansServiceImpl.java index 7f0a614a..e837c5ea 100644 --- a/zc-business/src/main/java/com/zc/business/service/impl/DcEmergencyPlansServiceImpl.java +++ b/zc-business/src/main/java/com/zc/business/service/impl/DcEmergencyPlansServiceImpl.java @@ -424,6 +424,18 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService { return executionConfirmation(dcEventAnDcEmergencyPlans, dcEvent.getStakeMark(), direction, id); } + /** + * 根据事件id-查询预案事件关联表 + * @param eventId 事件id + * @return + */ + @Override + public EventPlanAssoc selectEventPlanAssocByEventId(String eventId) { + EventPlanAssoc eventPlanAssoc = new EventPlanAssoc(); + eventPlanAssoc.setEventId(eventId); + return eventPlanAssocMapper.selectByEventId(eventPlanAssoc); + } + /** * 感知事件-情报板自动生成 * @@ -584,17 +596,24 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService { EventPlanAssoc eventPlanAssoc = new EventPlanAssoc(); // 事件编号 eventPlanAssoc.setEventId(id); - + EventPlanAssoc selectEventPlanAssoc = eventPlanAssocMapper.selectByEventId(eventPlanAssoc); // 区分是执行操作 还是 恢复操作 - if (dcEventAnDcEmergencyPlans.getOperationType().equals(1)) { - // 事件预案编号 + if (dcEventAnDcEmergencyPlans.getOperationType().equals(1) && StringUtils.isEmpty(selectEventPlanAssoc.getId())) { + // 首次执行操作 eventPlanAssoc.setEmergencyPlansId(dcEmergencyPlans.getId()); eventPlanAssoc.setExecutingControlDevice(deviceIds.toString().replaceFirst(";", "")); eventPlanAssoc.setExecutingControlResult(resultArray.toJSONString()); eventPlanAssoc.setCreateTime(DateUtils.getNowDate()); eventPlanAssocMapper.insertEventPlanAssoc(eventPlanAssoc); - } else { - EventPlanAssoc selectEventPlanAssoc = eventPlanAssocMapper.selectByEventId(eventPlanAssoc); + } + else if (StringUtils.isNotEmpty(selectEventPlanAssoc.getId()) && dcEventAnDcEmergencyPlans.getOperationType().equals(1)) { + // 多次执行操作 + selectEventPlanAssoc.setExecutingControlResult(resultArray.toJSONString()); + selectEventPlanAssoc.setUpdateTime(DateUtils.getNowDate()); + eventPlanAssocMapper.updateEventPlanAssoc(selectEventPlanAssoc); + } + else { + // 恢复操作 未执行的事件不能进行恢复操作 selectEventPlanAssoc.setUpdateTime(DateUtils.getNowDate()); selectEventPlanAssoc.setRecoveredControlDevice(deviceIds.toString().replaceFirst(";", "")); selectEventPlanAssoc.setRecoveredControlResult(resultArray.toJSONString()); @@ -620,7 +639,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService { iotDeviceId = device.getIotDeviceId(); HashMap props = new HashMap<>(); try { - if (device.getDeviceType().equals(DeviceTypeConstants.DRIVING_GUIDANCE)) { + if (device.getDeviceType().equals(DeviceTypeConstants.DRIVING_GUIDANCE.toString())) { // 行车诱导 functionId = DeviceFunctionIdConstants.DRIVING_GUIDANCE; // 控制模式 1-手动 2-自动 3-万年历 @@ -645,7 +664,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService { } - else if (device.getDeviceType().equals(DeviceTypeConstants.VARIABLE_INFORMATION_FLAG)) { + else if (device.getDeviceType().equals(DeviceTypeConstants.VARIABLE_INFORMATION_FLAG.toString())) { if (operationType == 1) { // 执行操作 @@ -721,7 +740,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService { } } - else if (device.getDeviceType().equals(DeviceTypeConstants.ROAD_SECTION_VOICE_BROADCASTING)) { + else if (device.getDeviceType().equals(DeviceTypeConstants.ROAD_SECTION_VOICE_BROADCASTING.toString())) { // 路段广播 JSONObject params = new JSONObject(); params.put("name", "task-event"); @@ -742,7 +761,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService { } - else if (device.getDeviceType().equals(DeviceTypeConstants.LASER_FATIGUE_AWAKENING)) { + else if (device.getDeviceType().equals(DeviceTypeConstants.LASER_FATIGUE_AWAKENING.toString())) { // 激光疲劳唤醒 functionId = otherConfig.get("state").toString(); From b7e10b1ec168d22ff4237e38e6334e0c2bb84aad Mon Sep 17 00:00:00 2001 From: mengff <1198151809@qq.com> Date: Wed, 27 Mar 2024 09:43:30 +0800 Subject: [PATCH 3/4] =?UTF-8?q?--=E8=AE=BE=E5=A4=87=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E7=8E=87=E5=AF=BC=E5=87=BA=E5=88=97=E8=A1=A8=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E5=9E=8B=E5=8F=B7=EF=BC=8C=E6=A3=80=E6=B5=8B=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=B6=E5=88=86=E7=A7=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zc-business/src/main/java/com/zc/business/domain/Status.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/domain/Status.java b/zc-business/src/main/java/com/zc/business/domain/Status.java index 0ab2a5a6..5e7c74e7 100644 --- a/zc-business/src/main/java/com/zc/business/domain/Status.java +++ b/zc-business/src/main/java/com/zc/business/domain/Status.java @@ -125,7 +125,7 @@ public class Status { private Long deviceId; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern ="yyyy-MM-dd HH:mm:ss") - @Excel(name = "监测时间", width = 30, dateFormat = "yyyy-MM-dd") + @Excel(name = "监测时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private LocalDateTime time; public String getSuccessRate() { @@ -208,7 +208,7 @@ public class Status { this.deviceId = deviceId; } - @Excel(name = "型号") + // @Excel(name = "型号") private String model; From b3c8d75ca0653a3900fc534ec5de67fc17d9771d Mon Sep 17 00:00:00 2001 From: zhaoxianglong Date: Wed, 27 Mar 2024 14:14:05 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8A=A4=E6=A0=8F?= =?UTF-8?q?=E7=A2=B0=E6=92=9E=E4=BA=8B=E4=BB=B6=E4=B8=8A=E6=8A=A5=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NonAutomaticWarningController.java | 2 ++ .../device/handler/DeviceMessageHandler.java | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/NonAutomaticWarningController.java b/zc-business/src/main/java/com/zc/business/controller/NonAutomaticWarningController.java index 0663a021..cd286852 100644 --- a/zc-business/src/main/java/com/zc/business/controller/NonAutomaticWarningController.java +++ b/zc-business/src/main/java/com/zc/business/controller/NonAutomaticWarningController.java @@ -14,6 +14,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -32,6 +33,7 @@ import java.util.Objects; */ @Api(tags = "非机预警接口") @RestController +@Component @RequestMapping("/nonAutomaticWarning") public class NonAutomaticWarningController extends BaseController { diff --git a/zc-business/src/main/java/com/zc/business/message/device/handler/DeviceMessageHandler.java b/zc-business/src/main/java/com/zc/business/message/device/handler/DeviceMessageHandler.java index c3209c98..43b77323 100644 --- a/zc-business/src/main/java/com/zc/business/message/device/handler/DeviceMessageHandler.java +++ b/zc-business/src/main/java/com/zc/business/message/device/handler/DeviceMessageHandler.java @@ -378,16 +378,20 @@ public class DeviceMessageHandler { String direction = ""; if (Objects.equals(location, "0")) { dcWarning.setDirection("1"); - direction = "上行右侧"; + dcWarning.setLane("0"); + direction = "菏泽方向右侧护栏"; } else if (Objects.equals(location, "1")) { dcWarning.setDirection("1"); - direction = "上行左侧"; + dcWarning.setLane("1"); + direction = "菏泽方向左侧护栏"; } else if (Objects.equals(location, "10")) { dcWarning.setDirection("0"); - direction = "下行右侧"; + dcWarning.setLane("0"); + direction = "济南方向右侧护栏"; } else if (Objects.equals(location, "11")) { dcWarning.setDirection("0"); - direction = "下行左侧"; + dcWarning.setLane("1"); + direction = "济南方向左侧护栏"; } String eventType = ""; @@ -423,8 +427,11 @@ public class DeviceMessageHandler { dcWarning.setStakeMark(dcDevices.get(0).getStakeMark()); dcWarning.setWarningType(9); + dcWarning.setWarningSubclass("4"); + dcWarning.setWarningState(1); dcWarning.setCreateTime(new Date()); - dcWarning.setWarningTitle("护栏碰撞上报事件:区域号为" + areaCode + "在" + timeOfFireAlarming + direction + "发生" + eventType + "事件"); + dcWarning.setDirection("护栏碰撞上报事件:区域号为" + areaCode + "在20" + timeOfFireAlarming + direction + "发生" + eventType + "事件"); + dcWarning.setWarningTitle("护栏碰撞在20" + timeOfFireAlarming + direction + "发生" + eventType + "事件"); dcWarning.setOtherConfig(dataJsonObject.toJSONString()); dcWarningService.insertDcWarning(dcWarning); }