Browse Source

Merge branch 'v2.0.0' of http://39.106.8.246:3003/persagy/dmp into v2.0.0

 Conflicts:
	dmp-admin/pom.xml
lijie 3 years ago
parent
commit
46dbe6cefc
22 changed files with 1760 additions and 187 deletions
  1. 43 1
      dmp-common/src/main/java/com/persagy/dmp/common/http/HttpUtils.java
  2. 1 0
      dmp-model/src/main/java/com/persagy/dmp/rwd/model/ClassDefModel.java
  3. 69 68
      dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/datautils/ImportFuncid.java
  4. 620 12
      dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/datautils/ImportFuncidForRwdEdit.java
  5. 60 2
      dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/dic/ExcelUtilsForEdit.java
  6. 686 0
      dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/dic/ImportClassForRwdEdit.java
  7. 57 57
      dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/dic/ImportKnowledgeForEdit.java
  8. 11 5
      dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/controller/DownloadController.java
  9. 1 1
      dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/controller/UploadController.java
  10. 3 0
      dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/ClassDef.java
  11. 2 0
      dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/RwdeditRefTypeInfos.java
  12. 37 7
      dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/ClassDefChangeRecordService.java
  13. 4 0
      dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/ClassDefService.java
  14. 46 6
      dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/DownloadService.java
  15. 49 9
      dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/FuncidDefChangeRecordService.java
  16. 9 3
      dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/FuncidDefService.java
  17. 4 0
      dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/RwdeditRefTypeInfosService.java
  18. 4 4
      dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/RwdeditRefTypeService.java
  19. 15 12
      dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/UploadService.java
  20. BIN
      dmp-rwd-edit/src/main/resources/static/file/批量上传变更记录模板.xlsx
  21. 36 0
      docker/dockerfiles/dmp-admin/Dockerfile
  22. 3 0
      docker/dockerfiles/dmp-admin/entrypoint.sh

+ 43 - 1
dmp-common/src/main/java/com/persagy/dmp/common/http/HttpUtils.java

@@ -111,7 +111,7 @@ public class HttpUtils {
 		} else {
 			requestBodyStr = JacksonMapper.toSimpleJson(requestBody);
 		}
-		HttpResult result = post(server, requestBodyStr, timeout);
+		HttpResult result = post(server, requestBodyStr, timeout,null);
 		return result.getContent();
 	}
 
@@ -284,4 +284,46 @@ public class HttpUtils {
 		}
 	}
 
+	public HttpResult post(String url, String requestBody, int timeout,String token) {
+		String flag = getFlag();
+		long begin = System.currentTimeMillis();
+		CloseableHttpClient client = HttpClients.createDefault();
+		CloseableHttpResponse resp = null;
+		HttpResult result = new HttpResult();
+		long duration = 0;
+		try {
+			logger.info("{} httputils request: {}", flag, url);
+			logger.info("{} httputils requestbody: {}", flag, requestBody);
+			HttpPost post = new HttpPost(url);
+			post.addHeader("contentType", "application/json;charset=UTF-8");
+			post.addHeader("Accept", "application/json");
+			post.addHeader("dmp-token",token);
+			if (requestBody != null) {
+				StringEntity entity = new StringEntity(requestBody, UTF8);
+				entity.setContentType("application/json");
+				post.setEntity(entity);
+			}
+			setTimeOut(post, timeout);
+			resp = client.execute(post);
+			int status = resp.getStatusLine().getStatusCode();
+			result.setStatus(status);
+			HttpEntity r = resp.getEntity();
+			String respContent = EntityUtils.toString(r, UTF8);
+			result.setContent(respContent);
+			logger.info("{} httputils resp : {}", flag, getLogMsg(respContent));
+			duration = System.currentTimeMillis() - begin;
+			httpHandler.handle(flag, "POST", duration, url, requestBody, status, respContent);
+		} catch (Exception e) {
+			e.printStackTrace();
+			logger.error("{} httputils exception : ", flag, e);
+			duration = System.currentTimeMillis() - begin;
+			httpHandler.handle(flag, "POST", duration, url, requestBody, -1, e.getMessage());
+			throw new RuntimeException(e);
+		} finally {
+			close(client, resp);
+			logger.info("{} httputils timeconsuming : {} {}", flag, duration, url);
+		}
+		return result;
+	}
+
 }

+ 1 - 0
dmp-model/src/main/java/com/persagy/dmp/rwd/model/ClassDefModel.java

