Browse Source

新增变更记录

linhuili 3 years ago
parent
commit
1fde69d29f

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

@@ -42,6 +42,8 @@ public class ClassDefChangeRecord {
     private EnumOperationType operationType;//操作类型
     private String operationUser;//操作人
     private Date operationTime;//操作时间
+    private String operationContentBefore; //操作内容-修改前
+    private String operationContentAfter;//操作内容-修改后
     private String confirmUser;//确认人
     private Date confirmTime;//确认时间
     private String publishUser;//发布人

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

@@ -61,6 +61,8 @@ public class FuncidDefChangeRecord {
     private EnumOperationType operationType;//操作类型
     private String operationUser;//操作人
     private Date operationTime;//操作时间
+    private String operationContentBefore; //操作内容-修改前
+    private String operationContentAfter;//操作内容-修改后
     private String confirmUser;//确认人
     private Date confirmTime;//确认时间
     private String publishUser;//发布人

+ 1 - 1
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/dto/ClassDefChangeRecordDTO.java

@@ -19,6 +19,6 @@ public class ClassDefChangeRecordDTO extends ClassDefChangeRecord {
 
     private String systemName;
 
-    private String equipClassName;
+    private String equipmentName;
 
 }

+ 1 - 1
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/dto/FuncidDefChangeRecordDTO.java

@@ -20,6 +20,6 @@ public class FuncidDefChangeRecordDTO extends FuncidDefChangeRecord {
 
     private String systemName;
 
-    private String equipClassName;
+    private String equipmentName;
 
 }

+ 48 - 3
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/ClassDefChangeRecordService.java

@@ -1,5 +1,7 @@
 package com.persagy.dmp.rwd.edit.service;
 
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.common.criteria.CriteriaUtils;
 import com.persagy.common.criteria.JacksonCriteria;
@@ -9,6 +11,7 @@ import com.persagy.common.web.PagedResponse;
 import com.persagy.dmp.rwd.edit.config.web.UserUtils;
 import com.persagy.dmp.rwd.edit.entity.ClassDef;
 import com.persagy.dmp.rwd.edit.entity.ClassDefChangeRecord;
+import com.persagy.dmp.rwd.edit.entity.FuncidDefChangeRecord;
 import com.persagy.dmp.rwd.edit.entity.QClassDefChangeRecord;
 import com.persagy.dmp.rwd.edit.entity.dto.ClassDefChangeRecordDTO;
 import com.persagy.dmp.rwd.edit.enumeration.EnumOperationType;
@@ -17,9 +20,11 @@ import com.persagy.dmp.rwd.edit.model.DtDataModel;
 import com.persagy.dmp.rwd.edit.repository.ClassDefChangeRecordRepository;
 import com.persagy.dmp.rwd.edit.repository.ClassDefRepository;
 import com.persagy.dmp.rwd.model.ClassDefModel;
+import com.persagy.dmp.rwd.model.FuncidDefModel;
 import com.querydsl.core.types.dsl.BooleanExpression;
 import io.micrometer.core.instrument.util.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;
@@ -106,7 +111,7 @@ public class ClassDefChangeRecordService {
             }
             //设置设备类名称
             if(StringUtils.isNotEmpty(item.getEquipmentCode())){
-                changeRecordDTO.setEquipClassName(classDefDataMap.get(item.getEquipmentCode()));
+                changeRecordDTO.setEquipmentName(classDefDataMap.get(item.getEquipmentCode()));
             }
             result.add(changeRecordDTO);
         });
@@ -123,6 +128,7 @@ public class ClassDefChangeRecordService {
             response.setFail("code is required");
             return response;
         }
