Browse Source

全面替换ArrayList和HashMap

menglu 3 năm trước cách đây
mục cha
commit
0680871998
18 tập tin đã thay đổi với 77 bổ sung70 xóa
  1. 1 1
      ibms-data-sdk/pom.xml
  2. 2 2
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/DaemonThread.java
  3. 3 3
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/DependencyUtil.java
  4. 0 1
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestApi.java
  5. 11 4
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestUtil.java
  6. 2 2
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/fjd_Util.java
  7. 2 2
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/websocket/server/WebSocketHandler.java
  8. 3 4
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/websocket/server/WebSocketUtil.java
  9. 6 6
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/Constant.java
  10. 2 2
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ControlUtil.java
  11. 2 2
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/DeamonUtil.java
  12. 3 3
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ExcelCommonUtil.java
  13. 2 2
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ExcelRelationUtil.java
  14. 4 4
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ExcelSheet.java
  15. 7 7
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ExportUtil.java
  16. 5 6
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDAlarmUtil.java
  17. 4 4
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDDownloadUtil.java
  18. 18 15
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDLoadUtil.java

+ 1 - 1
ibms-data-sdk/pom.xml

@@ -214,7 +214,7 @@
 		<dependency>
 			<groupId>com.persagy</groupId>
 			<artifactId>sailfish</artifactId>
-			<version>0.0.32</version>
+			<version>0.0.33</version>
 		</dependency>
 	</dependencies>
 

+ 2 - 2
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/DaemonThread.java

@@ -2,8 +2,8 @@ package com.persagy.ibms.data.sdk.service;
 
 import java.io.File;
 import java.net.URI;
-import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.annotation.PostConstruct;
 
