|
@@ -5,6 +5,7 @@ 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 java.util.concurrent.ConcurrentHashMap;
|
|
@@ -33,6 +34,8 @@ public class RWDAlarmUtil {
|
|
|
static Map<String, String> levelMap = new ConcurrentHashMap<String, String>();
|
|
|
static Map<String, String> categoryMap = new ConcurrentHashMap<String, String>();
|
|
|
|
|
|
+ static List<String> alarmColChange = new ArrayList<String>();
|
|
|
+
|
|
|
static {
|
|
|
history_alarm_path.add("基础对象");
|
|
|
history_alarm_path.add("历史报警");
|
|
@@ -57,6 +60,11 @@ public class RWDAlarmUtil {
|
|
|
categoryMap.put("Eq", "设备报警");
|
|
|
categoryMap.put("Sy", "系统报警");
|
|
|
categoryMap.put("Sp", "空间报警");
|
|
|
+
|
|
|
+ alarmColChange.add("state");
|
|
|
+ alarmColChange.add("status");
|
|
|
+ alarmColChange.add("treatState");
|
|
|
+ alarmColChange.add("treatMode");
|
|
|
}
|
|
|
|
|
|
public static JSONObject get_alarm_detail(JSONObject paramObject) {
|
|
@@ -456,6 +464,10 @@ public class RWDAlarmUtil {
|
|
|
String id = (String) alarm.get("id");
|
|
|
String objId = (String) alarm.get("objId");
|
|
|
String treatState = alarm.get("treatState").toString();
|
|
|
+ boolean alarmArrayRowChange = false;
|
|
|
+ boolean alarmListRowChange = false;
|
|
|
+ boolean alarmCountChange = false;
|
|
|
+ Map<String, Boolean> colChangeMap = new HashMap<String, Boolean>();
|
|
|
{
|
|
|
SceneDataValue alarmList = RepositoryContainer.RepositoryProject.id2alarmList.get(objId);
|
|
|
SceneDataValue alarmCount = RepositoryContainer.RepositoryProject.id2alarmCount.get(objId);
|
|
@@ -500,9 +512,11 @@ public class RWDAlarmUtil {
|
|
|
if (treatState.equals("3")) {
|
|
|
if (existIndex != -1) {
|
|
|
alarmList.value_array.set.remove(existIndex);
|
|
|
+ alarmListRowChange = true;
|
|
|
}
|
|
|
for (int removeIndex : existIndexList) {
|
|
|
RepositoryContainer.RepositoryProject.alarmArray.set.remove(removeIndex);
|
|
|
+ alarmArrayRowChange = true;
|
|
|
}
|
|
|
} else {
|
|
|
// 只替换非空字段
|
|
@@ -515,10 +529,14 @@ public class RWDAlarmUtil {
|
|
|
if (sdvInner == null || sdvInner.value_prim == null || sdvInner.value_prim.value == null) {
|
|
|
continue;
|
|
|
}
|
|
|
- sdoInner.put(key, sdoAlarm.get(key));
|
|
|
+ if (!sdvInner.value_prim.value.equals(sdoInner.get(key))) {
|
|
|
+ sdoInner.put(key, sdoAlarm.get(key));
|
|
|
+ colChangeMap.put(key, true);
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
alarmList.value_array.set.add(sdoAlarm);
|
|
|
+ alarmListRowChange = true;
|
|
|
}
|
|
|
if (existIndexList.size() > 0) {
|
|
|
for (int removeIndex : existIndexList) {
|
|
@@ -533,14 +551,26 @@ public class RWDAlarmUtil {
|
|
|
}
|
|
|
} else {
|
|
|
RepositoryContainer.RepositoryProject.alarmArray.set.add(sdoAlarm);
|
|
|
+ alarmArrayRowChange = true;
|
|
|
}
|
|
|
}
|
|
|
- alarmCount.value_prim.value = alarmList.value_array.set.size();
|
|
|
+ if (!alarmCount.value_prim.value.equals(alarmList.value_array.set.size())) {
|
|
|
+ alarmCount.value_prim.value = alarmList.value_array.set.size();
|
|
|
+ alarmCountChange = true;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
RepositoryImpl Repository = RepositoryContainer.instance;
|
|
|
if (Repository.enable_factor) {
|
|
|
- Repository.addWaitCompute(RepositoryContainer.RepositoryProject.alarmArray);
|
|
|
+ if (alarmArrayRowChange) {
|
|
|
+ Repository.addWaitCompute(RepositoryContainer.RepositoryProject.alarmArray);
|
|
|
+ } else {
|
|
|
+ for (String col : RWDAlarmUtil.alarmColChange) {
|
|
|
+ if (colChangeMap.containsKey(col)) {
|
|
|
+ Repository.addWaitCompute(RepositoryContainer.RepositoryProject.alarmArray, col);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
if (Repository.id2sdv.containsKey(objId)) {
|
|
|
SceneDataObject objSDV = Repository.id2sdv.get(objId);
|
|
|
SceneDataValue sv_alarmList = objSDV.get("报警列表");
|
|
@@ -552,10 +582,20 @@ public class RWDAlarmUtil {
|
|
|
log.warn(path_alarmCount);
|
|
|
} catch (Exception e) {
|
|
|
}
|
|
|
- // Repository.ComputeOccur(sv_alarmList);
|
|
|
- // Repository.ComputeOccur(sv_alarmCount);
|
|
|
- Repository.addWaitCompute(sv_alarmList);
|
|
|
- Repository.addWaitCompute(sv_alarmCount);
|
|
|
+ if (alarmListRowChange) {
|
|
|
+ // Repository.ComputeOccur(sv_alarmList);
|
|
|
+ Repository.addWaitCompute(sv_alarmList);
|
|
|
+ } else {
|
|
|
+ for (String col : RWDAlarmUtil.alarmColChange) {
|
|
|
+ if (colChangeMap.containsKey(col)) {
|
|
|
+ Repository.addWaitCompute(sv_alarmList.value_array, col);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (alarmCountChange) {
|
|
|
+ // Repository.ComputeOccur(sv_alarmCount);
|
|
|
+ Repository.addWaitCompute(sv_alarmCount);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|