@@ -23,6 +23,7 @@ public class ClassDefModel {
     private String systemCode;
     private String equipmentCode;
     private String parentCode;
+    private Integer orderSeq;
 
     private Integer isUsed;//状态 0.历史版本 1.使用中
     private String version;//版本

+ 69 - 68
dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/datautils/ImportFuncid.java

@@ -44,9 +44,9 @@ import java.util.regex.Pattern;
 @RunWith(SpringRunner.class)
 public class ImportFuncid {
 
-    private String basepath = "D:\\资料\\工作资料\\原型图\\数据中台\\数据字典数据";
+    private String basepath = "D:\\users\\数据字典v3.1.11\\数据字典附表(20210701)";
 
-    private String outPath = "D:/资料/工作资料/原型图/数据中台/out/funcid-" + DateUtils.format(new Date()) + ".dml.sql";
+    private String outPath = "D:/users/20210701/rwd/funcid-" + DateUtils.format(new Date()) + ".dml.sql";
 
     @Autowired
     private HttpUtils httpUtils;
@@ -54,6 +54,7 @@ public class ImportFuncid {
     @Value("${persagy.dmp.rwdedit.server}")
     private String rwdeditServer;
 
+
     @Before
     public void init() {
         FuncidUtils.httpUtils = httpUtils;
@@ -64,13 +65,13 @@ public class ImportFuncid {
     public void importFuncidDef() throws IOException {
         List<FuncidDefModel> funcids = new LinkedList<>();
         // importBase(funcids);
-        importSpace(funcids);
-        importSystem(funcids);
+    /*    importSpace(funcids);
+        importSystem(funcids);*/
         importEquipment(funcids);
-        importComponent(funcids);
+      /*  importComponent(funcids);
         importVirtual(funcids);
         importTool(funcids);
-        importMaterial(funcids);
+        importMaterial(funcids);*/
 
         FileOutputStream fos = new FileOutputStream(outPath);
         PrintWriter writer = new PrintWriter(new BufferedOutputStream(fos));
@@ -89,7 +90,6 @@ public class ImportFuncid {
         funcids.addAll(readSheet("system", "/附表6-机电精装类对象通用属性点表.xlsx", "系统类"));
         funcids.addAll(readSheet("equipment", "/附表6-机电精装类对象通用属性点表.xlsx", "设备类"));
         funcids.addAll(readSheet("component", "/附表6-机电精装类对象通用属性点表.xlsx", "部件类"));
-
     }
 
     private String toSql(FuncidDefModel model) {
@@ -472,60 +472,60 @@ public class ImportFuncid {
     }
 
     private void importEquipment(List<FuncidDefModel> funcids) throws IOException {
-        funcids.addAll(readSheet("equipment", "/附表6-机电精装类对象通用属性点表.xlsx", "设备类"));
-        funcids.addAll(readSheet("SETDTF", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.1-变配电系统设备.xlsx", "TDTF变压器"));
+        /*funcids.addAll(readSheet("equipment", "/附表6-机电精装类对象通用属性点表.xlsx", "设备类"));*/
+        /*funcids.addAll(readSheet("SETDTF", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.1-变配电系统设备.xlsx", "TDTF变压器"));
         funcids.addAll(readSheet("SETDHS", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.1-变配电系统设备.xlsx", "TDHS高压开关柜"));
         funcids.addAll(readSheet("SETDLS", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.1-变配电系统设备.xlsx", "TDLS低压开关柜"));
         funcids.addAll(readSheet("SETDDS", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.1-变配电系统设备.xlsx", "TDDS直流屏"));
         funcids.addAll(readSheet("SETDIV", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.1-变配电系统设备.xlsx", "TDIV逆变器"));
         funcids.addAll(readSheet("SETDBP", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.1-变配电系统设备.xlsx", "TDBP变配电母线插接箱"));
-        funcids.addAll(readSheet("SETDCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.1-变配电系统设备.xlsx", "TDCU变配电控制"));
-        funcids.addAll(readSheet("SESDCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.10-强电人防系统设备.xlsx", "SDCU强电人防控制"));
+        funcids.addAll(readSheet("SETDCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.1-变配电系统设备.xlsx", "TDCU变配电控制模块"));
+        funcids.addAll(readSheet("SESDCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.10-强电人防系统设备.xlsx", "SDCU强电人防控制模块"));
         funcids.addAll(readSheet("SEDGDG", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.2-柴发机房系统设备.xlsx", "DGDG柴油发电机"));
         funcids.addAll(readSheet("SEDGDT", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.2-柴发机房系统设备.xlsx", "DGDT柴发储油箱"));
         funcids.addAll(readSheet("SEDGPP", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.2-柴发机房系统设备.xlsx", "DGPP柴发输油泵"));
         funcids.addAll(readSheet("SEDGJH", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.2-柴发机房系统设备.xlsx", "DGJH柴发水套加热器"));
         funcids.addAll(readSheet("SEDGEP", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.2-柴发机房系统设备.xlsx", "DGEP柴发尾气净化装置"));
-        funcids.addAll(readSheet("SEDGCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.2-柴发机房系统设备.xlsx", "DGCU柴发控制"));
+        funcids.addAll(readSheet("SEDGCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.2-柴发机房系统设备.xlsx", "DGCU柴发控制模块"));
         funcids.addAll(readSheet("SEBPBP", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.3-备用电源系统设备.xlsx", "BPBP备用电源"));
         funcids.addAll(readSheet("SEBPSP", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.3-备用电源系统设备.xlsx", "BPSP太阳能电池板"));
         funcids.addAll(readSheet("SEBPWG", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.3-备用电源系统设备.xlsx", "BPWG风力发电装置"));
         funcids.addAll(readSheet("SEBPHT", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.3-备用电源系统设备.xlsx", "BPHT备用电源主机"));
-        funcids.addAll(readSheet("SEBPCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.3-备用电源系统设备.xlsx", "BPCU备用电源控制"));
-        funcids.addAll(readSheet("SEEPCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.4-机房动力系统设备.xlsx", "EPCU机房动力控制"));
-        funcids.addAll(readSheet("SEOPCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.5-室外动力系统设备.xlsx", "OPCU室外动力控制"));
+        funcids.addAll(readSheet("SEBPCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.3-备用电源系统设备.xlsx", "BPCU备用电源控制模块"));
+        funcids.addAll(readSheet("SEEPCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.4-机房动力系统设备.xlsx", "EPCU机房动力控制模块"));
+        funcids.addAll(readSheet("SEOPCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.5-室外动力系统设备.xlsx", "OPCU室外动力控制模块"));
         funcids.addAll(readSheet("SEELEL", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.6-电梯系统设备.xlsx", "ELEL直梯"));
         funcids.addAll(readSheet("SEELES", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.6-电梯系统设备.xlsx", "ELES扶梯"));
-        funcids.addAll(readSheet("SEELCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.6-电梯系统设备.xlsx", "ELCU电梯控制"));
+        funcids.addAll(readSheet("SEELCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.6-电梯系统设备.xlsx", "ELCU电梯控制模块"));
         funcids.addAll(readSheet("SEELET", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.6-电梯系统设备.xlsx", "ELET电梯曳引机"));
         funcids.addAll(readSheet("SELTLT", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.7-照明系统设备.xlsx", "LTLT照明灯具"));
-        funcids.addAll(readSheet("SELTCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.7-照明系统设备.xlsx", "LTCU照明控制"));
+        funcids.addAll(readSheet("SELTCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.7-照明系统设备.xlsx", "LTCU照明控制模块"));
         funcids.addAll(readSheet("SELTCP", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.7-照明系统设备.xlsx", "LTCP照明控制面板"));
         funcids.addAll(readSheet("SELTCC", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.7-照明系统设备.xlsx", "LTCC照明回路(预计330后删除)"));
         funcids.addAll(readSheet("SELTLG", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.7-照明系统设备.xlsx", "LTLG照明灯组(预计330后删除)"));
-        funcids.addAll(readSheet("SETPCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.8-租户配电系统设备.xlsx", "TPCU租户配电控制"));
+        funcids.addAll(readSheet("SETPCU", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.8-租户配电系统设备.xlsx", "TPCU租户配电控制模块"));
         funcids.addAll(readSheet("SETPBP", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.8-租户配电系统设备.xlsx", "TPBP租户母线插接箱"));
         funcids.addAll(readSheet("SELPAT", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.9-雷电防护系统设备.xlsx", "LPAT接闪器"));
         funcids.addAll(readSheet("SELPDL", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.9-雷电防护系统设备.xlsx", "LPDL引下线"));
         funcids.addAll(readSheet("SELPGD", "/附表8-设备类对象分类属性点表/附表8.1-强电专业设备/附表8.1.9-雷电防护系统设备.xlsx", "LPGD接地装置"));
         funcids.addAll(readSheet("WEBAHT", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.1-建筑设备控制系统设备.xlsx", "BAHT楼控主机"));
-        funcids.addAll(readSheet("WEBACU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.1-建筑设备控制系统设备.xlsx", "BACU楼控控制"));
+        funcids.addAll(readSheet("WEBACU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.1-建筑设备控制系统设备.xlsx", "BACU楼控控制模块"));
         funcids.addAll(readSheet("WEBADC", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.1-建筑设备控制系统设备.xlsx", "BADC楼控数据采集器"));
         funcids.addAll(readSheet("WEBAPS", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.1-建筑设备控制系统设备.xlsx", "BAPS楼控电源供应器"));
         funcids.addAll(readSheet("WEBAEC", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.1-建筑设备控制系统设备.xlsx", "BAEC楼控机柜"));
         funcids.addAll(readSheet("WEBADS", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.1-建筑设备控制系统设备.xlsx", "BADS楼控显示屏"));
         funcids.addAll(readSheet("WEBACP", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.1-建筑设备控制系统设备.xlsx", "BACP楼控控制面板"));
         funcids.addAll(readSheet("WEEMHT", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.10-能源管理系统设备.xlsx", "EMHT能源管理主机"));
-        funcids.addAll(readSheet("WEEMCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.10-能源管理系统设备.xlsx", "EMCU能源管理控制"));
+        funcids.addAll(readSheet("WEEMCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.10-能源管理系统设备.xlsx", "EMCU能源管理控制模块"));
         funcids.addAll(readSheet("WEMMHT", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.11-气象监测系统设备.xlsx", "MMHT气象监测主机"));
-        funcids.addAll(readSheet("WEMMCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.11-气象监测系统设备.xlsx", "MMCU气象监测控制"));
+        funcids.addAll(readSheet("WEMMCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.11-气象监测系统设备.xlsx", "MMCU气象监测控制模块"));
         funcids.addAll(readSheet("WEMMMS", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.11-气象监测系统设备.xlsx", "MMMS气象监测站"));
         funcids.addAll(readSheet("WECMHT", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.12-收银管理系统设备.xlsx", "CMHT收银管理主机"));
-        funcids.addAll(readSheet("WECMCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.12-收银管理系统设备.xlsx", "CMCU收银管理控制"));
+        funcids.addAll(readSheet("WECMCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.12-收银管理系统设备.xlsx", "CMCU收银管理控制模块"));
         funcids.addAll(readSheet("WEOFTL", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.13-办公系统设备.xlsx", "OFTL办公电话"));
         funcids.addAll(readSheet("WEOFCM", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.13-办公系统设备.xlsx", "OFCM办公摄像头"));
         funcids.addAll(readSheet("WEOFCP", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.13-办公系统设备.xlsx", "OFCP办公控制面板"));
-        funcids.addAll(readSheet("WEOFCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.13-办公系统设备.xlsx", "OFCU办公控制"));
+        funcids.addAll(readSheet("WEOFCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.13-办公系统设备.xlsx", "OFCU办公控制模块"));
         funcids.addAll(readSheet("WEOFDS", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.13-办公系统设备.xlsx", "OFDS办公显示屏"));
         funcids.addAll(readSheet("WEOFFE", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.13-办公系统设备.xlsx", "OFFE办公前端设备"));
         funcids.addAll(readSheet("WEOFHT", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.13-办公系统设备.xlsx", "OFHT办公主机"));
@@ -538,18 +538,18 @@ public class ImportFuncid {
         funcids.addAll(readSheet("WEOFTV", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.13-办公系统设备.xlsx", "OFTV办公电视机"));
         funcids.addAll(readSheet("WETVFE", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.2-电视信号系统设备.xlsx", "TVFE电视前端设备"));
         funcids.addAll(readSheet("WETVTV", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.2-电视信号系统设备.xlsx", "TVTV电视机"));
-        funcids.addAll(readSheet("WETVCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.2-电视信号系统设备.xlsx", "TVCU电视信号控制"));
+        funcids.addAll(readSheet("WETVCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.2-电视信号系统设备.xlsx", "TVCU电视信号控制模块"));
         funcids.addAll(readSheet("WEMIHT", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.3-多媒体信息发布系统设备.xlsx", "MIHT多媒体主机"));
         funcids.addAll(readSheet("WEMIPL", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.3-多媒体信息发布系统设备.xlsx", "MIPL播放器"));
         funcids.addAll(readSheet("WEMIDS", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.3-多媒体信息发布系统设备.xlsx", "MIDS多媒体显示屏"));
         funcids.addAll(readSheet("WEMIST", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.3-多媒体信息发布系统设备.xlsx", "MIST自助终端机"));
         funcids.addAll(readSheet("WEMIFE", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.3-多媒体信息发布系统设备.xlsx", "MIFE多媒体前端设备"));
-        funcids.addAll(readSheet("WEMICU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.3-多媒体信息发布系统设备.xlsx", "MICU多媒体控制"));
+        funcids.addAll(readSheet("WEMICU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.3-多媒体信息发布系统设备.xlsx", "MICU多媒体控制模块"));
         funcids.addAll(readSheet("WEWTWT", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.4-无线对讲系统设备.xlsx", "WTWT对讲机"));
         funcids.addAll(readSheet("WEWTRS", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.4-无线对讲系统设备.xlsx", "WTRS中继台"));
-        funcids.addAll(readSheet("WEWTCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.4-无线对讲系统设备.xlsx", "WTCU无线对讲控制"));
+        funcids.addAll(readSheet("WEWTCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.4-无线对讲系统设备.xlsx", "WTCU无线对讲控制模块"));
         funcids.addAll(readSheet("WEGMHT", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.5-车库管理系统设备.xlsx", "GMHT车库主机"));
-        funcids.addAll(readSheet("WEGMCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.5-车库管理系统设备.xlsx", "GMCU车库控制"));
+        funcids.addAll(readSheet("WEGMCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.5-车库管理系统设备.xlsx", "GMCU车库控制模块"));
         funcids.addAll(readSheet("WEGMCM", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.5-车库管理系统设备.xlsx", "GMCM车库摄像头"));
         funcids.addAll(readSheet("WEGMDS", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.5-车库管理系统设备.xlsx", "GMDS车库显示屏"));
         funcids.addAll(readSheet("WEGMGT", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.5-车库管理系统设备.xlsx", "GMGT进出闸机"));
@@ -565,14 +565,14 @@ public class ImportFuncid {
         funcids.addAll(readSheet("WELNHF", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.6-本地网络系统设备.xlsx", "LNHF硬件防火墙"));
         funcids.addAll(readSheet("WELNAC", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.6-本地网络系统设备.xlsx", "LNAC无线控制器"));
         funcids.addAll(readSheet("WELNAP", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.6-本地网络系统设备.xlsx", "LNAP无线AP点位"));
-        funcids.addAll(readSheet("WELNCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.6-本地网络系统设备.xlsx", "LNCU网络控制"));
+        funcids.addAll(readSheet("WELNCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.6-本地网络系统设备.xlsx", "LNCU网络控制模块"));
         funcids.addAll(readSheet("WEMAHT", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.7-移动通信信号放大系统设备.xlsx", "MAHT移动通信信号放大主机"));
         funcids.addAll(readSheet("WEMAAT", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.7-移动通信信号放大系统设备.xlsx", "MAAT移动通信信号放大天线"));
-        funcids.addAll(readSheet("WEMACU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.7-移动通信信号放大系统设备.xlsx", "MACU移动通信信号放大控制"));
+        funcids.addAll(readSheet("WEMACU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.7-移动通信信号放大系统设备.xlsx", "MACU移动通信信号放大控制模块"));
         funcids.addAll(readSheet("WETMHT", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.8-租户管理系统设备.xlsx", "TMHT租户管理主机"));
-        funcids.addAll(readSheet("WETMCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.8-租户管理系统设备.xlsx", "TMCU租户管理控制"));
+        funcids.addAll(readSheet("WETMCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.8-租户管理系统设备.xlsx", "TMCU租户管理控制模块"));
         funcids.addAll(readSheet("WEPMHT", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.9-客流管理系统设备.xlsx", "PMHT客流管理主机"));
-        funcids.addAll(readSheet("WEPMCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.9-客流管理系统设备.xlsx", "PMCU客流管理控制"));
+        funcids.addAll(readSheet("WEPMCU", "/附表8-设备类对象分类属性点表/附表8.2-弱电专业设备/附表8.2.9-客流管理系统设备.xlsx", "PMCU客流管理控制模块"));
         funcids.addAll(readSheet("ACCCCC", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.1-中央供冷系统设备.xlsx", "CCCC离心式冷水机组"));
         funcids.addAll(readSheet("ACCCSC", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.1-中央供冷系统设备.xlsx", "CCSC螺杆式冷水机组"));
         funcids.addAll(readSheet("ACCCPC", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.1-中央供冷系统设备.xlsx", "CCPC活塞式冷水机组"));
@@ -598,7 +598,7 @@ public class ImportFuncid {
         funcids.addAll(readSheet("ACCCWT", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.1-中央供冷系统设备.xlsx", "CCWT供冷水箱"));
         funcids.addAll(readSheet("ACCCOC", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.1-中央供冷系统设备.xlsx", "CCOC供冷在线清洗装置"));
         funcids.addAll(readSheet("ACCCTC", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.1-中央供冷系统设备.xlsx", "CCTC供冷伴热电缆"));
-        funcids.addAll(readSheet("ACCCCU", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.1-中央供冷系统设备.xlsx", "CCCU供冷控制"));
+        funcids.addAll(readSheet("ACCCCU", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.1-中央供冷系统设备.xlsx", "CCCU供冷控制模块"));
         funcids.addAll(readSheet("ACCHCB", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.2-中央供热系统设备.xlsx", "CHCB供热燃煤锅炉"));
         funcids.addAll(readSheet("ACCHFB", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.2-中央供热系统设备.xlsx", "CHFB供热燃油锅炉"));
         funcids.addAll(readSheet("ACCHGB", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.2-中央供热系统设备.xlsx", "CHGB供热燃气锅炉"));
@@ -618,7 +618,7 @@ public class ImportFuncid {
         funcids.addAll(readSheet("ACCHWT", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.2-中央供热系统设备.xlsx", "CHWT供热水箱"));
         funcids.addAll(readSheet("ACCHOC", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.2-中央供热系统设备.xlsx", "CHOC供热在线清洗装置"));
         funcids.addAll(readSheet("ACCHBF", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.2-中央供热系统设备.xlsx", "CHBF生物质炊暖炉"));
-        funcids.addAll(readSheet("ACCHCU", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.2-中央供热系统设备.xlsx", "CHCU供热控制"));
+        funcids.addAll(readSheet("ACCHCU", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.2-中央供热系统设备.xlsx", "CHCU供热控制模块"));
         funcids.addAll(readSheet("ACATAH", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.3-空调末端系统设备.xlsx", "ATAH空调机组"));
         funcids.addAll(readSheet("ACATFU", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.3-空调末端系统设备.xlsx", "ATFU新风机组"));
         funcids.addAll(readSheet("ACATFC", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.3-空调末端系统设备.xlsx", "ATFC风机盘管"));
@@ -638,7 +638,8 @@ public class ImportFuncid {
         funcids.addAll(readSheet("ACATMF", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.3-空调末端系统设备.xlsx", "ATMF空调消声器"));
         funcids.addAll(readSheet("ACATPC", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.3-空调末端系统设备.xlsx", "ATPC空调静压箱"));
         funcids.addAll(readSheet("ACATCA", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.3-空调末端系统设备.xlsx", "ATCA定风量箱"));
-        funcids.addAll(readSheet("ACATCU", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.3-空调末端系统设备.xlsx", "ATCU空调末端控制箱"));
+        funcids.addAll(readSheet("ACATCP", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.3-空调末端系统设备.xlsx", "ATCP空调末端控制面板"));
+        funcids.addAll(readSheet("ACATCU", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.3-空调末端系统设备.xlsx", "ATCU空调末端控制模块"));
         funcids.addAll(readSheet("ACVTSF", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.4-通风系统设备.xlsx", "VTSF通风风机"));
         funcids.addAll(readSheet("ACVTAC", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.4-通风系统设备.xlsx", "VTAC热风幕"));
         funcids.addAll(readSheet("ACVTAP", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.4-通风系统设备.xlsx", "VTAP空气净化器"));
@@ -646,15 +647,15 @@ public class ImportFuncid {
         funcids.addAll(readSheet("ACVTIO", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.4-通风系统设备.xlsx", "VTIO通风风口"));
         funcids.addAll(readSheet("ACVTMF", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.4-通风系统设备.xlsx", "VTMF通风消声器"));
         funcids.addAll(readSheet("ACVTPC", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.4-通风系统设备.xlsx", "VTPC通风静压箱"));
-        funcids.addAll(readSheet("ACVTCU", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.4-通风系统设备.xlsx", "VTCU通风控制"));
+        funcids.addAll(readSheet("ACVTCU", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.4-通风系统设备.xlsx", "VTCU通风控制模块"));
         funcids.addAll(readSheet("ACVTCP", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.4-通风系统设备.xlsx", "VTCP通风控制面板"));
         funcids.addAll(readSheet("ACKLSF", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.5-厨房排油烟系统设备.xlsx", "KLSF厨房排油烟风机"));
         funcids.addAll(readSheet("ACKLAP", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.5-厨房排油烟系统设备.xlsx", "KLAP厨房油烟净化器"));
-        funcids.addAll(readSheet("ACKLCU", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.5-厨房排油烟系统设备.xlsx", "KLCU厨房排油烟控制"));
+        funcids.addAll(readSheet("ACKLCU", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.5-厨房排油烟系统设备.xlsx", "KLCU厨房排油烟控制模块"));
         funcids.addAll(readSheet("ACKLIO", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.5-厨房排油烟系统设备.xlsx", "KLIO厨房排油烟风口"));
         funcids.addAll(readSheet("ACADSF", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.6-空调人防系统设备.xlsx", "ADSF空调人防风机"));
         funcids.addAll(readSheet("ACADFD", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.6-空调人防系统设备.xlsx", "ADFD滤毒除湿机"));
-        funcids.addAll(readSheet("ACADCU", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.6-空调人防系统设备.xlsx", "ADCU空调人防控制"));
+        funcids.addAll(readSheet("ACADCU", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.6-空调人防系统设备.xlsx", "ADCU空调人防控制模块"));
         funcids.addAll(readSheet("ACADIO", "/附表8-设备类对象分类属性点表/附表8.3-空调专业设备/附表8.3.6-空调人防系统设备.xlsx", "ADIO空调人防风口"));
         funcids.addAll(readSheet("WSDWSU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.1-生活给水系统设备.xlsx", "DWSU生活给水供水机组"));
         funcids.addAll(readSheet("WSDWTS", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.1-生活给水系统设备.xlsx", "DWTS生活给水水箱消毒器"));
@@ -662,12 +663,12 @@ public class ImportFuncid {
         funcids.addAll(readSheet("WSDWWT", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.1-生活给水系统设备.xlsx", "DWWT生活给水储水箱"));
         funcids.addAll(readSheet("WSDWPT", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.1-生活给水系统设备.xlsx", "DWPT生活给水压力罐"));
         funcids.addAll(readSheet("WSDWPP", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.1-生活给水系统设备.xlsx", "DWPP生活给水水泵"));
-        funcids.addAll(readSheet("WSDWCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.1-生活给水系统设备.xlsx", "DWCU生活给水控制"));
+        funcids.addAll(readSheet("WSDWCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.1-生活给水系统设备.xlsx", "DWCU生活给水控制模块"));
         funcids.addAll(readSheet("WSWHTC", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.10-给排水电伴热系统设备.xlsx", "WHTC给排水伴热电缆"));
         funcids.addAll(readSheet("WSWHIB", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.10-给排水电伴热系统设备.xlsx", "WHIB给排水伴热保温器"));
-        funcids.addAll(readSheet("WSWHCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.10-给排水电伴热系统设备.xlsx", "WHCU给排水伴热控制"));
+        funcids.addAll(readSheet("WSWHCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.10-给排水电伴热系统设备.xlsx", "WHCU给排水伴热控制模块"));
         funcids.addAll(readSheet("WSWDWT", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.11-给排水人防系统设备.xlsx", "WDWT给排水人防储水箱"));
-        funcids.addAll(readSheet("WSWDCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.11-给排水人防系统设备.xlsx", "WDCU给排水人防控制"));
+        funcids.addAll(readSheet("WSWDCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.11-给排水人防系统设备.xlsx", "WDCU给排水人防控制模块"));
         funcids.addAll(readSheet("WSDHCB", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.2-生活热水系统设备.xlsx", "DHCB生活热水燃煤锅炉"));
         funcids.addAll(readSheet("WSDHFB", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.2-生活热水系统设备.xlsx", "DHFB生活热水燃油锅炉"));
         funcids.addAll(readSheet("WSDHGB", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.2-生活热水系统设备.xlsx", "DHGB生活热水燃气锅炉"));
@@ -685,7 +686,7 @@ public class ImportFuncid {
         funcids.addAll(readSheet("WSDHPT", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.2-生活热水系统设备.xlsx", "DHPT生活热水压力罐"));
         funcids.addAll(readSheet("WSDHST", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.2-生活热水系统设备.xlsx", "DHST生活热水蓄冷热槽"));
         funcids.addAll(readSheet("WSDHWT", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.2-生活热水系统设备.xlsx", "DHWT生活热水储水箱"));
-        funcids.addAll(readSheet("WSDHCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.2-生活热水系统设备.xlsx", "DHCU生活热水控制"));
+        funcids.addAll(readSheet("WSDHCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.2-生活热水系统设备.xlsx", "DHCU生活热水控制模块"));
         funcids.addAll(readSheet("WSRWSU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.3-中水系统设备.xlsx", "RWSU中水供水机组"));
         funcids.addAll(readSheet("WSRWTU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.3-中水系统设备.xlsx", "RWTU中水处理机组"));
         funcids.addAll(readSheet("WSRWWT", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.3-中水系统设备.xlsx", "RWWT中水储水箱"));
@@ -694,10 +695,10 @@ public class ImportFuncid {
         funcids.addAll(readSheet("WSRWPP", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.3-中水系统设备.xlsx", "RWPP中水供水水泵"));
         funcids.addAll(readSheet("WSRWCD", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.3-中水系统设备.xlsx", "RWCD中水水加药装置"));
         funcids.addAll(readSheet("WSLAFT", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.3-中水系统设备.xlsx", "LAFT中水过滤器"));
-        funcids.addAll(readSheet("WSRWCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.3-中水系统设备.xlsx", "RWCU中水控制"));
+        funcids.addAll(readSheet("WSRWCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.3-中水系统设备.xlsx", "RWCU中水控制模块"));
         funcids.addAll(readSheet("WSDDTU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.4-直饮水系统设备.xlsx", "DDTU直饮水处理机组"));
         funcids.addAll(readSheet("WSDDIH", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.4-直饮水系统设备.xlsx", "DDIH直饮水即时加热器"));
-        funcids.addAll(readSheet("WSDDCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.4-直饮水系统设备.xlsx", "DDCU直饮水控制"));
+        funcids.addAll(readSheet("WSDDCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.4-直饮水系统设备.xlsx", "DDCU直饮水控制模块"));
         funcids.addAll(readSheet("WSSTLU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.5-污水处理系统设备.xlsx", "STLU污废水一体式提升机组"));
         funcids.addAll(readSheet("WSSTSP", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.5-污水处理系统设备.xlsx", "STSP潜污泵"));
         funcids.addAll(readSheet("WSSTOR", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.5-污水处理系统设备.xlsx", "STOR餐饮除油成套设备"));
@@ -705,13 +706,13 @@ public class ImportFuncid {
         funcids.addAll(readSheet("WSSTCP", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.5-污水处理系统设备.xlsx", "STCP集水坑"));
         funcids.addAll(readSheet("WSSTOS", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.5-污水处理系统设备.xlsx", "STOS隔油池"));
         funcids.addAll(readSheet("WSSTQM", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.5-污水处理系统设备.xlsx", "STQM污水水质监测仪"));
-        funcids.addAll(readSheet("WSSTCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.5-污水处理系统设备.xlsx", "STCU污水控制"));
+        funcids.addAll(readSheet("WSSTCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.5-污水处理系统设备.xlsx", "STCU污水控制模块"));
         funcids.addAll(readSheet("WSSISU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.6-喷灌系统设备.xlsx", "SISU喷灌机组"));
         funcids.addAll(readSheet("WSSISN", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.6-喷灌系统设备.xlsx", "SISN喷灌喷头"));
-        funcids.addAll(readSheet("WSSICU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.6-喷灌系统设备.xlsx", "SICU喷灌控制"));
+        funcids.addAll(readSheet("WSSICU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.6-喷灌系统设备.xlsx", "SICU喷灌控制模块"));
         funcids.addAll(readSheet("WSWSCF", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.7-水景系统设备.xlsx", "WSCF水景循环过滤机组"));
         funcids.addAll(readSheet("WSWSSN", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.7-水景系统设备.xlsx", "WSSN水景喷头"));
-        funcids.addAll(readSheet("WSWSCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.7-水景系统设备.xlsx", "WSCU水景控制"));
+        funcids.addAll(readSheet("WSWSCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.7-水景系统设备.xlsx", "WSCU水景控制模块"));
         funcids.addAll(readSheet("WSWSLT", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.7-水景系统设备.xlsx", "WSLT水景灯具"));
         funcids.addAll(readSheet("WSWSPP", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.7-水景系统设备.xlsx", "WSPP水景水泵"));
         funcids.addAll(readSheet("WSWPCF", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.8-泳池系统设备.xlsx", "WPCF泳池循环过滤机组"));
@@ -722,7 +723,7 @@ public class ImportFuncid {
         funcids.addAll(readSheet("WSWPPB", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.8-泳池系统设备.xlsx", "WPPB泳池PH值平衡投药泵"));
         funcids.addAll(readSheet("WSWPOP", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.8-泳池系统设备.xlsx", "WPOP泳池氧消毒剂投药泵"));
         funcids.addAll(readSheet("WSWPWT", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.8-泳池系统设备.xlsx", "WPWT泳池水箱"));
-        funcids.addAll(readSheet("WSWPCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.8-泳池系统设备.xlsx", "WPCU泳池控制"));
+        funcids.addAll(readSheet("WSWPCU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.8-泳池系统设备.xlsx", "WPCU泳池控制模块"));
         funcids.addAll(readSheet("WSFGPA", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.9-燃气系统设备.xlsx", "FGPA燃气调压箱"));
         funcids.addAll(readSheet("WSFGLP", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.9-燃气系统设备.xlsx", "FGLP液化石油气瓶"));
         funcids.addAll(readSheet("FFFAHT", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.1-火灾报警系统设备.xlsx", "FAHT火灾报警主机"));
@@ -733,24 +734,24 @@ public class ImportFuncid {
         funcids.addAll(readSheet("FFFAMA", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.1-火灾报警系统设备.xlsx", "FAMA消防手动报警按钮"));
         funcids.addAll(readSheet("FFFAHA", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.1-火灾报警系统设备.xlsx", "FAHA消火栓报警按钮"));
         funcids.addAll(readSheet("FFFATL", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.1-火灾报警系统设备.xlsx", "FATL消防电话"));
-        funcids.addAll(readSheet("FFFACU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.1-火灾报警系统设备.xlsx", "FACU火灾报警控制"));
+        funcids.addAll(readSheet("FFFACU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.1-火灾报警系统设备.xlsx", "FACU火灾报警控制模块"));
         funcids.addAll(readSheet("FFEEHT", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.10-应急照明及疏散指示系统设备.xlsx", "EEHT应急照明及疏散指示主机"));
-        funcids.addAll(readSheet("FFEECU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.10-应急照明及疏散指示系统设备.xlsx", "EECU应急照明及疏散指示控制"));
+        funcids.addAll(readSheet("FFEECU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.10-应急照明及疏散指示系统设备.xlsx", "EECU应急照明及疏散指示控制模块"));
         funcids.addAll(readSheet("FFEEEL", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.10-应急照明及疏散指示系统设备.xlsx", "EEEL应急照明灯具"));
         funcids.addAll(readSheet("FFEEEI", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.10-应急照明及疏散指示系统设备.xlsx", "EEEI疏散指示灯牌"));
-        funcids.addAll(readSheet("FFKECU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.11-厨房自动灭火系统设备.xlsx", "KECU厨房自动灭火控制"));
+        funcids.addAll(readSheet("FFKECU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.11-厨房自动灭火系统设备.xlsx", "KECU厨房自动灭火控制模块"));
         funcids.addAll(readSheet("FFKEEC", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.11-厨房自动灭火系统设备.xlsx", "KEEC厨房自动灭火灭火剂容器"));
         funcids.addAll(readSheet("FFKESN", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.11-厨房自动灭火系统设备.xlsx", "KESN厨房自动灭火喷头"));
         funcids.addAll(readSheet("FFGAHT", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.2-燃气报警系统设备.xlsx", "GAHT燃气报警主机"));
         funcids.addAll(readSheet("FFGASE", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.2-燃气报警系统设备.xlsx", "GASE燃气探测器"));
         funcids.addAll(readSheet("FFGACV", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.2-燃气报警系统设备.xlsx", "GACV燃气切断阀"));
-        funcids.addAll(readSheet("FFGACU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.2-燃气报警系统设备.xlsx", "GACU燃气报警控制"));
+        funcids.addAll(readSheet("FFGACU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.2-燃气报警系统设备.xlsx", "GACU燃气报警控制模块"));
         funcids.addAll(readSheet("FFEAHT", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.3-漏电火灾报警系统设备.xlsx", "EAHT漏电火灾报警主机"));
         funcids.addAll(readSheet("FFEALS", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.3-漏电火灾报警系统设备.xlsx", "EALS漏电探测器"));
-        funcids.addAll(readSheet("FFEACU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.3-漏电火灾报警系统设备.xlsx", "EACU漏电火灾报警控制"));
+        funcids.addAll(readSheet("FFEACU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.3-漏电火灾报警系统设备.xlsx", "EACU漏电火灾报警控制模块"));
         funcids.addAll(readSheet("FFBMFE", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.4-紧急广播及背景音乐系统设备.xlsx", "BMFE广播前端设备"));
         funcids.addAll(readSheet("FFBMHT", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.4-紧急广播及背景音乐系统设备.xlsx", "BMHT广播主机"));
-        funcids.addAll(readSheet("FFBMCU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.4-紧急广播及背景音乐系统设备.xlsx", "BMCU广播分区控制"));
+        funcids.addAll(readSheet("FFBMCU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.4-紧急广播及背景音乐系统设备.xlsx", "BMCU广播分区控制模块"));
         funcids.addAll(readSheet("FFBMDS", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.4-紧急广播及背景音乐系统设备.xlsx", "BMDS广播显示屏"));
         funcids.addAll(readSheet("FFBMMP", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.4-紧急广播及背景音乐系统设备.xlsx", "BMMP广播话筒"));
         funcids.addAll(readSheet("FFBMSP", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.4-紧急广播及背景音乐系统设备.xlsx", "BMSP广播扬声器"));
@@ -763,6 +764,7 @@ public class ImportFuncid {
         funcids.addAll(readSheet("FFFSIP", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.5-消防给水系统设备.xlsx", "FSIP加密喷淋泵"));
         funcids.addAll(readSheet("FFFSWP", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.5-消防给水系统设备.xlsx", "FSWP水炮泵"));
         funcids.addAll(readSheet("FFFSPM", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.5-消防给水系统设备.xlsx", "FSPM消防稳压泵"));
+        funcids.addAll(readSheet("FFFSWC", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.5-消防给水系统设备.xlsx", "FSWC消防水幕泵"));
         funcids.addAll(readSheet("FFFSWM", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.5-消防给水系统设备.xlsx", "FSWM消防水炮设备"));
         funcids.addAll(readSheet("FFFSCF", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.5-消防给水系统设备.xlsx", "FSCF消防给水定压补水装置"));
         funcids.addAll(readSheet("FFFSPT", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.5-消防给水系统设备.xlsx", "FSPT消防给水压力罐"));
@@ -782,36 +784,36 @@ public class ImportFuncid {
         funcids.addAll(readSheet("FFFSSN", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.5-消防给水系统设备.xlsx", "FSSN消防喷头"));
         funcids.addAll(readSheet("FFFSCP", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.5-消防给水系统设备.xlsx", "FSCP消火栓控制面板"));
         funcids.addAll(readSheet("FFFSHT", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.5-消防给水系统设备.xlsx", "FSHT消防给水主机"));
-        funcids.addAll(readSheet("FFFSCU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.5-消防给水系统设备.xlsx", "FSCU消防给水控制"));
+        funcids.addAll(readSheet("FFFSCU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.5-消防给水系统设备.xlsx", "FSCU消防给水控制模块"));
         funcids.addAll(readSheet("FFGEBG", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.6-气体灭火系统设备.xlsx", "GEBG气体灭火瓶组"));
         funcids.addAll(readSheet("FFGESB", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.6-气体灭火系统设备.xlsx", "GESB气体灭火启动瓶"));
         funcids.addAll(readSheet("FFGEHT", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.6-气体灭火系统设备.xlsx", "GEHT气体灭火主机"));
-        funcids.addAll(readSheet("FFGECU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.6-气体灭火系统设备.xlsx", "GECU气体灭火控制"));
+        funcids.addAll(readSheet("FFGECU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.6-气体灭火系统设备.xlsx", "GECU气体灭火控制模块"));
         funcids.addAll(readSheet("FFGESN", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.6-气体灭火系统设备.xlsx", "GESN气体灭火喷头"));
         funcids.addAll(readSheet("FFFEFE", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.7-灭火器系统设备.xlsx", "FEFE灭火器"));
         funcids.addAll(readSheet("FFSCEF", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.8-防排烟系统设备.xlsx", "SCEF防排烟风机"));
         funcids.addAll(readSheet("FFSCIO", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.8-防排烟系统设备.xlsx", "SCIO排烟风口"));
         funcids.addAll(readSheet("FFSCHW", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.8-防排烟系统设备.xlsx", "SCHW电动挡烟垂壁"));
         funcids.addAll(readSheet("FFSCSD", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.8-防排烟系统设备.xlsx", "SCSD防火排烟阀"));
-        funcids.addAll(readSheet("FFSCCU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.8-防排烟系统设备.xlsx", "SCCU防排烟控制"));
+        funcids.addAll(readSheet("FFSCCU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.8-防排烟系统设备.xlsx", "SCCU防排烟控制模块"));
         funcids.addAll(readSheet("FFFRFR", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.9-防火卷帘门系统设备.xlsx", "FRFR防火卷帘门"));
         funcids.addAll(readSheet("FFFRFD", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.9-防火卷帘门系统设备.xlsx", "FRFD防火门"));
         funcids.addAll(readSheet("FFFRHT", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.9-防火卷帘门系统设备.xlsx", "FRHT防火卷帘门主机"));
         funcids.addAll(readSheet("FFFRCP", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.9-防火卷帘门系统设备.xlsx", "FRCP防火卷帘门控制面板"));
-        funcids.addAll(readSheet("FFFRCU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.9-防火卷帘门系统设备.xlsx", "FRCU防火卷帘门控制"));
+        funcids.addAll(readSheet("FFFRCU", "/附表8-设备类对象分类属性点表/附表8.5-消防专业设备/附表8.5.9-防火卷帘门系统设备.xlsx", "FRCU防火卷帘门控制模块"));
         funcids.addAll(readSheet("SPVSHT", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.1-视频监控系统设备.xlsx", "VSHT监控主机"));
         funcids.addAll(readSheet("SPVSCM", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.1-视频监控系统设备.xlsx", "VSCM监控摄像头"));
         funcids.addAll(readSheet("SPVSFE", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.1-视频监控系统设备.xlsx", "VSFE监控前端设备"));
         funcids.addAll(readSheet("SPVSVM", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.1-视频监控系统设备.xlsx", "VSVM监视器"));
         funcids.addAll(readSheet("SPVSDR", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.1-视频监控系统设备.xlsx", "VSDR硬盘录像机"));
         funcids.addAll(readSheet("SPVSCP", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.1-视频监控系统设备.xlsx", "VSCP监控控制面板"));
-        funcids.addAll(readSheet("SPVSCU", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.1-视频监控系统设备.xlsx", "VSCU监控控制"));
+        funcids.addAll(readSheet("SPVSCU", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.1-视频监控系统设备.xlsx", "VSCU监控控制模块"));
         funcids.addAll(readSheet("SPNPHT", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.2-巡更系统设备.xlsx", "NPHT巡更主机"));
-        funcids.addAll(readSheet("SPNPCU", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.2-巡更系统设备.xlsx", "NPCU巡更控制"));
+        funcids.addAll(readSheet("SPNPCU", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.2-巡更系统设备.xlsx", "NPCU巡更控制模块"));
         funcids.addAll(readSheet("SPNPCP", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.2-巡更系统设备.xlsx", "NPCP巡更通讯座"));
         funcids.addAll(readSheet("SPNPPS", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.2-巡更系统设备.xlsx", "NPPS巡更棒"));
         funcids.addAll(readSheet("SPEGHT", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.3-门禁系统设备.xlsx", "EGHT门禁主机"));
-        funcids.addAll(readSheet("SPEGCU", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.3-门禁系统设备.xlsx", "EGCU门禁控制"));
+        funcids.addAll(readSheet("SPEGCU", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.3-门禁系统设备.xlsx", "EGCU门禁控制模块"));
         funcids.addAll(readSheet("SPEGCR", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.3-门禁系统设备.xlsx", "EGCR门禁读卡器"));
         funcids.addAll(readSheet("SPEGWT", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.3-门禁系统设备.xlsx", "EGWT门禁对讲机"));
         funcids.addAll(readSheet("SPEGTK", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.3-门禁系统设备.xlsx", "EGTK破胎器"));
@@ -820,7 +822,7 @@ public class ImportFuncid {
         funcids.addAll(readSheet("SPEGCP", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.3-门禁系统设备.xlsx", "EGCP门禁控制面板"));
         funcids.addAll(readSheet("SPEGFG", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.3-门禁系统设备.xlsx", "EGFG速通门"));
         funcids.addAll(readSheet("SPIAHT", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.4-入侵报警系统设备.xlsx", "IAHT入侵报警主机"));
-        funcids.addAll(readSheet("SPIACU", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.4-入侵报警系统设备.xlsx", "IACU入侵报警控制"));
+        funcids.addAll(readSheet("SPIACU", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.4-入侵报警系统设备.xlsx", "IACU入侵报警控制模块"));
         funcids.addAll(readSheet("SPIAMA", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.4-入侵报警系统设备.xlsx", "IAMA入侵报警手动报警按钮"));
         funcids.addAll(readSheet("SPIAAL", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.4-入侵报警系统设备.xlsx", "IAAL入侵报警声光报警器"));
         funcids.addAll(readSheet("SPIACP", "/附表8-设备类对象分类属性点表/附表8.6-安防专业设备/附表8.6.4-入侵报警系统设备.xlsx", "IACP入侵报警控制面板"));
@@ -872,9 +874,9 @@ public class ImportFuncid {
         funcids.addAll(readSheet("OTLAFI", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.3-液体管道及附件设备.xlsx", "LAFI水流指示器"));
         funcids.addAll(readSheet("OTLAFT", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.3-液体管道及附件设备.xlsx", "LAFT水管过滤器"));
         funcids.addAll(readSheet("OTAAPL", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.4-气体管道及附件设备.xlsx", "AAPL气体管道"));
-        funcids.addAll(readSheet("OTAAFT", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.4-气体管道及附件设备.xlsx", "AAFT风道过滤器"));
+        funcids.addAll(readSheet("OTAAFT", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.4-气体管道及附件设备.xlsx", "AAFT风道过滤器"));*/
         funcids.addAll(readSheet("OTSECB", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.5-传感器设备.xlsx", "SECB组合式传感器"));
-        funcids.addAll(readSheet("OTSETP", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.5-传感器设备.xlsx", "SETP温度传感器"));
+        /*funcids.addAll(readSheet("OTSETP", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.5-传感器设备.xlsx", "SETP温度传感器"));
         funcids.addAll(readSheet("OTSERH", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.5-传感器设备.xlsx", "SERH湿度传感器"));
         funcids.addAll(readSheet("OTSEPS", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.5-传感器设备.xlsx", "SEPS压力传感器"));
         funcids.addAll(readSheet("OTSECT", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.5-传感器设备.xlsx", "SECT浓度传感器"));
@@ -902,7 +904,7 @@ public class ImportFuncid {
         funcids.addAll(readSheet("OTXXAC", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.7-其他设备.xlsx", "XXAC冷风机"));
         funcids.addAll(readSheet("OTXXSC", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.7-其他设备.xlsx", "XXSC消毒柜"));
         funcids.addAll(readSheet("OTXXUA", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.7-其他设备.xlsx", "XXUA无人机"));
-        funcids.addAll(readSheet("OTXXCR", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.7-其他设备.xlsx", "XXCR扫地机器人"));
+        funcids.addAll(readSheet("OTXXCR", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.7-其他设备.xlsx", "XXCR扫地机器人"));*/
     }
 
     private void importComponent(List<FuncidDefModel> funcids) throws IOException {
@@ -914,9 +916,9 @@ public class ImportFuncid {
         funcids.addAll(readSheet("ACCCSCMT", "/附表9-部件类对象分类属性点表/附表9.3-空调专业部件.xlsx", "CCSCMT螺杆式冷水机组电机"));
         funcids.addAll(readSheet("ACCCGHBP", "/附表9-部件类对象分类属性点表/附表9.3-空调专业部件.xlsx", "CCGHBP地埋管"));
         funcids.addAll(readSheet("ACCCOTFN", "/附表9-部件类对象分类属性点表/附表9.3-空调专业部件.xlsx", "CCOTFN冷却塔风机"));
-        //funcids.addAll(readSheet("WSSheet1", "/附表9-部件类对象分类属性点表/附表9.4-给排水专业部件.xlsx", "Sheet1"));
-        //funcids.addAll(readSheet("FFSheet1", "/附表9-部件类对象分类属性点表/附表9.5-消防专业部件.xlsx", "Sheet1"));
-        //funcids.addAll(readSheet("SPSheet1", "/附表9-部件类对象分类属性点表/附表9.6-安防专业部件.xlsx", "Sheet1"));
+        /*funcids.addAll(readSheet("WSSheet1", "/附表9-部件类对象分类属性点表/附表9.4-给排水专业部件.xlsx", "Sheet1"));
+        funcids.addAll(readSheet("FFSheet1", "/附表9-部件类对象分类属性点表/附表9.5-消防专业部件.xlsx", "Sheet1"));
+        funcids.addAll(readSheet("SPSheet1", "/附表9-部件类对象分类属性点表/附表9.6-安防专业部件.xlsx", "Sheet1"));*/
         funcids.addAll(readSheet("CFCSFDCS", "/附表9-部件类对象分类属性点表/附表9.7-土建精装专业部件.xlsx", "CSFDCS基础垫层"));
         funcids.addAll(readSheet("CFCSFDWB", "/附表9-部件类对象分类属性点表/附表9.7-土建精装专业部件.xlsx", "CSFDWB基础防水板"));
         funcids.addAll(readSheet("CFCSFDGD", "/附表9-部件类对象分类属性点表/附表9.7-土建精装专业部件.xlsx", "CSFDGD基础梁"));
@@ -939,7 +941,6 @@ public class ImportFuncid {
         funcids.addAll(readSheet("CFBELRPN", "/附表9-部件类对象分类属性点表/附表9.7-土建精装专业部件.xlsx", "BELRPN采光顶嵌板"));
         funcids.addAll(readSheet("CFBELRCP", "/附表9-部件类对象分类属性点表/附表9.7-土建精装专业部件.xlsx", "BELRCP采光顶组件"));
         //funcids.addAll(readSheet("OTSheet1", "/附表9-部件类对象分类属性点表/附表9.8-其他专业部件.xlsx", "Sheet1"));
-//        funcids.addAll(readSheet("OTSheet1", "/附表9-部件类对象分类属性点表/附表9.8-其他专业部件.xlsx", "Sheet1"));
 
     }
 

+ 620 - 12
dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/datautils/ImportFuncidForRwdEdit.java

@@ -22,8 +22,10 @@ import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.json.JSONObject;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.platform.commons.util.StringUtils;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -48,9 +50,9 @@ import java.util.concurrent.atomic.AtomicInteger;
 @RunWith(SpringRunner.class)
 public class ImportFuncidForRwdEdit {
 
-    private String basepath = "D:\\资料\\工作资料\\原型图\\数据中台\\数据字典数据";
+    private String basepath = "D:\\users\\数据字典v3.1.11\\数据字典附表(20210701)";
 
-    private String outPath = "D:/资料/工作资料/原型图/数据中台/out/funcid-" + DateUtils.format(new Date()) + ".dml.sql";
+    private String outPath = "D:/users/20210701/edit/funcid-" + DateUtils.format(new Date()) + ".dml.sql";
 
     private final static String VERSION = "3.1.11";
 
@@ -75,14 +77,14 @@ public class ImportFuncidForRwdEdit {
     @Test
     public void importFuncidDef() throws IOException {
         List<FuncidDefModel> funcids = new LinkedList<>();
-//        importBase(funcids);
+        //importBase(funcids);
         importSpace(funcids);
-//        importSystem(funcids);
-//        importEquipment(funcids);
-//        importComponent(funcids);
-        //importVirtual(funcids);
-//        importTool(funcids);
-//        importMaterial(funcids);
+        importSystem(funcids);
+        importEquipment(funcids);
+        importComponent(funcids);
+        importVirtual(funcids);
+        importTool(funcids);
+        importMaterial(funcids);
     }
 
     private void writeFuncSqlToFile(List<FuncidDefModel> funcids,String classCode) throws IOException {
@@ -291,6 +293,14 @@ public class ImportFuncidForRwdEdit {
         writeFuncSqlToFile(funcids,classCode);
     }
 
+    private void analysisSheetDataAndWriteToFile(String key, String fileName, String sheetName,String shareType,AtomicInteger commonSeq,Map<String,String> rwdDefClassMap) throws IOException {
+        String classCode = rwdDefClassMap.get(key);
+        // 1.解析Sheet数据
+        List<FuncidDefModel> funcids = new ArrayList<>(readSheet(classCode, fileName, sheetName, shareType,commonSeq));
+        // 2.写入文件
+        writeFuncSqlToFile(funcids,classCode);
+    }
+
     private void importSystem(List<FuncidDefModel> funcids) throws IOException {
         analysisSheetDataAndWriteToFile("system", "/附表6-机电精装类对象通用属性点表.xlsx", "系统类","1");
         AtomicInteger systemCommonSeq = new AtomicInteger(this.systemCommonSeq.intValue());
@@ -820,7 +830,7 @@ public class ImportFuncidForRwdEdit {
         equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
         analysisSheetDataAndWriteToFile("WSDHHE", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.2-生活热水系统设备.xlsx", "DHHE生活热水换热器","2",equipCommonSeq);
         equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
-        analysisSheetDataAndWriteToFile("WS DHS", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.2-生活热水系统设备.xlsx", " DHSU生活热水供水机组","2",equipCommonSeq);
+        analysisSheetDataAndWriteToFile("WSDHSU", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.2-生活热水系统设备.xlsx", " DHSU生活热水供水机组","2",equipCommonSeq);
         equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
         analysisSheetDataAndWriteToFile("WSDHHP", "/附表8-设备类对象分类属性点表/附表8.4-给排水专业设备/附表8.4.2-生活热水系统设备.xlsx", "DHHP生活热水水泵","2",equipCommonSeq);
         equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
@@ -1271,7 +1281,6 @@ public class ImportFuncidForRwdEdit {
         analysisSheetDataAndWriteToFile("OTXXUA", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.7-其他设备.xlsx", "XXUA无人机","2",equipCommonSeq);
         equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
         analysisSheetDataAndWriteToFile("OTXXCR", "/附表8-设备类对象分类属性点表/附表8.8-其他专业设备/附表8.8.7-其他设备.xlsx", "XXCR扫地机器人","2",equipCommonSeq);
-
     }
 
     private void importComponent(List<FuncidDefModel> funcids) throws IOException {
@@ -1339,7 +1348,6 @@ public class ImportFuncidForRwdEdit {
         componentCommonSeq = new AtomicInteger(this.componentCommonSeq.intValue());
         analysisSheetDataAndWriteToFile("OTSheet1", "/附表9-部件类对象分类属性点表/附表9.8-其他专业部件.xlsx", "Sheet1","2",componentCommonSeq);
         //componentCommonSeq = new AtomicInteger(this.componentCommonSeq.intValue());
-
     }
 
     private void importVirtual(List<FuncidDefModel> funcids) throws IOException {
@@ -1352,11 +1360,560 @@ public class ImportFuncidForRwdEdit {
     }
 
     private void importTool(List<FuncidDefModel> funcids) throws IOException {
+        Map<String, String> rwdDefClassMap = queryRwdDefClass();
         analysisSheetDataAndWriteToFile("tool", "/附表10-耗材工具类对象通用属性点表.xlsx", "工具类","2");
+        analysisSheetDataAndWriteToFile("ET-电子秤", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.1-电动测量工具.xlsx", "电子秤","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-泄露检测仪", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.1-电动测量工具.xlsx", "泄露检测仪","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-钳流表", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.1-电动测量工具.xlsx", "钳流表","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-电子湿度计", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.1-电动测量工具.xlsx", "电子湿度计","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-电子温度计", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.1-电动测量工具.xlsx", "电子温度计","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-万用表", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.1-电动测量工具.xlsx", "万用表","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-兆欧表", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.1-电动测量工具.xlsx", "兆欧表","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-手电钻", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.2-电动钻孔工具.xlsx", "手电钻","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-水钻", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.2-电动钻孔工具.xlsx", "水钻","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-磁力钻", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.2-电动钻孔工具.xlsx", "磁力钻","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-电剪刀", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.3-电动切割工具.xlsx", "电剪刀","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-云石机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.3-电动切割工具.xlsx", "云石机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-电动型材切割机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.3-电动切割工具.xlsx", "电动型材切割机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-电圆锯", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.3-电动切割工具.xlsx", "电圆锯","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-电链锯", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.3-电动切割工具.xlsx", "电链锯","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-往复锯", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.3-电动切割工具.xlsx", "往复锯","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-电刨", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.4-电动打磨工具.xlsx", "电刨","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-开槽机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.4-电动打磨工具.xlsx", "开槽机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-角磨机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.4-电动打磨工具.xlsx", "角磨机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-电焊机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.5-电动成型工具.xlsx", "电焊机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-坡口机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.5-电动成型工具.xlsx", "坡口机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-套丝机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.5-电动成型工具.xlsx", "套丝机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-压槽机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.5-电动成型工具.xlsx", "压槽机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-吸尘器", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.6-电动清洁工具.xlsx", "吸尘器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-晶面机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.6-电动清洁工具.xlsx", "晶面机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-地毯清洗机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.6-电动清洁工具.xlsx", "地毯清洗机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-扫地机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.6-电动清洁工具.xlsx", "扫地机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-轧碎机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.7-其他电动工具.xlsx", "轧碎机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-热风枪", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.7-其他电动工具.xlsx", "热风枪","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-电动无气喷涂机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.7-其他电动工具.xlsx", "电动无气喷涂机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-管道疏通机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.7-其他电动工具.xlsx", "管道疏通机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-粉碎机", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.7-其他电动工具.xlsx", "粉碎机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("ET-锡炉", "/附表12-工具类对象分类属性点表/附表12.1-电动工具/附表12.1.7-其他电动工具.xlsx", "锡炉","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PT-气锤", "/附表12-工具类对象分类属性点表/附表12.2-气动工具/附表12.2.1-气动装配作业工具.xlsx", "气锤","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PT-气动扳手", "/附表12-工具类对象分类属性点表/附表12.2-气动工具/附表12.2.1-气动装配作业工具.xlsx", "气动扳手","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PT-气动铆钉枪", "/附表12-工具类对象分类属性点表/附表12.2-气动工具/附表12.2.1-气动装配作业工具.xlsx", "气动铆钉枪","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PT-气钻", "/附表12-工具类对象分类属性点表/附表12.2-气动工具/附表12.2.1-气动装配作业工具.xlsx", "气钻","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PT-气动螺丝刀", "/附表12-工具类对象分类属性点表/附表12.2-气动工具/附表12.2.1-气动装配作业工具.xlsx", "气动螺丝刀","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PT-气镐", "/附表12-工具类对象分类属性点表/附表12.2-气动工具/附表12.2.2-气动金属切削工具.xlsx", "气镐","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PT-气动磨机", "/附表12-工具类对象分类属性点表/附表12.2-气动工具/附表12.2.2-气动金属切削工具.xlsx", "气动磨机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PT-气铲", "/附表12-工具类对象分类属性点表/附表12.2-气动工具/附表12.2.2-气动金属切削工具.xlsx", "气铲","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PT-气动无气喷涂机", "/附表12-工具类对象分类属性点表/附表12.2-气动工具/附表12.2.3-其他气动工具.xlsx", "气动无气喷涂机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-扳手", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.1-手动紧固工具.xlsx", "扳手","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-钳子", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.1-手动紧固工具.xlsx", "钳子","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-手锤", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.1-手动紧固工具.xlsx", "手锤","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-螺丝刀", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.1-手动紧固工具.xlsx", "螺丝刀","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-冲子", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.10-其他手动工具.xlsx", "冲子","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-压线刀", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.10-其他手动工具.xlsx", "压线刀","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-手提工具箱", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.10-其他手动工具.xlsx", "手提工具箱","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-机油枪", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.10-其他手动工具.xlsx", "机油枪","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-胶枪", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.10-其他手动工具.xlsx", "胶枪","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-钢丝刷", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.10-其他手动工具.xlsx", "钢丝刷","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-铲", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.2-手动挖掘工具.xlsx", "铲","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-钢钎", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.2-手动挖掘工具.xlsx", "钢钎","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-镐", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.2-手动挖掘工具.xlsx", "镐","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-手动切割机", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.3-手工切割工具.xlsx", "手动切割机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-斧子", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.3-手工切割工具.xlsx", "斧子","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-切管机", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.3-手工切割工具.xlsx", "切管机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-钢锯", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.3-手工切割工具.xlsx", "钢锯","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-剪刀", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.3-手工切割工具.xlsx", "剪刀","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-锉刀", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.4-手动修整工具.xlsx", "锉刀","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-抹子", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.4-手动修整工具.xlsx", "抹子","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-油刷", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.4-手动修整工具.xlsx", "油刷","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-喷枪", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.4-手动修整工具.xlsx", "喷枪","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-涂料辊", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.4-手动修整工具.xlsx", "涂料辊","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-手推车", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.5-手动移动工具.xlsx", "手推车","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-杠杆", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.5-手动移动工具.xlsx", "杠杆","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-量尺", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.6-手动测量工具.xlsx", "量尺","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-量规", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.6-手动测量工具.xlsx", "量规","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-千分尺", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.6-手动测量工具.xlsx", "千分尺","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-天平", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.6-手动测量工具.xlsx", "天平","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-压力表", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.6-手动测量工具.xlsx", "压力表","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-湿度计", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.6-手动测量工具.xlsx", "湿度计","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-温度计", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.6-手动测量工具.xlsx", "温度计","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-扫把", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.7-手动清洁工具.xlsx", "扫把","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-水桶", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.7-手动清洁工具.xlsx", "水桶","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-簸箕", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.7-手动清洁工具.xlsx", "簸箕","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-拖把", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.7-手动清洁工具.xlsx", "拖把","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-手动弯管机", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.8-手动管道工具.xlsx", "手动弯管机","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-管子割刀", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.8-手动管道工具.xlsx", "管子割刀","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-涨管器", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.8-手动管道工具.xlsx", "涨管器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-开孔器", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.8-手动管道工具.xlsx", "开孔器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-管子铰板", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.8-手动管道工具.xlsx", "管子铰板","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HT-吸锡线", "/附表12-工具类对象分类属性点表/附表12.3-手动工具/附表12.3.9-手动焊接工具.xlsx", "吸锡线","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OT-高空工作安全带", "/附表12-工具类对象分类属性点表/附表12.4-其他工具/附表12.4.1-服装类工具.xlsx", "高空工作安全带","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OT-工程组人员服装", "/附表12-工具类对象分类属性点表/附表12.4-其他工具/附表12.4.1-服装类工具.xlsx", "工程组人员服装","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OT-电焊帽", "/附表12-工具类对象分类属性点表/附表12.4-其他工具/附表12.4.1-服装类工具.xlsx", "电焊帽","2",equipCommonSeq,rwdDefClassMap);
+        //equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
     }
 
     private void importMaterial(List<FuncidDefModel> funcids) throws IOException {
         analysisSheetDataAndWriteToFile("material", "/附表10-耗材工具类对象通用属性点表.xlsx", "耗材类","2");
+        Map<String, String> rwdDefClassMap = queryRwdDefClass();
+        analysisSheetDataAndWriteToFile("HC-普通钉类", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.1-紧固件耗材.xlsx", "普通钉类","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-铆钉", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.1-紧固件耗材.xlsx", "铆钉","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-螺钉", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.1-紧固件耗材.xlsx", "螺钉","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-螺栓", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.1-紧固件耗材.xlsx", "螺栓","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-膨胀螺栓", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.1-紧固件耗材.xlsx", "膨胀螺栓","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-螺母", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.1-紧固件耗材.xlsx", "螺母","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-螺柱", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.1-紧固件耗材.xlsx", "螺柱","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-垫圈", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.1-紧固件耗材.xlsx", "垫圈","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-挡圈", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.1-紧固件耗材.xlsx", "挡圈","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-销", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.1-紧固件耗材.xlsx", "销","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-键", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.1-紧固件耗材.xlsx", "键","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-门锁", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.2-门窗五金耗材.xlsx", "门锁","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-窗锁", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.2-门窗五金耗材.xlsx", "窗锁","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-门窗拉手", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.2-门窗五金耗材.xlsx", "门窗拉手","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-滑撑", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.2-门窗五金耗材.xlsx", "滑撑","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-门窗合页", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.2-门窗五金耗材.xlsx", "门窗合页","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-闭门器", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.2-门窗五金耗材.xlsx", "闭门器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-导轨", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.2-门窗五金耗材.xlsx", "导轨","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-开窗器", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.2-门窗五金耗材.xlsx", "开窗器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-插销", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.2-门窗五金耗材.xlsx", "插销","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-门定位器", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.2-门窗五金耗材.xlsx", "门定位器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-门窗滑轮", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.2-门窗五金耗材.xlsx", "门窗滑轮","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-传动锁闭器", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.2-门窗五金耗材.xlsx", "传动锁闭器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-玻璃门夹", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.2-门窗五金耗材.xlsx", "玻璃门夹","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-驳接爪", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.3-幕墙五金耗材.xlsx", "驳接爪","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-驳接头", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.3-幕墙五金耗材.xlsx", "驳接头","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-挂件", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.3-幕墙五金耗材.xlsx", "挂件","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-家具合页", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.4-家具五金耗材.xlsx", "家具合页","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-家具拉手", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.4-家具五金耗材.xlsx", "家具拉手","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-家具锁", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.4-家具五金耗材.xlsx", "家具锁","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-脚轮", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.4-家具五金耗材.xlsx", "脚轮","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-弹簧", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.4-家具五金耗材.xlsx", "弹簧","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-抽屉滑轨", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.4-家具五金耗材.xlsx", "抽屉滑轨","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-水龙头", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.5-水暖五金耗材.xlsx", "水龙头","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-淋浴器", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.5-水暖五金耗材.xlsx", "淋浴器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-地漏", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.5-水暖五金耗材.xlsx", "地漏","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-地漏盖", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.5-水暖五金耗材.xlsx", "地漏盖","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-扫除口", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.5-水暖五金耗材.xlsx", "扫除口","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-存水弯", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.5-水暖五金耗材.xlsx", "存水弯","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-检查口", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.5-水暖五金耗材.xlsx", "检查口","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-排水栓", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.5-水暖五金耗材.xlsx", "排水栓","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-镜子", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.6-卫浴五金耗材.xlsx", "镜子","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-托架", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.6-卫浴五金耗材.xlsx", "托架","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-马桶刷盒", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.6-卫浴五金耗材.xlsx", "马桶刷盒","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-其他卫浴五金", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.6-卫浴五金耗材.xlsx", "其他卫浴五金","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-轴承", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.7-配件五金耗材.xlsx", "轴承","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-网", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.7-配件五金耗材.xlsx", "网","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-铁丝", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.7-配件五金耗材.xlsx", "铁丝","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-铁件", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.7-配件五金耗材.xlsx", "铁件","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("HC-滚子链条", "/附表11-耗材类对象分类属性点表/附表11.1-五金耗材/附表11.1.7-配件五金耗材.xlsx", "滚子链条","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-焊条", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.1-焊接耗材.xlsx", "焊条","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-焊丝", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.1-焊接耗材.xlsx", "焊丝","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-焊机焊粉", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.1-焊接耗材.xlsx", "焊机焊粉","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-钎料", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.1-焊接耗材.xlsx", "钎料","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-钎剂", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.1-焊接耗材.xlsx", "钎剂","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-云石片", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.2-切割耗材.xlsx", "云石片","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-切割片", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.2-切割耗材.xlsx", "切割片","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-锯片", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.2-切割耗材.xlsx", "锯片","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-锯条", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.2-切割耗材.xlsx", "锯条","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-砂轮", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.3-抛磨耗材.xlsx", "砂轮","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-磨头", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.3-抛磨耗材.xlsx", "磨头","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-砂瓦", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.3-抛磨耗材.xlsx", "砂瓦","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-砂纸", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.3-抛磨耗材.xlsx", "砂纸","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-砂布", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.3-抛磨耗材.xlsx", "砂布","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-油石", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.3-抛磨耗材.xlsx", "油石","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-冲", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.4-冲凿耗材.xlsx", "冲","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-凿", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.4-冲凿耗材.xlsx", "凿","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-电钻钻头", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.5-批咀钻头耗材.xlsx", "电钻钻头","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-水钻头", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.5-批咀钻头耗材.xlsx", "水钻头","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("TC-螺丝刀头", "/附表11-耗材类对象分类属性点表/附表11.2-工具耗材/附表11.2.5-批咀钻头耗材.xlsx", "螺丝刀头","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("CM-通用涂料", "/附表11-耗材类对象分类属性点表/附表11.3-覆盖材料耗材/附表11.3.1-涂料耗材.xlsx", "通用涂料","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("CM-建筑涂料", "/附表11-耗材类对象分类属性点表/附表11.3-覆盖材料耗材/附表11.3.1-涂料耗材.xlsx", "建筑涂料","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("CM-建筑功能涂料", "/附表11-耗材类对象分类属性点表/附表11.3-覆盖材料耗材/附表11.3.1-涂料耗材.xlsx", "建筑功能涂料","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("CM-木器涂料", "/附表11-耗材类对象分类属性点表/附表11.3-覆盖材料耗材/附表11.3.1-涂料耗材.xlsx", "木器涂料","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("CM-金属涂料", "/附表11-耗材类对象分类属性点表/附表11.3-覆盖材料耗材/附表11.3.1-涂料耗材.xlsx", "金属涂料","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("CM-路面涂料", "/附表11-耗材类对象分类属性点表/附表11.3-覆盖材料耗材/附表11.3.1-涂料耗材.xlsx", "路面涂料","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("CM-沥青", "/附表11-耗材类对象分类属性点表/附表11.3-覆盖材料耗材/附表11.3.2-防腐防水材料耗材.xlsx", "沥青","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("CM-防水卷材", "/附表11-耗材类对象分类属性点表/附表11.3-覆盖材料耗材/附表11.3.2-防腐防水材料耗材.xlsx", "防水卷材","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("CM-防水密封材料", "/附表11-耗材类对象分类属性点表/附表11.3-覆盖材料耗材/附表11.3.2-防腐防水材料耗材.xlsx", "防水密封材料","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("CM-止水材料", "/附表11-耗材类对象分类属性点表/附表11.3-覆盖材料耗材/附表11.3.2-防腐防水材料耗材.xlsx", "止水材料","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("CM-堵漏灌浆补强材料", "/附表11-耗材类对象分类属性点表/附表11.3-覆盖材料耗材/附表11.3.2-防腐防水材料耗材.xlsx", "堵漏灌浆补强材料","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OG-燃料油", "/附表11-耗材类对象分类属性点表/附表11.4-油品及胶粘材料耗材/附表11.4.1-油品耗材.xlsx", "燃料油","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OG-绝缘油", "/附表11-耗材类对象分类属性点表/附表11.4-油品及胶粘材料耗材/附表11.4.1-油品耗材.xlsx", "绝缘油","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OG-溶剂油", "/附表11-耗材类对象分类属性点表/附表11.4-油品及胶粘材料耗材/附表11.4.1-油品耗材.xlsx", "溶剂油","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OG-润滑油", "/附表11-耗材类对象分类属性点表/附表11.4-油品及胶粘材料耗材/附表11.4.1-油品耗材.xlsx", "润滑油","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OG-润滑脂", "/附表11-耗材类对象分类属性点表/附表11.4-油品及胶粘材料耗材/附表11.4.1-油品耗材.xlsx", "润滑脂","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OG-润滑蜡", "/附表11-耗材类对象分类属性点表/附表11.4-油品及胶粘材料耗材/附表11.4.1-油品耗材.xlsx", "润滑蜡","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OG-树脂", "/附表11-耗材类对象分类属性点表/附表11.4-油品及胶粘材料耗材/附表11.4.1-油品耗材.xlsx", "树脂","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OG-颜料", "/附表11-耗材类对象分类属性点表/附表11.4-油品及胶粘材料耗材/附表11.4.1-油品耗材.xlsx", "颜料","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OG-胶粘剂", "/附表11-耗材类对象分类属性点表/附表11.4-油品及胶粘材料耗材/附表11.4.2-胶粘材料耗材.xlsx", "胶粘剂","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OG-胶粘制品", "/附表11-耗材类对象分类属性点表/附表11.4-油品及胶粘材料耗材/附表11.4.2-胶粘材料耗材.xlsx", "胶粘制品","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-镀锌钢管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.1-管材耗材.xlsx", "镀锌钢管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-不锈钢管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.1-管材耗材.xlsx", "不锈钢管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-铸铁管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.1-管材耗材.xlsx", "铸铁管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-铝管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.1-管材耗材.xlsx", "铝管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-铜管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.1-管材耗材.xlsx", "铜管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-铜合金管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.1-管材耗材.xlsx", "铜合金管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-铅管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.1-管材耗材.xlsx", "铅管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-塑料管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.1-管材耗材.xlsx", "塑料管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-橡胶管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.1-管材耗材.xlsx", "橡胶管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-复合管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.1-管材耗材.xlsx", "复合管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-混凝土管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.1-管材耗材.xlsx", "混凝土管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-法兰", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.2-连接管件耗材.xlsx", "法兰","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-阀门", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.2-连接管件耗材.xlsx", "阀门","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-活接", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.2-连接管件耗材.xlsx", "活接","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-喉箍", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.2-连接管件耗材.xlsx", "喉箍","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-管箍", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.2-连接管件耗材.xlsx", "管箍","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-卡套", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.2-连接管件耗材.xlsx", "卡套","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-软接头", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.2-连接管件耗材.xlsx", "软接头","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-弯头", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.3-方向管件耗材.xlsx", "弯头","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-弯管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.3-方向管件耗材.xlsx", "弯管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-异径管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.4-管径管件耗材.xlsx", "异径管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-异径弯头", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.4-管径管件耗材.xlsx", "异径弯头","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-支管台", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.4-管径管件耗材.xlsx", "支管台","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-补强管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.4-管径管件耗材.xlsx", "补强管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-三通", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.5-分支管件耗材.xlsx", "三通","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-四通", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.5-分支管件耗材.xlsx", "四通","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-垫片", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.6-密封管件耗材.xlsx", "垫片","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-生料带", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.6-密封管件耗材.xlsx", "生料带","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-线麻", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.6-密封管件耗材.xlsx", "线麻","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-管堵", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.6-密封管件耗材.xlsx", "管堵","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-盲板", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.6-密封管件耗材.xlsx", "盲板","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-封头", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.6-密封管件耗材.xlsx", "封头","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-卡环", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.7-固定管件耗材.xlsx", "卡环","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-托钩", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.7-固定管件耗材.xlsx", "托钩","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-吊环", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.7-固定管件耗材.xlsx", "吊环","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-支架", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.7-固定管件耗材.xlsx", "支架","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-套管", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.7-固定管件耗材.xlsx", "套管","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("PM-管卡", "/附表11-耗材类对象分类属性点表/附表11.5-管路耗材/附表11.5.7-固定管件耗材.xlsx", "管卡","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("SC-灭火器", "/附表11-耗材类对象分类属性点表/附表11.6-安全耗材/附表11.6.1-消防耗材.xlsx", "灭火器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("SC-灭火剂", "/附表11-耗材类对象分类属性点表/附表11.6-安全耗材/附表11.6.1-消防耗材.xlsx", "灭火剂","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("SC-灭火散材", "/附表11-耗材类对象分类属性点表/附表11.6-安全耗材/附表11.6.1-消防耗材.xlsx", "灭火散材","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("SC-路锥", "/附表11-耗材类对象分类属性点表/附表11.6-安全耗材/附表11.6.2-安防耗材.xlsx", "路锥","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("SC-铁马", "/附表11-耗材类对象分类属性点表/附表11.6-安全耗材/附表11.6.2-安防耗材.xlsx", "铁马","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("SC-铁马罩", "/附表11-耗材类对象分类属性点表/附表11.6-安全耗材/附表11.6.2-安防耗材.xlsx", "铁马罩","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("SC-防爆毯", "/附表11-耗材类对象分类属性点表/附表11.6-安全耗材/附表11.6.2-安防耗材.xlsx", "防爆毯","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("SC-防爆围栏", "/附表11-耗材类对象分类属性点表/附表11.6-安全耗材/附表11.6.2-安防耗材.xlsx", "防爆围栏","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("SC-防爆罐", "/附表11-耗材类对象分类属性点表/附表11.6-安全耗材/附表11.6.2-安防耗材.xlsx", "防爆罐","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("SC-防汛沙袋", "/附表11-耗材类对象分类属性点表/附表11.6-安全耗材/附表11.6.2-安防耗材.xlsx", "防汛沙袋","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-灯头", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.1-灯具附件耗材.xlsx", "灯头","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-灯罩", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.1-灯具附件耗材.xlsx", "灯罩","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-灯架", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.1-灯具附件耗材.xlsx", "灯架","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-灯伞", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.1-灯具附件耗材.xlsx", "灯伞","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-灯臂", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.1-灯具附件耗材.xlsx", "灯臂","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-启辉器", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.1-灯具附件耗材.xlsx", "启辉器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-镇流器", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.1-灯具附件耗材.xlsx", "镇流器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-灯具电源转换器", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.1-灯具附件耗材.xlsx", "灯具电源转换器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-灯线", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.1-灯具附件耗材.xlsx", "灯线","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-熔断器", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.2-保险绝缘及电热材料耗材.xlsx", "熔断器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-熔断丝", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.2-保险绝缘及电热材料耗材.xlsx", "熔断丝","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-固定插座", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.3-电源配件耗材.xlsx", "固定插座","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-移动插座", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.3-电源配件耗材.xlsx", "移动插座","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-电源插座转换器", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.3-电源配件耗材.xlsx", "电源插座转换器","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("EC-控制开关", "/附表11-耗材类对象分类属性点表/附表11.7-电器耗材/附表11.7.3-电源配件耗材.xlsx", "控制开关","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OC-笔记本", "/附表11-耗材类对象分类属性点表/附表11.8-办公耗材/附表11.8.1-办公用纸耗材.xlsx", "笔记本","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OC-笔", "/附表11-耗材类对象分类属性点表/附表11.8-办公耗材/附表11.8.1-办公用纸耗材.xlsx", "笔","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OC-复印纸", "/附表11-耗材类对象分类属性点表/附表11.8-办公耗材/附表11.8.1-办公用纸耗材.xlsx", "复印纸","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OC-特种纸", "/附表11-耗材类对象分类属性点表/附表11.8-办公耗材/附表11.8.1-办公用纸耗材.xlsx", "特种纸","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OC-墨盒", "/附表11-耗材类对象分类属性点表/附表11.8-办公耗材/附表11.8.2-打印耗材.xlsx", "墨盒","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OC-墨粉", "/附表11-耗材类对象分类属性点表/附表11.8-办公耗材/附表11.8.2-打印耗材.xlsx", "墨粉","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OC-硒鼓", "/附表11-耗材类对象分类属性点表/附表11.8-办公耗材/附表11.8.2-打印耗材.xlsx", "硒鼓","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OC-文件袋", "/附表11-耗材类对象分类属性点表/附表11.8-办公耗材/附表11.8.3-装订耗材.xlsx", "文件袋","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OC-标签", "/附表11-耗材类对象分类属性点表/附表11.8-办公耗材/附表11.8.3-装订耗材.xlsx", "标签","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OC-长尾夹", "/附表11-耗材类对象分类属性点表/附表11.8-办公耗材/附表11.8.3-装订耗材.xlsx", "长尾夹","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OC-订书钉", "/附表11-耗材类对象分类属性点表/附表11.8-办公耗材/附表11.8.3-装订耗材.xlsx", "订书钉","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("OC-回形针", "/附表11-耗材类对象分类属性点表/附表11.8-办公耗材/附表11.8.3-装订耗材.xlsx", "回形针","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-抽纸", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.1-生活用纸耗材.xlsx", "抽纸","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-卷纸", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.1-生活用纸耗材.xlsx", "卷纸","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-湿纸", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.1-生活用纸耗材.xlsx", "湿纸","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-洗洁精", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.2-清洁用品耗材.xlsx", "洗洁精","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-洁厕剂", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.2-清洁用品耗材.xlsx", "洁厕剂","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-消毒液", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.2-清洁用品耗材.xlsx", "消毒液","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-清洁剂", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.2-清洁用品耗材.xlsx", "清洁剂","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-垃圾袋", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.2-清洁用品耗材.xlsx", "垃圾袋","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-牙膏", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.3-卫生用品耗材.xlsx", "牙膏","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-牙刷", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.3-卫生用品耗材.xlsx", "牙刷","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-拖鞋", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.3-卫生用品耗材.xlsx", "拖鞋","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-梳子", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.3-卫生用品耗材.xlsx", "梳子","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-沐浴露", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.3-卫生用品耗材.xlsx", "沐浴露","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-洗发水", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.3-卫生用品耗材.xlsx", "洗发水","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-被子", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.4-家纺用品耗材.xlsx", "被子","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-枕头", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.4-家纺用品耗材.xlsx", "枕头","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-毛巾", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.4-家纺用品耗材.xlsx", "毛巾","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-床单", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.4-家纺用品耗材.xlsx", "床单","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-毛毯", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.4-家纺用品耗材.xlsx", "毛毯","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        analysisSheetDataAndWriteToFile("LC-窗帘", "/附表11-耗材类对象分类属性点表/附表11.9-生活耗材/附表11.9.4-家纺用品耗材.xlsx", "窗帘","2",equipCommonSeq,rwdDefClassMap);
+        equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
+        //equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());
     }
 
     @Data
@@ -1480,5 +2037,56 @@ public class ImportFuncidForRwdEdit {
         System.err.println(JacksonMapper.toSimpleJson(array));
     }
 
+
+    /**
+     * 获取类型定义
+     * @return
+     */
+    private Map<String,String> queryRwdDefClass(){
+        Map<String, String> rwdDefClassMap = new HashMap<>();
+        //查询类型定义
+        String url = rwdeditServer + "/rwdedit/def/class";
+        JacksonCriteria criteria = JacksonCriteria.newInstance();
+        //criteria.add("systemCode", key);
+        String dmpToken = queryRwdLoginToken();
+        HttpUtils.HttpResult response = httpUtils.post(url, JacksonMapper.toSimpleJson(criteria), 300000,dmpToken);
+        if (!response.success()) {
+            return null;
+        }
+        String content = response.getContent();
+        ObjectNode objectNode = JacksonMapper.toObject(content, ObjectNode.class);
+        ArrayNode data = JacksonMapper.getArray(objectNode, "data", JsonNodeFactory.instance.arrayNode());
+        data.forEach(item->{
+            ObjectNode obj = (ObjectNode) item;
+            String code = JacksonMapper.getString(obj, "code");
+            String systemCode = JacksonMapper.getString(obj, "systemCode");
+            if(StringUtils.isBlank(systemCode)){
+                return;
+            }
+            String name = JacksonMapper.getString(obj, "name");
+            rwdDefClassMap.put(systemCode+"-"+name,code);
+        });
+        return  rwdDefClassMap;
+    }
+
+    /**
+     * 获取登录token
+     * @return
+     */
+    private String queryRwdLoginToken(){
+        String url = rwdeditServer + "/rwdedit/login";
+        ObjectNode criteria =JsonNodeFactory.instance.objectNode();
+        criteria.put("username", "admin");
+        criteria.put("password","123456");
+        HttpUtils.HttpResult response = httpUtils.post(url, JacksonMapper.toSimpleJson(criteria), 300000);
+        if (!response.success()) {
+            return null;
+        }
+        String content = response.getContent();
+        ObjectNode objectNode = JacksonMapper.toObject(content, ObjectNode.class);
+        ObjectNode data = JacksonMapper.getObject(objectNode, "data", JsonNodeFactory.instance.objectNode());
+        String token = JacksonMapper.getString(data, "token");
+        return token;
+    }
 }
 

+ 60 - 2
dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/dic/ExcelUtilsForEdit.java

@@ -1,12 +1,26 @@
 package com.persagy.dmp.rwd.dic;
 
 import cn.hutool.core.io.FileUtil;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.json.JacksonMapper;
+import com.persagy.dmp.common.http.HttpUtils;
+import com.persagy.dmp.rwd.dic.FuncidUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellType;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -18,6 +32,7 @@ import java.util.stream.Collectors;
  * @date: 2020-11-30
  * @verison: 1.0
  */
+@Slf4j
 public class ExcelUtilsForEdit {
 
     public static Object parseCell(Cell cell, String type) {
@@ -59,7 +74,7 @@ public class ExcelUtilsForEdit {
     }
 
 
-    private String basepath = "D:\\资料\\工作资料\\原型图\\数据中台\\数据字典数据";
+    private String basepath = "D:\\users\\数据字典v3.1.11\\数据字典附表(20210701)";
 
     @Test
     public void test1() throws Exception {
@@ -176,11 +191,55 @@ public class ExcelUtilsForEdit {
             }
         }
     }
+
     @Test
     public void test4() throws Exception {
+        showPathForMaterialAndTool(basepath, "/附表11-耗材类对象分类属性点表/" + "附表11.1-五金耗材", "HC");
+        showPathForMaterialAndTool(basepath, "/附表11-耗材类对象分类属性点表/" + "附表11.2-工具耗材", "TC");
+        showPathForMaterialAndTool(basepath, "/附表11-耗材类对象分类属性点表/" + "附表11.3-覆盖材料耗材", "CM");
+        showPathForMaterialAndTool(basepath, "/附表11-耗材类对象分类属性点表/" + "附表11.4-油品及胶粘材料耗材", "OG");
+        showPathForMaterialAndTool(basepath, "/附表11-耗材类对象分类属性点表/" + "附表11.5-管路耗材", "PM");
+        showPathForMaterialAndTool(basepath, "/附表11-耗材类对象分类属性点表/" + "附表11.6-安全耗材", "SC");
+        showPathForMaterialAndTool(basepath, "/附表11-耗材类对象分类属性点表/" + "附表11.7-电器耗材", "EC");
+        showPathForMaterialAndTool(basepath, "/附表11-耗材类对象分类属性点表/" + "附表11.8-办公耗材", "OC");
+        showPathForMaterialAndTool(basepath, "/附表11-耗材类对象分类属性点表/" + "附表11.9-生活耗材", "LC");
+    }
+
+
+    @Test
+    public void test5() throws Exception {
+        showPathForMaterialAndTool(basepath, "/附表12-工具类对象分类属性点表/" + "附表12.1-电动工具", "ET");
+        showPathForMaterialAndTool(basepath, "/附表12-工具类对象分类属性点表/" + "附表12.2-气动工具", "PT");
+        showPathForMaterialAndTool(basepath, "/附表12-工具类对象分类属性点表/" + "附表12.3-手动工具", "HT");
+        showPathForMaterialAndTool(basepath, "/附表12-工具类对象分类属性点表/" + "附表12.4-其他工具", "OT");
+    }
+
+    @Test
+    public void test6() throws Exception {
         showPathForTool(basepath + "/附表12-工具类对象分类属性点表");
     }
 
+    public void showPathForMaterialAndTool(String path, String pathName, String key) throws Exception {
+        List<String> names = listFile(path + pathName);
+        if (names != null) {
+            for (String name : names) {
+//				System.out.println("----------------------");
+                String fileName = path + pathName + "/" + name;
+                FileInputStream inputStream = new FileInputStream(fileName);
+//				System.out.println(fileName);
+                Workbook workbook = new XSSFWorkbook(inputStream);
+                int numberOfSheets = workbook.getNumberOfSheets();
+                for (int i = 0; i < numberOfSheets; i++) {
+                    Sheet sheet = workbook.getSheetAt(i);
+                    String sheetName = sheet.getSheetName();
+                    // funcids.addAll(readSheet("FFFA", "/2.2-设备设施类对象/2.2.3-系统/50-消防专业系统.xlsx", "FA火灾报警系统"));
+                    System.out.println("analysisSheetDataAndWriteToFile(\"" + key+"-"+ sheetName + "\", \"" + pathName + "/" + name + "\", \"" + sheetName + "\",\"2\",equipCommonSeq,rwdDefClassMap);");
+                    System.out.println("equipCommonSeq = new AtomicInteger(this.equipCommonSeq.intValue());");
+                }
+            }
+        }
+    }
+
     public void showPathForTool(String path) throws Exception {
         List<File> files = listFiles(path);
         for (File file : files) {
@@ -202,5 +261,4 @@ public class ExcelUtilsForEdit {
         List<File> files = FileUtil.loopFiles(path);
         return files.stream().filter(file -> !file.getName().startsWith("~")).collect(Collectors.toList());
     }
-
 }

+ 686 - 0
dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/dic/ImportClassForRwdEdit.java

@@ -0,0 +1,686 @@
+package com.persagy.dmp.rwd.dic;
+
+import com.persagy.common.date.DateUtils;
+import com.persagy.common.json.JacksonMapper;
+import com.persagy.dmp.rwd.enums.ObjType;
+import com.persagy.dmp.rwd.model.ClassDefModel;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.junit.Test;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * 导入类型定义
+ *
+ * @author: yaoll
+ * @date: 2020-11-30
+ * @verison: 1.0
+ */
+@Slf4j
+public class ImportClassForRwdEdit {
+
+    private String basepath = "D:\\users\\数据字典附表(20210715)\\数据字典附表(20210715)";
+
+    private String outPath = "D:/users/20210715/edit/class-" + DateUtils.format(new Date()) + ".dml.sql";
+
+    private final static String VERSION = "v3.1.12";
+
+    @Test
+    public void importClassData() throws Exception {
+
+//        // 所有类型
+        List<ClassDefModel> classes = new ArrayList<>();
+
+        // 顶级类型
+        initBaseClass(classes);
+       // 空间分区
+        initSpace(classes);
+        // 专业\系统\设备\部件
+        initEquipment(classes);
+        // 虚拟对象
+       initVirtual(classes);
+        // 工具
+        initTool(classes);
+        // 耗材
+        initMaterial(classes);
+
+        FileOutputStream fos = new FileOutputStream(outPath);
+        PrintWriter writer = new PrintWriter(new BufferedOutputStream(fos));
+        writer.println("truncate table rwd_def_class;");
+
+        // 基本类型
+        for (ClassDefModel item : classes) {
+            if (item.getParentCode() == null) {
+                writer.println(toSql(item));
+            }
+        }
+
+        //
+        List<String> parentCodes = Arrays.asList("space", "system", "equipment", "component", "virtual", "tool", "material");
+        for (String parentCode : parentCodes) {
+            for (ClassDefModel item : classes) {
+                if (parentCode.equals(item.getParentCode())) {
+                    writer.println(toSql(item));
+                }
+            }
+            writer.flush();
+        }
+
+        // 基本信息点
+        for (ClassDefModel item : classes) {
+            if (item.getObjType() == ObjType.project && item.getParentCode() == null) {
+                writer.println(toFuncidSql(item, "id", "ProjID", "编码"));
+                writer.println(toFuncidSql(item, "name", "ProjName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "ProjLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "ProjLocalName", "本地名称"));
+            } else if (item.getObjType() == ObjType.building && item.getParentCode() == null) {
+                writer.println(toFuncidSql(item, "id", "BuildID", "编码"));
+                writer.println(toFuncidSql(item, "name", "BuildName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "BuildLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "BuildLocalName", "本地名称"));
+            } else if (item.getObjType() == ObjType.floor && item.getParentCode() == null) {
+                writer.println(toFuncidSql(item, "id", "FloorID", "编码"));
+                writer.println(toFuncidSql(item, "name", "FloorName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "FloorLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "FloorLocalName", "本地名称"));
+            } else if (item.getObjType() == ObjType.space && item.getParentCode() == null) {
+                writer.println(toFuncidSql(item, "id", "RoomID", "编码"));
+                writer.println(toFuncidSql(item, "name", "RoomName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "RoomLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "RoomLocalName", "本地名称"));
+            } else if (item.getObjType() == ObjType.system && item.getParentCode() == null) {
+                writer.println(toFuncidSql(item, "id", "SysID", "编码"));
+                writer.println(toFuncidSql(item, "name", "SysName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "SysLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "SysLocalName", "本地名称"));
+            } else if (item.getObjType() == ObjType.equipment && item.getParentCode() == null) {
+                writer.println(toFuncidSql(item, "id", "EquipID", "编码"));
+                writer.println(toFuncidSql(item, "name", "EquipName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "EquipLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "EquipLocalName", "本地名称"));
+            } else if (item.getObjType() == ObjType.component && item.getParentCode() == null) {
+                writer.println(toFuncidSql(item, "id", "EquipID", "编码"));
+                writer.println(toFuncidSql(item, "name", "EquipName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "EquipLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "EquipLocalName", "本地名称"));
+            } else if (item.getObjType() == ObjType.shaft && item.getParentCode() == null) {
+                writer.println(toFuncidSql(item, "id", "ShaftID", "编码"));
+                writer.println(toFuncidSql(item, "name", "ShaftName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "ShaftLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "ShaftLocalName", "本地名称"));
+            } else if ("VOEm".equals(item.getCode())) {
+                writer.println(toFuncidSql(item, "id", "ECModelID", "编码"));
+                writer.println(toFuncidSql(item, "name", "ECModelName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "ECModelLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "ECModelLocalName", "本地名称"));
+            } else if ("VOSe".equals(item.getCode())) {
+                writer.println(toFuncidSql(item, "id", "SubentryID", "编码"));
+                writer.println(toFuncidSql(item, "name", "SubentryName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "SubentryLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "SubentryLocalName", "本地名称"));
+            } else if ("VOBr".equals(item.getCode())) {
+                writer.println(toFuncidSql(item, "id", "BranchID", "编码"));
+                writer.println(toFuncidSql(item, "name", "BranchName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "BranchLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "BranchLocalName", "本地名称"));
+            } else if ("VOBc".equals(item.getCode())) {
+                writer.println(toFuncidSql(item, "id", "BeaconID", "编码"));
+                writer.println(toFuncidSql(item, "name", "BeaconlName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "BeaconLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "BeaconLocalName", "本地名称"));
+            } else if ("VOTn".equals(item.getCode())) {
+                writer.println(toFuncidSql(item, "id", "TenantID", "编码"));
+                writer.println(toFuncidSql(item, "name", "TenantName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "TenantLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "TenantLocalName", "本地名称"));
+            } else if (item.getObjType() == ObjType.tool && item.getParentCode() == null) {
+                writer.println(toFuncidSql(item, "id", "ToolID", "编码"));
+                writer.println(toFuncidSql(item, "name", "ToolName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "ToolLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "ToolLocalName", "本地名称"));
+            } else if (item.getObjType() == ObjType.material && item.getParentCode() == null) {
+                writer.println(toFuncidSql(item, "id", "ConsumID", "编码"));
+                writer.println(toFuncidSql(item, "name", "ConsumName", "名称"));
+                writer.println(toFuncidSql(item, "localId", "ConsumLocalID", "本地编码"));
+                writer.println(toFuncidSql(item, "localName", "ConsumLocalName", "本地名称"));
+            }
+        }
+
+//		classes.stream().filter(item -> item.getObjType() == ObjType.project).forEach(item -> {
+//			writer.println(toFuncidSql(item, "id", "ProjID", "编码"));
+//			writer.println(toFuncidSql(item, "name", "ProjName", "名称"));
+//			writer.println(toFuncidSql(item, "localId", "ProjLocalID", "本地编码"));
+//			writer.println(toFuncidSql(item, "localName", "ProjLocalName", "本地名称"));
+//		});
+//		classes.stream().filter(item -> item.getObjType().name().equals("building")).forEach(item -> {
+//			writer.println(toFuncidSql(item, "id", "BuildID", "编码"));
+//			writer.println(toFuncidSql(item, "name", "BuildName", "名称"));
+//			writer.println(toFuncidSql(item, "localId", "BuildLocalID", "本地编码"));
+//			writer.println(toFuncidSql(item, "localName", "BuildLocalName", "本地名称"));
+//		});
+
+        writer.close();
+
+        for (ClassDefModel type : classes) {
+            System.out.println(JacksonMapper.toSimpleJson(type));
+        }
+    }
+
+    private String toSql(ClassDefModel model) {
+        StringBuilder sql = new StringBuilder("insert into rwd_def_class( id, code, obj_type, name, alias_code, alias_name, major_code, system_code, equipment_code, parent_code,is_used,version,order_seq) values ");
+        sql.append("(");
+        sql.append("'").append(UUID.randomUUID().toString().replace("-", "")).append("', "); // id
+        sql.append("'").append(model.getCode()).append("', "); // code
+        sql.append("'").append(model.getObjType().name()).append("', "); // obj_type
+        sql.append("'").append(model.getName()).append("', "); // name
+        sql.append("'").append(model.getCode()).append("', "); // alias_code
+        sql.append("'").append(model.getName()).append("', "); // alias_name
+
+        if (model.getMajorCode() != null) { // major_code
+            sql.append("'").append(model.getMajorCode()).append("', ");
+        } else {
+            sql.append("null, ");
+        }
+
+        if (model.getSystemCode() != null) { // system_code
+            sql.append("'").append(model.getSystemCode()).append("', ");
+        } else {
+            sql.append("null, ");
+        }
+
+        if (model.getEquipmentCode() != null) { // equipment_code
+            sql.append("'").append(model.getEquipmentCode()).append("', ");
+        } else {
+            sql.append("null, ");
+        }
+
+        if (model.getParentCode() != null) { // parent_code
+            sql.append("'").append(model.getParentCode()).append("', ");
+        } else {
+            sql.append("null, ");
+        }
+
+        sql.append(1).append(","); // is_used
+        sql.append("'").append(VERSION).append("',");
+
+        if (null!=model.getOrderSeq()){// order_seq
+            sql.append(model.getOrderSeq()).append(",");
+        }else {
+            sql.append("null,");
+        }
+        // 去掉最后的分隔符 ", "
+        sql.deleteCharAt(sql.length() - 1);
+       // sql.deleteCharAt(sql.length() - 1);
+        sql.append(");");
+        return sql.toString();
+    }
+
+    private String toFuncidSql(ClassDefModel model, String code, String origCode, String name) {
+        StringBuilder buff = new StringBuilder("");
+        buff.append("insert into rwd_def_funcid ");
+        buff.append("(id,code,orig_code,name,alias_code,alias_name,class_code,type,group_code,project_id,category,");
+        buff.append("first_tag,second_tag,priority,input_mode,unit,data_type,orig_data_type,is_multiple,is_region,formater,data_source,orig_data_source,note,sub_flag,weak_point) \n");
+        buff.append("values (");
+        buff.append("'").append(UUID.randomUUID().toString().replace("-", "")).append("',"); // id
+        buff.append("'").append(code).append("',"); //code
+        buff.append("'").append(origCode).append("',"); //orig_code
+        buff.append("'").append(name).append("',"); //name
+        buff.append("'").append(origCode).append("',"); //alias_code
+        buff.append("'").append(name).append("',"); //alias_name
+        buff.append("'").append(model.getCode()).append("',"); // class_code
+        buff.append("'common',");// type
+        buff.append("'0',");//
+        buff.append("'0',");//
+        buff.append("'STATIC',");//
+        buff.append("null,");// first_tag
+        buff.append("null,");
+        buff.append("null,");
+        // input_mode
+        if ("id".equals(code) || "name".equals(code)) {
+            buff.append("'X',");
+        } else if ("localId".equals(code) || "localName".equals(code)) {
+            buff.append("'B1',");
+        } else {
+            buff.append("null,");
+        }
+
+        buff.append("null,");
+        buff.append("'STRING',");
+        buff.append("'Str',");
+        buff.append("0,");
+        buff.append("0,");
+        buff.append("null,");// formater
+        buff.append("null,");
+        buff.append("null,");
+        buff.append("null,");
+        buff.append("0,");
+        buff.append("0);");
+        return buff.toString();
+    }
+
+    private void initBaseClass(List<ClassDefModel> classes) {
+        classes.add(prepareModel("project", "project", "项目", null, null, null,1));
+        classes.add(prepareModel("building", "building", "建筑", null, null, null,2));
+        classes.add(prepareModel("floor", "floor", "楼层", null, null, null,3));
+        classes.add(prepareModel("shaft", "shaft", "竖井", null, null, null,4));
+        classes.add(prepareModel("space", "space", "空间", null, null, null,5));
+        classes.add(prepareModel("system", "system", "系统", null, null, null, 6));
+        classes.add(prepareModel("equipment", "equipment", "设备", null, null, null,7));
+        classes.add(prepareModel("component", "component", "部件", null, null, null,8));
+        classes.add(prepareModel("virtual", "virtual", "虚拟对象", null, null, null,9));
+        classes.add(prepareModel("material", "material", "耗材", null, null, null,10));
+        classes.add(prepareModel("tool", "tool", "工具", null, null, null,11));
+    }
+
+    private void initSpace(List<ClassDefModel> classes) {
+        classes.add(prepareModel("space", "GeneralZone", "物业分区", "space", null, null,1));
+        classes.add(prepareModel("space", "PowerSupplyZone", "供电分区", "space", null, null,2));
+        classes.add(prepareModel("space", "LightingZone", "照明分区", "space", null, null,3));
+        classes.add(prepareModel("space", "NetworkZone", "网络分区", "space", null, null,4));
+        classes.add(prepareModel("space", "AirConditioningZone", "空调分区", "space", null, null,5));
+        classes.add(prepareModel("space", "HeatingZone", "采暖分区", "space", null, null,6));
+        classes.add(prepareModel("space", "CleanZone", "洁净分区", "space", null, null,7));
+        classes.add(prepareModel("space", "DomesticWaterSupplyZone", "生活给水分区", "space", null, null,8));
+        classes.add(prepareModel("space", "FireZone", "防火分区", "space", null, null,9));
+        classes.add(prepareModel("space", "SecurityZone", "安防分区", "space", null, null,10));
+        classes.add(prepareModel("space", "TenantZone", "租户分区", "space", null, null,11));
+        classes.add(prepareModel("space", "FunctionZone", "功能分区", "space", null, null,12));
+        classes.add(prepareModel("space", "PassengerFlowZone", "客流分区", "space", null, null,13));
+        classes.add(prepareModel("space", "EvacuateZone", "疏散分区", "space", null, null,14));
+        classes.add(prepareModel("space", "EnvironmentZone", "环境分区", "space", null, null,15));
+        classes.add(prepareModel("space", "OtherZone", "其他分区", "space", null, null,16));
+    }
+
+    private void initEquipment(List<ClassDefModel> classes) throws IOException {
+        String classFile = basepath + "/附表1-机电精装类对象分类体系.xlsx";
+        String sheetName = "系统设备部件类";
+
+        FileInputStream inputStream = new FileInputStream(classFile);
+        Workbook workbook = new XSSFWorkbook(inputStream);
+        Sheet sheet = workbook.getSheet(sheetName);
+        if (sheet == null) {
+            return;
+        }
+
+        // 行号从0开始, 从第2行开始读数据
+        Set<String> systemCodes = new HashSet<>();
+        Set<String> equipmentCodes = new HashSet<>();
+        int startRowNum = 2;
+        int lastRowNum = sheet.getLastRowNum();
+        CacheModel cache = new CacheModel();
+        int systemIndex = 1;
+        int equipmentIndex = 1;
+        int componentIndex = 1;
+        for (int rowIndex = startRowNum; rowIndex <= lastRowNum; rowIndex++) {
+            Row row = sheet.getRow(rowIndex);
+            if (row == null) {
+                log.info("row[{}] is null", rowIndex);
+                continue;
+            }
+
+            // 0专业, 3系统编码, 5系统名称, 6设备编码, 8设备名称
+            CacheModel target = new CacheModel();
+            target.majorCode = (String) ExcelUtils.parseCell(row.getCell(0), "string");// 专业编码
+            target.systemCode = (String) ExcelUtils.parseCell(row.getCell(3), "string");//系统类编码
+            target.systemName = (String) ExcelUtils.parseCell(row.getCell(5), "string");//系统类名称
+            target.equipCode = (String) ExcelUtils.parseCell(row.getCell(6), "string");//设备设施类编码
+            target.equipName = (String) ExcelUtils.parseCell(row.getCell(8), "string");//设备设施类名称
+            target.componentCode = (String) ExcelUtils.parseCell(row.getCell(9), "string");//部件类编码
+            target.componentName = (String) ExcelUtils.parseCell(row.getCell(11), "string");//部件类名称
+//			System.out.println(rowIndex + ": " + target.majorCode + "\t" + target.systemCode + "\t" + target.equipCode + "\t" + target.componentCode);
+
+            // 专业不为空
+            if (target.majorCode != null) {
+                cache.majorCode = target.majorCode;
+                cache.systemCode = null;
+                cache.systemName = null;
+                cache.equipCode = null;
+                cache.equipName = null;
+                cache.componentCode = null;
+                cache.componentName = null;
+            } else {
+                target.majorCode = cache.majorCode;
+            }
+            // 系统不为空
+            if (target.systemCode != null) {
+                cache.systemCode = target.systemCode;
+                cache.systemName = target.systemName;
+                cache.equipCode = null;
+                cache.equipName = null;
+                cache.componentCode = null;
+                cache.componentName = null;
+            } else {
+                target.systemCode = cache.systemCode;
+                target.systemName = cache.systemName;
+            }
+            // 设备不为空
+            if (target.equipCode != null) {
+                cache.equipCode = target.equipCode;
+                cache.equipName = target.equipName;
+                cache.componentCode = null;
+                cache.componentName = null;
+            } else {
+                target.equipCode = cache.equipCode;
+                target.equipName = cache.equipName;
+            }
+            // 部件不为空
+            if (target.componentCode != null) {
+            }
+
+            // 拼装实际的系统编码和设备编码
+            CacheModel object = new CacheModel();
+            object.majorCode = target.majorCode;
+            object.systemCode = target.majorCode + target.systemCode;
+            object.systemName = target.systemName;
+            object.equipCode = target.majorCode + target.equipCode;
+            object.equipName = target.equipName;
+            object.componentCode = target.componentCode;
+            object.componentName = target.componentName;
+
+            // 判断系统是否存在
+            if (!systemCodes.contains(object.systemCode)) {
+                ClassDefModel system = new ClassDefModel();
+                system.setMajorCode(object.majorCode);
+                system.setCode(object.systemCode);
+                system.setName(object.systemName);
+                system.setParentCode("system");
+                system.setObjType(ObjType.system);
+                system.setOrderSeq(systemIndex++);
+                classes.add(system);
+                systemCodes.add(object.systemCode);
+            }
+            // 判断设备是否存在
+            if (!equipmentCodes.contains(object.equipCode)) {
+                ClassDefModel equipment = new ClassDefModel();
+                equipment.setMajorCode(object.majorCode);
+                equipment.setSystemCode(object.systemCode);
+                equipment.setCode(object.equipCode);
+                equipment.setName(object.equipName);
+                equipment.setParentCode("equipment");
+                equipment.setObjType(ObjType.equipment);
+                equipment.setOrderSeq(equipmentIndex++);
+                classes.add(equipment);
+                equipmentCodes.add(object.equipCode);
+            }
+            // 部件不为空
+            if (object.componentCode != null) {
+                ClassDefModel component = new ClassDefModel();
+                component.setMajorCode(object.majorCode);
+                component.setSystemCode(object.systemCode);
+                component.setEquipmentCode(object.equipCode);
+                component.setCode(object.majorCode + object.componentCode);
+                component.setName(object.componentName);
+                component.setParentCode("component");
+                component.setObjType(ObjType.component);
+                component.setOrderSeq(componentIndex++);
+                classes.add(component);
+            }
+        }
+    }
+
+    private void initVirtual(List<ClassDefModel> classes) {
+        classes.add(prepareModel("virtual", "VOEm", "能耗模型", "virtual", null, null,1));
+        classes.add(prepareModel("virtual", "VOSe", "分项", "virtual", null, null,2));
+//        classes.add(prepareModel("virtual", "VOBr", "支路", "virtual", null, null));
+        classes.add(prepareModel("virtual", "VOBc", "信标", "virtual", null, null,3));
+        classes.add(prepareModel("virtual", "VOTn", "租户", "virtual", null, null,4));
+        classes.add(prepareModel("virtual", "VOWs", "工作历", "virtual", null, null,5));
+        classes.add(prepareModel("virtual", "VoBl", "集团", "virtual", null, null,6));
+        //classes.add(prepareModel("virtual", "VOZn", "空间组合", "virtual", null, null,7));
+        //classes.add(prepareModel("virtual", "VOGp", "设备设施组合", "virtual", null, null,8));
+    }
+
+    private void initTool(List<ClassDefModel> classes) throws IOException {
+        String classFile = basepath + "/附表2-耗材工具类对象分类体系.xlsx";
+        String sheetName = "工具类";
+
+        FileInputStream inputStream = new FileInputStream(classFile);
+        Workbook workbook = new XSSFWorkbook(inputStream);
+        Sheet sheet = workbook.getSheet(sheetName);
+        if (sheet == null) {
+            return;
+        }
+
+        Set<String> systemCodes = new HashSet<>();
+        Set<String> equipCodes = new HashSet<>();
+
+        // 行号从0开始, 从第2行开始读数据
+        // 一级分类使用systemCode, 二级分类使用equipCode
+        int startRowNum = 1;
+        int lastRowNum = sheet.getLastRowNum();
+        CacheModel cache = new CacheModel();
+        int systemIndex = 1;
+        int equipmentIndex = 1;
+        int componentIndex = 1;
+        for (int rowIndex = startRowNum; rowIndex <= lastRowNum; rowIndex++) {
+            Row row = sheet.getRow(rowIndex);
+            if (row == null) {
+                log.info("row[{}] is null", rowIndex);
+                continue;
+            }
+            // 0专业, 3系统编码, 5系统名称, 6设备编码, 8设备名称
+            CacheModel target = new CacheModel();
+            target.systemCode = (String) ExcelUtils.parseCell(row.getCell(0), "string");// 一级分类编码
+            target.systemName = (String) ExcelUtils.parseCell(row.getCell(2), "string");//一级分类名称
+            target.equipCode = (String) ExcelUtils.parseCell(row.getCell(3), "string");//二级分类编码
+            target.equipName = (String) ExcelUtils.parseCell(row.getCell(5), "string");//二级分类名称
+            target.componentCode = (String) ExcelUtils.parseCell(row.getCell(6), "string");//工具类编码
+            target.componentName = (String) ExcelUtils.parseCell(row.getCell(8), "string");//工具类名称
+//			System.out.println(rowIndex + ": " + target.majorCode + "\t" + target.systemCode + "\t" + target.equipCode + "\t" + target.componentCode);
+
+            // 一级分类编码
+            if (target.systemCode != null) {
+                cache.systemCode = target.systemCode;
+                cache.systemName = target.systemName;
+                cache.equipCode = null;
+                cache.componentCode = null;
+                cache.componentName = null;
+            } else {
+                target.systemCode = cache.systemCode;
+                target.systemName = cache.systemName;
+            }
+            // 二级分类编码
+            if (target.equipCode != null) {
+                cache.equipCode = target.equipCode;
+                cache.equipName = target.equipName;
+                cache.componentCode = null;
+                cache.componentName = null;
+            } else {
+                target.equipCode = cache.equipCode;
+                target.equipName = cache.equipName;
+            }
+
+            // 拼装实际的系统编码和设备编码
+            CacheModel object = new CacheModel();
+            object.systemCode = target.systemCode;
+            object.systemName = target.systemName;
+            object.equipCode = target.systemCode + target.equipCode;
+            object.equipName = target.equipName;
+            object.componentCode = target.componentCode;
+            object.componentName = target.componentName;
+
+            // 一级标签
+            if (object.systemCode != null && !systemCodes.contains(object.systemCode)) {
+                systemCodes.add(object.systemCode);
+                ClassDefModel component = new ClassDefModel();
+                component.setSystemCode(null);
+                component.setEquipmentCode(null);
+                component.setCode(object.systemCode);
+                component.setName(object.systemName);
+                component.setParentCode("tool");
+                component.setObjType(ObjType.tool);
+                component.setOrderSeq(systemIndex++);
+                classes.add(component);
+            }
+
+            // 二级标签
+            if (target.equipCode != null && !equipCodes.contains(object.equipCode)) {
+                equipCodes.add(object.equipCode);
+                ClassDefModel component = new ClassDefModel();
+                component.setSystemCode(object.systemCode);
+                component.setEquipmentCode(null);
+                component.setCode(object.equipCode);
+                component.setName(object.equipName);
+                component.setParentCode("tool");
+                component.setObjType(ObjType.tool);
+                component.setOrderSeq(equipmentIndex++);
+                classes.add(component);
+            }
+
+            // 工具类编码
+            if (object.componentCode != null) {
+                ClassDefModel component = new ClassDefModel();
+                component.setSystemCode(object.systemCode);
+                component.setEquipmentCode(object.equipCode);
+                component.setCode(object.componentCode);
+                component.setName(object.componentName);
+                component.setParentCode("tool");
+                component.setObjType(ObjType.tool);
+                component.setOrderSeq(componentIndex++);
+                classes.add(component);
+            }
+        }
+    }
+
+    private void initMaterial(List<ClassDefModel> classes) throws IOException {
+        String classFile = basepath + "/附表2-耗材工具类对象分类体系.xlsx";
+        String sheetName = "耗材类 ";
+
+        FileInputStream inputStream = new FileInputStream(classFile);
+        Workbook workbook = new XSSFWorkbook(inputStream);
+        Sheet sheet = workbook.getSheet(sheetName);
+        if (sheet == null) {
+            return;
+        }
+
+        Set<String> systemCodes = new HashSet<>();
+        Set<String> equipCodes = new HashSet<>();
+
+        // 行号从0开始, 从第2行开始读数据
+        // 一级分类使用systemCode, 二级分类使用equipCode
+        int startRowNum = 1;
+        int lastRowNum = sheet.getLastRowNum();
+        CacheModel cache = new CacheModel();
+        int systemIndex = 1;
+        int equipmentIndex = 1;
+        int componentIndex = 1;
+        for (int rowIndex = startRowNum; rowIndex <= lastRowNum; rowIndex++) {
+            Row row = sheet.getRow(rowIndex);
+            if (row == null) {
+                log.info("row[{}] is null", rowIndex);
+                continue;
+            }
+            // 0专业, 3系统编码, 5系统名称, 6设备编码, 8设备名称
+            CacheModel target = new CacheModel();
+            target.systemCode = (String) ExcelUtils.parseCell(row.getCell(0), "string");// 一级分类编码
+            target.systemName = (String) ExcelUtils.parseCell(row.getCell(2), "string");//一级分类名称
+            target.equipCode = (String) ExcelUtils.parseCell(row.getCell(3), "string");//二级分类编码
+            target.equipName = (String) ExcelUtils.parseCell(row.getCell(5), "string");//二级分类名称
+            target.componentCode = (String) ExcelUtils.parseCell(row.getCell(6), "string");//耗材类编码
+            target.componentName = (String) ExcelUtils.parseCell(row.getCell(8), "string");//耗材类名称
+//			System.out.println(rowIndex + ": " + target.majorCode + "\t" + target.systemCode + "\t" + target.equipCode + "\t" + target.componentCode);
+
+            // 一级分类编码
+            if (target.systemCode != null) {
+                cache.systemCode = target.systemCode;
+                cache.systemName = target.systemName;
+                cache.equipCode = null;
+                cache.componentCode = null;
+                cache.componentName = null;
+            } else {
+                target.systemCode = cache.systemCode;
+                target.systemName = cache.systemName;
+            }
+            // 二级分类编码
+            if (target.equipCode != null) {
+                cache.equipCode = target.equipCode;
+                cache.equipName = target.equipName;
+                cache.componentCode = null;
+                cache.componentName = null;
+            } else {
+                target.equipCode = cache.equipCode;
+                target.equipName = cache.equipName;
+            }
+
+            // 拼装实际的系统编码和设备编码
+            CacheModel object = new CacheModel();
+            object.systemCode = target.systemCode;
+            object.systemName = target.systemName;
+            object.equipCode = target.systemCode + target.equipCode;
+            object.equipName = target.equipName;
+            object.componentCode = target.componentCode;
+            object.componentName = target.componentName;
+
+            // 一级标签
+            if (object.systemCode != null && !systemCodes.contains(object.systemCode)) {
+                systemCodes.add(object.systemCode);
+                ClassDefModel component = new ClassDefModel();
+                component.setSystemCode(null);
+                component.setEquipmentCode(null);
+                component.setCode(object.systemCode);
+                component.setName(object.systemName);
+                component.setParentCode("material");
+                component.setObjType(ObjType.material);
+                component.setOrderSeq(systemIndex++);
+                classes.add(component);
+            }
+
+            // 二级标签
+            if (target.equipCode != null && !equipCodes.contains(object.equipCode)) {
+                equipCodes.add(object.equipCode);
+                ClassDefModel component = new ClassDefModel();
+                component.setSystemCode(object.systemCode);
+                component.setEquipmentCode(null);
+                component.setCode(object.equipCode);
+                component.setName(object.equipName);
+                component.setParentCode("material");
+                component.setObjType(ObjType.material);
+                component.setOrderSeq(equipmentIndex++);
+                classes.add(component);
+            }
+
+            // 耗材类编码
+            if (object.componentCode != null) {
+                ClassDefModel component = new ClassDefModel();
+                component.setSystemCode(object.systemCode);
+                component.setEquipmentCode(object.equipCode);
+                component.setCode(object.componentCode);
+                component.setName(object.componentName);
+                component.setParentCode("material");
+                component.setObjType(ObjType.material);
+                component.setOrderSeq(componentIndex++);
+                classes.add(component);
+            }
+        }
+    }
+
+    public static final class CacheModel {
+        String majorCode;
+        String systemCode;
+        String systemName;
+        String equipCode;
+        String equipName;
+        String componentCode;
+        String componentName;
+    }
+
+    private ClassDefModel prepareModel(String objType, String code, String name, String parentCode, String majorCode, String systemCode,int orderSeq) {
+        ClassDefModel model = new ClassDefModel();
+        model.setObjType(ObjType.valueOf(objType));
+        model.setCode(code);
+        model.setName(name);
+        model.setAliasCode(code);
+        model.setAliasName(name);
+        model.setParentCode(parentCode);
+        model.setMajorCode(majorCode);
+        model.setSystemCode(systemCode);
+        model.setOrderSeq(orderSeq);
+        return model;
+    }
+
+}

+ 57 - 57
dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/dic/ImportKnowledgeForEdit.java

@@ -31,9 +31,9 @@ import java.util.*;
 @Slf4j
 public class ImportKnowledgeForEdit {
 
-    private String basepath = "D:\\资料\\工作资料\\原型图\\数据中台\\数据字典数据";
+    private String basepath = "D:\\users\\数据字典v3.1.11\\数据字典附表(20210701)";
 
-    private String outPath = "D:/资料/工作资料/原型图/数据中台/out/ref-infos-" + DateUtils.format(new Date()) + ".dml.sql";
+    private String outPath = "D:/users/20210701/edit/ref-infos-" + DateUtils.format(new Date()) + ".dml.sql";
 
     private final static Integer CREATE_USER_ID=0;
     private final static Integer UPDATE_USER_ID=0;
@@ -94,8 +94,8 @@ public class ImportKnowledgeForEdit {
 //        writeFuncSqlToFile(classes, "directionCode");
 //        classes.clear();
 //        // 抗震设防烈度
-//        initSeismicFortificationIntensity(classes,"seismicFortificationIntensity","抗震设防烈度");
-//        writeFuncSqlToFile(classes, "seismicFortificationIntensity");
+          initSeismicFortificationIntensity(classes,"seismicFortificationIntensity","抗震设防烈度");
+          writeFuncSqlToFile(classes, "seismicFortificationIntensity");
 //        classes.clear();
 //        // 防尘等级
 //        initDustproofLevel(classes,"dustproofLevel","防护等级");
@@ -133,58 +133,58 @@ public class ImportKnowledgeForEdit {
 //        initCommercialLeasingType(classes,"commercialLeasingType","商业租赁业态类型");
 //        writeFuncSqlToFile(classes, "commercialLeasingType");
 //        classes.clear();
-//        // 通用面积树
-//        initThreeLevelData(classes,"universalAreaTree","A0");
-//        writeFuncSqlToFile(classes, "universalAreaTree");
-//        classes.clear();
-//        // 商业综合体面积树
-//        initFourLevelData(classes,"businessSynthesisAreaTree","A1");
-//        writeFuncSqlToFile(classes, "businessSynthesisAreaTree");
-//        classes.clear();
-//        // 办公面积树
-//        initFourLevelData(classes,"officeSpaceTree","A2");
-//        writeFuncSqlToFile(classes, "officeSpaceTree");
-//        classes.clear();
-//        // 商场面积树
-//        initFourLevelData(classes,"shoppingMallAreaTree","A3");
-//        writeFuncSqlToFile(classes, "shoppingMallAreaTree");
-//        classes.clear();
-//        // 宾馆酒店面积树
-//        initFourLevelData(classes,"hotelAreaTree","A4");
-//        writeFuncSqlToFile(classes, "hotelAreaTree");
-//        classes.clear();
-//        // 医院面积树
-//        initFourLevelData(classes,"hospitalAreaTree","A5");
-//        writeFuncSqlToFile(classes, "hospitalAreaTree");
-//        classes.clear();
-//        // 学校面积树
-//        initFourLevelData(classes,"schoolAreaTree","A6");
-//        writeFuncSqlToFile(classes, "schoolAreaTree");
-//        classes.clear();
-//        // 通用分项树
-//        initSevenLevelData(classes,"generalSubTree","S0");
-//        writeFuncSqlToFile(classes, "generalSubTree");
-//        classes.clear();
-//        // 商业综合体分项树
-//        initFiveLevelData(classes,"businessSynthesisItemizedTree","S1");
-//        writeFuncSqlToFile(classes, "businessSynthesisItemizedTree");
-//        classes.clear();
-//        // 办公分项树
-//        initFiveLevelData(classes,"officeItemizedTree","S2");
-//        writeFuncSqlToFile(classes, "officeItemizedTree");
-//        classes.clear();
-//        // 商场分项树
-//        initFiveLevelData(classes,"shoppingMallItemTree","S3");
-//        writeFuncSqlToFile(classes, "shoppingMallItemTree");
-//        classes.clear();
-//        // 宾馆酒店分项树
-//        initFiveLevelData(classes,"hotelSubTree","S4");
-//        writeFuncSqlToFile(classes, "hotelSubTree");
-//        classes.clear();
-//        // 医院分项树
-//        initFiveLevelData(classes,"hospitalItemizedTree","S4");
-//        writeFuncSqlToFile(classes, "hospitalItemizedTree");
-//        classes.clear();
+        // 通用面积树
+      /*  initThreeLevelData(classes,"universalAreaTree","A0");
+        writeFuncSqlToFile(classes, "universalAreaTree");
+        classes.clear();
+        // 商业综合体面积树
+        initFourLevelData(classes,"businessSynthesisAreaTree","A1");
+        writeFuncSqlToFile(classes, "businessSynthesisAreaTree");
+        classes.clear();
+        // 办公面积树
+        initFourLevelData(classes,"officeSpaceTree","A2");
+        writeFuncSqlToFile(classes, "officeSpaceTree");
+        classes.clear();
+        // 商场面积树
+        initFourLevelData(classes,"shoppingMallAreaTree","A3");
+        writeFuncSqlToFile(classes, "shoppingMallAreaTree");
+        classes.clear();
+        // 宾馆酒店面积树
+        initFourLevelData(classes,"hotelAreaTree","A4");
+        writeFuncSqlToFile(classes, "hotelAreaTree");
+        classes.clear();
+        // 医院面积树
+        initFourLevelData(classes,"hospitalAreaTree","A5");
+        writeFuncSqlToFile(classes, "hospitalAreaTree");
+        classes.clear();
+        // 学校面积树
+        initFourLevelData(classes,"schoolAreaTree","A6");
+        writeFuncSqlToFile(classes, "schoolAreaTree");
+        classes.clear();
+        // 通用分项树
+        initSevenLevelData(classes,"generalSubTree","S0");
+        writeFuncSqlToFile(classes, "generalSubTree");
+        classes.clear();
+        // 商业综合体分项树
+        initFiveLevelData(classes,"businessSynthesisItemizedTree","S1");
+        writeFuncSqlToFile(classes, "businessSynthesisItemizedTree");
+        classes.clear();
+        // 办公分项树
+        initFiveLevelData(classes,"officeItemizedTree","S2");
+        writeFuncSqlToFile(classes, "officeItemizedTree");
+        classes.clear();
+        // 商场分项树
+        initFiveLevelData(classes,"shoppingMallItemTree","S3");
+        writeFuncSqlToFile(classes, "shoppingMallItemTree");
+        classes.clear();
+        // 宾馆酒店分项树
+        initFiveLevelData(classes,"hotelSubTree","S4");
+        writeFuncSqlToFile(classes, "hotelSubTree");
+        classes.clear();
+        // 医院分项树
+        initFiveLevelData(classes,"hospitalItemizedTree","S4");
+        writeFuncSqlToFile(classes, "hospitalItemizedTree");*/
+        classes.clear();
 //        // 对象间关系
 //        initObjectRelation(classes,"objectRelation","新版");
 //        writeFuncSqlToFile(classes, "objectRelation");
@@ -2121,7 +2121,7 @@ public class ImportKnowledgeForEdit {
                     && StringUtils.isNotBlank(target.systemName)) {
                 RwdeditRefTypeInfosModel model = new RwdeditRefTypeInfosModel();
                 model.setRefKey(refKey);
-                model.setCode(target.systemCode);
+                model.setCode(target.majorCode+target.systemCode);
                 model.setName(target.systemName);
                 model.setParentCode(target.majorCode);
                 model.setCodePath(refKey+"-"+target.majorCode+"-"+target.systemCode);

+ 11 - 5
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/controller/DownloadController.java

@@ -3,6 +3,7 @@ package com.persagy.dmp.rwd.edit.controller;
 import com.persagy.dmp.rwd.edit.service.DownloadService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,10 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.io.*;
 import java.net.URLEncoder;
 
 @Slf4j
@@ -39,11 +37,19 @@ public class DownloadController {
 //    }
 
     @GetMapping("/download")
-    private void download(@RequestParam String type, HttpServletRequest req, HttpServletResponse resp){
+    private void download(@RequestParam String type, HttpServletRequest req, HttpServletResponse resp) throws Exception{
         //读取文件
         InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("static/file/批量上传变更记录模板.xlsx");
         String fileName = "批量上传变更记录模板.xlsx";
         InputStream inputStream = new BufferedInputStream(resourceAsStream);
+        Workbook workbook = new XSSFWorkbook(inputStream);
+        downloadService.fillFuncIndexDataToWorkbook(workbook);
+
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        workbook.write(bos);
+        byte[] brray = bos.toByteArray();
+        inputStream = new ByteArrayInputStream(brray);
+
         OutputStream out = null;
         try {
             String resultFileName = URLEncoder.encode(fileName, "UTF-8");

+ 1 - 1
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/controller/UploadController.java

@@ -19,7 +19,7 @@ public class UploadController {
     private UploadService uploadService;
 
     @PostMapping("/upload")
-    public MapResponse upload(@RequestParam String type, @RequestParam("siatic/file") MultipartFile file) {
+    public MapResponse upload(@RequestParam String type, @RequestParam("file") MultipartFile file) {
         MapResponse response = new MapResponse();
         try {
             return uploadService.upload(type, file);

+ 3 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/ClassDef.java

@@ -33,6 +33,7 @@ public class ClassDef {
     private String systemCode;
     private String equipmentCode;
     private String parentCode;
+    private  Integer orderSeq;
     private Integer isUsed;//使用状态 0.历史版本 1.使用中
     private String version;//版本
     private Date lastUpdateTime;//最后更新时间
@@ -52,6 +53,7 @@ public class ClassDef {
         entity.setSystemCode(model.getSystemCode());
         entity.setEquipmentCode(model.getEquipmentCode());
         entity.setParentCode(model.getParentCode());
+        entity.setOrderSeq(model.getOrderSeq());
         entity.setIsUsed(model.getIsUsed());//状态 0.历史版本 1.使用中
         entity.setVersion(model.getVersion());//版本
         entity.setLastUpdateTime(model.getLastUpdateTime());//发布时间
@@ -73,6 +75,7 @@ public class ClassDef {
         model.setSystemCode(this.getSystemCode());
         model.setEquipmentCode(this.getEquipmentCode());
         model.setParentCode(this.getParentCode());
+        model.setOrderSeq(this.getOrderSeq());
         model.setIsUsed(this.getIsUsed());//状态 0.历史版本 1.使用中
         model.setVersion(this.getVersion());//版本
         model.setLastUpdateTime(this.getLastUpdateTime());//发布时间

+ 2 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/RwdeditRefTypeInfos.java

@@ -49,6 +49,7 @@ public class RwdeditRefTypeInfos {
         entity.setParentCode(model.getParentCode());
         entity.setCodePath(model.getCodePath());
         entity.setDataSource(model.getDataSource());
+        entity.setSeq(model.getSeq());
         return entity;
     }
 
@@ -64,6 +65,7 @@ public class RwdeditRefTypeInfos {
         model.setCode(this.getCode());
         model.setParentCode(this.getParentCode());
         model.setDataSource(this.getDataSource());
+        model.setSeq(this.getSeq());
         return model;
     }
 

+ 37 - 7
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/ClassDefChangeRecordService.java

@@ -1,5 +1,6 @@
 package com.persagy.dmp.rwd.edit.service;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ArrayNode;
@@ -23,11 +24,11 @@ import com.persagy.dmp.rwd.edit.repository.ClassDefRepository;
 import com.persagy.dmp.rwd.edit.util.MapObjUtil;
 import com.persagy.dmp.rwd.model.ClassDefModel;
 import com.querydsl.core.types.dsl.BooleanExpression;
+import lombok.Data;
 import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.StringUtils;
 
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.beanutils.BeanMap;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -136,14 +137,16 @@ public class ClassDefChangeRecordService {
         }
 
         List<ClassDefModel> classDefList = queryClassDef(code, null, null);
+        CacheModel cache = new CacheModel();
         if (EnumOperationType.create.equals(param.getOperationType())) {
             if (classDefList.size() > 0) {
                 response.setFail("code is exists");
                 return response;
             }
             //记录所有变更内容
-            Map<String, Object> afterParamMap = MapObjUtil.object2Map(param);
-            ArrayNode arrayNode = funcidDefChangeRecordService.addCreateRecord(afterParamMap);
+            BeanUtils.copyProperties(param,cache);
+            Map<String, Object> afterParamMap = MapObjUtil.object2Map(cache);
+            ArrayNode arrayNode = addCreateRecord(afterParamMap);
             if(arrayNode!=null && arrayNode.size()>0){
                 param.setOperationContentAfter(arrayNode);
             }
@@ -169,7 +172,8 @@ public class ClassDefChangeRecordService {
             param.setEquipmentCode(classDef.getEquipmentCode());
             param.setParentCode(classDef.getParentCode());
             //添加变更记录
-            addChangeRecord(classDef, param);
+            BeanUtils.copyProperties(param,cache);
+            addChangeRecord(classDef, param,cache);
         }
         /*QClassDefChangeRecord qt = QClassDefChangeRecord.classDefChangeRecord;
         BooleanExpression ex = qt.code.eq(code).and(qt.state.eq(EnumVersionState.INIT)).and(qt.version.isNull());
@@ -426,17 +430,18 @@ public class ClassDefChangeRecordService {
      * 添加变更记录
      * @param classDef
      * @param param
+     * @param cache
      */
-    private void addChangeRecord(ClassDefModel classDef, ClassDefChangeRecord param){
+    private void addChangeRecord(ClassDefModel classDef, ClassDefChangeRecord param,CacheModel cache){
         Map<String, Object> beforeParamMap = MapObjUtil.object2Map(classDef);
-        Map<String, Object> afterParamMap = MapObjUtil.object2Map(param);
+        Map<String, Object> afterParamMap = MapObjUtil.object2Map(cache);
 
         //比较变更记录
         ArrayNode operationContentBefore = JsonNodeFactory.instance.arrayNode();
         ArrayNode operationContentAfter = JsonNodeFactory.instance.arrayNode();
         Set<?> keySets = Collections.unmodifiableSet(beforeParamMap.keySet());
         for (Map.Entry<?, ?> afterEntry : afterParamMap.entrySet()) {
-            if(!keySets.contains(afterEntry.getKey()) || "id".equals(afterEntry.getKey()) || "version".equals(afterEntry.getKey())){
+            if(!keySets.contains(afterEntry.getKey())){
                 continue;
             }
             Object afterValue = afterEntry.getValue();
@@ -467,5 +472,30 @@ public class ClassDefChangeRecordService {
         param.setOperationContentAfter(operationContentAfter);
     }
 
+    /**
+     * 获取新增记录
+     * @param afterParamMap
+     */
+    public ArrayNode addCreateRecord(Map<?, ?> afterParamMap){
+        ArrayNode operationContentAfter = JsonNodeFactory.instance.arrayNode();
+        for (Map.Entry<?, ?> afterEntry : afterParamMap.entrySet()) {
+            Object value = afterEntry.getValue();
+            if(value == null){
+                continue;
+            }
+            ObjectNode object = JsonNodeFactory.instance.objectNode();
+            object.put(afterEntry.getKey().toString(),value.toString());
+            operationContentAfter.add(object);
+        }
+        return operationContentAfter;
+    }
+
+    @Data
+    private static class CacheModel {
+        private String code;
+        private String name;
+        private String aliasCode;
+        private String aliasName;
+    }
 }
 

+ 4 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/ClassDefService.java

@@ -7,8 +7,10 @@ import com.persagy.common.web.ListResponse;
 import com.persagy.common.web.PagedResponse;
 import com.persagy.dmp.rwd.edit.entity.ClassDef;
 import com.persagy.dmp.rwd.edit.entity.QClassDef;
+import com.persagy.dmp.rwd.edit.enumeration.FuncidShareTypeEnum;
 import com.persagy.dmp.rwd.enums.ObjType;
 import com.persagy.dmp.rwd.model.ClassDefModel;
+import com.persagy.dmp.rwd.model.FuncidDefModel;
 import com.querydsl.core.types.dsl.BooleanExpression;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,6 +43,8 @@ public class ClassDefService {
 
         List<ClassDefModel> data = new ArrayList<>(map.size());
         data.addAll(map.values());
+        //排序
+        data = data.stream().sorted(Comparator.comparing(ClassDefModel::getOrderSeq, Comparator.nullsLast(Integer::compareTo))).collect(Collectors.toList());
         resp.setData(data);
         return resp;
     }

+ 46 - 6
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/DownloadService.java

@@ -1,23 +1,27 @@
 package com.persagy.dmp.rwd.edit.service;
 
+import cn.hutool.core.util.StrUtil;
+import com.persagy.common.criteria.JacksonCriteria;
 import com.persagy.dmp.common.excel.ExcelUtils;
 import com.persagy.dmp.common.excel.SheetWriteInfo;
 import com.persagy.dmp.rwd.edit.entity.ClassDefChangeRecord;
 import com.persagy.dmp.rwd.edit.entity.FuncidDefChangeRecord;
 import com.persagy.dmp.rwd.edit.model.DownloadModel;
+import com.persagy.dmp.rwd.model.FuncidDefModel;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.poi.ss.usermodel.HorizontalAlignment;
-import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.*;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 
 @Slf4j
 @Service
 public class DownloadService {
 
+    @Autowired
+    private FuncidDefService funcidDefService;
+
     public DownloadModel download(String type) {
         if ("changeDataTemplate".equals(type)) {
             return downloadChangeDataTemplate();
@@ -124,5 +128,41 @@ public class DownloadService {
         });
         return info;
     }
-}
 
+    /**
+     * 信息点位置数据填充
+     *
+     * @param workbook
+     */
+    public void fillFuncIndexDataToWorkbook(Workbook workbook) throws Exception {
+        // 信息点位置sheet页数据填充
+        Sheet listSheet = workbook.getSheetAt(3);
+        fillFuncIdDefData(listSheet);
+    }
+
+    /**
+     * 列表数据填充
+     * @param sheet
+     */
+    private void fillFuncIdDefData(Sheet sheet) {
+        //查询所有信息点
+        List<FuncidDefModel> funcidDefModelList = funcidDefService.queryWithoutClassCode(JacksonCriteria.newInstance());
+        funcidDefModelList.sort((k1,k2)->{
+            int compareTo = StrUtil.blankToDefault(k1.getClassCode(),"").compareTo(StrUtil.blankToDefault(k2.getClassCode(),""));
+            if (0==compareTo) {
+                return k1.getOrderSeq().compareTo(k2.getOrderSeq());
+            }
+            return compareTo;
+        });
+        int rowIndex = 1;
+        //数据填充
+        if (funcidDefModelList != null) {
+            for (FuncidDefModel datum : funcidDefModelList) {
+                Row row = sheet.createRow(rowIndex++);
+                row.createCell(0).setCellValue(datum.getClassCode());
+                row.createCell(1).setCellValue(datum.getName());
+                row.createCell(2).setCellValue(datum.getOrderSeq());
+            }
+        }
+    }
+}

+ 49 - 9
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/FuncidDefChangeRecordService.java

@@ -25,18 +25,25 @@ import com.persagy.dmp.rwd.edit.repository.FuncidDefChangeRecordRepository;
 import com.persagy.dmp.rwd.edit.repository.FuncidDefRepository;
 import com.persagy.dmp.rwd.edit.repository.RwdeditRefTypeRepository;
 import com.persagy.dmp.rwd.edit.util.MapObjUtil;
+import com.persagy.dmp.rwd.enums.FuncidCategory;
 import com.persagy.dmp.rwd.enums.FuncidDataType;
 import com.persagy.dmp.rwd.model.ClassDefModel;
 import com.persagy.dmp.rwd.model.FuncidDefModel;
 import com.persagy.dmp.rwd.model.RwdeditRefTypeInfosModel;
 import com.querydsl.core.types.dsl.BooleanExpression;
 import io.micrometer.core.instrument.util.StringUtils;
+import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.beanutils.BeanMap;
 import org.apache.commons.lang.ObjectUtils;
+import org.hibernate.annotations.Type;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import javax.persistence.Column;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
 import javax.transaction.Transactional;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -174,13 +181,15 @@ public class FuncidDefChangeRecordService {
         if (funcidDefModelList != null) {
             funcidDef = funcidDefModelList.get(0);
         }
+        CacheModel cache = new CacheModel();
         if (EnumOperationType.create.equals(param.getOperationType())) {
             if (funcidDef != null) {
                 response.setFail("code is exists");
                 return response;
             }
             //记录所有变更内容
-            Map<String, Object> afterParamMap = MapObjUtil.object2Map(param);
+            BeanUtils.copyProperties(param,cache);
+            Map<String, Object> afterParamMap = MapObjUtil.object2Map(cache);
             ArrayNode arrayNode = addCreateRecord(afterParamMap);
             if(arrayNode!=null && arrayNode.size()>0){
                 param.setOperationContentAfter(arrayNode);
@@ -231,7 +240,8 @@ public class FuncidDefChangeRecordService {
             param.setSubFlag(funcidDef.getSubFlag());
             param.setWeakPoint(funcidDef.getWeakPoint());
            //添加变更记录
-            addChangeRecord(funcidDef,param);
+            BeanUtils.copyProperties(param,cache);
+            addChangeRecord(funcidDef,param,cache);
         }
 
         /*QFuncidDefChangeRecord qt = QFuncidDefChangeRecord.funcidDefChangeRecord;
@@ -247,6 +257,9 @@ public class FuncidDefChangeRecordService {
         param.setOperationTime(new Date());
         param.setValid(true);
         param.setState(EnumVersionState.INIT);
+        if(StringUtils.isEmpty(param.getShareType())){
+            param.setShareType(FuncidShareTypeEnum.SELF.getValue());
+        }
         repository.save(param);
         response.add("id", param.getId());
         return response;
@@ -764,17 +777,18 @@ public class FuncidDefChangeRecordService {
      * 添加变更记录
      * @param funcidDef
      * @param param
+     * @param cache
      */
-    private void addChangeRecord(FuncidDefModel funcidDef,FuncidDefChangeRecord param){
+    private void addChangeRecord(FuncidDefModel funcidDef,FuncidDefChangeRecord param,CacheModel cache){
         Map<String, Object> beforeParamMap = MapObjUtil.object2Map(funcidDef);
-        Map<String, Object> afterParamMap = MapObjUtil.object2Map(param);
+        Map<String, Object> afterParamMap = MapObjUtil.object2Map(cache);
         //比较变更记录
         ArrayNode operationContentBefore = JsonNodeFactory.instance.arrayNode();
         ArrayNode operationContentAfter = JsonNodeFactory.instance.arrayNode();
         Set<?> keySets = Collections.unmodifiableSet(beforeParamMap.keySet());
         for (Map.Entry<?, ?> afterEntry : afterParamMap.entrySet()) {
             String key = afterEntry.getKey().toString();
-            if(!keySets.contains(key) || "id".equals(key) || "version".equals(key)|| "orderSeq".equals(key) || "shareType".equals(key)){
+            if(!keySets.contains(key)){
                 continue;
             }
             Object afterValue = afterEntry.getValue();
@@ -817,10 +831,6 @@ public class FuncidDefChangeRecordService {
         for (Map.Entry<?, ?> afterEntry : afterParamMap.entrySet()) {
             String key = afterEntry.getKey().toString();
             Object value = afterEntry.getValue();
-            if("groupCode".equals(key) || "projectId".equals(key) || "type".equals(key)|| "operationType".equals(key)
-                 || "classCode".equals(key) || "objType".equals(key) || "parentCode".equals(key)|| "orderSeq".equals(key) || "shareType".equals(key)){
-                continue;
-            }
             if(value == null){
                 continue;
             }
@@ -841,5 +851,35 @@ public class FuncidDefChangeRecordService {
         }
         return operationContentAfter;
     }
+
+
+    @Data
+    private static class CacheModel {
+        private String code;
+        private String origCode;
+        private String name;
+        private String aliasCode;
+        private String aliasName;
+        @Enumerated(EnumType.STRING)
+        private FuncidCategory category;
+       // private String type;
+        private String firstTag;
+        private String secondTag;
+        private String priority;
+        private String inputMode;
+        private String unit;
+        @Enumerated(EnumType.STRING)
+        private FuncidDataType dataType;
+        //private String origDataType;
+        private Boolean isMultiple = false;
+        private Boolean isRegion = false;
+        private String formater;
+        @Type(type = "json")
+        private ArrayNode dataSource;
+        private String note;
+        private Boolean subFlag;
+        private Boolean weakPoint;
+    }
+
 }
 

+ 9 - 3
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/FuncidDefService.java

@@ -74,7 +74,7 @@ public class FuncidDefService {
         // 二级按通用信息点、个性化信息点的excel表格进行排序展示;
         // 三级按照excel表格的逻辑进行排序展示
         list.sort((k1,k2)->{
-            if (StrUtil.isBlank(k1.getFirstTag()) && StrUtil.isBlank(k2.getFirstTag())){
+            /*if (StrUtil.isBlank(k1.getFirstTag()) && StrUtil.isBlank(k2.getFirstTag())){
                 int compareTo = StrUtil.blankToDefault(k1.getShareType(),"").compareTo(StrUtil.blankToDefault(k2.getShareType(),""));
                 if (0==compareTo) {
                     return k1.getOrderSeq().compareTo(k2.getOrderSeq());
@@ -95,7 +95,13 @@ public class FuncidDefService {
                 }
                 return compareTo;
             }
-            return firstTagSort;
+            return firstTagSort;*/
+            //2021.07.09需求修改:所有通用放在非通用后面
+            int compareTo = StrUtil.blankToDefault(k1.getShareType(),"").compareTo(StrUtil.blankToDefault(k2.getShareType(),""));
+            if (0==compareTo) {
+                return k1.getOrderSeq().compareTo(k2.getOrderSeq());
+            }
+            return -compareTo;
         });
     }
 
@@ -155,7 +161,7 @@ public class FuncidDefService {
         return list;
     }
 
-    private List<FuncidDefModel> queryWithoutClassCode(JacksonCriteria request) {
+    public List<FuncidDefModel> queryWithoutClassCode(JacksonCriteria request) {
         Map<String, FuncidDefModel> cache = new HashMap<>();
         // 预处理criteria
         classCodeUtils.prepareCriteriaForFuncid(request, "classCode");

+ 4 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/RwdeditRefTypeInfosService.java

@@ -15,6 +15,7 @@ import com.persagy.dmp.rwd.edit.entity.RwdeditRefType;
 import com.persagy.dmp.rwd.edit.entity.RwdeditRefTypeInfos;
 import com.persagy.dmp.rwd.edit.model.RwdeditRefTypeModel;
 import com.persagy.dmp.rwd.edit.repository.RwdeditRefTypeInfosRepository;
+import com.persagy.dmp.rwd.model.ClassDefModel;
 import com.persagy.dmp.rwd.model.RwdeditRefTypeInfosModel;
 import com.querydsl.core.types.dsl.BooleanExpression;
 import lombok.extern.slf4j.Slf4j;
@@ -68,6 +69,7 @@ public class RwdeditRefTypeInfosService {
             allCriteria.setCriteria(objectNode);
             allCriteria.setWithColumns(new HashSet<>(Arrays.asList("code","name","codePath")));
             allCriteria.setWithoutCount(true);
+
             PagedResponse<RwdeditRefTypeInfos> allRefTypeInfos = criteriaUtils.query(QRwdeditRefTypeInfos.rwdeditRefTypeInfos, this::parse, allCriteria);
             List<RwdeditRefTypeInfos> allRefTypeInfosData = allRefTypeInfos.getData();
             Map<String, String> nameMap = allRefTypeInfosData.stream()
@@ -88,6 +90,8 @@ public class RwdeditRefTypeInfosService {
                 model.setParentName(parentName);
                 return model;
             }).collect(Collectors.toList());
+            //增加默认排序
+            collect = collect.stream().sorted(Comparator.comparing(RwdeditRefTypeInfosModel::getSeq, Comparator.nullsLast(Integer::compareTo))).collect(Collectors.toList());
             result.setData(collect);
         }
         result.setCount(destRefTypeInfos.getCount());

+ 4 - 4
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/RwdeditRefTypeService.java

@@ -10,16 +10,14 @@ import com.persagy.dmp.rwd.edit.entity.QRwdeditRefType;
 import com.persagy.dmp.rwd.edit.entity.RwdeditRefType;
 import com.persagy.dmp.rwd.edit.model.RwdeditRefTypeModel;
 import com.persagy.dmp.rwd.edit.repository.RwdeditRefTypeRepository;
+import com.persagy.dmp.rwd.model.RwdeditRefTypeInfosModel;
 import com.querydsl.core.types.dsl.BooleanExpression;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.transaction.Transactional;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -55,6 +53,8 @@ public class RwdeditRefTypeService {
                 }
                 return model;
             }).collect(Collectors.toList());
+            //增加默认排序
+            collect = collect.stream().sorted(Comparator.comparing(RwdeditRefTypeModel::getSeq, Comparator.nullsLast(Integer::compareTo))).collect(Collectors.toList());
             result.setData(collect);
         }
         return result;

+ 15 - 12
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/UploadService.java

@@ -86,18 +86,19 @@ public class UploadService {
         info2.add(0, "classCode", "string");
         info2.add(2, "firstTag", "string");
         info2.add(3, "secondTag", "string");
-        info2.add(4, "code", "string");
-        info2.add(5, "aliasCode", "string");
-        info2.add(6, "name", "string");
-        info2.add(7, "category", "string");
-        info2.add(8, "priority", "string");
-        info2.add(9, "unit", "string");
-        info2.add(10, "dataType", "string");
-        info2.add(11, "isMultiple", "integer");
-        info2.add(12, "isRegion", "integer");
-        info2.add(13, "dataSource", "string");
-        info2.add(14, "formater", "string");
-        info2.add(15, "note", "string");
+        info2.add(4, "orderSeq", "integer");
+        info2.add(5, "code", "string");
+        info2.add(6, "aliasCode", "string");
+        info2.add(7, "name", "string");
+        info2.add(8, "category", "string");
+        info2.add(9, "priority", "string");
+        info2.add(10, "unit", "string");
+        info2.add(11, "dataType", "string");
+        info2.add(12, "isMultiple", "integer");
+        info2.add(13, "isRegion", "integer");
+        info2.add(14, "dataSource", "string");
+        info2.add(15, "formater", "string");
+        info2.add(16, "note", "string");
 
         List<List<Map<String, Object>>> result = ExcelUtils.read(file.getInputStream(), Arrays.asList(info1, info2), Arrays.asList("类型变更", "信息点变更"));
         List<ClassDefChangeRecord> classDefChangeRecordList = compareDataExcelReadClass(result.get(0));
@@ -197,6 +198,7 @@ public class UploadService {
             String classCode = MapUtils.getString(map, "classCode");
             String firstTag = MapUtils.getString(map, "firstTag");
             String secondTag = MapUtils.getString(map, "secondTag");
+            Integer orderSeq = MapUtils.getInteger(map, "orderSeq");
             String code = MapUtils.getString(map, "code");
             String aliasCode = MapUtils.getString(map, "aliasCode");
             String name = MapUtils.getString(map, "name");
@@ -321,6 +323,7 @@ public class UploadService {
             changeRecord.setNote(note);
             changeRecord.setFirstTag(firstTag);
             changeRecord.setSecondTag(secondTag);
+            changeRecord.setOrderSeq(orderSeq);
             funcidDefChangeRecordList.add(changeRecord);
         }
         return funcidDefChangeRecordList;

BIN
dmp-rwd-edit/src/main/resources/static/file/批量上传变更记录模板.xlsx


+ 36 - 0
docker/dockerfiles/dmp-admin/Dockerfile

@@ -0,0 +1,36 @@
+#构建此镜像的基础镜像
+FROM java:8-jre
+#指定作者名称
+MAINTAINER lijie<lijie@persagy.com>
+
+#定义标签属性
+LABEL tier=backend
+LABEL product=dmp
+LABEL project=dmp-admin
+LABEL name=数据中台-dmp-admin
+
+#设置环境变量
+ENV JAVA_OPTS -Dfile.encoding=UTF-8 -Xms2048m -Xmx2048m
+ENV TZ Asia/Shanghai
+#ARG 可以接收docker build命令中以--build-arg 指定的参数
+ARG WORKER_HOME
+
+#执行的命令
+RUN apt-get install -y --no-install-recommends tzdata && rm -rf /var/lib/apt/lists/*
+RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime	&& echo 'Asia/Shanghai' > /etc/timezone
+
+RUN mkdir -p $WORKER_HOME/config
+
+#复制文件到容器内
+COPY *.jar $WORKER_HOME/app.jar
+COPY entrypoint.sh $WORKER_HOME/
+COPY version.txt $WORKER_HOME/
+COPY config/* $WORKER_HOME/config/
+#设置工作目录
+WORKDIR $WORKER_HOME
+
+#查看上述复制的文件,是否复制成功
+RUN ls
+
+#启动执行
+ENTRYPOINT ["sh","./entrypoint.sh"]

+ 3 - 0
docker/dockerfiles/dmp-admin/entrypoint.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+echo "entrypoint run..."
+java -jar $JAVA_OPTS -Dcsp.sentinel.dashboard.server=$SENTINEL_DASHBOARD_SERVER -Dcsp.sentinel.api.port=$SENTINEL_LOCAL_API_PORT -Dcsp.sentinel.heartbeat.client.ip=$SENTINEL_HEARTBEAT_CLIENT_IP app.jar