+
         List<ClassDefModel> classDefList = queryClassDef(code, null, null);
         if (EnumOperationType.create.equals(param.getOperationType())) {
             if (classDefList.size() > 0) {
@@ -150,15 +156,17 @@ public class ClassDefChangeRecordService {
             param.setSystemCode(classDef.getSystemCode());
             param.setEquipmentCode(classDef.getEquipmentCode());
             param.setParentCode(classDef.getParentCode());
+            //添加变更记录
+            addChangeRecord(classDef, param);
         }
-        QClassDefChangeRecord qt = QClassDefChangeRecord.classDefChangeRecord;
+        /*QClassDefChangeRecord qt = QClassDefChangeRecord.classDefChangeRecord;
         BooleanExpression ex = qt.code.eq(code).and(qt.state.eq(EnumVersionState.INIT)).and(qt.version.isNull());
         Iterable<ClassDefChangeRecord> all = repository.findAll(ex);
         List<ClassDefChangeRecord> list = new ArrayList<>();
         all.forEach(list::add);
         if (list.size() > 0) {
             repository.deleteAll(list);
-        }
+        }*/
         param.setOperationUser(UserUtils.currentUserId() + "");
         param.setOperationTime(new Date());
         param.setValid(true);
@@ -401,5 +409,42 @@ public class ClassDefChangeRecordService {
         List<ClassDefModel> data = query.getData();
         return data;
     }
+
+    /**
+     * 添加变更记录
+     * @param classDef
+     * @param param
+     */
+    private void addChangeRecord(ClassDefModel classDef, ClassDefChangeRecord param){
+        Map<?, ?> beforeParamMap = new BeanMap(classDef);
+        Map<?, ?> afterParamMap = new BeanMap(param);
+
+        //比较变更记录
+        List<JSONObject> operationContentBefore = new ArrayList<>();
+        List<JSONObject> operationContentAfter = new ArrayList<>();
+        Set<?> keySets = Collections.unmodifiableSet(beforeParamMap.keySet());
+        for (Map.Entry<?, ?> afterEntry : afterParamMap.entrySet()) {
+            Object afterValue = afterEntry.getValue();
+            if(afterValue == null || "class".equals(afterEntry.getKey()) || "".equals(afterValue.toString())){
+                continue;
+            }
+            Object beforeValue = beforeParamMap.get(afterEntry.getKey());
+            if(!keySets.contains(afterEntry.getKey())){
+                continue;
+            }
+            JSONObject object = new JSONObject();
+            if(beforeValue == null || (beforeValue!=null && !afterValue.toString().equals(beforeValue.toString()))){
+                //变更前
+                object.put(afterEntry.getKey().toString(),beforeValue);
+                operationContentBefore.add(object);
+                //变更后
+                object = new JSONObject();
+                object.put(afterEntry.getKey().toString(),afterEntry.getValue());
+                operationContentAfter.add(object);
+            }
+        }
+        param.setOperationContentBefore(operationContentBefore.toString());
+        param.setOperationContentAfter(operationContentAfter.toString());
+    }
 }
 

+ 56 - 6
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/FuncidDefChangeRecordService.java

@@ -1,5 +1,6 @@
 package com.persagy.dmp.rwd.edit.service;
 
+import cn.hutool.json.JSONObject;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.common.criteria.CriteriaUtils;
@@ -24,6 +25,7 @@ import com.persagy.dmp.rwd.model.FuncidDefModel;
 import com.querydsl.core.types.dsl.BooleanExpression;
 import io.micrometer.core.instrument.util.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;
@@ -130,7 +132,9 @@ public class FuncidDefChangeRecordService {
                 if(StringUtils.isNotEmpty(classDefModel.getSystemCode())){
                     changeRecordDTO.setSystemName(classDefDataMap.get(classDefModel.getSystemCode()).getName());
                 }
-                changeRecordDTO.setEquipClassName(classDefDataMap.get(classDefModel.getCode()).getName());
+                if("equipment".equals(classDefModel.getObjType().name())){
+                    changeRecordDTO.setEquipmentName(classDefDataMap.get(classDefModel.getCode()).getName());
+                }
             }
             result.add(changeRecordDTO);
         });
@@ -187,9 +191,15 @@ public class FuncidDefChangeRecordService {
             if (param.getSecondTag() == null) {
                 param.setSecondTag(funcidDef.getSecondTag());
             }
-            param.setPriority(funcidDef.getPriority());
-            param.setInputMode(funcidDef.getInputMode());
-            param.setUnit(funcidDef.getUnit());
+            if(param.getPriority() == null){
+                param.setPriority(funcidDef.getPriority());
+            }
+            if(param.getInputMode() == null){
+                param.setInputMode(funcidDef.getInputMode());
+            }
+            if(param.getUnit() == null){
+                param.setUnit(funcidDef.getUnit());
+            }
             param.setDataType(funcidDef.getDataType());
             param.setOrigDataType(funcidDef.getOrigDataType());
             param.setIsMultiple(funcidDef.getIsMultiple());
@@ -201,15 +211,18 @@ public class FuncidDefChangeRecordService {
             }
             param.setSubFlag(funcidDef.getSubFlag());
             param.setWeakPoint(funcidDef.getWeakPoint());
+            //添加变更记录
+            addChangeRecord(funcidDef,param);
         }
