Parcourir la source

Merge remote-tracking branch 'origin/master'

linhuili il y a 3 ans
Parent
commit
ac723785c0

+ 25 - 0
dmp-model/src/main/java/com/persagy/dmp/rwd/model/RwdeditRefTypeInfosModel.java

@@ -0,0 +1,25 @@
+package com.persagy.dmp.rwd.model;
+
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import lombok.Getter;
+import lombok.Setter;
+import java.util.Date;
+import java.util.List;
+
+@Setter
+@Getter
+public class RwdeditRefTypeInfosModel {
+
+    private String refKey;
+    private String code;
+    private String name;
+    private String parentCode;
+    private ObjectNode dataSource;
+    private Integer createUser;
+    private Date createTime;
+    private Integer updateUser;
+    private Date updateTime;
+    private String parentName;
+
+}

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

@@ -34,7 +34,7 @@ public class ExcelUtils {
         } else if ("integer".equalsIgnoreCase(type)) {
             if (cellType == CellType.STRING) {
                 String stringCellValue = cell.getStringCellValue();
-                return stringCellValue == null ? null : Double.valueOf(stringCellValue).intValue();
+                return stringCellValue == null ? null : Double.valueOf(stringCellValue.trim()).intValue();
             } else if (cellType == CellType.NUMERIC) {
                 return Double.valueOf(cell.getNumericCellValue()).intValue();
             }

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

@@ -0,0 +1,518 @@
+package com.persagy.dmp.rwd.dic;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+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 com.persagy.dmp.rwd.model.RwdeditRefTypeInfosModel;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+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 ImportKnowledgeForEdit {
+
+    private String basepath = "D:\\资料\\工作资料\\原型图\\数据中台\\数据字典数据";
+
+    private String outPath = "D:/资料/工作资料/原型图/数据中台/out/ref-infos-" + DateUtils.format(new Date()) + ".dml.sql";
+
+    private final static Integer CREATE_USER_ID=0;
+    private final static Integer UPDATE_USER_ID=0;
+    private final static ObjectMapper objectMapper = new ObjectMapper();
+
+    @Test
+    public void importClassData() throws Exception {
+
+//        // 所有类型
+        List<RwdeditRefTypeInfosModel> classes = new ArrayList<>();
+
+        // 顶级类型
+        // initBaseClass(classes);
+        // 空间分区
+        // initSpace(classes);
+//        // 专业\系统\设备\部件
+//        initEquipment(classes,"major");
+//        writeFuncSqlToFile(classes, "major");
+//        classes.clear();
+//        // 工具
+//        initToolOrMaterial(classes,"tool","工具类");
+//        writeFuncSqlToFile(classes, "tool");
+//        classes.clear();
+//        // 耗材
+//        initToolOrMaterial(classes,"material","耗材类 ");
+//        writeFuncSqlToFile(classes, "material");
+//        classes.clear();
+//        // 省市区编号
+//        initCityLocation(classes,"cityLocation","省市区编号");
+//        writeFuncSqlToFile(classes, "cityLocation");
+//        classes.clear();
+        // 省市区编号
+        initCityLocation(classes,"cityLocation","省市区编号");
+        writeFuncSqlToFile(classes, "cityLocation");
+        classes.clear();
+
+
+
+
+    }
+
+    public void initCityLocation(List<RwdeditRefTypeInfosModel> models, String refKey, String sheetName) throws Exception {
+        String file = basepath + "/附表14-地域性信息表.xlsx";
+
+        FileInputStream inputStream = new FileInputStream(file);
+        Workbook workbook = new XSSFWorkbook(inputStream);
+        Sheet sheet = workbook.getSheet(sheetName);
+
+        // 行号从0开始, 从第2行开始读数据
+        int startRowNum = 2;
+        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设备名称
+            String cityCode = (String) ExcelUtils.parseCell(row.getCell(2), "string");// 市级code
+            String areaCode = (String) ExcelUtils.parseCell(row.getCell(4), "string");// 区级code
+            String name = (String) ExcelUtils.parseCell(row.getCell(5), "string");// 名称
+            Integer codeInt = (Integer)ExcelUtils.parseCell(row.getCell(6), "integer");// code
+            if (null==name || null == codeInt){
+                continue;
+            }
+            String code = codeInt.toString();
+            Double longitude = (Double) ExcelUtils.parseCell(row.getCell(7), "double");// 精度
+            Double latitude = (Double) ExcelUtils.parseCell(row.getCell(8), "double");// 维度
+            Double altitude = (Double) ExcelUtils.parseCell(row.getCell(9), "double");// 海拔
+            String climaticDivisionCode = (String) ExcelUtils.parseCell(row.getCell(10), "string");// 气候区
+            String cityDevelopmentLevelCode = (String) ExcelUtils.parseCell(row.getCell(11), "string");// 发展水平
+            RwdeditRefTypeInfosModel model = new RwdeditRefTypeInfosModel();
+            model.setRefKey(refKey);
+            model.setCode(code);
+            model.setName(name);
+            model.setParentCode(cache.equipCode);
+            if ("00".equals(cityCode) && "00".equals(areaCode)){
+                // 省
+                cache.systemCode = code;
+                cache.systemName = name;
+                model.setParentCode("-9999");
+            }
+            if (!"00".equals(cityCode) && "00".equals(areaCode)){
+                // 市
+                cache.equipCode = code;
+                cache.equipName = name;
+                model.setParentCode(cache.systemCode);
+            }
+            if (StringUtils.isNotBlank(climaticDivisionCode)){
+                cache.climaticDivisionCode = climaticDivisionCode;
+            }
+            ObjectNode objectNode = objectMapper.createObjectNode()
+                    .put("altitude", altitude)
+                    .put("latitude", latitude)
+                    .put("longitude", longitude)
+                    .put("climaticDivisionCode", cache.climaticDivisionCode)
+                    .put("cityDevelopmentLevelCode", cityDevelopmentLevelCode);
+            model.setDataSource(objectNode);
+            model.setCreateUser(CREATE_USER_ID);
+            model.setUpdateUser(UPDATE_USER_ID);
+            models.add(model);
+        }
+    }
+
+    private void writeFuncSqlToFile(List<RwdeditRefTypeInfosModel> classes,String refKey) throws IOException {
+        FileWriter writer = new FileWriter(outPath,true);
+        writer.append("delete from rwdedit_ref_type_infos where ref_key='"+refKey+"';");
+        writer.append("\n");
+        writer.append("commit;");
+        writer.append("\n");
+        for (RwdeditRefTypeInfosModel item : classes) {
+            writer.append(toSql(item));
+            writer.append("\n");
+        }
+        writer.append("commit;");
+        writer.append("\n");
+        writer.flush();
+        writer.close();
+        for (RwdeditRefTypeInfosModel type : classes) {
+            System.out.println(JacksonMapper.toSimpleJson(type));
+        }
+    }
+
+    private String toSql(RwdeditRefTypeInfosModel model) {
+        return "INSERT INTO `rwdedit_ref_type_infos`(`ref_key`, `code`, `name`, `parent_code`, `data_source`, `create_user`, `update_user`) VALUES ( " +
+                "'" + model.getRefKey() + "', " + // ref_key
+                "'" + model.getCode() + "', " + // code
+                "'" + model.getName() + "', " + // name
+                "'" + model.getParentCode() + "', " + // parent_code
+                "'" + JacksonMapper.toSimpleJson(model.getDataSource()) + "', " + // data_source
+                "" + model.getCreateUser() + ", " + // create_user
+                "" + model.getUpdateUser() + // update_user
+                ");";
+    }
+
+    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 = "系统设备部件类";
+        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 = 2;
+        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.majorCode = (String) ExcelUtils.parseCell(row.getCell(0), "string");// 专业编码
+            target.majorEnglishName = (String) ExcelUtils.parseCell(row.getCell(1), "string");// 专业英文名称
+            target.majorName = (String) ExcelUtils.parseCell(row.getCell(2), "string");// 专业名称
+            target.systemCode = (String) ExcelUtils.parseCell(row.getCell(3), "string");//系统类编码
+            target.systemEnglishName = (String) ExcelUtils.parseCell(row.getCell(4), "string");//系统类英文名称
+            target.systemName = (String) ExcelUtils.parseCell(row.getCell(5), "string");//系统类名称
+            target.equipCode = (String) ExcelUtils.parseCell(row.getCell(6), "string");//设备设施类编码
+            target.equipEnglishName = (String) ExcelUtils.parseCell(row.getCell(7), "string");//设备设施类英文名称
+            target.equipName = (String) ExcelUtils.parseCell(row.getCell(8), "string");//设备设施类名称
+            target.componentCode = (String) ExcelUtils.parseCell(row.getCell(9), "string");//部件类编码
+            target.componentEnglishName = (String) ExcelUtils.parseCell(row.getCell(10), "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.majorName = target.majorName;
+                cache.majorEnglishName = target.majorEnglishName;
+                cache.systemCode = null;
+                cache.systemName = null;
+                cache.equipCode = null;
+                cache.equipName = null;
+                cache.componentCode = null;
+                cache.componentName = null;
+            } else {
+                target.majorCode = cache.majorCode;
+                target.majorName = cache.majorName;
+                target.majorEnglishName = cache.majorEnglishName;
+            }
+            // 系统不为空
+            if (target.systemCode != null) {
+                cache.systemCode = target.systemCode;
+                cache.systemEnglishName = target.systemEnglishName;
+                cache.systemName = target.systemName;
+                cache.equipCode = null;
+                cache.equipName = null;
+                cache.componentCode = null;
+                cache.componentName = null;
+            } else {
+                target.systemCode = cache.systemCode;
+                target.systemEnglishName = cache.systemEnglishName;
+                target.systemName = cache.systemName;
+            }
+            // 设备不为空
+            if (target.equipCode != null) {
+                cache.equipCode = target.equipCode;
+                cache.equipEnglishName = target.equipEnglishName;
+                cache.equipName = target.equipName;
+                cache.componentCode = null;
+                cache.componentName = null;
+            } else {
+                target.equipCode = cache.equipCode;
+                target.equipEnglishName = cache.equipEnglishName;
+                target.equipName = cache.equipName;
+            }
+            // 部件不为空
+            if (target.componentCode != null) {
+            }
+
+            // 拼装实际的系统编码和设备编码
+            CacheModel object = new CacheModel();
+            object.majorCode = target.majorCode;
+            object.majorName = target.majorName;
+            object.majorEnglishName = target.majorEnglishName;
+            object.systemCode = target.majorCode + target.systemCode;
+            object.systemName = target.systemName;
+            object.systemEnglishName = target.systemEnglishName;
+            object.equipCode = target.majorCode + target.equipCode;
+            object.equipName = target.equipName;
+            object.equipEnglishName = target.equipEnglishName;
+            object.componentCode = target.componentCode;
+            object.componentName = target.componentName;
+            object.componentEnglishName = target.componentEnglishName;
+
+            // 判断专业是否存在
+            if (!majorCodes.contains(object.majorCode)) {
+                RwdeditRefTypeInfosModel major = new RwdeditRefTypeInfosModel();
+                major.setRefKey(refKey);
+                major.setCode(object.majorCode);
+                major.setName(object.majorName);
+                major.setParentCode("-9999");
+                major.setCreateUser(CREATE_USER_ID);
+                major.setUpdateUser(UPDATE_USER_ID);
+                major.setDataSource(objectMapper.createObjectNode().put("englishName",object.majorEnglishName));
+                models.add(major);
+                majorCodes.add(object.majorCode);
+            }
+
+            // 判断系统是否存在
+            if (!systemCodes.contains(object.systemCode)) {
+                RwdeditRefTypeInfosModel system = new RwdeditRefTypeInfosModel();
+                system.setRefKey(refKey);
+                system.setCode(object.systemCode);
+                system.setName(object.systemName);
+                system.setParentCode(object.majorCode);
+                system.setDataSource(objectMapper.createObjectNode().put("englishName",object.systemEnglishName));
+                system.setCreateUser(CREATE_USER_ID);
+                system.setUpdateUser(UPDATE_USER_ID);
+                models.add(system);
+                systemCodes.add(object.systemCode);
+            }
+
+            // 判断设备是否存在
+            if (!equipmentCodes.contains(object.equipCode)) {
+                RwdeditRefTypeInfosModel equipment = new RwdeditRefTypeInfosModel();
+                equipment.setRefKey(refKey);
+                equipment.setCode(object.equipCode);
+                equipment.setName(object.equipName);
+                equipment.setParentCode(object.systemCode);
+                equipment.setDataSource(objectMapper.createObjectNode().put("englishName",object.equipEnglishName));
+                equipment.setCreateUser(CREATE_USER_ID);
+                equipment.setUpdateUser(UPDATE_USER_ID);
+                models.add(equipment);
+                equipmentCodes.add(object.equipCode);
+            }
+            // 部件不为空
+            if (object.componentCode != null) {
+                RwdeditRefTypeInfosModel component = new RwdeditRefTypeInfosModel();
+                component.setRefKey(refKey);
+                component.setCode(object.componentCode);
+                component.setName(object.componentName);
+                component.setParentCode(object.equipCode);
+                component.setDataSource(objectMapper.createObjectNode().put("englishName",object.componentEnglishName));
+                component.setCreateUser(CREATE_USER_ID);
+                component.setUpdateUser(UPDATE_USER_ID);
+                models.add(component);
+            }
+        }
+    }
+
+    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);
+        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();
+        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.systemEnglishName = (String) ExcelUtils.parseCell(row.getCell(1), "string");// 一级分类英文名称
+            target.systemName = (String) ExcelUtils.parseCell(row.getCell(2), "string");//一级分类名称
+            target.equipCode = (String) ExcelUtils.parseCell(row.getCell(3), "string");//二级分类编码
+            target.equipEnglishName = (String) ExcelUtils.parseCell(row.getCell(4), "string");//二级分类英文名称
+            target.equipName = (String) ExcelUtils.parseCell(row.getCell(5), "string");//二级分类名称
+            target.componentCode = (String) ExcelUtils.parseCell(row.getCell(6), "string");//工具类编码
+            target.componentEnglishName = (String) ExcelUtils.parseCell(row.getCell(7), "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.systemEnglishName = target.systemEnglishName;
+                cache.equipCode = null;
+                cache.componentCode = null;
+                cache.componentName = null;
+            } else {
+                target.systemCode = cache.systemCode;
+                target.systemName = cache.systemName;
+                target.systemEnglishName = cache.systemEnglishName;
+            }
+            // 二级分类编码
+            if (target.equipCode != null) {
+                cache.equipCode = target.equipCode;
+                cache.equipName = target.equipName;
+                cache.equipEnglishName = target.equipEnglishName;
+                cache.componentCode = null;
+                cache.componentName = null;
+            } else {
+                target.equipCode = cache.equipCode;
+                target.equipName = cache.equipName;
+                target.equipEnglishName = cache.equipEnglishName;
+            }
+
+            // 拼装实际的系统编码和设备编码
+            CacheModel object = new CacheModel();
+            object.systemCode = target.systemCode;
+            object.systemName = target.systemName;
+            object.systemEnglishName = target.systemEnglishName;
+            object.equipCode = target.systemCode + target.equipCode;
+            object.equipName = target.equipName;
+            object.equipEnglishName = target.equipEnglishName;
+            object.componentCode = target.componentCode;
+            object.componentName = target.componentName;
+            object.componentEnglishName = target.componentEnglishName;
+
+            // 一级标签
+            if (object.systemCode != null && !systemCodes.contains(object.systemCode)) {
+                systemCodes.add(object.systemCode);
+                RwdeditRefTypeInfosModel component = new RwdeditRefTypeInfosModel();
+                component.setRefKey(refKey);
+                component.setCode(object.systemCode);
+                component.setName(object.systemName);
+                component.setParentCode("-9999");
+                component.setUpdateUser(UPDATE_USER_ID);
+                component.setCreateUser(CREATE_USER_ID);
+                component.setDataSource(objectMapper.createObjectNode().put("englishName",object.systemEnglishName));
+                classes.add(component);
+            }
+
+            // 二级标签
+            if (target.equipCode != null && !equipCodes.contains(object.equipCode)) {
+                equipCodes.add(object.equipCode);
+                RwdeditRefTypeInfosModel component = new RwdeditRefTypeInfosModel();
+                component.setRefKey(refKey);
+                component.setCode(object.equipCode);
+                component.setName(object.equipName);
+                component.setParentCode(object.systemCode);
+                component.setUpdateUser(UPDATE_USER_ID);
+                component.setCreateUser(CREATE_USER_ID);
+                component.setDataSource(objectMapper.createObjectNode().put("englishName",object.equipEnglishName));
+                classes.add(component);
+            }
+
+            // 工具类编码
+            if (object.componentCode != null) {
+                RwdeditRefTypeInfosModel component = new RwdeditRefTypeInfosModel();
+                component.setRefKey(refKey);
+                component.setCode(object.componentCode);
+                component.setName(object.componentName);
+                component.setParentCode(object.equipCode);
+                component.setUpdateUser(UPDATE_USER_ID);
+                component.setCreateUser(CREATE_USER_ID);
+                component.setDataSource(objectMapper.createObjectNode().put("englishName",object.componentEnglishName));
+                classes.add(component);
+            }
+        }
+    }
+
+    public static final class CacheModel {
+        String majorCode;
+        String majorEnglishName;
+        String majorName;
+        String systemCode;
+        String systemEnglishName;
+        String systemName;
+        String equipCode;
+        String equipEnglishName;
+        String equipName;
+        String componentCode;
+        String componentName;
+        String componentEnglishName;
+        String climaticDivisionCode;
+
+    }
+
+    private ClassDefModel prepareModel(String objType, String code, String name, String parentCode, String majorCode, String systemCode) {
+        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);
+        return model;
+    }
+
+}

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

