Browse Source

按需求调整代码:
1、-9999改为--
2、对象间关系加一列(放在第一列)内容为:图/边
3、机电分类体系加一列(放在第一列)内容为:专业/系统/设备/部件
4、耗材分类体系与工具分类体系分别加一列(放在第一列)内容为:第一级/第二级/第三级/第四级/.....

lijie 3 years ago
parent
commit
a5e0853566

+ 6 - 0
dmp-rwd-datautils/pom.xml

@@ -65,5 +65,11 @@
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-openfeign</artifactId>
         </dependency>
+        <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.7.2</version>
+        </dependency>
     </dependencies>
 </project>

+ 2 - 1
dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/dic/ExcelUtils.java

@@ -1,5 +1,6 @@
 package com.persagy.dmp.rwd.dic;
 
+import cn.hutool.core.util.StrUtil;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellType;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -28,7 +29,7 @@ public class ExcelUtils {
         if ("string".equalsIgnoreCase(type)) {
             if (cellType == CellType.STRING) {
                 String val = cell.getStringCellValue();
-                return val == null ? null : val.trim();
+                return val == null ? null : StrUtil.removeAll(val.trim(),StrUtil.C_CR, StrUtil.C_LF, StrUtil.C_TAB);
             } else if (cellType == CellType.NUMERIC) {
                 String ss = cell.getNumericCellValue() + "";
                 if (ss.matches("^[+-]?[\\d]+([\\.][\\d]+)?([Ee][+-]?[\\d]+)?$")){

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

@@ -8,6 +8,7 @@ import com.persagy.dmp.rwd.enums.ObjType;
 import com.persagy.dmp.rwd.model.ClassDefModel;
 import com.persagy.dmp.rwd.model.RwdeditRefTypeInfosModel;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -182,6 +183,135 @@ public class ImportKnowledgeForEdit {
         initFiveLevelData(classes,"hospitalItemizedTree","S4");
         writeFuncSqlToFile(classes, "hospitalItemizedTree");
         classes.clear();
+        // 医院分项树
+        initObjectRelation(classes,"objectRelation","新版");
+        writeFuncSqlToFile(classes, "objectRelation");
+        classes.clear();
+    }
+
+    private void initObjectRelation(List<RwdeditRefTypeInfosModel> models,String refKey,String sheetName) throws IOException {
+        String classFile = basepath + "/附表3-对象间关系.xlsx";
+        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> majorCodes = new HashSet<>();
+        Set<String> equipmentCodes = new HashSet<>();
+        int startRowNum = 1;
+        int lastRowNum = sheet.getLastRowNum();
+        CacheModel cache = new CacheModel();
+        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.firstLevelName = (String) ExcelUtils.parseCell(row.getCell(0), "string");// 关系两侧对象类别
+            target.secondLevelName = (String) ExcelUtils.parseCell(row.getCell(1), "string");//图分类
+            target.thirdLevelCode = (String) ExcelUtils.parseCell(row.getCell(2), "string");//图类型编码
+            target.thirdLevelName = (String) ExcelUtils.parseCell(row.getCell(3), "string");//图类型名称
+            target.fourthLevelCode = (String) ExcelUtils.parseCell(row.getCell(4), "string");//边类型编码
+            target.fourthLevelName = (String) ExcelUtils.parseCell(row.getCell(5), "string");//边类型名称
+            String edgeDirectivity= (String) ExcelUtils.parseCell(row.getCell(6), "string");//边方向性
+            String propertyDirectivity = (String) ExcelUtils.parseCell(row.getCell(7), "string");//边属性
+            String mainObjRelation = (String) ExcelUtils.parseCell(row.getCell(8), "string");//主要连接对象
+            String remark = (String) ExcelUtils.parseCell(row.getCell(9), "string");//备注
+
+
+            // 专业不为空
+            if (target.firstLevelName != null) {
+                cache.firstLevelName = target.firstLevelName;
+                cache.secondLevelCode = null;
+                cache.secondLevelName = null;
+                cache.thirdLevelCode = null;
+                cache.thirdLevelName = null;
+                cache.fourthLevelCode = null;
+                cache.fourthLevelName = null;
+            } else {
+                target.firstLevelName = cache.firstLevelName;
+            }
+            // 系统不为空
+            if (target.secondLevelName != null) {
+                cache.secondLevelName = target.secondLevelName;
+                cache.thirdLevelCode = null;
+                cache.thirdLevelName = null;
+                cache.fourthLevelCode = null;
+                cache.fourthLevelName = null;
+            } else {
+                target.secondLevelName = cache.secondLevelName;
+            }
+            // 系统不为空
+            if (target.thirdLevelCode != null) {
+                cache.thirdLevelCode = target.thirdLevelCode;
+                cache.thirdLevelName = target.thirdLevelName;
+                cache.fourthLevelCode = null;
+                cache.fourthLevelName = null;
+            } else {
+                target.thirdLevelCode = cache.thirdLevelCode;
+                target.thirdLevelName = cache.thirdLevelName;
+            }
+
+            // 判断设备是否存在
+            if (StringUtils.isNotBlank(target.thirdLevelCode)
+                    && StringUtils.isNotBlank(target.thirdLevelName)
+                    && !equipmentCodes.contains(target.thirdLevelCode)) {
+                RwdeditRefTypeInfosModel model = new RwdeditRefTypeInfosModel();
+                model.setRefKey(refKey);
+                model.setCode(target.thirdLevelCode);
+                model.setName(target.thirdLevelName);
+                model.setParentCode("-9999");
+                model.setCodePath(refKey+"-"+target.thirdLevelCode);
+                ObjectNode dataSource = objectMapper.createObjectNode();
+                dataSource.put("imageClassification",target.secondLevelName);
+                dataSource.put("relationshipObjectCategory",target.firstLevelName);
+                dataSource.put("levelName","图");
+                model.setDataSource(dataSource);
+                model.setCreateUser(CREATE_USER_ID);
+                model.setUpdateUser(UPDATE_USER_ID);
+                models.add(model);
+                equipmentCodes.add(target.thirdLevelCode);
+            }
+            // 判断设备是否存在
+            if (StringUtils.isNotBlank(target.fourthLevelCode)
+                    && StringUtils.isNotBlank(target.fourthLevelName)
+                    && !equipmentCodes.contains(target.thirdLevelCode
+                    +"-"+target.fourthLevelCode)) {
+                RwdeditRefTypeInfosModel model = new RwdeditRefTypeInfosModel();
+                model.setRefKey(refKey);
+                model.setCode(target.fourthLevelCode);
+                model.setName(target.fourthLevelName);
+                model.setCodePath(refKey+"-"+target.thirdLevelCode+"-"+target.fourthLevelCode);
+                model.setParentCode(target.thirdLevelCode);
+                ObjectNode dataSource = objectMapper.createObjectNode();
+                dataSource.put("relationshipObjectCategory",target.firstLevelName);
+                dataSource.put("levelName","边");
+                if (StringUtils.isNotBlank(edgeDirectivity)){
+                    dataSource.put("edgeDirectivity",edgeDirectivity);
+                }
+                if (StringUtils.isNotBlank(propertyDirectivity)){
+                    dataSource.put("propertyDirectivity",propertyDirectivity);
+                }
+                if (StringUtils.isNotBlank(mainObjRelation)){
+                    dataSource.put("mainObjRelation",mainObjRelation);
+                }
+                if (StringUtils.isNotBlank(remark)){
+                    dataSource.put("remark",remark);
+                }
+                model.setDataSource(dataSource);
+                model.setCreateUser(CREATE_USER_ID);
+                model.setUpdateUser(UPDATE_USER_ID);
+                models.add(model);
+                equipmentCodes.add(target.thirdLevelCode
+                        +"-"+target.fourthLevelCode);
+            }
+        }
     }
 
     private void initSevenLevelData(List<RwdeditRefTypeInfosModel> models,String refKey,String sheetName) throws IOException {
@@ -2572,39 +2702,6 @@ public class ImportKnowledgeForEdit {
         return sb.toString();
     }
 
-    private void initBaseClass(List<ClassDefModel> classes) {
-        classes.add(prepareModel("project", "project", "项目", null, null, null));
-        classes.add(prepareModel("building", "building", "建筑", null, null, null));
-        classes.add(prepareModel("floor", "floor", "楼层", null, null, null));
-        classes.add(prepareModel("space", "space", "空间", null, null, null));
-        classes.add(prepareModel("system", "system", "系统", null, null, null));
-        classes.add(prepareModel("equipment", "equipment", "设备", null, null, null));
-        classes.add(prepareModel("component", "component", "部件", null, null, null));
-        classes.add(prepareModel("shaft", "shaft", "竖井", null, null, null));
-        classes.add(prepareModel("virtual", "virtual", "虚拟对象", null, null, null));
-        classes.add(prepareModel("tool", "tool", "工具", null, null, null));
-        classes.add(prepareModel("material", "material", "耗材", null, null, null));
-    }
-
-    private void initSpace(List<ClassDefModel> classes) {
-        classes.add(prepareModel("space", "GeneralZone", "物业分区", "space", null, null));
-        classes.add(prepareModel("space", "PowerSupplyZone", "供电分区", "space", null, null));
-        classes.add(prepareModel("space", "LightingZone", "照明分区", "space", null, null));
-        classes.add(prepareModel("space", "NetworkZone", "网络分区", "space", null, null));
-        classes.add(prepareModel("space", "AirConditioningZone", "空调分区", "space", null, null));
-        classes.add(prepareModel("space", "HeatingZone", "采暖分区", "space", null, null));
-        classes.add(prepareModel("space", "CleanZone", "洁净分区", "space", null, null));
-        classes.add(prepareModel("space", "DomesticWaterSupplyZone", "生活给水分区", "space", null, null));
-        classes.add(prepareModel("space", "FireZone", "防火分区", "space", null, null));
-        classes.add(prepareModel("space", "SecurityZone", "安防分区", "space", null, null));
-        classes.add(prepareModel("space", "TenantZone", "租户分区", "space", null, null));
-        classes.add(prepareModel("space", "FunctionZone", "功能分区", "space", null, null));
-        classes.add(prepareModel("space", "PassengerFlowZone", "客流分区", "space", null, null));
-        classes.add(prepareModel("space", "OtherZone", "其他分区", "space", null, null));
-        classes.add(prepareModel("space", "EvacuateZone", "疏散分区", "space", null, null));
-        classes.add(prepareModel("space", "EnvironmentZone", "环境分区", "space", null, null));
-    }
-
     private void initEquipment(List<RwdeditRefTypeInfosModel> models,String refKey) throws IOException {
         String classFile = basepath + "/附表1-机电精装类对象分类体系.xlsx";
         String sheetName = "系统设备部件类";
@@ -2715,7 +2812,9 @@ public class ImportKnowledgeForEdit {
                 model.setCodePath(refKey+"-"+target.majorCode);
                 model.setCreateUser(CREATE_USER_ID);
                 model.setUpdateUser(UPDATE_USER_ID);
-                model.setDataSource(objectMapper.createObjectNode().put("englishName",object.majorEnglishName));
+                ObjectNode dataSource = objectMapper.createObjectNode().put("englishName", object.majorEnglishName);
+                dataSource.put("levelName","专业");
+                model.setDataSource(dataSource);
                 models.add(model);
                 majorCodes.add(object.majorCode);
             }
@@ -2728,7 +2827,9 @@ public class ImportKnowledgeForEdit {
                 model.setName(object.systemName);
                 model.setParentCode(object.majorCode);
                 model.setCodePath(refKey+"-"+target.majorCode+"-"+target.systemCode);
-                model.setDataSource(objectMapper.createObjectNode().put("englishName",object.systemEnglishName));
+                ObjectNode dataSource = objectMapper.createObjectNode().put("englishName", object.systemEnglishName);
+                dataSource.put("levelName","系统");
+                model.setDataSource(dataSource);
                 model.setCreateUser(CREATE_USER_ID);
                 model.setUpdateUser(UPDATE_USER_ID);
                 models.add(model);
@@ -2743,7 +2844,9 @@ public class ImportKnowledgeForEdit {
                 model.setName(object.equipName);
                 model.setParentCode(object.systemCode);
                 model.setCodePath(refKey+"-"+target.majorCode+"-"+target.systemCode+"-"+target.equipCode);
-                model.setDataSource(objectMapper.createObjectNode().put("englishName",object.equipEnglishName));
+                ObjectNode dataSource = objectMapper.createObjectNode().put("englishName", object.equipEnglishName);
+                dataSource.put("levelName","设备");
+                model.setDataSource(dataSource);
                 model.setCreateUser(CREATE_USER_ID);
                 model.setUpdateUser(UPDATE_USER_ID);
                 models.add(model);
@@ -2757,7 +2860,9 @@ public class ImportKnowledgeForEdit {
                 model.setName(object.componentName);
                 model.setParentCode(object.equipCode);
                 model.setCodePath(refKey+"-"+target.majorCode+"-"+target.systemCode+"-"+target.equipCode+"-"+target.componentCode);
-                model.setDataSource(objectMapper.createObjectNode().put("englishName",object.componentEnglishName));
+                ObjectNode dataSource = objectMapper.createObjectNode().put("englishName", object.componentEnglishName);
+                dataSource.put("levelName","部件");
+                model.setDataSource(dataSource);
                 model.setCreateUser(CREATE_USER_ID);
                 model.setUpdateUser(UPDATE_USER_ID);
                 models.add(model);
@@ -2765,18 +2870,6 @@ public class ImportKnowledgeForEdit {
         }
     }
 
-    private void initVirtual(List<ClassDefModel> classes) {
-        classes.add(prepareModel("virtual", "VOEm", "能耗模型", "virtual", null, null));
-        classes.add(prepareModel("virtual", "VOSe", "分项", "virtual", null, null));
-//        classes.add(prepareModel("virtual", "VOBr", "支路", "virtual", null, null));
-        classes.add(prepareModel("virtual", "VOBc", "信标", "virtual", null, null));
-        classes.add(prepareModel("virtual", "VOTn", "租户", "virtual", null, null));
-        classes.add(prepareModel("virtual", "VOWs", "工作历", "virtual", null, null));
-        classes.add(prepareModel("virtual", "VoBl", "集团", "virtual", null, null));
-        classes.add(prepareModel("virtual", "VOZn", "空间组合", "virtual", null, null));
-        classes.add(prepareModel("virtual", "VOGp", "设备设施组合", "virtual", null, null));
-    }
-
     private void initToolOrMaterial(List<RwdeditRefTypeInfosModel> classes,String refKey,String sheetName) throws IOException {
         String classFile = basepath + "/附表2-耗材工具类对象分类体系.xlsx";
         FileInputStream inputStream = new FileInputStream(classFile);
@@ -2862,7 +2955,9 @@ public class ImportKnowledgeForEdit {
                 model.setCodePath(refKey+"-"+target.systemCode);
                 model.setUpdateUser(UPDATE_USER_ID);
                 model.setCreateUser(CREATE_USER_ID);
-                model.setDataSource(objectMapper.createObjectNode().put("englishName",object.systemEnglishName));
+                ObjectNode dataSource = objectMapper.createObjectNode().put("englishName", object.systemEnglishName);
+                dataSource.put("levelName","第一级");
+                model.setDataSource(dataSource);
                 classes.add(model);
             }
 
@@ -2877,7 +2972,9 @@ public class ImportKnowledgeForEdit {
                 model.setCodePath(refKey+"-"+target.systemCode+"-"+target.equipCode);
                 model.setUpdateUser(UPDATE_USER_ID);
                 model.setCreateUser(CREATE_USER_ID);
-                model.setDataSource(objectMapper.createObjectNode().put("englishName",object.equipEnglishName));
+                ObjectNode dataSource = objectMapper.createObjectNode().put("englishName", object.equipEnglishName);
+                dataSource.put("levelName","第二级");
+                model.setDataSource(dataSource);
                 classes.add(model);
             }
 
@@ -2891,7 +2988,9 @@ public class ImportKnowledgeForEdit {
                 model.setCodePath(refKey+"-"+target.systemCode+"-"+target.equipCode+"-"+target.componentCode);
                 model.setUpdateUser(UPDATE_USER_ID);
                 model.setCreateUser(CREATE_USER_ID);
-                model.setDataSource(objectMapper.createObjectNode().put("englishName",object.componentEnglishName));
+                ObjectNode dataSource = objectMapper.createObjectNode().put("englishName", object.componentEnglishName);
+                dataSource.put("levelName","第三级");
+                model.setDataSource(dataSource);
                 classes.add(model);
             }
         }

+ 5 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/RwdeditRefType.java

@@ -30,6 +30,9 @@ public class RwdeditRefType {
     @Type(type = "json")
     @Column( columnDefinition = "json" )
     private ArrayNode extendProperties;
+    @Type(type = "json")
+    @Column( columnDefinition = "json" )
+    private ArrayNode showProperties;
     @Column(updatable = false)
     private Integer createUser;
     @CreationTimestamp
@@ -54,6 +57,7 @@ public class RwdeditRefType {
         entity.setCreateUser(model.getCreateUser());
         entity.setUpdateUser(model.getUpdateUser());
         entity.setExtendProperties(model.getExtendProperties());
+        entity.setShowProperties(model.getShowProperties());
         entity.setSeq(model.getSeq());
         entity.setShowPosition(model.getShowPosition());
         entity.setInfos(model.getInfos());
@@ -69,6 +73,7 @@ public class RwdeditRefType {
         model.setCreateUser(this.getCreateUser());
         model.setUpdateUser(this.getUpdateUser());
         model.setExtendProperties(this.getExtendProperties());
+        model.setShowProperties(this.getShowProperties());
         model.setSeq(this.getSeq());
         model.setShowPosition(this.getShowPosition());
         return model;

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

@@ -16,6 +16,7 @@ public class RwdeditRefTypeModel {
     private String name;
     private Integer createUser;
     private ArrayNode extendProperties;
+    private ArrayNode showProperties;
     private Date createTime;
     private Integer updateUser;
     private Date updateTime;

+ 11 - 2
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/RwdeditRefTypeInfosService.java

@@ -75,8 +75,17 @@ public class RwdeditRefTypeInfosService {
                             .toMap(RwdeditRefTypeInfos::getCodePath, RwdeditRefTypeInfos::getName, (k1, k2) -> k1));
             List<RwdeditRefTypeInfosModel> collect = dataList.stream().map(entity -> {
                 RwdeditRefTypeInfosModel model = entity.toModel();
-                model.setParentName(nameMap
-                        .getOrDefault(entity.getCodePath().substring(0,entity.getCodePath().lastIndexOf("-")),""));
+                ObjectNode dataSource = entity.getDataSource();
+                if (null==dataSource){
+                    dataSource = JacksonCriteria.newInstance().getCriteria();
+                }
+                String parentName = nameMap.getOrDefault(entity.getCodePath().substring(0, entity.getCodePath().lastIndexOf("-")), "");
+                dataSource.put("code",entity.getCode());
+                dataSource.put("name",entity.getName());
+                dataSource.put("parentCode",entity.getParentCode());
+                dataSource.put("parentName",parentName);
+                model.setDataSource(dataSource);
+                model.setParentName(parentName);
                 return model;
             }).collect(Collectors.toList());
             result.setData(collect);