|
@@ -4,7 +4,9 @@ import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
@@ -20,67 +22,167 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
@Slf4j
|
|
|
public class RWDAlarmUtil {
|
|
|
- public static void modify_alarm(JSONObject alarm) {
|
|
|
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
|
- try {
|
|
|
- if (alarm.containsKey("triggerInfo")) {
|
|
|
- Object object = alarm.get("triggerInfo");
|
|
|
- if (object != null && object instanceof String) {
|
|
|
- String string = alarm.getString("triggerInfo");
|
|
|
- JSONObject json = JSON.parseObject(string);
|
|
|
- alarm.put("triggerInfo", json);
|
|
|
- }
|
|
|
+
|
|
|
+ static Map<Integer, String> statusMap = new HashMap<Integer, String>();
|
|
|
+ static Map<Integer, String> treatStateMap = new HashMap<Integer, String>();
|
|
|
+ static Map<String, String> levelMap = new HashMap<String, String>();
|
|
|
+ static Map<String, String> categoryMap = new HashMap<String, String>();
|
|
|
+
|
|
|
+ static {
|
|
|
+ statusMap.put(1, "未恢复");
|
|
|
+ statusMap.put(2, "已恢复");
|
|
|
+ statusMap.put(3, "已过期");
|
|
|
+ treatStateMap.put(1, "未处理");
|
|
|
+ treatStateMap.put(2, "处理中");
|
|
|
+ treatStateMap.put(3, "已处理");
|
|
|
+ levelMap.put("1", "严重");
|
|
|
+ levelMap.put("2", "较重");
|
|
|
+ levelMap.put("3", "一般");
|
|
|
+ categoryMap.put("Eq", "设备报警");
|
|
|
+ categoryMap.put("Sy", "系统报警");
|
|
|
+ categoryMap.put("Sp", "空间报警");
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void modify_alarm(JSONObject alarm) throws Exception {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
|
|
|
+ SimpleDateFormat sdf_ = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+
|
|
|
+ if (alarm.containsKey("triggerInfo")) {
|
|
|
+ Object object = alarm.get("triggerInfo");
|
|
|
+ if (object != null && object instanceof String) {
|
|
|
+ String string = alarm.getString("triggerInfo");
|
|
|
+ JSONObject json = JSON.parseObject(string);
|
|
|
+ alarm.put("triggerInfo", json);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- if (alarm.containsKey("triggerTime")) {
|
|
|
- Object object = alarm.get("triggerTime");
|
|
|
- if (object != null && object instanceof String) {
|
|
|
- String triggerTimeString = (String) object;
|
|
|
- Date triggerTime = sdf.parse(triggerTimeString);
|
|
|
- alarm.put("triggerTime", triggerTime.getTime());
|
|
|
+ JSONObject triggerInfo = (JSONObject) alarm.get("triggerInfo");
|
|
|
+ if (triggerInfo.size() == 1) {
|
|
|
+ String[] infos = triggerInfo.keySet().toArray(new String[0]);
|
|
|
+ alarm.put("triggerMainInfo", infos[0]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (alarm.containsKey("objId")) {
|
|
|
+ alarm.put("objectId", alarm.get("objId"));
|
|
|
+ }
|
|
|
+ if (alarm.containsKey("objName")) {
|
|
|
+ alarm.put("objectName", alarm.get("objName"));
|
|
|
+ }
|
|
|
+ if (alarm.containsKey("state")) {
|
|
|
+ alarm.put("status", alarm.get("state"));
|
|
|
+ alarm.put("status_name", statusMap.get(alarm.get("status")));
|
|
|
+ }
|
|
|
+ if (alarm.containsKey("treatState")) {
|
|
|
+ alarm.put("treatState_name", treatStateMap.get(alarm.get("treatState")));
|
|
|
+ }
|
|
|
+ if (alarm.containsKey("level")) {
|
|
|
+ alarm.put("level_name", levelMap.get(alarm.get("level")));
|
|
|
+ }
|
|
|
+ if (alarm.containsKey("category")) {
|
|
|
+ alarm.put("category_name", categoryMap.get(alarm.get("category")));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (alarm.containsKey("triggerTime")) {
|
|
|
+ Object object = alarm.get("triggerTime");
|
|
|
+ if (object != null) {
|
|
|
+ if (object instanceof Long) {
|
|
|
+ Long timeLong = (Long) object;
|
|
|
+ alarm.put("triggerTime", sdf.format(new Date(timeLong)));
|
|
|
+ } else if (object instanceof String) {
|
|
|
+ String timeString = (String) object;
|
|
|
+ alarm.put("triggerTime", sdf.format(sdf_.parse(timeString)));
|
|
|
}
|
|
|
}
|
|
|
- if (alarm.containsKey("endTime")) {
|
|
|
- Object object = alarm.get("endTime");
|
|
|
- if (object != null && object instanceof String) {
|
|
|
- String endTimeString = (String) object;
|
|
|
- Date endTime = sdf.parse(endTimeString);
|
|
|
- alarm.put("endTime", endTime.getTime());
|
|
|
+ }
|
|
|
+ if (alarm.containsKey("endTime")) {
|
|
|
+ Object object = alarm.get("endTime");
|
|
|
+ if (object != null) {
|
|
|
+ if (object instanceof Long) {
|
|
|
+ Long timeLong = (Long) object;
|
|
|
+ alarm.put("endTime", sdf.format(new Date(timeLong)));
|
|
|
+ } else if (object instanceof String) {
|
|
|
+ String timeString = (String) object;
|
|
|
+ alarm.put("endTime", sdf.format(sdf_.parse(timeString)));
|
|
|
}
|
|
|
}
|
|
|
- if (alarm.containsKey("createTime")) {
|
|
|
- Object object = alarm.get("createTime");
|
|
|
- if (object != null && object instanceof String) {
|
|
|
- String createTimeString = (String) object;
|
|
|
- Date createTime = sdf.parse(createTimeString);
|
|
|
- alarm.put("createTime", createTime.getTime());
|
|
|
+ }
|
|
|
+ if (alarm.containsKey("createTime")) {
|
|
|
+ Object object = alarm.get("createTime");
|
|
|
+ if (object != null) {
|
|
|
+ if (object instanceof Long) {
|
|
|
+ Long timeLong = (Long) object;
|
|
|
+ alarm.put("createTime", sdf.format(new Date(timeLong)));
|
|
|
+ } else if (object instanceof String) {
|
|
|
+ String timeString = (String) object;
|
|
|
+ alarm.put("createTime", sdf.format(sdf_.parse(timeString)));
|
|
|
}
|
|
|
}
|
|
|
- if (alarm.containsKey("updateTime")) {
|
|
|
- Object object = alarm.get("updateTime");
|
|
|
- if (object != null && object instanceof String) {
|
|
|
- String updateTimeString = (String) object;
|
|
|
- Date updateTime = sdf.parse(updateTimeString);
|
|
|
- alarm.put("updateTime", updateTime.getTime());
|
|
|
+ }
|
|
|
+ if (alarm.containsKey("updateTime")) {
|
|
|
+ Object object = alarm.get("updateTime");
|
|
|
+ if (object != null) {
|
|
|
+ if (object instanceof Long) {
|
|
|
+ Long timeLong = (Long) object;
|
|
|
+ alarm.put("updateTime", sdf.format(new Date(timeLong)));
|
|
|
+ } else if (object instanceof String) {
|
|
|
+ String timeString = (String) object;
|
|
|
+ alarm.put("updateTime", sdf.format(sdf_.parse(timeString)));
|
|
|
}
|
|
|
}
|
|
|
- } catch (ParseException e) {
|
|
|
- log.error(LogUtil.GetExceptionStackTrace(e));
|
|
|
- e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
- JSONObject triggerInfo = (JSONObject) alarm.remove("triggerInfo");
|
|
|
- if (triggerInfo.size() == 1) {
|
|
|
- String[] infos = triggerInfo.keySet().toArray(new String[0]);
|
|
|
- alarm.put("triggerInfo", infos[0]);
|
|
|
+ if (alarm.containsKey("createTime")) {
|
|
|
+ alarm.put("create_time", alarm.get("createTime"));
|
|
|
+ }
|
|
|
+ if (alarm.containsKey("endTime")) {
|
|
|
+ alarm.put("close_time", alarm.get("endTime"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void chixushijian(SimpleDateFormat sdf, Date currentTime, SceneDataObject sdoInner) {
|
|
|
+ String triggerTime = (String) sdoInner.get("triggerTime").value_prim.value;
|
|
|
+ String duration;
|
|
|
+ long keep_time;
|
|
|
+ if (sdoInner.containsKey("endTime")) {
|
|
|
+ String endTime = (String) sdoInner.get("endTime").value_prim.value;
|
|
|
+ duration = getTimeDiff(sdf, triggerTime, endTime);
|
|
|
+ keep_time = getTimeDiffLong(sdf, triggerTime, endTime);
|
|
|
+ } else {
|
|
|
+ duration = getTimeDiff(sdf, triggerTime, sdf.format(currentTime));
|
|
|
+ keep_time = getTimeDiffLong(sdf, triggerTime, sdf.format(currentTime));
|
|
|
+ }
|
|
|
+ {
|
|
|
+ SceneDataValue sdvInner = new SceneDataValue(null, null, null, null);
|
|
|
+ sdvInner.value_prim = new SceneDataPrimitive();
|
|
|
+ sdvInner.value_prim.value = duration;
|
|
|
+ sdoInner.put("duration", sdvInner);
|
|
|
+ }
|
|
|
+ {
|
|
|
+ SceneDataValue sdvInner = new SceneDataValue(null, null, null, null);
|
|
|
+ sdvInner.value_prim = new SceneDataPrimitive();
|
|
|
+ sdvInner.value_prim.value = keep_time;
|
|
|
+ sdoInner.put("keep_time", sdvInner);
|
|
|
+ }
|
|
|
+ {
|
|
|
+ SceneDataValue sdvInner = new SceneDataValue(null, null, null, null);
|
|
|
+ sdvInner.value_prim = new SceneDataPrimitive();
|
|
|
+ sdvInner.value_prim.value = sdf.format(currentTime);
|
|
|
+ sdoInner.put("currentTime", sdvInner);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static synchronized void ProcessAlarm(JSONObject alarm) {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
|
|
|
+ Date currentTime = new Date();
|
|
|
String id = (String) alarm.get("id");
|
|
|
String objId = (String) alarm.get("objId");
|
|
|
String treatState = alarm.get("treatState").toString();
|
|
|
- modify_alarm(alarm);
|
|
|
+ try {
|
|
|
+ modify_alarm(alarm);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error(LogUtil.GetExceptionStackTrace(e));
|
|
|
+ }
|
|
|
{
|
|
|
SceneDataValue alarmList = RepositoryContainer.RepositoryBase.id2alarmList.get(objId);
|
|
|
SceneDataValue alarmCount = RepositoryContainer.RepositoryBase.id2alarmCount.get(objId);
|
|
@@ -128,6 +230,7 @@ public class RWDAlarmUtil {
|
|
|
|
|
|
if (!treatState.equals("3")) {
|
|
|
SceneDataObject sodInner = RWDUtil.object2sod(alarm);
|
|
|
+ chixushijian(sdf, currentTime, sodInner);
|
|
|
alarmList.value_array.set.add(sodInner);
|
|
|
RepositoryContainer.RepositoryBase.alarmArray.set.add(sodInner);
|
|
|
}
|
|
@@ -169,4 +272,54 @@ public class RWDAlarmUtil {
|
|
|
}
|
|
|
return Content.size();
|
|
|
}
|
|
|
+
|
|
|
+ // 获取时间差方法
|
|
|
+ public static String getTimeDiff(Date startDate, Date endDate) {
|
|
|
+ long diffMS = endDate.getTime() - startDate.getTime();
|
|
|
+ // (1000 * 60 * 60 * 24)
|
|
|
+ Long dayMSRate = 86400000L;
|
|
|
+ // (1000 * 60 * 60)
|
|
|
+ Long hourMSRate = 3600000L;
|
|
|
+ // (1000 * 60)
|
|
|
+ Long minuteMSRate = 60000L;
|
|
|
+ // (1000)
|
|
|
+ Long secondMSRate = 1000L;
|
|
|
+ long days = diffMS / dayMSRate;
|
|
|
+ // 获取时
|
|
|
+ long hours = diffMS % dayMSRate / hourMSRate;
|
|
|
+ // 获取分钟
|
|
|
+ long minutes = diffMS % hourMSRate / minuteMSRate;
|
|
|
+ // 获取秒
|
|
|
+ long seconds = diffMS % minuteMSRate / secondMSRate;
|
|
|
+ return days + "天" + hours + "小时" + minutes + "分" + seconds + "秒";
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取时间差方法
|
|
|
+ public static String getTimeDiff(Long startTimestamp, Long endTimestamp) {
|
|
|
+ Date startDate = new Date(startTimestamp);
|
|
|
+ Date endDate = new Date(endTimestamp);
|
|
|
+ return getTimeDiff(startDate, endDate);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static long getTimeDiffLong(SimpleDateFormat sdf, String startTimestamp, String endTimestamp) {
|
|
|
+ try {
|
|
|
+ Date startDate = sdf.parse(startTimestamp);
|
|
|
+ Date endDate = sdf.parse(endTimestamp);
|
|
|
+ return endDate.getTime() - startDate.getTime();
|
|
|
+ } catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String getTimeDiff(SimpleDateFormat sdf, String startTimestamp, String endTimestamp) {
|
|
|
+ try {
|
|
|
+ Date startDate = sdf.parse(startTimestamp);
|
|
|
+ Date endDate = sdf.parse(endTimestamp);
|
|
|
+ return getTimeDiff(startDate, endDate);
|
|
|
+ } catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return "0";
|
|
|
+ }
|
|
|
}
|