diff --git a/src/main/java/com/casic/api/DeviceInfoController.java b/src/main/java/com/casic/api/DeviceInfoController.java index 1450c26..252d657 100644 --- a/src/main/java/com/casic/api/DeviceInfoController.java +++ b/src/main/java/com/casic/api/DeviceInfoController.java @@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -23,34 +25,43 @@ private IBusDeviceService deviceService; @RequestMapping("aepExt") - public Object aepExt(@RequestBody Map map) { - log.info(JSONObject.toJSONString(map)); + public Object aepExt(@RequestBody List> extInfoList) { + log.info(JSONObject.toJSONString(extInfoList)); Map retObj = new HashMap<>(); - if (map.containsKey("DEVCODE")) { - String devCode = StrUtil.toString(map.get("DEVCODE")); - BusDevice device = deviceService.getDeviceByCode(devCode); - if (ObjectUtil.isNotNull(device)) { - device.setNbAppKey(StrUtil.toString(map.getOrDefault("NB_APP_KEY", ""))); - device.setNbAppSecret(StrUtil.toString(map.getOrDefault("NB_APP_SECRET", ""))); - device.setMasterApiKey(StrUtil.toString(map.getOrDefault("MASTER_API_KEY", ""))); - device.setNbDeviceId(StrUtil.toString(map.getOrDefault("NB_DEVICE_ID", ""))); - device.setNbProductId(StrUtil.toString(map.getOrDefault("NB_PRODUCT_ID", ""))); + List> retSuccList = new ArrayList<>(); + int idx = 1; + for (Map devExt : extInfoList) { + Map retItem = new HashMap<>(); + retItem.put("index", idx); - deviceService.updateById(device); + if (devExt.containsKey("DEVCODE")) { + String devCode = StrUtil.toString(devExt.get("DEVCODE")); + BusDevice device = deviceService.getDeviceByCode(devCode); + if (ObjectUtil.isNotNull(device)) { + device.setNbAppKey(StrUtil.toString(devExt.getOrDefault("NB_APP_KEY", ""))); + device.setNbAppSecret(StrUtil.toString(devExt.getOrDefault("NB_APP_SECRET", ""))); + device.setMasterApiKey(StrUtil.toString(devExt.getOrDefault("MASTER_API_KEY", ""))); + device.setNbDeviceId(StrUtil.toString(devExt.getOrDefault("NB_DEVICE_ID", ""))); + device.setNbProductId(StrUtil.toString(devExt.getOrDefault("NB_PRODUCT_ID", ""))); - retObj.put("code", 200); - retObj.put("success", true); + boolean succ = deviceService.updateById(device); + retItem.put("success", succ); + if (!succ) { + retItem.put("msg", "updateById数据库操作失败"); + } + } else { + retItem.put("success", false); + retItem.put("msg", "devCode[" + devCode + "]的设备未找到"); + } } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode[" + devCode + "]的设备未找到"); + retItem.put("success", false); + retItem.put("msg", "devCode必传,不能为空"); } - } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode必传,不能为空"); + retSuccList.add(retItem); + idx++; } - + retObj.put("data", retSuccList); + retObj.put("code", 200); return retObj; } } diff --git a/src/main/java/com/casic/api/DeviceInfoController.java b/src/main/java/com/casic/api/DeviceInfoController.java index 1450c26..252d657 100644 --- a/src/main/java/com/casic/api/DeviceInfoController.java +++ b/src/main/java/com/casic/api/DeviceInfoController.java @@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -23,34 +25,43 @@ private IBusDeviceService deviceService; @RequestMapping("aepExt") - public Object aepExt(@RequestBody Map map) { - log.info(JSONObject.toJSONString(map)); + public Object aepExt(@RequestBody List> extInfoList) { + log.info(JSONObject.toJSONString(extInfoList)); Map retObj = new HashMap<>(); - if (map.containsKey("DEVCODE")) { - String devCode = StrUtil.toString(map.get("DEVCODE")); - BusDevice device = deviceService.getDeviceByCode(devCode); - if (ObjectUtil.isNotNull(device)) { - device.setNbAppKey(StrUtil.toString(map.getOrDefault("NB_APP_KEY", ""))); - device.setNbAppSecret(StrUtil.toString(map.getOrDefault("NB_APP_SECRET", ""))); - device.setMasterApiKey(StrUtil.toString(map.getOrDefault("MASTER_API_KEY", ""))); - device.setNbDeviceId(StrUtil.toString(map.getOrDefault("NB_DEVICE_ID", ""))); - device.setNbProductId(StrUtil.toString(map.getOrDefault("NB_PRODUCT_ID", ""))); + List> retSuccList = new ArrayList<>(); + int idx = 1; + for (Map devExt : extInfoList) { + Map retItem = new HashMap<>(); + retItem.put("index", idx); - deviceService.updateById(device); + if (devExt.containsKey("DEVCODE")) { + String devCode = StrUtil.toString(devExt.get("DEVCODE")); + BusDevice device = deviceService.getDeviceByCode(devCode); + if (ObjectUtil.isNotNull(device)) { + device.setNbAppKey(StrUtil.toString(devExt.getOrDefault("NB_APP_KEY", ""))); + device.setNbAppSecret(StrUtil.toString(devExt.getOrDefault("NB_APP_SECRET", ""))); + device.setMasterApiKey(StrUtil.toString(devExt.getOrDefault("MASTER_API_KEY", ""))); + device.setNbDeviceId(StrUtil.toString(devExt.getOrDefault("NB_DEVICE_ID", ""))); + device.setNbProductId(StrUtil.toString(devExt.getOrDefault("NB_PRODUCT_ID", ""))); - retObj.put("code", 200); - retObj.put("success", true); + boolean succ = deviceService.updateById(device); + retItem.put("success", succ); + if (!succ) { + retItem.put("msg", "updateById数据库操作失败"); + } + } else { + retItem.put("success", false); + retItem.put("msg", "devCode[" + devCode + "]的设备未找到"); + } } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode[" + devCode + "]的设备未找到"); + retItem.put("success", false); + retItem.put("msg", "devCode必传,不能为空"); } - } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode必传,不能为空"); + retSuccList.add(retItem); + idx++; } - + retObj.put("data", retSuccList); + retObj.put("code", 200); return retObj; } } diff --git a/src/main/java/com/casic/common/general/ConfigResponseFrame.java b/src/main/java/com/casic/common/general/ConfigResponseFrame.java index 943d757..17609f8 100644 --- a/src/main/java/com/casic/common/general/ConfigResponseFrame.java +++ b/src/main/java/com/casic/common/general/ConfigResponseFrame.java @@ -1,13 +1,23 @@ package com.casic.common.general; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import lombok.Data; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +@Data public class ConfigResponseFrame extends CasicFrame { final String MESSAGE_TYPE_IDENTIFY = "03"; final String MESSAGE_TYPE_STRING = "SetResponse"; final String MESSAGE_TYPE_DESCRIPTION = "配置参数响应"; + String devType = ""; + @Override public String toString() { return "{" + @@ -17,4 +27,20 @@ "上报时间:" + getUptime() + ";" + "}"; } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + + obj.put("mType", MESSAGE_TYPE_STRING); + obj.put("devType", getDevType()); + obj.put("devCode", getDeviceCode()); + + JSONObject body = new JSONObject(); + body.put("bType", getDevType() + "ConfigSuccess"); + + obj.put("mBody", body); + obj.put("ts", LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + return obj; + } } diff --git a/src/main/java/com/casic/api/DeviceInfoController.java b/src/main/java/com/casic/api/DeviceInfoController.java index 1450c26..252d657 100644 --- a/src/main/java/com/casic/api/DeviceInfoController.java +++ b/src/main/java/com/casic/api/DeviceInfoController.java @@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -23,34 +25,43 @@ private IBusDeviceService deviceService; @RequestMapping("aepExt") - public Object aepExt(@RequestBody Map map) { - log.info(JSONObject.toJSONString(map)); + public Object aepExt(@RequestBody List> extInfoList) { + log.info(JSONObject.toJSONString(extInfoList)); Map retObj = new HashMap<>(); - if (map.containsKey("DEVCODE")) { - String devCode = StrUtil.toString(map.get("DEVCODE")); - BusDevice device = deviceService.getDeviceByCode(devCode); - if (ObjectUtil.isNotNull(device)) { - device.setNbAppKey(StrUtil.toString(map.getOrDefault("NB_APP_KEY", ""))); - device.setNbAppSecret(StrUtil.toString(map.getOrDefault("NB_APP_SECRET", ""))); - device.setMasterApiKey(StrUtil.toString(map.getOrDefault("MASTER_API_KEY", ""))); - device.setNbDeviceId(StrUtil.toString(map.getOrDefault("NB_DEVICE_ID", ""))); - device.setNbProductId(StrUtil.toString(map.getOrDefault("NB_PRODUCT_ID", ""))); + List> retSuccList = new ArrayList<>(); + int idx = 1; + for (Map devExt : extInfoList) { + Map retItem = new HashMap<>(); + retItem.put("index", idx); - deviceService.updateById(device); + if (devExt.containsKey("DEVCODE")) { + String devCode = StrUtil.toString(devExt.get("DEVCODE")); + BusDevice device = deviceService.getDeviceByCode(devCode); + if (ObjectUtil.isNotNull(device)) { + device.setNbAppKey(StrUtil.toString(devExt.getOrDefault("NB_APP_KEY", ""))); + device.setNbAppSecret(StrUtil.toString(devExt.getOrDefault("NB_APP_SECRET", ""))); + device.setMasterApiKey(StrUtil.toString(devExt.getOrDefault("MASTER_API_KEY", ""))); + device.setNbDeviceId(StrUtil.toString(devExt.getOrDefault("NB_DEVICE_ID", ""))); + device.setNbProductId(StrUtil.toString(devExt.getOrDefault("NB_PRODUCT_ID", ""))); - retObj.put("code", 200); - retObj.put("success", true); + boolean succ = deviceService.updateById(device); + retItem.put("success", succ); + if (!succ) { + retItem.put("msg", "updateById数据库操作失败"); + } + } else { + retItem.put("success", false); + retItem.put("msg", "devCode[" + devCode + "]的设备未找到"); + } } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode[" + devCode + "]的设备未找到"); + retItem.put("success", false); + retItem.put("msg", "devCode必传,不能为空"); } - } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode必传,不能为空"); + retSuccList.add(retItem); + idx++; } - + retObj.put("data", retSuccList); + retObj.put("code", 200); return retObj; } } diff --git a/src/main/java/com/casic/common/general/ConfigResponseFrame.java b/src/main/java/com/casic/common/general/ConfigResponseFrame.java index 943d757..17609f8 100644 --- a/src/main/java/com/casic/common/general/ConfigResponseFrame.java +++ b/src/main/java/com/casic/common/general/ConfigResponseFrame.java @@ -1,13 +1,23 @@ package com.casic.common.general; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import lombok.Data; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +@Data public class ConfigResponseFrame extends CasicFrame { final String MESSAGE_TYPE_IDENTIFY = "03"; final String MESSAGE_TYPE_STRING = "SetResponse"; final String MESSAGE_TYPE_DESCRIPTION = "配置参数响应"; + String devType = ""; + @Override public String toString() { return "{" + @@ -17,4 +27,20 @@ "上报时间:" + getUptime() + ";" + "}"; } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + + obj.put("mType", MESSAGE_TYPE_STRING); + obj.put("devType", getDevType()); + obj.put("devCode", getDeviceCode()); + + JSONObject body = new JSONObject(); + body.put("bType", getDevType() + "ConfigSuccess"); + + obj.put("mBody", body); + obj.put("ts", LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + return obj; + } } diff --git a/src/main/java/com/casic/methane/controller/MethaneDataController.java b/src/main/java/com/casic/methane/controller/MethaneDataController.java index ffde5ba..c83533a 100644 --- a/src/main/java/com/casic/methane/controller/MethaneDataController.java +++ b/src/main/java/com/casic/methane/controller/MethaneDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -89,6 +90,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/api/DeviceInfoController.java b/src/main/java/com/casic/api/DeviceInfoController.java index 1450c26..252d657 100644 --- a/src/main/java/com/casic/api/DeviceInfoController.java +++ b/src/main/java/com/casic/api/DeviceInfoController.java @@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -23,34 +25,43 @@ private IBusDeviceService deviceService; @RequestMapping("aepExt") - public Object aepExt(@RequestBody Map map) { - log.info(JSONObject.toJSONString(map)); + public Object aepExt(@RequestBody List> extInfoList) { + log.info(JSONObject.toJSONString(extInfoList)); Map retObj = new HashMap<>(); - if (map.containsKey("DEVCODE")) { - String devCode = StrUtil.toString(map.get("DEVCODE")); - BusDevice device = deviceService.getDeviceByCode(devCode); - if (ObjectUtil.isNotNull(device)) { - device.setNbAppKey(StrUtil.toString(map.getOrDefault("NB_APP_KEY", ""))); - device.setNbAppSecret(StrUtil.toString(map.getOrDefault("NB_APP_SECRET", ""))); - device.setMasterApiKey(StrUtil.toString(map.getOrDefault("MASTER_API_KEY", ""))); - device.setNbDeviceId(StrUtil.toString(map.getOrDefault("NB_DEVICE_ID", ""))); - device.setNbProductId(StrUtil.toString(map.getOrDefault("NB_PRODUCT_ID", ""))); + List> retSuccList = new ArrayList<>(); + int idx = 1; + for (Map devExt : extInfoList) { + Map retItem = new HashMap<>(); + retItem.put("index", idx); - deviceService.updateById(device); + if (devExt.containsKey("DEVCODE")) { + String devCode = StrUtil.toString(devExt.get("DEVCODE")); + BusDevice device = deviceService.getDeviceByCode(devCode); + if (ObjectUtil.isNotNull(device)) { + device.setNbAppKey(StrUtil.toString(devExt.getOrDefault("NB_APP_KEY", ""))); + device.setNbAppSecret(StrUtil.toString(devExt.getOrDefault("NB_APP_SECRET", ""))); + device.setMasterApiKey(StrUtil.toString(devExt.getOrDefault("MASTER_API_KEY", ""))); + device.setNbDeviceId(StrUtil.toString(devExt.getOrDefault("NB_DEVICE_ID", ""))); + device.setNbProductId(StrUtil.toString(devExt.getOrDefault("NB_PRODUCT_ID", ""))); - retObj.put("code", 200); - retObj.put("success", true); + boolean succ = deviceService.updateById(device); + retItem.put("success", succ); + if (!succ) { + retItem.put("msg", "updateById数据库操作失败"); + } + } else { + retItem.put("success", false); + retItem.put("msg", "devCode[" + devCode + "]的设备未找到"); + } } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode[" + devCode + "]的设备未找到"); + retItem.put("success", false); + retItem.put("msg", "devCode必传,不能为空"); } - } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode必传,不能为空"); + retSuccList.add(retItem); + idx++; } - + retObj.put("data", retSuccList); + retObj.put("code", 200); return retObj; } } diff --git a/src/main/java/com/casic/common/general/ConfigResponseFrame.java b/src/main/java/com/casic/common/general/ConfigResponseFrame.java index 943d757..17609f8 100644 --- a/src/main/java/com/casic/common/general/ConfigResponseFrame.java +++ b/src/main/java/com/casic/common/general/ConfigResponseFrame.java @@ -1,13 +1,23 @@ package com.casic.common.general; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import lombok.Data; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +@Data public class ConfigResponseFrame extends CasicFrame { final String MESSAGE_TYPE_IDENTIFY = "03"; final String MESSAGE_TYPE_STRING = "SetResponse"; final String MESSAGE_TYPE_DESCRIPTION = "配置参数响应"; + String devType = ""; + @Override public String toString() { return "{" + @@ -17,4 +27,20 @@ "上报时间:" + getUptime() + ";" + "}"; } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + + obj.put("mType", MESSAGE_TYPE_STRING); + obj.put("devType", getDevType()); + obj.put("devCode", getDeviceCode()); + + JSONObject body = new JSONObject(); + body.put("bType", getDevType() + "ConfigSuccess"); + + obj.put("mBody", body); + obj.put("ts", LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + return obj; + } } diff --git a/src/main/java/com/casic/methane/controller/MethaneDataController.java b/src/main/java/com/casic/methane/controller/MethaneDataController.java index ffde5ba..c83533a 100644 --- a/src/main/java/com/casic/methane/controller/MethaneDataController.java +++ b/src/main/java/com/casic/methane/controller/MethaneDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -89,6 +90,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java index 4b13aa1..7da4cdf 100644 --- a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java +++ b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java @@ -18,7 +18,7 @@ @Override public String getDevTypeName() { - return getDeviceType().equals("31") ? "Methane" : "LG"; + return getDeviceType().equals("31") ? "Methane" : "LGGasOther"; } @Override @@ -47,7 +47,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "LGGasOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/api/DeviceInfoController.java b/src/main/java/com/casic/api/DeviceInfoController.java index 1450c26..252d657 100644 --- a/src/main/java/com/casic/api/DeviceInfoController.java +++ b/src/main/java/com/casic/api/DeviceInfoController.java @@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -23,34 +25,43 @@ private IBusDeviceService deviceService; @RequestMapping("aepExt") - public Object aepExt(@RequestBody Map map) { - log.info(JSONObject.toJSONString(map)); + public Object aepExt(@RequestBody List> extInfoList) { + log.info(JSONObject.toJSONString(extInfoList)); Map retObj = new HashMap<>(); - if (map.containsKey("DEVCODE")) { - String devCode = StrUtil.toString(map.get("DEVCODE")); - BusDevice device = deviceService.getDeviceByCode(devCode); - if (ObjectUtil.isNotNull(device)) { - device.setNbAppKey(StrUtil.toString(map.getOrDefault("NB_APP_KEY", ""))); - device.setNbAppSecret(StrUtil.toString(map.getOrDefault("NB_APP_SECRET", ""))); - device.setMasterApiKey(StrUtil.toString(map.getOrDefault("MASTER_API_KEY", ""))); - device.setNbDeviceId(StrUtil.toString(map.getOrDefault("NB_DEVICE_ID", ""))); - device.setNbProductId(StrUtil.toString(map.getOrDefault("NB_PRODUCT_ID", ""))); + List> retSuccList = new ArrayList<>(); + int idx = 1; + for (Map devExt : extInfoList) { + Map retItem = new HashMap<>(); + retItem.put("index", idx); - deviceService.updateById(device); + if (devExt.containsKey("DEVCODE")) { + String devCode = StrUtil.toString(devExt.get("DEVCODE")); + BusDevice device = deviceService.getDeviceByCode(devCode); + if (ObjectUtil.isNotNull(device)) { + device.setNbAppKey(StrUtil.toString(devExt.getOrDefault("NB_APP_KEY", ""))); + device.setNbAppSecret(StrUtil.toString(devExt.getOrDefault("NB_APP_SECRET", ""))); + device.setMasterApiKey(StrUtil.toString(devExt.getOrDefault("MASTER_API_KEY", ""))); + device.setNbDeviceId(StrUtil.toString(devExt.getOrDefault("NB_DEVICE_ID", ""))); + device.setNbProductId(StrUtil.toString(devExt.getOrDefault("NB_PRODUCT_ID", ""))); - retObj.put("code", 200); - retObj.put("success", true); + boolean succ = deviceService.updateById(device); + retItem.put("success", succ); + if (!succ) { + retItem.put("msg", "updateById数据库操作失败"); + } + } else { + retItem.put("success", false); + retItem.put("msg", "devCode[" + devCode + "]的设备未找到"); + } } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode[" + devCode + "]的设备未找到"); + retItem.put("success", false); + retItem.put("msg", "devCode必传,不能为空"); } - } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode必传,不能为空"); + retSuccList.add(retItem); + idx++; } - + retObj.put("data", retSuccList); + retObj.put("code", 200); return retObj; } } diff --git a/src/main/java/com/casic/common/general/ConfigResponseFrame.java b/src/main/java/com/casic/common/general/ConfigResponseFrame.java index 943d757..17609f8 100644 --- a/src/main/java/com/casic/common/general/ConfigResponseFrame.java +++ b/src/main/java/com/casic/common/general/ConfigResponseFrame.java @@ -1,13 +1,23 @@ package com.casic.common.general; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import lombok.Data; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +@Data public class ConfigResponseFrame extends CasicFrame { final String MESSAGE_TYPE_IDENTIFY = "03"; final String MESSAGE_TYPE_STRING = "SetResponse"; final String MESSAGE_TYPE_DESCRIPTION = "配置参数响应"; + String devType = ""; + @Override public String toString() { return "{" + @@ -17,4 +27,20 @@ "上报时间:" + getUptime() + ";" + "}"; } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + + obj.put("mType", MESSAGE_TYPE_STRING); + obj.put("devType", getDevType()); + obj.put("devCode", getDeviceCode()); + + JSONObject body = new JSONObject(); + body.put("bType", getDevType() + "ConfigSuccess"); + + obj.put("mBody", body); + obj.put("ts", LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + return obj; + } } diff --git a/src/main/java/com/casic/methane/controller/MethaneDataController.java b/src/main/java/com/casic/methane/controller/MethaneDataController.java index ffde5ba..c83533a 100644 --- a/src/main/java/com/casic/methane/controller/MethaneDataController.java +++ b/src/main/java/com/casic/methane/controller/MethaneDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -89,6 +90,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java index 4b13aa1..7da4cdf 100644 --- a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java +++ b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java @@ -18,7 +18,7 @@ @Override public String getDevTypeName() { - return getDeviceType().equals("31") ? "Methane" : "LG"; + return getDeviceType().equals("31") ? "Methane" : "LGGasOther"; } @Override @@ -47,7 +47,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "LGGasOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java index 82af606..4f10a5f 100644 --- a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java +++ b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -98,6 +99,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/api/DeviceInfoController.java b/src/main/java/com/casic/api/DeviceInfoController.java index 1450c26..252d657 100644 --- a/src/main/java/com/casic/api/DeviceInfoController.java +++ b/src/main/java/com/casic/api/DeviceInfoController.java @@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -23,34 +25,43 @@ private IBusDeviceService deviceService; @RequestMapping("aepExt") - public Object aepExt(@RequestBody Map map) { - log.info(JSONObject.toJSONString(map)); + public Object aepExt(@RequestBody List> extInfoList) { + log.info(JSONObject.toJSONString(extInfoList)); Map retObj = new HashMap<>(); - if (map.containsKey("DEVCODE")) { - String devCode = StrUtil.toString(map.get("DEVCODE")); - BusDevice device = deviceService.getDeviceByCode(devCode); - if (ObjectUtil.isNotNull(device)) { - device.setNbAppKey(StrUtil.toString(map.getOrDefault("NB_APP_KEY", ""))); - device.setNbAppSecret(StrUtil.toString(map.getOrDefault("NB_APP_SECRET", ""))); - device.setMasterApiKey(StrUtil.toString(map.getOrDefault("MASTER_API_KEY", ""))); - device.setNbDeviceId(StrUtil.toString(map.getOrDefault("NB_DEVICE_ID", ""))); - device.setNbProductId(StrUtil.toString(map.getOrDefault("NB_PRODUCT_ID", ""))); + List> retSuccList = new ArrayList<>(); + int idx = 1; + for (Map devExt : extInfoList) { + Map retItem = new HashMap<>(); + retItem.put("index", idx); - deviceService.updateById(device); + if (devExt.containsKey("DEVCODE")) { + String devCode = StrUtil.toString(devExt.get("DEVCODE")); + BusDevice device = deviceService.getDeviceByCode(devCode); + if (ObjectUtil.isNotNull(device)) { + device.setNbAppKey(StrUtil.toString(devExt.getOrDefault("NB_APP_KEY", ""))); + device.setNbAppSecret(StrUtil.toString(devExt.getOrDefault("NB_APP_SECRET", ""))); + device.setMasterApiKey(StrUtil.toString(devExt.getOrDefault("MASTER_API_KEY", ""))); + device.setNbDeviceId(StrUtil.toString(devExt.getOrDefault("NB_DEVICE_ID", ""))); + device.setNbProductId(StrUtil.toString(devExt.getOrDefault("NB_PRODUCT_ID", ""))); - retObj.put("code", 200); - retObj.put("success", true); + boolean succ = deviceService.updateById(device); + retItem.put("success", succ); + if (!succ) { + retItem.put("msg", "updateById数据库操作失败"); + } + } else { + retItem.put("success", false); + retItem.put("msg", "devCode[" + devCode + "]的设备未找到"); + } } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode[" + devCode + "]的设备未找到"); + retItem.put("success", false); + retItem.put("msg", "devCode必传,不能为空"); } - } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode必传,不能为空"); + retSuccList.add(retItem); + idx++; } - + retObj.put("data", retSuccList); + retObj.put("code", 200); return retObj; } } diff --git a/src/main/java/com/casic/common/general/ConfigResponseFrame.java b/src/main/java/com/casic/common/general/ConfigResponseFrame.java index 943d757..17609f8 100644 --- a/src/main/java/com/casic/common/general/ConfigResponseFrame.java +++ b/src/main/java/com/casic/common/general/ConfigResponseFrame.java @@ -1,13 +1,23 @@ package com.casic.common.general; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import lombok.Data; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +@Data public class ConfigResponseFrame extends CasicFrame { final String MESSAGE_TYPE_IDENTIFY = "03"; final String MESSAGE_TYPE_STRING = "SetResponse"; final String MESSAGE_TYPE_DESCRIPTION = "配置参数响应"; + String devType = ""; + @Override public String toString() { return "{" + @@ -17,4 +27,20 @@ "上报时间:" + getUptime() + ";" + "}"; } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + + obj.put("mType", MESSAGE_TYPE_STRING); + obj.put("devType", getDevType()); + obj.put("devCode", getDeviceCode()); + + JSONObject body = new JSONObject(); + body.put("bType", getDevType() + "ConfigSuccess"); + + obj.put("mBody", body); + obj.put("ts", LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + return obj; + } } diff --git a/src/main/java/com/casic/methane/controller/MethaneDataController.java b/src/main/java/com/casic/methane/controller/MethaneDataController.java index ffde5ba..c83533a 100644 --- a/src/main/java/com/casic/methane/controller/MethaneDataController.java +++ b/src/main/java/com/casic/methane/controller/MethaneDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -89,6 +90,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java index 4b13aa1..7da4cdf 100644 --- a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java +++ b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java @@ -18,7 +18,7 @@ @Override public String getDevTypeName() { - return getDeviceType().equals("31") ? "Methane" : "LG"; + return getDeviceType().equals("31") ? "Methane" : "LGGasOther"; } @Override @@ -47,7 +47,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "LGGasOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java index 82af606..4f10a5f 100644 --- a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java +++ b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -98,6 +99,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java index 79f2498..f60eea8 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java @@ -27,6 +27,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); dataItemList = new ArrayList<>(); @@ -84,7 +89,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "MonitorPipeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/api/DeviceInfoController.java b/src/main/java/com/casic/api/DeviceInfoController.java index 1450c26..252d657 100644 --- a/src/main/java/com/casic/api/DeviceInfoController.java +++ b/src/main/java/com/casic/api/DeviceInfoController.java @@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -23,34 +25,43 @@ private IBusDeviceService deviceService; @RequestMapping("aepExt") - public Object aepExt(@RequestBody Map map) { - log.info(JSONObject.toJSONString(map)); + public Object aepExt(@RequestBody List> extInfoList) { + log.info(JSONObject.toJSONString(extInfoList)); Map retObj = new HashMap<>(); - if (map.containsKey("DEVCODE")) { - String devCode = StrUtil.toString(map.get("DEVCODE")); - BusDevice device = deviceService.getDeviceByCode(devCode); - if (ObjectUtil.isNotNull(device)) { - device.setNbAppKey(StrUtil.toString(map.getOrDefault("NB_APP_KEY", ""))); - device.setNbAppSecret(StrUtil.toString(map.getOrDefault("NB_APP_SECRET", ""))); - device.setMasterApiKey(StrUtil.toString(map.getOrDefault("MASTER_API_KEY", ""))); - device.setNbDeviceId(StrUtil.toString(map.getOrDefault("NB_DEVICE_ID", ""))); - device.setNbProductId(StrUtil.toString(map.getOrDefault("NB_PRODUCT_ID", ""))); + List> retSuccList = new ArrayList<>(); + int idx = 1; + for (Map devExt : extInfoList) { + Map retItem = new HashMap<>(); + retItem.put("index", idx); - deviceService.updateById(device); + if (devExt.containsKey("DEVCODE")) { + String devCode = StrUtil.toString(devExt.get("DEVCODE")); + BusDevice device = deviceService.getDeviceByCode(devCode); + if (ObjectUtil.isNotNull(device)) { + device.setNbAppKey(StrUtil.toString(devExt.getOrDefault("NB_APP_KEY", ""))); + device.setNbAppSecret(StrUtil.toString(devExt.getOrDefault("NB_APP_SECRET", ""))); + device.setMasterApiKey(StrUtil.toString(devExt.getOrDefault("MASTER_API_KEY", ""))); + device.setNbDeviceId(StrUtil.toString(devExt.getOrDefault("NB_DEVICE_ID", ""))); + device.setNbProductId(StrUtil.toString(devExt.getOrDefault("NB_PRODUCT_ID", ""))); - retObj.put("code", 200); - retObj.put("success", true); + boolean succ = deviceService.updateById(device); + retItem.put("success", succ); + if (!succ) { + retItem.put("msg", "updateById数据库操作失败"); + } + } else { + retItem.put("success", false); + retItem.put("msg", "devCode[" + devCode + "]的设备未找到"); + } } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode[" + devCode + "]的设备未找到"); + retItem.put("success", false); + retItem.put("msg", "devCode必传,不能为空"); } - } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode必传,不能为空"); + retSuccList.add(retItem); + idx++; } - + retObj.put("data", retSuccList); + retObj.put("code", 200); return retObj; } } diff --git a/src/main/java/com/casic/common/general/ConfigResponseFrame.java b/src/main/java/com/casic/common/general/ConfigResponseFrame.java index 943d757..17609f8 100644 --- a/src/main/java/com/casic/common/general/ConfigResponseFrame.java +++ b/src/main/java/com/casic/common/general/ConfigResponseFrame.java @@ -1,13 +1,23 @@ package com.casic.common.general; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import lombok.Data; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +@Data public class ConfigResponseFrame extends CasicFrame { final String MESSAGE_TYPE_IDENTIFY = "03"; final String MESSAGE_TYPE_STRING = "SetResponse"; final String MESSAGE_TYPE_DESCRIPTION = "配置参数响应"; + String devType = ""; + @Override public String toString() { return "{" + @@ -17,4 +27,20 @@ "上报时间:" + getUptime() + ";" + "}"; } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + + obj.put("mType", MESSAGE_TYPE_STRING); + obj.put("devType", getDevType()); + obj.put("devCode", getDeviceCode()); + + JSONObject body = new JSONObject(); + body.put("bType", getDevType() + "ConfigSuccess"); + + obj.put("mBody", body); + obj.put("ts", LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + return obj; + } } diff --git a/src/main/java/com/casic/methane/controller/MethaneDataController.java b/src/main/java/com/casic/methane/controller/MethaneDataController.java index ffde5ba..c83533a 100644 --- a/src/main/java/com/casic/methane/controller/MethaneDataController.java +++ b/src/main/java/com/casic/methane/controller/MethaneDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -89,6 +90,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java index 4b13aa1..7da4cdf 100644 --- a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java +++ b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java @@ -18,7 +18,7 @@ @Override public String getDevTypeName() { - return getDeviceType().equals("31") ? "Methane" : "LG"; + return getDeviceType().equals("31") ? "Methane" : "LGGasOther"; } @Override @@ -47,7 +47,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "LGGasOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java index 82af606..4f10a5f 100644 --- a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java +++ b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -98,6 +99,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java index 79f2498..f60eea8 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java @@ -27,6 +27,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); dataItemList = new ArrayList<>(); @@ -84,7 +89,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "MonitorPipeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java index b3bbcf4..a989c60 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java @@ -21,6 +21,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); eventItemList = new ArrayList<>(); diff --git a/src/main/java/com/casic/api/DeviceInfoController.java b/src/main/java/com/casic/api/DeviceInfoController.java index 1450c26..252d657 100644 --- a/src/main/java/com/casic/api/DeviceInfoController.java +++ b/src/main/java/com/casic/api/DeviceInfoController.java @@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -23,34 +25,43 @@ private IBusDeviceService deviceService; @RequestMapping("aepExt") - public Object aepExt(@RequestBody Map map) { - log.info(JSONObject.toJSONString(map)); + public Object aepExt(@RequestBody List> extInfoList) { + log.info(JSONObject.toJSONString(extInfoList)); Map retObj = new HashMap<>(); - if (map.containsKey("DEVCODE")) { - String devCode = StrUtil.toString(map.get("DEVCODE")); - BusDevice device = deviceService.getDeviceByCode(devCode); - if (ObjectUtil.isNotNull(device)) { - device.setNbAppKey(StrUtil.toString(map.getOrDefault("NB_APP_KEY", ""))); - device.setNbAppSecret(StrUtil.toString(map.getOrDefault("NB_APP_SECRET", ""))); - device.setMasterApiKey(StrUtil.toString(map.getOrDefault("MASTER_API_KEY", ""))); - device.setNbDeviceId(StrUtil.toString(map.getOrDefault("NB_DEVICE_ID", ""))); - device.setNbProductId(StrUtil.toString(map.getOrDefault("NB_PRODUCT_ID", ""))); + List> retSuccList = new ArrayList<>(); + int idx = 1; + for (Map devExt : extInfoList) { + Map retItem = new HashMap<>(); + retItem.put("index", idx); - deviceService.updateById(device); + if (devExt.containsKey("DEVCODE")) { + String devCode = StrUtil.toString(devExt.get("DEVCODE")); + BusDevice device = deviceService.getDeviceByCode(devCode); + if (ObjectUtil.isNotNull(device)) { + device.setNbAppKey(StrUtil.toString(devExt.getOrDefault("NB_APP_KEY", ""))); + device.setNbAppSecret(StrUtil.toString(devExt.getOrDefault("NB_APP_SECRET", ""))); + device.setMasterApiKey(StrUtil.toString(devExt.getOrDefault("MASTER_API_KEY", ""))); + device.setNbDeviceId(StrUtil.toString(devExt.getOrDefault("NB_DEVICE_ID", ""))); + device.setNbProductId(StrUtil.toString(devExt.getOrDefault("NB_PRODUCT_ID", ""))); - retObj.put("code", 200); - retObj.put("success", true); + boolean succ = deviceService.updateById(device); + retItem.put("success", succ); + if (!succ) { + retItem.put("msg", "updateById数据库操作失败"); + } + } else { + retItem.put("success", false); + retItem.put("msg", "devCode[" + devCode + "]的设备未找到"); + } } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode[" + devCode + "]的设备未找到"); + retItem.put("success", false); + retItem.put("msg", "devCode必传,不能为空"); } - } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode必传,不能为空"); + retSuccList.add(retItem); + idx++; } - + retObj.put("data", retSuccList); + retObj.put("code", 200); return retObj; } } diff --git a/src/main/java/com/casic/common/general/ConfigResponseFrame.java b/src/main/java/com/casic/common/general/ConfigResponseFrame.java index 943d757..17609f8 100644 --- a/src/main/java/com/casic/common/general/ConfigResponseFrame.java +++ b/src/main/java/com/casic/common/general/ConfigResponseFrame.java @@ -1,13 +1,23 @@ package com.casic.common.general; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import lombok.Data; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +@Data public class ConfigResponseFrame extends CasicFrame { final String MESSAGE_TYPE_IDENTIFY = "03"; final String MESSAGE_TYPE_STRING = "SetResponse"; final String MESSAGE_TYPE_DESCRIPTION = "配置参数响应"; + String devType = ""; + @Override public String toString() { return "{" + @@ -17,4 +27,20 @@ "上报时间:" + getUptime() + ";" + "}"; } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + + obj.put("mType", MESSAGE_TYPE_STRING); + obj.put("devType", getDevType()); + obj.put("devCode", getDeviceCode()); + + JSONObject body = new JSONObject(); + body.put("bType", getDevType() + "ConfigSuccess"); + + obj.put("mBody", body); + obj.put("ts", LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + return obj; + } } diff --git a/src/main/java/com/casic/methane/controller/MethaneDataController.java b/src/main/java/com/casic/methane/controller/MethaneDataController.java index ffde5ba..c83533a 100644 --- a/src/main/java/com/casic/methane/controller/MethaneDataController.java +++ b/src/main/java/com/casic/methane/controller/MethaneDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -89,6 +90,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java index 4b13aa1..7da4cdf 100644 --- a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java +++ b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java @@ -18,7 +18,7 @@ @Override public String getDevTypeName() { - return getDeviceType().equals("31") ? "Methane" : "LG"; + return getDeviceType().equals("31") ? "Methane" : "LGGasOther"; } @Override @@ -47,7 +47,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "LGGasOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java index 82af606..4f10a5f 100644 --- a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java +++ b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -98,6 +99,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java index 79f2498..f60eea8 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java @@ -27,6 +27,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); dataItemList = new ArrayList<>(); @@ -84,7 +89,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "MonitorPipeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java index b3bbcf4..a989c60 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java @@ -21,6 +21,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); eventItemList = new ArrayList<>(); diff --git a/src/main/java/com/casic/tube/controller/TubeDataController.java b/src/main/java/com/casic/tube/controller/TubeDataController.java index 687d008..f1eb4e5 100644 --- a/src/main/java/com/casic/tube/controller/TubeDataController.java +++ b/src/main/java/com/casic/tube/controller/TubeDataController.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; import com.casic.common.general.ConfigFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -91,6 +92,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } @@ -127,34 +138,6 @@ // 存入数据库 busConfigService.saveOrUpdateConfig(devCode, new JSONObject(map).getJSONArray("cmdList")); - // TODO-LIST - // 不直接下发到AEP平台 暂时存入数据库 待设备上数之后通过回复的方式下发给设备 - // 以下代码取消 -/* - // 从数据库中获取master-api-key 回复响应消息 - BusDevice device = deviceService.getDeviceByCode(devCode); - - // 判空及抛出异常 - if (ObjectUtil.isNull(device)) { - return new ReturnDTO<>(500, "没有找到编号为" + devCode + "设备"); - } - if (ObjectUtil.isNull(device.getNbDeviceId())) { - return new ReturnDTO<>(500, "NB_Device_ID为空"); - } - if (ObjectUtil.isNull(device.getNbProductId())) { - return new ReturnDTO<>(500, "NB_Product_ID为空"); - } - if (ObjectUtil.isNull(device.getMasterApiKey())) { - return new ReturnDTO<>(500, "masterApiKey为空"); - } - - String deviceId = device.getNbDeviceId(); - String productId = device.getNbProductId(); - String masterApiKey = device.getMasterApiKey(); - - AepCommandSend aepCommandSend = new AepCommandSend(deviceId, productId, masterApiKey); - int code = aepCommandSend.handleAndReply(frameStr); -*/ retObj.put("code", 200); retObj.put("success", true); return retObj; diff --git a/src/main/java/com/casic/api/DeviceInfoController.java b/src/main/java/com/casic/api/DeviceInfoController.java index 1450c26..252d657 100644 --- a/src/main/java/com/casic/api/DeviceInfoController.java +++ b/src/main/java/com/casic/api/DeviceInfoController.java @@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -23,34 +25,43 @@ private IBusDeviceService deviceService; @RequestMapping("aepExt") - public Object aepExt(@RequestBody Map map) { - log.info(JSONObject.toJSONString(map)); + public Object aepExt(@RequestBody List> extInfoList) { + log.info(JSONObject.toJSONString(extInfoList)); Map retObj = new HashMap<>(); - if (map.containsKey("DEVCODE")) { - String devCode = StrUtil.toString(map.get("DEVCODE")); - BusDevice device = deviceService.getDeviceByCode(devCode); - if (ObjectUtil.isNotNull(device)) { - device.setNbAppKey(StrUtil.toString(map.getOrDefault("NB_APP_KEY", ""))); - device.setNbAppSecret(StrUtil.toString(map.getOrDefault("NB_APP_SECRET", ""))); - device.setMasterApiKey(StrUtil.toString(map.getOrDefault("MASTER_API_KEY", ""))); - device.setNbDeviceId(StrUtil.toString(map.getOrDefault("NB_DEVICE_ID", ""))); - device.setNbProductId(StrUtil.toString(map.getOrDefault("NB_PRODUCT_ID", ""))); + List> retSuccList = new ArrayList<>(); + int idx = 1; + for (Map devExt : extInfoList) { + Map retItem = new HashMap<>(); + retItem.put("index", idx); - deviceService.updateById(device); + if (devExt.containsKey("DEVCODE")) { + String devCode = StrUtil.toString(devExt.get("DEVCODE")); + BusDevice device = deviceService.getDeviceByCode(devCode); + if (ObjectUtil.isNotNull(device)) { + device.setNbAppKey(StrUtil.toString(devExt.getOrDefault("NB_APP_KEY", ""))); + device.setNbAppSecret(StrUtil.toString(devExt.getOrDefault("NB_APP_SECRET", ""))); + device.setMasterApiKey(StrUtil.toString(devExt.getOrDefault("MASTER_API_KEY", ""))); + device.setNbDeviceId(StrUtil.toString(devExt.getOrDefault("NB_DEVICE_ID", ""))); + device.setNbProductId(StrUtil.toString(devExt.getOrDefault("NB_PRODUCT_ID", ""))); - retObj.put("code", 200); - retObj.put("success", true); + boolean succ = deviceService.updateById(device); + retItem.put("success", succ); + if (!succ) { + retItem.put("msg", "updateById数据库操作失败"); + } + } else { + retItem.put("success", false); + retItem.put("msg", "devCode[" + devCode + "]的设备未找到"); + } } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode[" + devCode + "]的设备未找到"); + retItem.put("success", false); + retItem.put("msg", "devCode必传,不能为空"); } - } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode必传,不能为空"); + retSuccList.add(retItem); + idx++; } - + retObj.put("data", retSuccList); + retObj.put("code", 200); return retObj; } } diff --git a/src/main/java/com/casic/common/general/ConfigResponseFrame.java b/src/main/java/com/casic/common/general/ConfigResponseFrame.java index 943d757..17609f8 100644 --- a/src/main/java/com/casic/common/general/ConfigResponseFrame.java +++ b/src/main/java/com/casic/common/general/ConfigResponseFrame.java @@ -1,13 +1,23 @@ package com.casic.common.general; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import lombok.Data; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +@Data public class ConfigResponseFrame extends CasicFrame { final String MESSAGE_TYPE_IDENTIFY = "03"; final String MESSAGE_TYPE_STRING = "SetResponse"; final String MESSAGE_TYPE_DESCRIPTION = "配置参数响应"; + String devType = ""; + @Override public String toString() { return "{" + @@ -17,4 +27,20 @@ "上报时间:" + getUptime() + ";" + "}"; } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + + obj.put("mType", MESSAGE_TYPE_STRING); + obj.put("devType", getDevType()); + obj.put("devCode", getDeviceCode()); + + JSONObject body = new JSONObject(); + body.put("bType", getDevType() + "ConfigSuccess"); + + obj.put("mBody", body); + obj.put("ts", LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + return obj; + } } diff --git a/src/main/java/com/casic/methane/controller/MethaneDataController.java b/src/main/java/com/casic/methane/controller/MethaneDataController.java index ffde5ba..c83533a 100644 --- a/src/main/java/com/casic/methane/controller/MethaneDataController.java +++ b/src/main/java/com/casic/methane/controller/MethaneDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -89,6 +90,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java index 4b13aa1..7da4cdf 100644 --- a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java +++ b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java @@ -18,7 +18,7 @@ @Override public String getDevTypeName() { - return getDeviceType().equals("31") ? "Methane" : "LG"; + return getDeviceType().equals("31") ? "Methane" : "LGGasOther"; } @Override @@ -47,7 +47,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "LGGasOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java index 82af606..4f10a5f 100644 --- a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java +++ b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -98,6 +99,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java index 79f2498..f60eea8 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java @@ -27,6 +27,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); dataItemList = new ArrayList<>(); @@ -84,7 +89,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "MonitorPipeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java index b3bbcf4..a989c60 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java @@ -21,6 +21,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); eventItemList = new ArrayList<>(); diff --git a/src/main/java/com/casic/tube/controller/TubeDataController.java b/src/main/java/com/casic/tube/controller/TubeDataController.java index 687d008..f1eb4e5 100644 --- a/src/main/java/com/casic/tube/controller/TubeDataController.java +++ b/src/main/java/com/casic/tube/controller/TubeDataController.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; import com.casic.common.general.ConfigFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -91,6 +92,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } @@ -127,34 +138,6 @@ // 存入数据库 busConfigService.saveOrUpdateConfig(devCode, new JSONObject(map).getJSONArray("cmdList")); - // TODO-LIST - // 不直接下发到AEP平台 暂时存入数据库 待设备上数之后通过回复的方式下发给设备 - // 以下代码取消 -/* - // 从数据库中获取master-api-key 回复响应消息 - BusDevice device = deviceService.getDeviceByCode(devCode); - - // 判空及抛出异常 - if (ObjectUtil.isNull(device)) { - return new ReturnDTO<>(500, "没有找到编号为" + devCode + "设备"); - } - if (ObjectUtil.isNull(device.getNbDeviceId())) { - return new ReturnDTO<>(500, "NB_Device_ID为空"); - } - if (ObjectUtil.isNull(device.getNbProductId())) { - return new ReturnDTO<>(500, "NB_Product_ID为空"); - } - if (ObjectUtil.isNull(device.getMasterApiKey())) { - return new ReturnDTO<>(500, "masterApiKey为空"); - } - - String deviceId = device.getNbDeviceId(); - String productId = device.getNbProductId(); - String masterApiKey = device.getMasterApiKey(); - - AepCommandSend aepCommandSend = new AepCommandSend(deviceId, productId, masterApiKey); - int code = aepCommandSend.handleAndReply(frameStr); -*/ retObj.put("code", 200); retObj.put("success", true); return retObj; diff --git a/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java b/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java index 7d61339..81721c0 100644 --- a/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java +++ b/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java @@ -26,10 +26,15 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/api/DeviceInfoController.java b/src/main/java/com/casic/api/DeviceInfoController.java index 1450c26..252d657 100644 --- a/src/main/java/com/casic/api/DeviceInfoController.java +++ b/src/main/java/com/casic/api/DeviceInfoController.java @@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -23,34 +25,43 @@ private IBusDeviceService deviceService; @RequestMapping("aepExt") - public Object aepExt(@RequestBody Map map) { - log.info(JSONObject.toJSONString(map)); + public Object aepExt(@RequestBody List> extInfoList) { + log.info(JSONObject.toJSONString(extInfoList)); Map retObj = new HashMap<>(); - if (map.containsKey("DEVCODE")) { - String devCode = StrUtil.toString(map.get("DEVCODE")); - BusDevice device = deviceService.getDeviceByCode(devCode); - if (ObjectUtil.isNotNull(device)) { - device.setNbAppKey(StrUtil.toString(map.getOrDefault("NB_APP_KEY", ""))); - device.setNbAppSecret(StrUtil.toString(map.getOrDefault("NB_APP_SECRET", ""))); - device.setMasterApiKey(StrUtil.toString(map.getOrDefault("MASTER_API_KEY", ""))); - device.setNbDeviceId(StrUtil.toString(map.getOrDefault("NB_DEVICE_ID", ""))); - device.setNbProductId(StrUtil.toString(map.getOrDefault("NB_PRODUCT_ID", ""))); + List> retSuccList = new ArrayList<>(); + int idx = 1; + for (Map devExt : extInfoList) { + Map retItem = new HashMap<>(); + retItem.put("index", idx); - deviceService.updateById(device); + if (devExt.containsKey("DEVCODE")) { + String devCode = StrUtil.toString(devExt.get("DEVCODE")); + BusDevice device = deviceService.getDeviceByCode(devCode); + if (ObjectUtil.isNotNull(device)) { + device.setNbAppKey(StrUtil.toString(devExt.getOrDefault("NB_APP_KEY", ""))); + device.setNbAppSecret(StrUtil.toString(devExt.getOrDefault("NB_APP_SECRET", ""))); + device.setMasterApiKey(StrUtil.toString(devExt.getOrDefault("MASTER_API_KEY", ""))); + device.setNbDeviceId(StrUtil.toString(devExt.getOrDefault("NB_DEVICE_ID", ""))); + device.setNbProductId(StrUtil.toString(devExt.getOrDefault("NB_PRODUCT_ID", ""))); - retObj.put("code", 200); - retObj.put("success", true); + boolean succ = deviceService.updateById(device); + retItem.put("success", succ); + if (!succ) { + retItem.put("msg", "updateById数据库操作失败"); + } + } else { + retItem.put("success", false); + retItem.put("msg", "devCode[" + devCode + "]的设备未找到"); + } } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode[" + devCode + "]的设备未找到"); + retItem.put("success", false); + retItem.put("msg", "devCode必传,不能为空"); } - } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode必传,不能为空"); + retSuccList.add(retItem); + idx++; } - + retObj.put("data", retSuccList); + retObj.put("code", 200); return retObj; } } diff --git a/src/main/java/com/casic/common/general/ConfigResponseFrame.java b/src/main/java/com/casic/common/general/ConfigResponseFrame.java index 943d757..17609f8 100644 --- a/src/main/java/com/casic/common/general/ConfigResponseFrame.java +++ b/src/main/java/com/casic/common/general/ConfigResponseFrame.java @@ -1,13 +1,23 @@ package com.casic.common.general; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import lombok.Data; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +@Data public class ConfigResponseFrame extends CasicFrame { final String MESSAGE_TYPE_IDENTIFY = "03"; final String MESSAGE_TYPE_STRING = "SetResponse"; final String MESSAGE_TYPE_DESCRIPTION = "配置参数响应"; + String devType = ""; + @Override public String toString() { return "{" + @@ -17,4 +27,20 @@ "上报时间:" + getUptime() + ";" + "}"; } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + + obj.put("mType", MESSAGE_TYPE_STRING); + obj.put("devType", getDevType()); + obj.put("devCode", getDeviceCode()); + + JSONObject body = new JSONObject(); + body.put("bType", getDevType() + "ConfigSuccess"); + + obj.put("mBody", body); + obj.put("ts", LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + return obj; + } } diff --git a/src/main/java/com/casic/methane/controller/MethaneDataController.java b/src/main/java/com/casic/methane/controller/MethaneDataController.java index ffde5ba..c83533a 100644 --- a/src/main/java/com/casic/methane/controller/MethaneDataController.java +++ b/src/main/java/com/casic/methane/controller/MethaneDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -89,6 +90,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java index 4b13aa1..7da4cdf 100644 --- a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java +++ b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java @@ -18,7 +18,7 @@ @Override public String getDevTypeName() { - return getDeviceType().equals("31") ? "Methane" : "LG"; + return getDeviceType().equals("31") ? "Methane" : "LGGasOther"; } @Override @@ -47,7 +47,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "LGGasOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java index 82af606..4f10a5f 100644 --- a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java +++ b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -98,6 +99,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java index 79f2498..f60eea8 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java @@ -27,6 +27,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); dataItemList = new ArrayList<>(); @@ -84,7 +89,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "MonitorPipeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java index b3bbcf4..a989c60 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java @@ -21,6 +21,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); eventItemList = new ArrayList<>(); diff --git a/src/main/java/com/casic/tube/controller/TubeDataController.java b/src/main/java/com/casic/tube/controller/TubeDataController.java index 687d008..f1eb4e5 100644 --- a/src/main/java/com/casic/tube/controller/TubeDataController.java +++ b/src/main/java/com/casic/tube/controller/TubeDataController.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; import com.casic.common.general.ConfigFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -91,6 +92,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } @@ -127,34 +138,6 @@ // 存入数据库 busConfigService.saveOrUpdateConfig(devCode, new JSONObject(map).getJSONArray("cmdList")); - // TODO-LIST - // 不直接下发到AEP平台 暂时存入数据库 待设备上数之后通过回复的方式下发给设备 - // 以下代码取消 -/* - // 从数据库中获取master-api-key 回复响应消息 - BusDevice device = deviceService.getDeviceByCode(devCode); - - // 判空及抛出异常 - if (ObjectUtil.isNull(device)) { - return new ReturnDTO<>(500, "没有找到编号为" + devCode + "设备"); - } - if (ObjectUtil.isNull(device.getNbDeviceId())) { - return new ReturnDTO<>(500, "NB_Device_ID为空"); - } - if (ObjectUtil.isNull(device.getNbProductId())) { - return new ReturnDTO<>(500, "NB_Product_ID为空"); - } - if (ObjectUtil.isNull(device.getMasterApiKey())) { - return new ReturnDTO<>(500, "masterApiKey为空"); - } - - String deviceId = device.getNbDeviceId(); - String productId = device.getNbProductId(); - String masterApiKey = device.getMasterApiKey(); - - AepCommandSend aepCommandSend = new AepCommandSend(deviceId, productId, masterApiKey); - int code = aepCommandSend.handleAndReply(frameStr); -*/ retObj.put("code", 200); retObj.put("success", true); return retObj; diff --git a/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java b/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java index 7d61339..81721c0 100644 --- a/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java +++ b/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java @@ -26,10 +26,15 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java b/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java index 2cd4211..cf60132 100644 --- a/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java +++ b/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java @@ -22,6 +22,11 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public void parseMessageBody() { JSONArray eventArray = getMessageBody().getJSONArray("DATAS"); eventItemList = new ArrayList<>(); @@ -41,7 +46,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/api/DeviceInfoController.java b/src/main/java/com/casic/api/DeviceInfoController.java index 1450c26..252d657 100644 --- a/src/main/java/com/casic/api/DeviceInfoController.java +++ b/src/main/java/com/casic/api/DeviceInfoController.java @@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -23,34 +25,43 @@ private IBusDeviceService deviceService; @RequestMapping("aepExt") - public Object aepExt(@RequestBody Map map) { - log.info(JSONObject.toJSONString(map)); + public Object aepExt(@RequestBody List> extInfoList) { + log.info(JSONObject.toJSONString(extInfoList)); Map retObj = new HashMap<>(); - if (map.containsKey("DEVCODE")) { - String devCode = StrUtil.toString(map.get("DEVCODE")); - BusDevice device = deviceService.getDeviceByCode(devCode); - if (ObjectUtil.isNotNull(device)) { - device.setNbAppKey(StrUtil.toString(map.getOrDefault("NB_APP_KEY", ""))); - device.setNbAppSecret(StrUtil.toString(map.getOrDefault("NB_APP_SECRET", ""))); - device.setMasterApiKey(StrUtil.toString(map.getOrDefault("MASTER_API_KEY", ""))); - device.setNbDeviceId(StrUtil.toString(map.getOrDefault("NB_DEVICE_ID", ""))); - device.setNbProductId(StrUtil.toString(map.getOrDefault("NB_PRODUCT_ID", ""))); + List> retSuccList = new ArrayList<>(); + int idx = 1; + for (Map devExt : extInfoList) { + Map retItem = new HashMap<>(); + retItem.put("index", idx); - deviceService.updateById(device); + if (devExt.containsKey("DEVCODE")) { + String devCode = StrUtil.toString(devExt.get("DEVCODE")); + BusDevice device = deviceService.getDeviceByCode(devCode); + if (ObjectUtil.isNotNull(device)) { + device.setNbAppKey(StrUtil.toString(devExt.getOrDefault("NB_APP_KEY", ""))); + device.setNbAppSecret(StrUtil.toString(devExt.getOrDefault("NB_APP_SECRET", ""))); + device.setMasterApiKey(StrUtil.toString(devExt.getOrDefault("MASTER_API_KEY", ""))); + device.setNbDeviceId(StrUtil.toString(devExt.getOrDefault("NB_DEVICE_ID", ""))); + device.setNbProductId(StrUtil.toString(devExt.getOrDefault("NB_PRODUCT_ID", ""))); - retObj.put("code", 200); - retObj.put("success", true); + boolean succ = deviceService.updateById(device); + retItem.put("success", succ); + if (!succ) { + retItem.put("msg", "updateById数据库操作失败"); + } + } else { + retItem.put("success", false); + retItem.put("msg", "devCode[" + devCode + "]的设备未找到"); + } } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode[" + devCode + "]的设备未找到"); + retItem.put("success", false); + retItem.put("msg", "devCode必传,不能为空"); } - } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode必传,不能为空"); + retSuccList.add(retItem); + idx++; } - + retObj.put("data", retSuccList); + retObj.put("code", 200); return retObj; } } diff --git a/src/main/java/com/casic/common/general/ConfigResponseFrame.java b/src/main/java/com/casic/common/general/ConfigResponseFrame.java index 943d757..17609f8 100644 --- a/src/main/java/com/casic/common/general/ConfigResponseFrame.java +++ b/src/main/java/com/casic/common/general/ConfigResponseFrame.java @@ -1,13 +1,23 @@ package com.casic.common.general; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import lombok.Data; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +@Data public class ConfigResponseFrame extends CasicFrame { final String MESSAGE_TYPE_IDENTIFY = "03"; final String MESSAGE_TYPE_STRING = "SetResponse"; final String MESSAGE_TYPE_DESCRIPTION = "配置参数响应"; + String devType = ""; + @Override public String toString() { return "{" + @@ -17,4 +27,20 @@ "上报时间:" + getUptime() + ";" + "}"; } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + + obj.put("mType", MESSAGE_TYPE_STRING); + obj.put("devType", getDevType()); + obj.put("devCode", getDeviceCode()); + + JSONObject body = new JSONObject(); + body.put("bType", getDevType() + "ConfigSuccess"); + + obj.put("mBody", body); + obj.put("ts", LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + return obj; + } } diff --git a/src/main/java/com/casic/methane/controller/MethaneDataController.java b/src/main/java/com/casic/methane/controller/MethaneDataController.java index ffde5ba..c83533a 100644 --- a/src/main/java/com/casic/methane/controller/MethaneDataController.java +++ b/src/main/java/com/casic/methane/controller/MethaneDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -89,6 +90,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java index 4b13aa1..7da4cdf 100644 --- a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java +++ b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java @@ -18,7 +18,7 @@ @Override public String getDevTypeName() { - return getDeviceType().equals("31") ? "Methane" : "LG"; + return getDeviceType().equals("31") ? "Methane" : "LGGasOther"; } @Override @@ -47,7 +47,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "LGGasOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java index 82af606..4f10a5f 100644 --- a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java +++ b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -98,6 +99,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java index 79f2498..f60eea8 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java @@ -27,6 +27,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); dataItemList = new ArrayList<>(); @@ -84,7 +89,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "MonitorPipeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java index b3bbcf4..a989c60 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java @@ -21,6 +21,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); eventItemList = new ArrayList<>(); diff --git a/src/main/java/com/casic/tube/controller/TubeDataController.java b/src/main/java/com/casic/tube/controller/TubeDataController.java index 687d008..f1eb4e5 100644 --- a/src/main/java/com/casic/tube/controller/TubeDataController.java +++ b/src/main/java/com/casic/tube/controller/TubeDataController.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; import com.casic.common.general.ConfigFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -91,6 +92,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } @@ -127,34 +138,6 @@ // 存入数据库 busConfigService.saveOrUpdateConfig(devCode, new JSONObject(map).getJSONArray("cmdList")); - // TODO-LIST - // 不直接下发到AEP平台 暂时存入数据库 待设备上数之后通过回复的方式下发给设备 - // 以下代码取消 -/* - // 从数据库中获取master-api-key 回复响应消息 - BusDevice device = deviceService.getDeviceByCode(devCode); - - // 判空及抛出异常 - if (ObjectUtil.isNull(device)) { - return new ReturnDTO<>(500, "没有找到编号为" + devCode + "设备"); - } - if (ObjectUtil.isNull(device.getNbDeviceId())) { - return new ReturnDTO<>(500, "NB_Device_ID为空"); - } - if (ObjectUtil.isNull(device.getNbProductId())) { - return new ReturnDTO<>(500, "NB_Product_ID为空"); - } - if (ObjectUtil.isNull(device.getMasterApiKey())) { - return new ReturnDTO<>(500, "masterApiKey为空"); - } - - String deviceId = device.getNbDeviceId(); - String productId = device.getNbProductId(); - String masterApiKey = device.getMasterApiKey(); - - AepCommandSend aepCommandSend = new AepCommandSend(deviceId, productId, masterApiKey); - int code = aepCommandSend.handleAndReply(frameStr); -*/ retObj.put("code", 200); retObj.put("success", true); return retObj; diff --git a/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java b/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java index 7d61339..81721c0 100644 --- a/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java +++ b/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java @@ -26,10 +26,15 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java b/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java index 2cd4211..cf60132 100644 --- a/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java +++ b/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java @@ -22,6 +22,11 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public void parseMessageBody() { JSONArray eventArray = getMessageBody().getJSONArray("DATAS"); eventItemList = new ArrayList<>(); @@ -41,7 +46,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/tube/frame/mhk/DataFrameMHK.java b/src/main/java/com/casic/tube/frame/mhk/DataFrameMHK.java index 79f1577..0589c45 100644 --- a/src/main/java/com/casic/tube/frame/mhk/DataFrameMHK.java +++ b/src/main/java/com/casic/tube/frame/mhk/DataFrameMHK.java @@ -26,10 +26,15 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/api/DeviceInfoController.java b/src/main/java/com/casic/api/DeviceInfoController.java index 1450c26..252d657 100644 --- a/src/main/java/com/casic/api/DeviceInfoController.java +++ b/src/main/java/com/casic/api/DeviceInfoController.java @@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -23,34 +25,43 @@ private IBusDeviceService deviceService; @RequestMapping("aepExt") - public Object aepExt(@RequestBody Map map) { - log.info(JSONObject.toJSONString(map)); + public Object aepExt(@RequestBody List> extInfoList) { + log.info(JSONObject.toJSONString(extInfoList)); Map retObj = new HashMap<>(); - if (map.containsKey("DEVCODE")) { - String devCode = StrUtil.toString(map.get("DEVCODE")); - BusDevice device = deviceService.getDeviceByCode(devCode); - if (ObjectUtil.isNotNull(device)) { - device.setNbAppKey(StrUtil.toString(map.getOrDefault("NB_APP_KEY", ""))); - device.setNbAppSecret(StrUtil.toString(map.getOrDefault("NB_APP_SECRET", ""))); - device.setMasterApiKey(StrUtil.toString(map.getOrDefault("MASTER_API_KEY", ""))); - device.setNbDeviceId(StrUtil.toString(map.getOrDefault("NB_DEVICE_ID", ""))); - device.setNbProductId(StrUtil.toString(map.getOrDefault("NB_PRODUCT_ID", ""))); + List> retSuccList = new ArrayList<>(); + int idx = 1; + for (Map devExt : extInfoList) { + Map retItem = new HashMap<>(); + retItem.put("index", idx); - deviceService.updateById(device); + if (devExt.containsKey("DEVCODE")) { + String devCode = StrUtil.toString(devExt.get("DEVCODE")); + BusDevice device = deviceService.getDeviceByCode(devCode); + if (ObjectUtil.isNotNull(device)) { + device.setNbAppKey(StrUtil.toString(devExt.getOrDefault("NB_APP_KEY", ""))); + device.setNbAppSecret(StrUtil.toString(devExt.getOrDefault("NB_APP_SECRET", ""))); + device.setMasterApiKey(StrUtil.toString(devExt.getOrDefault("MASTER_API_KEY", ""))); + device.setNbDeviceId(StrUtil.toString(devExt.getOrDefault("NB_DEVICE_ID", ""))); + device.setNbProductId(StrUtil.toString(devExt.getOrDefault("NB_PRODUCT_ID", ""))); - retObj.put("code", 200); - retObj.put("success", true); + boolean succ = deviceService.updateById(device); + retItem.put("success", succ); + if (!succ) { + retItem.put("msg", "updateById数据库操作失败"); + } + } else { + retItem.put("success", false); + retItem.put("msg", "devCode[" + devCode + "]的设备未找到"); + } } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode[" + devCode + "]的设备未找到"); + retItem.put("success", false); + retItem.put("msg", "devCode必传,不能为空"); } - } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode必传,不能为空"); + retSuccList.add(retItem); + idx++; } - + retObj.put("data", retSuccList); + retObj.put("code", 200); return retObj; } } diff --git a/src/main/java/com/casic/common/general/ConfigResponseFrame.java b/src/main/java/com/casic/common/general/ConfigResponseFrame.java index 943d757..17609f8 100644 --- a/src/main/java/com/casic/common/general/ConfigResponseFrame.java +++ b/src/main/java/com/casic/common/general/ConfigResponseFrame.java @@ -1,13 +1,23 @@ package com.casic.common.general; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import lombok.Data; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +@Data public class ConfigResponseFrame extends CasicFrame { final String MESSAGE_TYPE_IDENTIFY = "03"; final String MESSAGE_TYPE_STRING = "SetResponse"; final String MESSAGE_TYPE_DESCRIPTION = "配置参数响应"; + String devType = ""; + @Override public String toString() { return "{" + @@ -17,4 +27,20 @@ "上报时间:" + getUptime() + ";" + "}"; } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + + obj.put("mType", MESSAGE_TYPE_STRING); + obj.put("devType", getDevType()); + obj.put("devCode", getDeviceCode()); + + JSONObject body = new JSONObject(); + body.put("bType", getDevType() + "ConfigSuccess"); + + obj.put("mBody", body); + obj.put("ts", LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + return obj; + } } diff --git a/src/main/java/com/casic/methane/controller/MethaneDataController.java b/src/main/java/com/casic/methane/controller/MethaneDataController.java index ffde5ba..c83533a 100644 --- a/src/main/java/com/casic/methane/controller/MethaneDataController.java +++ b/src/main/java/com/casic/methane/controller/MethaneDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -89,6 +90,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java index 4b13aa1..7da4cdf 100644 --- a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java +++ b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java @@ -18,7 +18,7 @@ @Override public String getDevTypeName() { - return getDeviceType().equals("31") ? "Methane" : "LG"; + return getDeviceType().equals("31") ? "Methane" : "LGGasOther"; } @Override @@ -47,7 +47,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "LGGasOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java index 82af606..4f10a5f 100644 --- a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java +++ b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -98,6 +99,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java index 79f2498..f60eea8 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java @@ -27,6 +27,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); dataItemList = new ArrayList<>(); @@ -84,7 +89,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "MonitorPipeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java index b3bbcf4..a989c60 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java @@ -21,6 +21,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); eventItemList = new ArrayList<>(); diff --git a/src/main/java/com/casic/tube/controller/TubeDataController.java b/src/main/java/com/casic/tube/controller/TubeDataController.java index 687d008..f1eb4e5 100644 --- a/src/main/java/com/casic/tube/controller/TubeDataController.java +++ b/src/main/java/com/casic/tube/controller/TubeDataController.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; import com.casic.common.general.ConfigFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -91,6 +92,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } @@ -127,34 +138,6 @@ // 存入数据库 busConfigService.saveOrUpdateConfig(devCode, new JSONObject(map).getJSONArray("cmdList")); - // TODO-LIST - // 不直接下发到AEP平台 暂时存入数据库 待设备上数之后通过回复的方式下发给设备 - // 以下代码取消 -/* - // 从数据库中获取master-api-key 回复响应消息 - BusDevice device = deviceService.getDeviceByCode(devCode); - - // 判空及抛出异常 - if (ObjectUtil.isNull(device)) { - return new ReturnDTO<>(500, "没有找到编号为" + devCode + "设备"); - } - if (ObjectUtil.isNull(device.getNbDeviceId())) { - return new ReturnDTO<>(500, "NB_Device_ID为空"); - } - if (ObjectUtil.isNull(device.getNbProductId())) { - return new ReturnDTO<>(500, "NB_Product_ID为空"); - } - if (ObjectUtil.isNull(device.getMasterApiKey())) { - return new ReturnDTO<>(500, "masterApiKey为空"); - } - - String deviceId = device.getNbDeviceId(); - String productId = device.getNbProductId(); - String masterApiKey = device.getMasterApiKey(); - - AepCommandSend aepCommandSend = new AepCommandSend(deviceId, productId, masterApiKey); - int code = aepCommandSend.handleAndReply(frameStr); -*/ retObj.put("code", 200); retObj.put("success", true); return retObj; diff --git a/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java b/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java index 7d61339..81721c0 100644 --- a/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java +++ b/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java @@ -26,10 +26,15 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java b/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java index 2cd4211..cf60132 100644 --- a/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java +++ b/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java @@ -22,6 +22,11 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public void parseMessageBody() { JSONArray eventArray = getMessageBody().getJSONArray("DATAS"); eventItemList = new ArrayList<>(); @@ -41,7 +46,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/tube/frame/mhk/DataFrameMHK.java b/src/main/java/com/casic/tube/frame/mhk/DataFrameMHK.java index 79f1577..0589c45 100644 --- a/src/main/java/com/casic/tube/frame/mhk/DataFrameMHK.java +++ b/src/main/java/com/casic/tube/frame/mhk/DataFrameMHK.java @@ -26,10 +26,15 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/tube/frame/mhk/EventFrameMHK.java b/src/main/java/com/casic/tube/frame/mhk/EventFrameMHK.java index 48f8511..5b69d32 100644 --- a/src/main/java/com/casic/tube/frame/mhk/EventFrameMHK.java +++ b/src/main/java/com/casic/tube/frame/mhk/EventFrameMHK.java @@ -23,10 +23,15 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/api/DeviceInfoController.java b/src/main/java/com/casic/api/DeviceInfoController.java index 1450c26..252d657 100644 --- a/src/main/java/com/casic/api/DeviceInfoController.java +++ b/src/main/java/com/casic/api/DeviceInfoController.java @@ -11,7 +11,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -23,34 +25,43 @@ private IBusDeviceService deviceService; @RequestMapping("aepExt") - public Object aepExt(@RequestBody Map map) { - log.info(JSONObject.toJSONString(map)); + public Object aepExt(@RequestBody List> extInfoList) { + log.info(JSONObject.toJSONString(extInfoList)); Map retObj = new HashMap<>(); - if (map.containsKey("DEVCODE")) { - String devCode = StrUtil.toString(map.get("DEVCODE")); - BusDevice device = deviceService.getDeviceByCode(devCode); - if (ObjectUtil.isNotNull(device)) { - device.setNbAppKey(StrUtil.toString(map.getOrDefault("NB_APP_KEY", ""))); - device.setNbAppSecret(StrUtil.toString(map.getOrDefault("NB_APP_SECRET", ""))); - device.setMasterApiKey(StrUtil.toString(map.getOrDefault("MASTER_API_KEY", ""))); - device.setNbDeviceId(StrUtil.toString(map.getOrDefault("NB_DEVICE_ID", ""))); - device.setNbProductId(StrUtil.toString(map.getOrDefault("NB_PRODUCT_ID", ""))); + List> retSuccList = new ArrayList<>(); + int idx = 1; + for (Map devExt : extInfoList) { + Map retItem = new HashMap<>(); + retItem.put("index", idx); - deviceService.updateById(device); + if (devExt.containsKey("DEVCODE")) { + String devCode = StrUtil.toString(devExt.get("DEVCODE")); + BusDevice device = deviceService.getDeviceByCode(devCode); + if (ObjectUtil.isNotNull(device)) { + device.setNbAppKey(StrUtil.toString(devExt.getOrDefault("NB_APP_KEY", ""))); + device.setNbAppSecret(StrUtil.toString(devExt.getOrDefault("NB_APP_SECRET", ""))); + device.setMasterApiKey(StrUtil.toString(devExt.getOrDefault("MASTER_API_KEY", ""))); + device.setNbDeviceId(StrUtil.toString(devExt.getOrDefault("NB_DEVICE_ID", ""))); + device.setNbProductId(StrUtil.toString(devExt.getOrDefault("NB_PRODUCT_ID", ""))); - retObj.put("code", 200); - retObj.put("success", true); + boolean succ = deviceService.updateById(device); + retItem.put("success", succ); + if (!succ) { + retItem.put("msg", "updateById数据库操作失败"); + } + } else { + retItem.put("success", false); + retItem.put("msg", "devCode[" + devCode + "]的设备未找到"); + } } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode[" + devCode + "]的设备未找到"); + retItem.put("success", false); + retItem.put("msg", "devCode必传,不能为空"); } - } else { - retObj.put("code", 201); - retObj.put("success", false); - retObj.put("message", "devCode必传,不能为空"); + retSuccList.add(retItem); + idx++; } - + retObj.put("data", retSuccList); + retObj.put("code", 200); return retObj; } } diff --git a/src/main/java/com/casic/common/general/ConfigResponseFrame.java b/src/main/java/com/casic/common/general/ConfigResponseFrame.java index 943d757..17609f8 100644 --- a/src/main/java/com/casic/common/general/ConfigResponseFrame.java +++ b/src/main/java/com/casic/common/general/ConfigResponseFrame.java @@ -1,13 +1,23 @@ package com.casic.common.general; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import lombok.Data; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +@Data public class ConfigResponseFrame extends CasicFrame { final String MESSAGE_TYPE_IDENTIFY = "03"; final String MESSAGE_TYPE_STRING = "SetResponse"; final String MESSAGE_TYPE_DESCRIPTION = "配置参数响应"; + String devType = ""; + @Override public String toString() { return "{" + @@ -17,4 +27,20 @@ "上报时间:" + getUptime() + ";" + "}"; } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + + obj.put("mType", MESSAGE_TYPE_STRING); + obj.put("devType", getDevType()); + obj.put("devCode", getDeviceCode()); + + JSONObject body = new JSONObject(); + body.put("bType", getDevType() + "ConfigSuccess"); + + obj.put("mBody", body); + obj.put("ts", LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); + return obj; + } } diff --git a/src/main/java/com/casic/methane/controller/MethaneDataController.java b/src/main/java/com/casic/methane/controller/MethaneDataController.java index ffde5ba..c83533a 100644 --- a/src/main/java/com/casic/methane/controller/MethaneDataController.java +++ b/src/main/java/com/casic/methane/controller/MethaneDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -89,6 +90,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java index 4b13aa1..7da4cdf 100644 --- a/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java +++ b/src/main/java/com/casic/methane/frame/brs/MethaneEventFrameBRS.java @@ -18,7 +18,7 @@ @Override public String getDevTypeName() { - return getDeviceType().equals("31") ? "Methane" : "LG"; + return getDeviceType().equals("31") ? "Methane" : "LGGasOther"; } @Override @@ -47,7 +47,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "LGGasOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java index 82af606..4f10a5f 100644 --- a/src/main/java/com/casic/senitnel/controller/SentinelDataController.java +++ b/src/main/java/com/casic/senitnel/controller/SentinelDataController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -98,6 +99,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } diff --git a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java index 79f2498..f60eea8 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/DataFrameNCX.java @@ -27,6 +27,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); dataItemList = new ArrayList<>(); @@ -84,7 +89,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "MonitorPipeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java index b3bbcf4..a989c60 100644 --- a/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java +++ b/src/main/java/com/casic/senitnel/frame/ncx/EventFrameNCX.java @@ -21,6 +21,11 @@ } @Override + public String getDevTypeName() { + return "MonitorPipeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); eventItemList = new ArrayList<>(); diff --git a/src/main/java/com/casic/tube/controller/TubeDataController.java b/src/main/java/com/casic/tube/controller/TubeDataController.java index 687d008..f1eb4e5 100644 --- a/src/main/java/com/casic/tube/controller/TubeDataController.java +++ b/src/main/java/com/casic/tube/controller/TubeDataController.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.common.CasicFrame; import com.casic.common.general.ConfigFrame; +import com.casic.common.general.ConfigResponseFrame; import com.casic.dao.model.BusConfig; import com.casic.dao.model.BusDevice; import com.casic.dao.service.IBusConfigService; @@ -91,6 +92,16 @@ if (code == 0) { busConfigService.updateConfigState(device.getId(), "1"); + + // 异步推送配置成功 + ConfigResponseFrame setResponse = new ConfigResponseFrame(); + setResponse.setDevType(frame.getDevTypeName()); + setResponse.setDeviceCode(devCode); + // 异步推送 + ThreadUtil.execAsync(() -> { + log.info("异步推送配置成功消息到接口:{}", setResponse.toJSON().toJSONString()); + frameService.pushToApi(setResponse); + }); } else { busConfigService.updateConfigState(device.getId(), "2"); } @@ -127,34 +138,6 @@ // 存入数据库 busConfigService.saveOrUpdateConfig(devCode, new JSONObject(map).getJSONArray("cmdList")); - // TODO-LIST - // 不直接下发到AEP平台 暂时存入数据库 待设备上数之后通过回复的方式下发给设备 - // 以下代码取消 -/* - // 从数据库中获取master-api-key 回复响应消息 - BusDevice device = deviceService.getDeviceByCode(devCode); - - // 判空及抛出异常 - if (ObjectUtil.isNull(device)) { - return new ReturnDTO<>(500, "没有找到编号为" + devCode + "设备"); - } - if (ObjectUtil.isNull(device.getNbDeviceId())) { - return new ReturnDTO<>(500, "NB_Device_ID为空"); - } - if (ObjectUtil.isNull(device.getNbProductId())) { - return new ReturnDTO<>(500, "NB_Product_ID为空"); - } - if (ObjectUtil.isNull(device.getMasterApiKey())) { - return new ReturnDTO<>(500, "masterApiKey为空"); - } - - String deviceId = device.getNbDeviceId(); - String productId = device.getNbProductId(); - String masterApiKey = device.getMasterApiKey(); - - AepCommandSend aepCommandSend = new AepCommandSend(deviceId, productId, masterApiKey); - int code = aepCommandSend.handleAndReply(frameStr); -*/ retObj.put("code", 200); retObj.put("success", true); return retObj; diff --git a/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java b/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java index 7d61339..81721c0 100644 --- a/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java +++ b/src/main/java/com/casic/tube/frame/brs/DataFrameBRS.java @@ -26,10 +26,15 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java b/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java index 2cd4211..cf60132 100644 --- a/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java +++ b/src/main/java/com/casic/tube/frame/brs/EventFrameBRS.java @@ -22,6 +22,11 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public void parseMessageBody() { JSONArray eventArray = getMessageBody().getJSONArray("DATAS"); eventItemList = new ArrayList<>(); @@ -41,7 +46,7 @@ public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/tube/frame/mhk/DataFrameMHK.java b/src/main/java/com/casic/tube/frame/mhk/DataFrameMHK.java index 79f1577..0589c45 100644 --- a/src/main/java/com/casic/tube/frame/mhk/DataFrameMHK.java +++ b/src/main/java/com/casic/tube/frame/mhk/DataFrameMHK.java @@ -26,10 +26,15 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); obj.put("cell", ""); diff --git a/src/main/java/com/casic/tube/frame/mhk/EventFrameMHK.java b/src/main/java/com/casic/tube/frame/mhk/EventFrameMHK.java index 48f8511..5b69d32 100644 --- a/src/main/java/com/casic/tube/frame/mhk/EventFrameMHK.java +++ b/src/main/java/com/casic/tube/frame/mhk/EventFrameMHK.java @@ -23,10 +23,15 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("devType", "TubeOther"); + obj.put("devType", getDevTypeName()); obj.put("devCode", getDeviceCode()); JSONObject body = new JSONObject(); diff --git a/src/main/java/com/casic/tube/frame/tp/DataFrameHTTP.java b/src/main/java/com/casic/tube/frame/tp/DataFrameHTTP.java index 69b7c1f..823ee39 100644 --- a/src/main/java/com/casic/tube/frame/tp/DataFrameHTTP.java +++ b/src/main/java/com/casic/tube/frame/tp/DataFrameHTTP.java @@ -25,6 +25,11 @@ } @Override + public String getDevTypeName() { + return "TubeOther"; + } + + @Override public void parseMessageBody() { JSONArray dataArray = getMessageBody().getJSONArray("DATAS"); dataItemList = new ArrayList<>();