menglu 3 years ago
parent
commit
02a58b4fab

+ 18 - 12
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDAlarmUtil.java

@@ -488,11 +488,11 @@ public class RWDAlarmUtil {
 				}
 			}
 			// 从报警列表下删除
-			List<Integer> removeIndexList = new ArrayList<Integer>();
+			List<Integer> existIndexList = new ArrayList<Integer>();
 			for (int index_alarm = 0; index_alarm < RepositoryContainer.RepositoryBase.alarmArray.set.size(); index_alarm++) {
 				SceneDataObject alarmItem = RepositoryContainer.RepositoryBase.alarmArray.set.get(index_alarm);
 				if (alarmItem.value_object.get("id").value_prim.value.equals(id)) {
-					removeIndexList.add(0, index_alarm);
+					existIndexList.add(0, index_alarm);
 				}
 			}
 
@@ -500,11 +500,11 @@ public class RWDAlarmUtil {
 				if (existIndex != -1) {
 					alarmList.value_array.set.remove(existIndex);
 				}
-				for (int removeIndex : removeIndexList) {
+				for (int removeIndex : existIndexList) {
 					RepositoryContainer.RepositoryBase.alarmArray.set.remove(removeIndex);
 				}
 			} else {
-				//只替换非空字段
+				// 只替换非空字段
 				SceneDataObject sdoAlarm = RWDUtil.object2sod(alarm);
 				chixushijian(sdf, currentTime, sdoAlarm);
 				if (existIndex != -1) {
@@ -516,16 +516,22 @@ public class RWDAlarmUtil {
 						}
 						sdoInner.put(key, sdoAlarm.get(key));
 					}
-				}
-				for (int removeIndex : removeIndexList) {
-					SceneDataObject sdoInner = RepositoryContainer.RepositoryBase.alarmArray.set.get(removeIndex);
-					for (String key : sdoAlarm.keySet()) {
-						SceneDataValue sdvInner = sdoAlarm.get(key);
-						if (sdvInner == null || sdvInner.value_prim == null || sdvInner.value_prim.value == null) {
-							continue;
+				} else {
+					alarmList.value_array.set.add(sdoAlarm);
+				}
+				if (existIndexList.size() > 0) {
+					for (int removeIndex : existIndexList) {
+						SceneDataObject sdoInner = RepositoryContainer.RepositoryBase.alarmArray.set.get(removeIndex);
+						for (String key : sdoAlarm.keySet()) {
+							SceneDataValue sdvInner = sdoAlarm.get(key);
+							if (sdvInner == null || sdvInner.value_prim == null || sdvInner.value_prim.value == null) {
+								continue;
+							}
+							sdoInner.put(key, sdoAlarm.get(key));
 						}
-						sdoInner.put(key, sdoAlarm.get(key));
 					}
+				} else {
+					RepositoryContainer.RepositoryBase.alarmArray.set.add(sdoAlarm);
 				}
 			}
 			alarmCount.value_prim.value = alarmList.value_array.set.size();