diff --git a/iot-access/access-api/src/main/java/com/njcn/access/pojo/dto/AutoDataDto.java b/iot-access/access-api/src/main/java/com/njcn/access/pojo/dto/AutoDataDto.java index d241fe5..ccd28a5 100644 --- a/iot-access/access-api/src/main/java/com/njcn/access/pojo/dto/AutoDataDto.java +++ b/iot-access/access-api/src/main/java/com/njcn/access/pojo/dto/AutoDataDto.java @@ -1,6 +1,7 @@ package com.njcn.access.pojo.dto; import com.alibaba.nacos.shaded.com.google.gson.annotations.SerializedName; +import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -17,39 +18,49 @@ import java.util.List; public class AutoDataDto { @SerializedName("Mid") + @JsonProperty("Mid") private Integer mid; @SerializedName("Did") + @JsonProperty("Did") @ApiModelProperty("逻辑设备 治理逻辑设备为1 电能质量设备为2") private Integer did; @SerializedName("Pri") + @JsonProperty("Pri") private Integer pri; @SerializedName("Type") + @JsonProperty("Type") private Integer type; @SerializedName("Msg") + @JsonProperty("Msg") private Msg msg; @Data public static class Msg{ @SerializedName("Cldid") + @JsonProperty("Cldid") @ApiModelProperty("逻辑子设备 治理逻辑设备为0 电能质量设备为1、2") private Integer clDid; @SerializedName("DataType") + @JsonProperty("DataType") private Integer dataType; @SerializedName("DataAttr") + @JsonProperty("DataAttr") @ApiModelProperty("数据属性:无-0、实时-1、统计-2") private Integer dataAttr; @SerializedName("DsNameIdx") + @JsonProperty("DsNameIdx") private Integer dsNameIdx; @SerializedName("DataArray") + @JsonProperty("DataArray") private List dataArray; } @@ -57,95 +68,119 @@ public class AutoDataDto { public static class DataArray{ @SerializedName("DataAttr") + @JsonProperty("DataAttr") @ApiModelProperty("数据属性 -1-无 0-Rt(实时) 1-Max 2-Min 3-Avg 4-Cp95") private Integer dataAttr; @SerializedName("DataTimeSec") + @JsonProperty("DataTimeSec") private Long dataTimeSec; @SerializedName("DataTimeUSec") + @JsonProperty("DataTimeUSec") private Integer dataTimeUSec; @SerializedName("DataTag") + @JsonProperty("DataTag") @ApiModelProperty("数据是否参与合格率统计") private Integer dataTag; @SerializedName("Code") + @JsonProperty("Code") @ApiModelProperty("事件码") private Integer code; @SerializedName("Data") + @JsonProperty("Data") private String data; @SerializedName("PrjName") + @JsonProperty("PrjName") @ApiModelProperty("工程名称") private String prjName; @SerializedName("PrjTimeStart") + @JsonProperty("PrjTimeStart") @ApiModelProperty("装置启动时间") private Long prjTimeStart; @SerializedName("PrjTimeEnd") + @JsonProperty("PrjTimeEnd") @ApiModelProperty("装置结束时间") private Long prjTimeEnd; @SerializedName("PrjDataPath") + @JsonProperty("PrjDataPath") @ApiModelProperty("装置数据路径") private String prjDataPath; @SerializedName("DevType") + @JsonProperty("DevType") @ApiModelProperty("装置型号") private String devType; @SerializedName("DevMac") + @JsonProperty("DevMac") @ApiModelProperty("装置mac地址") private String devMac; @SerializedName("AppVersion") + @JsonProperty("AppVersion") @ApiModelProperty("装置程序版本") private String appVersion; @SerializedName("Cldid") + @JsonProperty("Cldid") @ApiModelProperty("逻辑子设备id") private Integer clDid; @SerializedName("StatCycle") + @JsonProperty("StatCycle") @ApiModelProperty("统计间隔") private Integer statCycle; @SerializedName("VolGrade") + @JsonProperty("VolGrade") @ApiModelProperty("电压等级") private Float volGrade; @SerializedName("VolConType") + @JsonProperty("VolConType") @ApiModelProperty("电压接线方式(0-星型, 1-角型, 2-V型)") private Integer volConType; @SerializedName("CurConSel") + @JsonProperty("CurConSel") @ApiModelProperty("电流接线方式(0-正常, 1-合成IB, 2-合成IC)") private Integer curConSel; @SerializedName("PtRatio") + @JsonProperty("PtRatio") @ApiModelProperty("PT变比") private Integer ptRatio; @SerializedName("CtRatio") + @JsonProperty("CtRatio") @ApiModelProperty("ct变比") private Integer ctRatio; @SerializedName("CapacitySscb") + @JsonProperty("CapacitySscb") @ApiModelProperty("基准短路容量") private Float capacitySscb; @SerializedName("CapacitySscmin") + @JsonProperty("CapacitySscmin") @ApiModelProperty("最小短路容量") private Float capacitySscmin; @SerializedName("CapacitySt") + @JsonProperty("CapacitySt") @ApiModelProperty("供电设备容量") private Float capacitySt; @SerializedName("CapacitySi") + @JsonProperty("CapacitySi") @ApiModelProperty("用户协议容量") private Float capacitySi; } diff --git a/iot-access/access-boot/src/main/java/com/njcn/access/runner/AccessApplicationRunner.java b/iot-access/access-boot/src/main/java/com/njcn/access/runner/AccessApplicationRunner.java index a3b111a..15d7252 100644 --- a/iot-access/access-boot/src/main/java/com/njcn/access/runner/AccessApplicationRunner.java +++ b/iot-access/access-boot/src/main/java/com/njcn/access/runner/AccessApplicationRunner.java @@ -88,22 +88,20 @@ public class AccessApplicationRunner implements ApplicationRunner { } public void accessDev(List list) { - list.forEach(item->{ - System.out.println(Thread.currentThread().getName() + ": reboot : nDid : " + item.getNdid()); - String version = csTopicService.getVersion(item.getNdid()); - if (!Objects.isNull(version)){ + if (CollUtil.isNotEmpty(list)) { + list.forEach(item->{ + System.out.println(Thread.currentThread().getName() + ": reboot : nDid : " + item.getNdid()); //判断设备类型 便携式设备需要特殊处理 未注册的要先注册、再接入;已注册的直接重新接入 String code = dictTreeFeignClient.queryById(item.getDevType()).getData().getCode(); if (Objects.equals(code, DicDataEnum.PORTABLE.getCode()) && Objects.equals(item.getStatus(),1)) { csDeviceService.wlDevRegister(item.getNdid()); } else { + String version = csTopicService.getVersion(item.getNdid()); csDeviceService.devAccessAskTemplate(item.getNdid(),version,1); } redisUtil.saveByKey(AppRedisKey.DEVICE_MID + item.getNdid(),1); - } else { - log.info("{},装置主题缺少版本信息", item.getNdid()); - } - }); + }); + } } } diff --git a/iot-access/access-boot/src/main/java/com/njcn/access/runner/AutoAccessTimer.java b/iot-access/access-boot/src/main/java/com/njcn/access/runner/AutoAccessTimer.java index cfd1198..7b2ef2d 100644 --- a/iot-access/access-boot/src/main/java/com/njcn/access/runner/AutoAccessTimer.java +++ b/iot-access/access-boot/src/main/java/com/njcn/access/runner/AutoAccessTimer.java @@ -52,7 +52,6 @@ public class AutoAccessTimer implements ApplicationRunner { int end = (i == 9) ? list.size() : start + partitionSize; subLists.add(list.subList(start, end)); } - // 创建一个ExecutorService来处理这些任务 List> futures = new ArrayList<>(); // 提交任务给线程池执行 @@ -70,7 +69,7 @@ public class AutoAccessTimer implements ApplicationRunner { for (Future future : futures) { try { future.get(); - } catch (InterruptedException | ExecutionException e) { + } catch (Exception e) { throw new RuntimeException(e); } } @@ -83,21 +82,19 @@ public class AutoAccessTimer implements ApplicationRunner { } public void accessDev(List list) { - list.forEach(item->{ - System.out.println(Thread.currentThread().getName() + ": auto : nDid : " + item.getNdid()); - String version = csTopicService.getVersion(item.getNdid()); - if (!Objects.isNull(version)){ + if (CollUtil.isNotEmpty(list)) { + list.forEach(item->{ + System.out.println(Thread.currentThread().getName() + ": auto : nDid : " + item.getNdid()); //判断设备类型 便携式设备需要特殊处理 未注册的要先注册、再接入;已注册的直接重新接入 String code = dictTreeFeignClient.queryById(item.getDevType()).getData().getCode(); if (Objects.equals(code, DicDataEnum.PORTABLE.getCode()) && Objects.equals(item.getStatus(),1)) { csDeviceService.wlDevRegister(item.getNdid()); } else { + String version = csTopicService.getVersion(item.getNdid()); csDeviceService.devAccessAskTemplate(item.getNdid(),version,1); } redisUtil.saveByKey(AppRedisKey.DEVICE_MID + item.getNdid(),1); - } else { - log.info("{},装置主题缺少版本信息", item.getNdid()); - } - }); + }); + } } } diff --git a/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/CsEquipmentDeliveryServiceImpl.java b/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/CsEquipmentDeliveryServiceImpl.java index 5e4288b..05fd8c2 100644 --- a/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/CsEquipmentDeliveryServiceImpl.java +++ b/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/CsEquipmentDeliveryServiceImpl.java @@ -1,5 +1,6 @@ package com.njcn.access.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.access.enums.AccessEnum; @@ -97,20 +98,22 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl{ - String clientName = "NJCN-" + item.getNdid().substring(item.getNdid().length() - 6); - boolean mqttClient = mqttUtil.judgeClientOnline(clientName); - if (mqttClient) { - result.add(item); - } else { - DeviceLogDTO logDto = new DeviceLogDTO(); - logDto.setUserName("运维管理员"); - logDto.setLoginName("njcnyw"); - logDto.setResult(1); - logDto.setOperate(item.getNdid() + "接入失败,装置客户端不在线"); - csLogsFeignClient.addUserLog(logDto); - } - }); + if (CollUtil.isNotEmpty(list)) { + list.forEach(item->{ + String clientName = "NJCN-" + item.getNdid().substring(item.getNdid().length() - 6); + boolean mqttClient = mqttUtil.judgeClientOnline(clientName); + if (mqttClient) { + result.add(item); + } else { + DeviceLogDTO logDto = new DeviceLogDTO(); + logDto.setUserName("运维管理员"); + logDto.setLoginName("njcnyw"); + logDto.setResult(1); + logDto.setOperate(item.getNdid() + "接入失败,装置客户端不在线"); + csLogsFeignClient.addUserLog(logDto); + } + }); + } return result; } @@ -121,20 +124,22 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl{ - String clientName = "NJCN-" + item.getNdid().substring(item.getNdid().length() - 6); - boolean mqttClient = mqttUtil.judgeClientOnline(clientName); - if (mqttClient) { - result.add(item); - } else { - DeviceLogDTO logDto = new DeviceLogDTO(); - logDto.setUserName("运维管理员"); - logDto.setLoginName("njcnyw"); - logDto.setResult(1); - logDto.setOperate(item.getNdid() + "接入失败,装置客户端不在线"); - csLogsFeignClient.addUserLog(logDto); - } - }); + if (CollUtil.isNotEmpty(list)) { + list.forEach(item->{ + String clientName = "NJCN-" + item.getNdid().substring(item.getNdid().length() - 6); + boolean mqttClient = mqttUtil.judgeClientOnline(clientName); + if (mqttClient) { + result.add(item); + } else { + DeviceLogDTO logDto = new DeviceLogDTO(); + logDto.setUserName("运维管理员"); + logDto.setLoginName("njcnyw"); + logDto.setResult(1); + logDto.setOperate(item.getNdid() + "接入失败,装置客户端不在线"); + csLogsFeignClient.addUserLog(logDto); + } + }); + } return result; }