@@ -49,7 +49,7 @@ public class DaemonThread extends Thread {
 	public static String path_zkt_physical_world;
 	public static String path_ibms_physical_world;
 
-	public static List<RepositoryComputeThread> threadList = new ArrayList<RepositoryComputeThread>();
+	public static List<RepositoryComputeThread> threadList = new CopyOnWriteArrayList<RepositoryComputeThread>();
 
 	public void run() {
 		KeywordUtil.keyWordMap = Constant.keyWordMap;

+ 3 - 3
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/DependencyUtil.java

@@ -1,7 +1,7 @@
 package com.persagy.ibms.data.sdk.service.rest;
 
-import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -54,11 +54,11 @@ public class DependencyUtil {
 			Object valueObject = ComputeUtil.getValueObject(Repository, path);
 			if (valueObject instanceof SceneDataValue) {
 				SceneDataValue sdv = (SceneDataValue) valueObject;
-				result = Repository.dependency.get_after(Repository, sdv, new ArrayList<SceneDataValue>());
+				result = Repository.dependency.get_after(Repository, sdv, new CopyOnWriteArrayList<SceneDataValue>());
 			}
 		} else if (type.equals("alarmArray")) {
 			result = new JSONObject();
-			Repository.dependency.get_after_value_array(Repository.RepositoryProject.alarmArray, new ArrayList<SceneDataValue>(), result);
+			Repository.dependency.get_after_value_array(Repository.RepositoryProject.alarmArray, new CopyOnWriteArrayList<SceneDataValue>(), result);
 		}
 		return result;
 	}

+ 0 - 1
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestApi.java

@@ -5,7 +5,6 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import javax.servlet.http.HttpServletRequest;
 
-import com.persagy.ibms.core.util.FastJsonUtil;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;

+ 11 - 4
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestUtil.java

@@ -1,11 +1,11 @@
 package com.persagy.ibms.data.sdk.service.rest;
 
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -27,7 +27,14 @@ import com.persagy.ibms.core.util.LogUtil;
 import com.persagy.ibms.core.util.QueryAssist;
 import com.persagy.ibms.core.util.QueryUtil;
 import com.persagy.ibms.core.util.RecursiveUtil;
-import com.persagy.ibms.data.sdk.util.*;
+import com.persagy.ibms.data.sdk.util.Constant;
+import com.persagy.ibms.data.sdk.util.ControlUtil;
+import com.persagy.ibms.data.sdk.util.ExeclReadEquipStaticInfoUtil;
+import com.persagy.ibms.data.sdk.util.HttpClientUtil;
+import com.persagy.ibms.data.sdk.util.NearestCameraUtil;
+import com.persagy.ibms.data.sdk.util.RWDAlarmUtil;
+import com.persagy.ibms.data.sdk.util.RepositoryContainer;
+import com.persagy.ibms.data.sdk.util.RepositoryImpl;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -50,7 +57,7 @@ public class RestUtil {
 		Object Content;
 		try {
 			JSONObject sql_json = JSON.parseObject(param);
-			List<ExceptionItem> errorList = new ArrayList<ExceptionItem>();
+			List<ExceptionItem> errorList = new CopyOnWriteArrayList<ExceptionItem>();
 			ExamineUtil.check_sql(Repository, null, "query", null, false, false, false, sql_json, errorList);
 			if (errorList.size() > 0) {
 				throw new ExceptionWrapper(errorList);
@@ -103,7 +110,7 @@ public class RestUtil {
 			}
 			JSONObject params = sql_json.getJSONObject("params");
 			JSONObject CriteriaObject = query_json.getJSONObject("Criteria");
-			List<String> refPropertyList = new ArrayList<String>();
+			List<String> refPropertyList = new CopyOnWriteArrayList<String>();
 			JSONObject CriteriaNew = (JSONObject) FilterUtil.parseCriteria(CriteriaObject, params, refPropertyList);
 			JSONObject query_json_new = new JSONObject();
 			for (String key : query_json.keySet()) {

+ 2 - 2
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/fjd_Util.java

@@ -2,11 +2,11 @@ package com.persagy.ibms.data.sdk.service.rest;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.servlet.http.HttpServletResponse;
 
@@ -184,7 +184,7 @@ public class fjd_Util {
 		String time_from = parseObject.getString("time_from");
 		String time_to = parseObject.getString("time_to");
 		JSONArray Items = parseObject.getJSONArray("Items");
-		List<Object> drawObjectList = new ArrayList<Object>();
+		List<Object> drawObjectList = new CopyOnWriteArrayList<Object>();
 		Map<String, String> ObjInfo2Point = new ConcurrentHashMap<String, String>();
 		for (int i = 0; i < Items.size(); i++) {
 			JSONObject item = (JSONObject) Items.get(i);

+ 2 - 2
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/websocket/server/WebSocketHandler.java

@@ -1,8 +1,8 @@
 package com.persagy.ibms.data.sdk.service.websocket.server;
 
 import java.util.Date;
-import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import com.alibaba.fastjson.JSON;
@@ -20,7 +20,7 @@ public class WebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketF
 	private static final AtomicInteger onlineCount = new AtomicInteger(0);
 
 	private static Map<String, String> getUrlParams(String url) {
-		Map<String, String> map = new HashMap<String, String>();
+		Map<String, String> map = new ConcurrentHashMap<String, String>();
 		url = url.replace("?", ";");
 		if (!url.contains(";")) {
 			return map;

+ 3 - 4
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/websocket/server/WebSocketUtil.java

@@ -1,6 +1,5 @@
 package com.persagy.ibms.data.sdk.service.websocket.server;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -124,7 +123,7 @@ public class WebSocketUtil {
 					Map<String, Object> objId2Tag = id2objId2Tag.get(id);
 
 					JSONArray sendArray = new JSONArray();
-					Map<String, JSONObject> sendObj = new HashMap<String, JSONObject>();
+					Map<String, JSONObject> sendObj = new ConcurrentHashMap<String, JSONObject>();
 					Map<String, Boolean> objIdList = id2objIdList.get(id);
 					Map<String, Boolean> objInfoIdList = id2objInfoIdList.get(id);
 					for (String objId : objIdList.keySet()) {
@@ -252,7 +251,7 @@ public class WebSocketUtil {
 								Map<String, Boolean> objIdList = id2objIdList.get(id);
 								Map<String, Boolean> objInfoIdList = id2objInfoIdList.get(id);
 								JSONArray sendArray = new JSONArray();
-								Map<String, JSONObject> sendObj = new HashMap<String, JSONObject>();
+								Map<String, JSONObject> sendObj = new ConcurrentHashMap<String, JSONObject>();
 								for (int i = 0; i < splits.length; i += 4) {
 									// String time = splits[i + 0];
 									String meter = splits[i + 1];
@@ -307,7 +306,7 @@ public class WebSocketUtil {
 								Map<String, Boolean> objIdList = id2objIdList.get(id);
 								Map<String, Boolean> objInfoIdList = id2objInfoIdList.get(id);
 								JSONArray sendArray = new JSONArray();
-								Map<String, JSONObject> sendObj = new HashMap<String, JSONObject>();
+								Map<String, JSONObject> sendObj = new ConcurrentHashMap<String, JSONObject>();
 								for (int i = 0; i < splits.length; i += 4) {
 									// String time = splits[i + 0];
 									String meter = splits[i + 1];

+ 6 - 6
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/Constant.java

@@ -4,12 +4,12 @@ import java.io.File;
 import java.io.InputStream;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.dom4j.Attribute;
 import org.dom4j.Document;
@@ -67,7 +67,7 @@ public class Constant {
 	public static Map<String, Map<String, String>> info_replaceMap = new ConcurrentHashMap<String, Map<String, String>>();
 
 	public static Map<String, Boolean> objType_hasRelation = new ConcurrentHashMap<String, Boolean>();
-	public static List<ConfigRelation> ConfigRelationList = new ArrayList<ConfigRelation>();
+	public static List<ConfigRelation> ConfigRelationList = new CopyOnWriteArrayList<ConfigRelation>();
 	public static Map<String, ConfigRedirect> ConfigRedirectMap = new ConcurrentHashMap<String, ConfigRedirect>();
 
 	public static Map<String, Boolean> keyWordMap = new ConcurrentHashMap<String, Boolean>();
@@ -286,7 +286,7 @@ public class Constant {
 		if (file.isDirectory()) {
 			File[] files = file.listFiles();
 			if (return_dir) {
-				List<String> nameList = new ArrayList<String>();
+				List<String> nameList = new CopyOnWriteArrayList<String>();
 				for (File fileIndex : files) {
 					if (fileIndex.isDirectory()) {
 						try {
@@ -307,7 +307,7 @@ public class Constant {
 					}
 				}
 			} else {
-				List<String> nameList = new ArrayList<String>();
+				List<String> nameList = new CopyOnWriteArrayList<String>();
 				for (File fileIndex : files) {
 					if (!fileIndex.isDirectory()) {
 						if (fileIndex.getName().endsWith(".json")) {
@@ -341,7 +341,7 @@ public class Constant {
 		if (file.isDirectory()) {
 			File[] files = file.listFiles();
 			if (return_dir) {
-				List<String> nameList = new ArrayList<String>();
+				List<String> nameList = new CopyOnWriteArrayList<String>();
 				for (File fileIndex : files) {
 					if (fileIndex.isDirectory()) {
 						try {
@@ -358,7 +358,7 @@ public class Constant {
 					return nameList;
 				}
 			} else {
-				List<String> nameList = new ArrayList<String>();
+				List<String> nameList = new CopyOnWriteArrayList<String>();
 				for (File fileIndex : files) {
 					if (!fileIndex.isDirectory()) {
 						if (fileIndex.getName().endsWith(".json")) {

+ 2 - 2
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ControlUtil.java

@@ -1,7 +1,7 @@
 package com.persagy.ibms.data.sdk.util;
 
-import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -35,7 +35,7 @@ public class ControlUtil {
 	public static JSONArray set(String userId, String userName, RepositoryImpl Repository, JSONArray path, JSONObject infoValueSet) throws Exception {
 		JSONArray result;
 		Object valueObject = ComputeUtil.getValueObject(Repository, path);
-		List<SceneDataObject> sdoList = new ArrayList<SceneDataObject>();
+		List<SceneDataObject> sdoList = new CopyOnWriteArrayList<SceneDataObject>();
 		if (valueObject instanceof SceneDataValue) {
 			SceneDataValue currData = (SceneDataValue) valueObject;
 			if (currData.value_array != null) {

+ 2 - 2
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/DeamonUtil.java

@@ -1,11 +1,11 @@
 package com.persagy.ibms.data.sdk.util;
 
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -73,7 +73,7 @@ public class DeamonUtil {
 			} else if (pointList.size() == 1) {
 				dataList = RepositoryContainer.RepositoryProject.point2curve.get(pointList.get(0));
 			} else {
-				List<List<SceneDataObject>> dataListList = new ArrayList<List<SceneDataObject>>();
+				List<List<SceneDataObject>> dataListList = new CopyOnWriteArrayList<List<SceneDataObject>>();
 				for (String point : pointList) {
 					List<SceneDataObject> dataListInner = RepositoryContainer.RepositoryProject.point2curve.get(point);
 					dataListList.add(dataListInner);

+ 3 - 3
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ExcelCommonUtil.java

@@ -4,12 +4,12 @@ import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Cell;
@@ -238,7 +238,7 @@ public class ExcelCommonUtil {
 
 		for (int index_row = row_from + 1; index_row <= row_to; index_row++) {
 			Row row = sheet.getRow(index_row);
-			List<String> contentList = new ArrayList<String>();
+			List<String> contentList = new CopyOnWriteArrayList<String>();
 			for (int index_col = 1; index_col < result.titleColList.size() + 1; index_col++) {
 				Cell cell = row.getCell(index_col);
 				String content = null;
@@ -278,7 +278,7 @@ public class ExcelCommonUtil {
 
 		for (int index_row = row_from + 1; index_row <= row_to; index_row++) {
 			Row row = sheet.getRow(index_row);
-			List<String> contentList = new ArrayList<String>();
+			List<String> contentList = new CopyOnWriteArrayList<String>();
 			if (row != null) {
 				for (int index_col = 0; index_col < result.titleColList.size(); index_col++) {
 					Cell cell = row.getCell(index_col);

+ 2 - 2
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ExcelRelationUtil.java

@@ -1,11 +1,11 @@
 package com.persagy.ibms.data.sdk.util;
 
 import java.io.InputStream;
-import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
@@ -19,7 +19,7 @@ public class ExcelRelationUtil {
 	public static void ReadRel(InputStream stream, Map<String, Map<String, Integer>> relDic) throws Exception {
 		Workbook workbook = WorkbookFactory.create(stream);
 		Sheet wSheet1 = workbook.getSheetAt(0);
-		List<CellRangeAddress> rangeList = new ArrayList<CellRangeAddress>();
+		List<CellRangeAddress> rangeList = new CopyOnWriteArrayList<CellRangeAddress>();
 		for (int i = 0; i < wSheet1.getNumMergedRegions(); i++) {
 			CellRangeAddress range = wSheet1.getMergedRegion(i);
 			rangeList.add(range);

+ 4 - 4
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ExcelSheet.java

@@ -1,10 +1,10 @@
 package com.persagy.ibms.data.sdk.util;
 
-import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 public class ExcelSheet {
-	public List<String> titleRowList = new ArrayList<String>();
-	public List<String> titleColList = new ArrayList<String>();
-	public List<List<String>> contentListList = new ArrayList<List<String>>();
+	public List<String> titleRowList = new CopyOnWriteArrayList<String>();
+	public List<String> titleColList = new CopyOnWriteArrayList<String>();
+	public List<List<String>> contentListList = new CopyOnWriteArrayList<List<String>>();
 }

+ 7 - 7
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ExportUtil.java

@@ -3,12 +3,12 @@ package com.persagy.ibms.data.sdk.util;
 import java.io.File;
 import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
@@ -49,8 +49,8 @@ public class ExportUtil {
 
 	public static ResponseEntity<FileSystemResource> alarm_export(JSONObject result) throws Exception {
 		JSONArray alarm_export_title = FastJsonReaderUtil.Instance().ReadJSONArray(FileUtil.file("alarm_export_title.json"));
-		List<String> codeList = new ArrayList<String>();
-		List<String> titleList = new ArrayList<String>();
+		List<String> codeList = new CopyOnWriteArrayList<String>();
+		List<String> titleList = new CopyOnWriteArrayList<String>();
 		Map<String, String> titleMap = new ConcurrentHashMap<String, String>();
 		for (int i = 0; i < alarm_export_title.size(); i++) {
 			JSONObject title = alarm_export_title.getJSONObject(i);
@@ -65,7 +65,7 @@ public class ExportUtil {
 		sheet.titleColList = titleList;
 		for (int i = 0; i < content.size(); i++) {
 			JSONObject contentItem = content.getJSONObject(i);
-			List<String> contentList = new ArrayList<String>();
+			List<String> contentList = new CopyOnWriteArrayList<String>();
 			for (String titleItem : codeList) {
 				contentList.add(contentItem.getString(titleItem));
 			}
@@ -91,7 +91,7 @@ public class ExportUtil {
 		// 设置所有列为自动宽度,不考虑合并单元格
 		SXSSFSheet sheet = (SXSSFSheet) writer.getSheet();
 		sheet.trackAllColumnsForAutoSizing();
-		List<String> rowHead = new ArrayList<String>();
+		List<String> rowHead = new CopyOnWriteArrayList<String>();
 		for (int i = 0; i < alarm_export_title.size(); i++) {
 			JSONObject title = alarm_export_title.getJSONObject(i);
 			String jsonKey = title.getString("jsonKey");
@@ -138,7 +138,7 @@ public class ExportUtil {
 			sheet.titleColList.add("value");
 			for (int ii = 0; ii < datas.size(); ii++) {
 				JSONObject data = datas.getJSONObject(ii);
-				List<String> contentList = new ArrayList<String>();
+				List<String> contentList = new CopyOnWriteArrayList<String>();
 				contentList.add(sdf.format(sdf_.parse(data.getString("data_time"))));
 				contentList.add(data.getString("data_value"));
 				sheet.contentListList.add(contentList);
@@ -179,7 +179,7 @@ public class ExportUtil {
 
 			SXSSFSheet sheet = (SXSSFSheet) writer.getSheet();
 			sheet.trackAllColumnsForAutoSizing();
-			List<String> rowHead = new ArrayList<String>();
+			List<String> rowHead = new CopyOnWriteArrayList<String>();
 			{
 				String jsonKey = "data_time";
 				String headerName = "data_time";

+ 5 - 6
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDAlarmUtil.java

@@ -3,12 +3,11 @@ package com.persagy.ibms.data.sdk.util;
 import java.net.URLEncoder;
 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;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -33,7 +32,7 @@ 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 List<String> alarmColChange = new CopyOnWriteArrayList<String>();
 
 	static {
 		history_alarm_path.add("基础对象");
@@ -475,7 +474,7 @@ public class RWDAlarmUtil {
 		boolean alarmArrayRowChange = false;
 		boolean alarmListRowChange = false;
 		boolean alarmCountChange = false;
-		Map<String, Boolean> colChangeMap = new HashMap<String, Boolean>();
+		Map<String, Boolean> colChangeMap = new ConcurrentHashMap<String, Boolean>();
 		{
 			SceneDataValue alarmList = RepositoryContainer.RepositoryProject.id2alarmList.get(objId);
 			SceneDataValue alarmCount = RepositoryContainer.RepositoryProject.id2alarmCount.get(objId);
@@ -483,7 +482,7 @@ public class RWDAlarmUtil {
 				SceneDataValue sv_alarmList = new SceneDataValue(null, null, "报警列表", null);
 				sv_alarmList.finish = true;
 				sv_alarmList.value_array = new SceneDataSet(false);
-				sv_alarmList.value_array.set = new ArrayList<SceneDataObject>();
+				sv_alarmList.value_array.set = new CopyOnWriteArrayList<SceneDataObject>();
 				sv_alarmList.value_array.setRowChange(true);
 				RepositoryContainer.RepositoryProject.id2alarmList.putIfAbsent(objId, sv_alarmList);
 			}
@@ -509,7 +508,7 @@ public class RWDAlarmUtil {
 				}
 			}
 			// 从报警列表下删除
-			List<Integer> existIndexList = new ArrayList<Integer>();
+			List<Integer> existIndexList = new CopyOnWriteArrayList<Integer>();
 			for (int index_alarm = 0; index_alarm < RepositoryContainer.RepositoryProject.alarmArray.set.size(); index_alarm++) {
 				SceneDataObject alarmItem = RepositoryContainer.RepositoryProject.alarmArray.set.get(index_alarm);
 				if (alarmItem.value_object.get("id").value_prim.value.equals(id)) {

+ 4 - 4
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDDownloadUtil.java

@@ -3,12 +3,12 @@ package com.persagy.ibms.data.sdk.util;
 import java.io.File;
 import java.io.InputStream;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -23,11 +23,11 @@ public class RWDDownloadUtil {
 	public static void LoadConfig(String path) throws Exception {
 		FileUtil.deleteRecursive(new File(path));
 		JSONArray classArray = null;
-		List<String> groupCodeList = new ArrayList<String>();
+		List<String> groupCodeList = new CopyOnWriteArrayList<String>();
 		groupCodeList.add(RepositoryContainer.RepositoryProject.groupCode);
 		groupCodeList.add(RepositoryContainer.RepositoryProject.groupCode);
 		groupCodeList.add("0");
-		List<String> projectIdList = new ArrayList<String>();
+		List<String> projectIdList = new CopyOnWriteArrayList<String>();
 		projectIdList.add(RepositoryContainer.RepositoryProject.projectId);
 		projectIdList.add("0");
 		projectIdList.add("0");
@@ -548,7 +548,7 @@ public class RWDDownloadUtil {
 			}
 			Map<String, List<String>> idListMap = idListMapMap.get(ibmsSceneCode);
 			if (!idListMap.containsKey(ibmsClassCode)) {
-				idListMap.put(ibmsClassCode, new ArrayList<String>());
+				idListMap.put(ibmsClassCode, new CopyOnWriteArrayList<String>());
 			}
 			idListMap.get(ibmsClassCode).add(logicalGroupingId);
 		}

+ 18 - 15
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDLoadUtil.java

@@ -3,7 +3,6 @@ package com.persagy.ibms.data.sdk.util;
 import java.io.File;
 import java.io.FileFilter;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
@@ -395,7 +394,7 @@ public class RWDLoadUtil {
 						SceneDataValue sdvInner = new SceneDataValue(Repository, sdv, ConfigRelation.nameInFrom, null);
 						sdvInner.finish = true;
 						sdvInner.value_array = new SceneDataSet(false);
-						sdvInner.value_array.set = new ArrayList<SceneDataObject>();
+						sdvInner.value_array.set = new CopyOnWriteArrayList<SceneDataObject>();
 						sdv.value_object.put(ConfigRelation.nameInFrom, sdvInner);
 					}
 				}
@@ -407,7 +406,7 @@ public class RWDLoadUtil {
 						SceneDataValue sdvInner = new SceneDataValue(Repository, sdv, ConfigRelation.nameInTo, null);
 						sdvInner.finish = true;
 						sdvInner.value_array = new SceneDataSet(false);
-						sdvInner.value_array.set = new ArrayList<SceneDataObject>();
+						sdvInner.value_array.set = new CopyOnWriteArrayList<SceneDataObject>();
 						sdv.value_object.put(ConfigRelation.nameInTo, sdvInner);
 					}
 				}
@@ -492,7 +491,7 @@ public class RWDLoadUtil {
 							SceneDataValue sdvInner = new SceneDataValue(Repository, FromObject, ConfigRelation.nameInFrom + "-id清单", null);
 							sdvInner.finish = true;
 							sdvInner.value_array = new SceneDataSet(true);
-							sdvInner.value_array.singleValueSet = new ArrayList<SceneDataValue>();
+							sdvInner.value_array.singleValueSet = new CopyOnWriteArrayList<SceneDataValue>();
 							for (SceneDataObject sdbInner : sdvFromItem.value_array.set) {
 								SceneDataObject sdoInner = (SceneDataObject) sdbInner;
 								SceneDataValue sdvOne = new SceneDataValue(Repository, null, null, null);
@@ -545,7 +544,7 @@ public class RWDLoadUtil {
 							SceneDataValue sdvInner = new SceneDataValue(Repository, ToObject, ConfigRelation.nameInTo + "-id清单", null);
 							sdvInner.finish = true;
 							sdvInner.value_array = new SceneDataSet(true);
-							sdvInner.value_array.singleValueSet = new ArrayList<SceneDataValue>();
+							sdvInner.value_array.singleValueSet = new CopyOnWriteArrayList<SceneDataValue>();
 							for (SceneDataObject sdbInner : sdvToItem.value_array.set) {
 								SceneDataObject sdoInner = (SceneDataObject) sdbInner;
 								SceneDataValue sdvOne = new SceneDataValue(Repository, null, null, null);
@@ -582,7 +581,7 @@ public class RWDLoadUtil {
 					SceneDataValue sv_alarmList = new SceneDataValue(null, null, "报警列表", null);
 					sv_alarmList.finish = true;
 					sv_alarmList.value_array = new SceneDataSet(false);
-					sv_alarmList.value_array.set = new ArrayList<SceneDataObject>();
+					sv_alarmList.value_array.set = new CopyOnWriteArrayList<SceneDataObject>();
 					sv_alarmList.value_array.setRowChange(true);
 					RepositoryContainer.RepositoryProject.id2alarmList.putIfAbsent(objId, sv_alarmList);
 					for (String col : RWDAlarmUtil.alarmColChange) {
@@ -975,16 +974,20 @@ public class RWDLoadUtil {
 					String id = (String) sdo.get("回路编号").value_prim.value;
 					if (Repository.id2sdv.containsKey(id)) {
 						SceneDataObject equipment = Repository.id2sdv.get(id);
-						equipment.put("模块名称", sdo.get("模块名称"));
-						equipment.put("配电箱名称", sdo.get("配电箱名称"));
-						equipment.put("配电箱编号", sdo.get("配电箱编号"));
-						equipment.put("电井名称", sdo.get("电井名称"));
-						equipment.put("电井编号", sdo.get("电井编号"));
-						equipment.put("一级编组名称", sdo.get("一级编组名称"));
-						equipment.put("二级编组名称", sdo.get("二级编组名称"));
-						equipment.put("编组类型", sdo.get("编组类型"));
+						SceneDataValue sdv_null=new SceneDataValue(null,null,null,null);
+						sdv_null.value_prim=new SceneDataPrimitive();
+						sdv_null.value_prim.change=false;
+						equipment.put("模块名称", sdo.containsKey("模块名称")? sdo.get("模块名称"):sdv_null);
+						equipment.put("配电箱名称", sdo.containsKey("配电箱名称")?sdo.get("配电箱名称"):sdv_null);
+						equipment.put("配电箱编号", sdo.containsKey("配电箱编号")?sdo.get("配电箱编号"):sdv_null);
+						equipment.put("电井名称", sdo.containsKey("电井名称")?sdo.get("电井名称"):sdv_null);
+						equipment.put("电井编号", sdo.containsKey("电井编号")?sdo.get("电井编号"):sdv_null);
+						equipment.put("一级编组名称", sdo.containsKey("一级编组名称")?sdo.get("一级编组名称"):sdv_null);
+						equipment.put("二级编组名称", sdo.containsKey("二级编组名称")?sdo.get("二级编组名称"):sdv_null); 
+						equipment.put("编组类型", sdo.containsKey("编组类型")?sdo.get("编组类型"):sdv_null);
 						if (product.equals("ggzm")) {
-							equipment.put("楼层名称", sdo.get("楼层名称"));
+							equipment.put("楼层编号", sdo.containsKey("楼层编号")?sdo.get("楼层编号"):sdv_null);
+							equipment.put("楼层名称", sdo.containsKey("楼层名称")?sdo.get("楼层名称"):sdv_null);
 						}
 					}
 				}