@@ -5,6 +5,7 @@ import com.persagy.common.web.MapResponse;
 import com.persagy.common.web.PagedResponse;
 import com.persagy.dmp.rwd.edit.entity.RwdeditRefTypeInfos;
 import com.persagy.dmp.rwd.edit.service.RwdeditRefTypeInfosService;
+import com.persagy.dmp.rwd.model.RwdeditRefTypeInfosModel;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -19,7 +20,7 @@ public class RwdeditRefTypeInfoController {
     private RwdeditRefTypeInfosService service;
 
     @PostMapping("/query")
-    public PagedResponse<RwdeditRefTypeInfos> query(@RequestBody JacksonCriteria criteria) {
+    public PagedResponse<RwdeditRefTypeInfosModel> query(@RequestBody JacksonCriteria criteria) {
         return service.query(criteria);
     }
 

+ 14 - 4
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/RwdeditRefType.java

@@ -1,16 +1,21 @@
 package com.persagy.dmp.rwd.edit.entity;
 
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.persagy.dmp.rwd.edit.model.RwdeditRefTypeModel;
+import com.vladmihalcea.hibernate.type.json.JsonStringType;
 import lombok.Getter;
 import lombok.Setter;
-import org.hibernate.annotations.CreationTimestamp;
-import org.hibernate.annotations.GenericGenerator;
-import org.hibernate.annotations.UpdateTimestamp;
+import org.hibernate.annotations.*;
 
 import javax.persistence.*;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.Table;
 import java.util.Date;
 import java.util.List;
-
+@TypeDef(name = "json", typeClass = JsonStringType.class)
 @Setter
 @Getter
 @Entity
@@ -22,6 +27,9 @@ public class RwdeditRefType {
     @GenericGenerator(name = "assignedId", strategy = "assigned")
     private String refKey;
     private String name;
+    @Type(type = "json")
+    @Column( columnDefinition = "json" )
+    private ArrayNode extendProperties;
     @Column(updatable = false)
     private Integer createUser;
     @CreationTimestamp
@@ -45,6 +53,7 @@ public class RwdeditRefType {
         entity.setUpdateTime(model.getUpdateTime());
         entity.setCreateUser(model.getCreateUser());
         entity.setUpdateUser(model.getUpdateUser());
+        entity.setExtendProperties(model.getExtendProperties());
         entity.setSeq(model.getSeq());
         entity.setShowPosition(model.getShowPosition());
         entity.setInfos(model.getInfos());
@@ -59,6 +68,7 @@ public class RwdeditRefType {
         model.setUpdateTime(this.getUpdateTime());
         model.setCreateUser(this.getCreateUser());
         model.setUpdateUser(this.getUpdateUser());
+        model.setExtendProperties(this.getExtendProperties());
         model.setSeq(this.getSeq());
         model.setShowPosition(this.getShowPosition());
         return model;

+ 32 - 1
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/RwdeditRefTypeInfos.java

@@ -1,7 +1,7 @@
 package com.persagy.dmp.rwd.edit.entity;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.rwd.model.RwdeditRefTypeInfosModel;
 import lombok.Getter;
 import lombok.Setter;
 import org.hibernate.annotations.CreationTimestamp;
@@ -34,4 +34,35 @@ public class RwdeditRefTypeInfos {
     private Integer updateUser;
     @UpdateTimestamp
     private Date updateTime;
+
+    public static RwdeditRefTypeInfos fromModel(RwdeditRefTypeInfosModel model) {
+        RwdeditRefTypeInfos entity = new RwdeditRefTypeInfos();
+        entity.setRefKey(model.getRefKey());
+        entity.setName(model.getName());
+        entity.setCreateTime(model.getCreateTime());
+        entity.setUpdateTime(model.getUpdateTime());
+        entity.setCreateUser(model.getCreateUser());
+        entity.setUpdateUser(model.getUpdateUser());
+        entity.setCode(model.getCode());
+        entity.setParentCode(model.getParentCode());
+        entity.setDataSource(model.getDataSource());
+        return entity;
+    }
+
+    public RwdeditRefTypeInfosModel toModel() {
+        RwdeditRefTypeInfosModel model = new RwdeditRefTypeInfosModel();
+        model.setRefKey(this.getRefKey());
+        model.setName(this.getName());
+        model.setCreateTime(this.getCreateTime());
+        model.setUpdateTime(this.getUpdateTime());
+        model.setCreateUser(this.getCreateUser());
+        model.setUpdateUser(this.getUpdateUser());
+        model.setCode(this.getCode());
+        model.setParentCode(this.getParentCode());
+        model.setDataSource(this.getDataSource());
+        return model;
+    }
+
+
+
 }

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

@@ -1,5 +1,8 @@
 package com.persagy.dmp.rwd.edit.model;
 
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.rwd.edit.entity.RwdeditRefTypeInfos;
 import lombok.Getter;
 import lombok.Setter;
@@ -14,6 +17,7 @@ public class RwdeditRefTypeModel {
     private String refKey;
     private String name;
     private Integer createUser;
+    private ArrayNode extendProperties;
     private Date createTime;
     private Integer updateUser;
     private Date updateTime;

+ 2 - 1
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/FuncidDefChangeRecordService.java

@@ -20,6 +20,7 @@ import com.persagy.dmp.rwd.edit.repository.FuncidDefRepository;
 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.extern.slf4j.Slf4j;
@@ -414,7 +415,7 @@ public class FuncidDefChangeRecordService {
                         String refKey = dataSource.get(0).get("refKey").asText();
                         JacksonCriteria queryRef = JacksonCriteria.newInstance();
                         queryRef.add("refKey", refKey);
-                        List<RwdeditRefTypeInfos> refInfos = rwdeditRefTypeInfosService.query(queryRef).getData();
+                        List<RwdeditRefTypeInfosModel> refInfos = rwdeditRefTypeInfosService.query(queryRef).getData();
                         List<Map<String, Object>> list = new ArrayList<>();
                         refInfos.forEach(item -> {
                             Map<String, Object> refInfoMap = new HashMap<>();

+ 31 - 7
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/RwdeditRefTypeInfosService.java

@@ -1,5 +1,6 @@
 package com.persagy.dmp.rwd.edit.service;
 
+import cn.hutool.core.collection.CollUtil;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.common.criteria.CriteriaUtils;
 import com.persagy.common.criteria.JacksonCriteria;
@@ -7,16 +8,19 @@ import com.persagy.common.web.MapResponse;
 import com.persagy.common.web.PagedResponse;
 import com.persagy.dmp.rwd.edit.config.web.UserUtils;
 import com.persagy.dmp.rwd.edit.entity.QRwdeditRefTypeInfos;
+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.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.*;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -38,8 +42,26 @@ public class RwdeditRefTypeInfosService {
         return list;
     }
 
-    public PagedResponse<RwdeditRefTypeInfos> query(JacksonCriteria criteria) {
-        return criteriaUtils.query(QRwdeditRefTypeInfos.rwdeditRefTypeInfos, this::parse, criteria);
+    public PagedResponse<RwdeditRefTypeInfosModel> query(JacksonCriteria criteria) {
+        PagedResponse<RwdeditRefTypeInfos> destRefTypeInfos = criteriaUtils.query(QRwdeditRefTypeInfos.rwdeditRefTypeInfos, this::parse, criteria);
+        JacksonCriteria allCriteria = JacksonCriteria.newInstance();
+        allCriteria.setWithColumns(new HashSet<>(Arrays.asList("code","name")));
+        allCriteria.setWithoutCount(true);
+        PagedResponse<RwdeditRefTypeInfos> allRefTypeInfos = criteriaUtils.query(QRwdeditRefTypeInfos.rwdeditRefTypeInfos, this::parse, allCriteria);
+        List<RwdeditRefTypeInfos> allRefTypeInfosData = allRefTypeInfos.getData();
+        Map<String, String> nameMap = allRefTypeInfosData.stream()
+                .collect(Collectors.toMap(RwdeditRefTypeInfos::getCode, RwdeditRefTypeInfos::getName, (k1, k2) -> k1));
+        PagedResponse<RwdeditRefTypeInfosModel> result = new PagedResponse<>();
+        List<RwdeditRefTypeInfos> dataList = destRefTypeInfos.getData();
+        if (CollUtil.isNotEmpty(dataList)) {
+            List<RwdeditRefTypeInfosModel> collect = dataList.stream().map(entity -> {
+                RwdeditRefTypeInfosModel model = entity.toModel();
+                model.setParentName(nameMap.getOrDefault(model.getParentCode(),""));
+                return model;
+            }).collect(Collectors.toList());
+            result.setData(collect);
+        }
+        return result;
     }
 
     @Transactional
@@ -91,11 +113,13 @@ public class RwdeditRefTypeInfosService {
             response.setFail("refKey and code not exists");
             return response;
         }
-        RwdeditRefTypeInfos entity = query(criteria).getData().get(0);
+        RwdeditRefTypeInfosModel model = query(criteria).getData().get(0);
+        RwdeditRefTypeInfos entity = RwdeditRefTypeInfos.fromModel(model);
         entity.setUpdateUser(UserUtils.currentUserId());
         if (refTypeInfos.getName() != null) {
             entity.setName(refTypeInfos.getName());
         }
+
         repository.save(entity);
         return response;
     }
@@ -116,13 +140,13 @@ public class RwdeditRefTypeInfosService {
         JacksonCriteria criteria = JacksonCriteria.newInstance();
         criteria.add("refKey", refKey);
         criteria.add("code", code);
-        PagedResponse<RwdeditRefTypeInfos> query = query(criteria);
+        PagedResponse<RwdeditRefTypeInfosModel> query = query(criteria);
         Long count = query.getCount();
         if (count == 0L) {
             response.setFail("refKey and code not exists");
             return response;
         }
-        repository.delete(query.getData().get(0));
+        repository.delete(RwdeditRefTypeInfos.fromModel(query.getData().get(0)));
         return response;
     }
 }

+ 2 - 1
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/RwdeditRefTypeInfosServiceTest.java

@@ -10,6 +10,7 @@ import com.persagy.common.web.PagedResponse;
 import com.persagy.dmp.rwd.edit.entity.QRwdeditRefTypeInfos;
 import com.persagy.dmp.rwd.edit.entity.RwdeditRefTypeInfos;
 import com.persagy.dmp.rwd.edit.repository.RwdeditRefTypeInfosRepository;
+import com.persagy.dmp.rwd.model.RwdeditRefTypeInfosModel;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.InjectMocks;
@@ -42,7 +43,7 @@ class RwdeditRefTypeInfosServiceTest {
         when(mockCriteriaUtils.query(eq(new QRwdeditRefTypeInfos("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
 
         // Run the test
-        final PagedResponse<RwdeditRefTypeInfos> result = rwdeditRefTypeInfosServiceUnderTest.query(criteria);
+        final PagedResponse<RwdeditRefTypeInfosModel> result = rwdeditRefTypeInfosServiceUnderTest.query(criteria);
 
         // Verify the results
     }