-        QFuncidDefChangeRecord qt = QFuncidDefChangeRecord.funcidDefChangeRecord;
+
+        /*QFuncidDefChangeRecord qt = QFuncidDefChangeRecord.funcidDefChangeRecord;
         BooleanExpression ex = qt.code.eq(code).and(qt.state.eq(EnumVersionState.INIT)).and(qt.version.isNull());
         Iterable<FuncidDefChangeRecord> all = repository.findAll(ex);
         List<FuncidDefChangeRecord> list = new ArrayList<>();
         all.forEach(list::add);
         if (list.size() > 0) {
             repository.deleteAll(list);
-        }
+        }*/
         param.setOperationUser(UserUtils.currentUserId() + "");
         param.setOperationTime(new Date());
         param.setValid(true);
@@ -589,5 +602,42 @@ public class FuncidDefChangeRecordService {
         }
         return null;
     }
+
+    /**
+     * 添加变更记录
+     * @param funcidDef
+     * @param param
+     */
+    private void addChangeRecord(FuncidDefModel funcidDef,FuncidDefChangeRecord param){
+        Map<?, ?> beforeParamMap = new BeanMap(funcidDef);
+        Map<?, ?> afterParamMap = new BeanMap(param);
+
+        //比较变更记录
+        List<JSONObject> operationContentBefore = new ArrayList<>();
+        List<JSONObject> operationContentAfter = new ArrayList<>();
+        Set<?> keySets = Collections.unmodifiableSet(beforeParamMap.keySet());
+        for (Map.Entry<?, ?> afterEntry : afterParamMap.entrySet()) {
+            Object afterValue = afterEntry.getValue();
+            if(afterValue == null || "class".equals(afterEntry.getKey()) || "".equals(afterValue.toString())){
+                continue;
+            }
+            Object beforeValue = beforeParamMap.get(afterEntry.getKey());
+            if(!keySets.contains(afterEntry.getKey())){
+                continue;
+            }
+            JSONObject object = new JSONObject();
+            if(beforeValue == null || (beforeValue!=null && !afterValue.toString().equals(beforeValue.toString()))){
+                //变更前
+                object.put(afterEntry.getKey().toString(),beforeValue);
+                operationContentBefore.add(object);
+                //变更后
+                object = new JSONObject();
+                object.put(afterEntry.getKey().toString(),afterEntry.getValue());
+                operationContentAfter.add(object);
+            }
+        }
+        param.setOperationContentBefore(operationContentBefore.toString());
+        param.setOperationContentAfter(operationContentAfter.toString());
+    }
 }
 

+ 29 - 13
dmp-rwd-edit/数据字典编辑工具接口文档.md

@@ -32,20 +32,35 @@
 {
     "result": "success",
     "data": [
-        {
-            "id": 1,
-            "code": "project",
-            "operationType": "update",
-            "operationUser": "90000000",
-            "operationTime": 1611295200000,
+          {
+            "id": 57,
+            "code": "eq01",
+            "groupCode": "0",
+            "objType": "component",
+            "name": "eq01",
+            "aliasCode": "eq01",
+            "aliasName": "eq01",
+            "type": "common",
+            "projectId": "0",
+            "majorCode": "AC",         //专业编码
+            "systemCode": "ACVT",      //系统编码
+            "equipmentCode": "ACVTSF", //设备类编码
+            "parentCode": "component",
+            "operationType": "create",
+            "operationUser": "null",
+            "operationTime": 1617176474000,
             "confirmUser": "90000000",
-            "confirmTime": 1611295200000,
+            "confirmTime": 1620700946000,
             "publishUser": "90000000",
-            "publishTime": 1611295200000,
-            "finishTime": 1611312582000,
+            "publishTime": 1620700953000,
+            "finishTime": 1620700988000,
             "valid": true,
-            "state": 4
-        }
+            "state": "FINISH",
+            "version": "1.0.0",
+            "majorName": "空调专业",     //专业名称 (v2.0新增)
+            "systemName": "通风系统",    //系统名称 (v2.0新增)
+            "equipmentName": "通风风机"  //设备类名称 (v2.0新增)
+          }
     ],
     "count": 1
 }
@@ -303,8 +318,9 @@
 参数
 
 ```json
-    {
-    "criteria":{}
+{
+  "criteria":{
+    "showPosition":"1"  //1-知识库 2-分类体系
 }
 ```