Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

yaoll 4 gadi atpakaļ
vecāks
revīzija
bce8f6d3c7

+ 19 - 13
dmp-model/src/main/java/com/persagy/dmp/rwd/model/ClassDefModel.java

@@ -4,22 +4,28 @@ import com.persagy.dmp.rwd.enums.ObjType;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
+
 @Setter
 @Getter
 public class ClassDefModel {
 
-	private String id;
-	private String code;
-	private ObjType objType;
-	private String name;
-	private String aliasCode;
-	private String aliasName;
-	private String type;
-	private String groupCode;
-	private String projectId;
-	private String majorCode;
-	private String systemCode;
-	private String equipmentCode;
-	private String parentCode;
+    private String id;
+    private String code;
+    private ObjType objType;
+    private String name;
+    private String aliasCode;
+    private String aliasName;
+    private String type;
+    private String groupCode;
+    private String projectId;
+    private String majorCode;
+    private String systemCode;
+    private String equipmentCode;
+    private String parentCode;
+
+    private Integer isUsed;//状态 0.历史版本 1.使用中
+    private String version;//版本
+    private Date lastUpdateTime;//最后更新时间
 
 }

+ 31 - 25
dmp-model/src/main/java/com/persagy/dmp/rwd/model/FuncidDefModel.java

@@ -6,34 +6,40 @@ import com.persagy.dmp.rwd.enums.FuncidDataType;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
+
 @Setter
 @Getter
 public class FuncidDefModel {
 
-	private String id;
-	private String code;
-	private String origCode;
-	private String name;
-	private String aliasCode;
-	private String aliasName;
-	private String classCode;
-	private FuncidCategory category;
-	private String type;
-	private String groupCode;
-	private String projectId;
-	private String firstTag;
-	private String secondTag;
-	private String priority;
-	private String inputMode;
-	private String unit;
-	private FuncidDataType dataType;
-	private String origDataType;
-	private Boolean isMultiple;
-	private Boolean isRegion;
-	private String formater;
-	private ArrayNode dataSource;
-	private String note;
-	private Boolean subFlag;
-	private Boolean weakPoint;
+    private String id;
+    private String code;
+    private String origCode;
+    private String name;
+    private String aliasCode;
+    private String aliasName;
+    private String classCode;
+    private FuncidCategory category;
+    private String type;
+    private String groupCode;
+    private String projectId;
+    private String firstTag;
+    private String secondTag;
+    private String priority;
+    private String inputMode;
+    private String unit;
+    private FuncidDataType dataType;
+    private String origDataType;
+    private Boolean isMultiple;
+    private Boolean isRegion;
+    private String formater;
+    private ArrayNode dataSource;
+    private String note;
+    private Boolean subFlag;
+    private Boolean weakPoint;
+
+    private Integer isUsed;//状态 0.历史版本 1.使用中
+    private String version;//版本
+    private Date lastUpdateTime;//最后更新时间
 
 }

+ 62 - 50
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/ClassDef.java

@@ -4,67 +4,79 @@ import com.persagy.dmp.rwd.enums.ObjType;
 import com.persagy.dmp.rwd.model.ClassDefModel;
 import lombok.Getter;
 import lombok.Setter;
+import org.hibernate.annotations.Where;
 
 import javax.persistence.*;
+import java.util.Date;
 
 @Setter
 @Getter
 @Entity
 @Table(name = "rwd_def_class")
+@Where(clause = "is_used = 1")
 @IdClass(GroupPK.class)
 public class ClassDef {
 
-	@Id
-	private String id;
-	@Id
-	private String groupCode;
-	private String code;
-	@Enumerated(value = EnumType.STRING)
-	private ObjType objType;
-	private String name;
-	private String aliasCode;
-	private String aliasName;
-	private String type;
-	private String projectId;
-	private String majorCode;
-	private String systemCode;
-	private String equipmentCode;
-	private String parentCode;
+    @Id
+    private String id;
+    @Id
+    private String groupCode;
+    private String code;
+    @Enumerated(value = EnumType.STRING)
+    private ObjType objType;
+    private String name;
+    private String aliasCode;
+    private String aliasName;
+    private String type;
+    private String projectId;
+    private String majorCode;
+    private String systemCode;
+    private String equipmentCode;
+    private String parentCode;
+    private Integer isUsed;//使用状态 0.历史版本 1.使用中
+    private String version;//版本
+    private Date lastUpdateTime;//最后更新时间
 
-	public static ClassDef fromModel(ClassDefModel model) {
-		ClassDef entity = new ClassDef();
-		entity.setId(model.getId());
-		entity.setCode(model.getCode());
-		entity.setObjType(model.getObjType());
-		entity.setName(model.getName());
-		entity.setAliasCode(model.getAliasCode());
-		entity.setAliasName(model.getAliasName());
-		entity.setType(model.getType());
-		entity.setGroupCode(model.getGroupCode());
-		entity.setProjectId(model.getProjectId());
-		entity.setMajorCode(model.getMajorCode());
-		entity.setSystemCode(model.getSystemCode());
-		entity.setEquipmentCode(model.getEquipmentCode());
-		entity.setParentCode(model.getParentCode());
-		return entity;
-	}
+    public static ClassDef fromModel(ClassDefModel model) {
+        ClassDef entity = new ClassDef();
+        entity.setId(model.getId());
+        entity.setCode(model.getCode());
+        entity.setObjType(model.getObjType());
+        entity.setName(model.getName());
+        entity.setAliasCode(model.getAliasCode());
+        entity.setAliasName(model.getAliasName());
+        entity.setType(model.getType());
+        entity.setGroupCode(model.getGroupCode());
+        entity.setProjectId(model.getProjectId());
+        entity.setMajorCode(model.getMajorCode());
+        entity.setSystemCode(model.getSystemCode());
+        entity.setEquipmentCode(model.getEquipmentCode());
+        entity.setParentCode(model.getParentCode());
+        entity.setIsUsed(model.getIsUsed());//状态 0.历史版本 1.使用中
+        entity.setVersion(model.getVersion());//版本
+        entity.setLastUpdateTime(model.getLastUpdateTime());//发布时间
+        return entity;
+    }
 
-	public ClassDefModel toModel() {
-		ClassDefModel model = new ClassDefModel();
-		model.setId(this.getId());
-		model.setCode(this.getCode());
-		model.setObjType(this.getObjType());
-		model.setName(this.getName());
-		model.setAliasCode(this.getAliasCode());
-		model.setAliasName(this.getAliasName());
-		model.setType(this.getType());
-		model.setGroupCode(this.getGroupCode());
-		model.setProjectId(this.getProjectId());
-		model.setMajorCode(this.getMajorCode());
-		model.setSystemCode(this.getSystemCode());
-		model.setEquipmentCode(this.getEquipmentCode());
-		model.setParentCode(this.getParentCode());
-		return model;
-	}
+    public ClassDefModel toModel() {
+        ClassDefModel model = new ClassDefModel();
+        model.setId(this.getId());
+        model.setCode(this.getCode());
+        model.setObjType(this.getObjType());
+        model.setName(this.getName());
+        model.setAliasCode(this.getAliasCode());
+        model.setAliasName(this.getAliasName());
+        model.setType(this.getType());
+        model.setGroupCode(this.getGroupCode());
+        model.setProjectId(this.getProjectId());
+        model.setMajorCode(this.getMajorCode());
+        model.setSystemCode(this.getSystemCode());
+        model.setEquipmentCode(this.getEquipmentCode());
+        model.setParentCode(this.getParentCode());
+        model.setIsUsed(this.getIsUsed());//状态 0.历史版本 1.使用中
+        model.setVersion(this.getVersion());//版本
+        model.setLastUpdateTime(this.getLastUpdateTime());//发布时间
+        return model;
+    }
 
 }

+ 3 - 1
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/ClassDefChangeRecord.java

@@ -1,6 +1,7 @@
 package com.persagy.dmp.rwd.edit.entity;
 
 import com.persagy.dmp.rwd.edit.enumeration.EnumOperationType;
+import com.persagy.dmp.rwd.edit.enumeration.EnumVersionState;
 import com.persagy.dmp.rwd.enums.ObjType;
 import com.vladmihalcea.hibernate.type.json.JsonStringType;
 import lombok.Getter;
@@ -47,6 +48,7 @@ public class ClassDefChangeRecord {
     private Date publishTime;//发布时间
     private Date finishTime;//完成时间
     private Boolean valid;//true 正常 false 失效
-    private Integer state;//状态 0.取消 1.初始化 2.确认 3.发布 4.完成
+    @Enumerated
+    private EnumVersionState state;//状态 0.取消 1.初始化 2.确认 3.发布 4.完成
     private String version;//版本
 }

+ 12 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/FuncidDef.java

@@ -7,13 +7,16 @@ import com.persagy.dmp.rwd.model.FuncidDefModel;
 import lombok.Getter;
 import lombok.Setter;
 import org.hibernate.annotations.Type;
+import org.hibernate.annotations.Where;
 
 import javax.persistence.*;
+import java.util.Date;
 
 @Setter
 @Getter
 @Entity
 @Table(name = "rwd_def_funcid")
+@Where(clause = "is_used = 1")
 @IdClass(GroupPK.class)
 public class FuncidDef {
 
@@ -50,6 +53,9 @@ public class FuncidDef {
     private String note;
     private Boolean subFlag;
     private Boolean weakPoint;
+    private Integer isUsed;//状态 0.历史版本 1.使用中
+    private String version;//版本
+    private Date lastUpdateTime;//最后更新时间
 
     public static FuncidDef fromModel(FuncidDefModel model) {
         FuncidDef entity = new FuncidDef();
@@ -78,6 +84,9 @@ public class FuncidDef {
         entity.setNote(model.getNote());
         entity.setSubFlag(model.getSubFlag());
         entity.setWeakPoint(model.getWeakPoint());
+        entity.setIsUsed(model.getIsUsed());//状态 0.历史版本 1.使用中
+        entity.setVersion(model.getVersion());//版本
+        entity.setLastUpdateTime(model.getLastUpdateTime());//发布时间
         return entity;
     }
 
@@ -108,6 +117,9 @@ public class FuncidDef {
         model.setNote(this.getNote());
         model.setSubFlag(this.getSubFlag());
         model.setWeakPoint(this.getWeakPoint());
+        model.setIsUsed(this.getIsUsed());//状态 0.历史版本 1.使用中
+        model.setVersion(this.getVersion());//版本
+        model.setLastUpdateTime(this.getLastUpdateTime());//发布时间
         return model;
     }
 

+ 3 - 1
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/FuncidDefChangeRecord.java

@@ -2,6 +2,7 @@ package com.persagy.dmp.rwd.edit.entity;
 
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.persagy.dmp.rwd.edit.enumeration.EnumOperationType;
+import com.persagy.dmp.rwd.edit.enumeration.EnumVersionState;
 import com.persagy.dmp.rwd.enums.FuncidCategory;
 import com.persagy.dmp.rwd.enums.FuncidDataType;
 import com.vladmihalcea.hibernate.type.json.JsonStringType;
@@ -66,6 +67,7 @@ public class FuncidDefChangeRecord {
     private Date publishTime;//发布时间
     private Date finishTime;//完成时间
     private Boolean valid;//true 正常 false 失效
-    private Integer state;//状态 0.取消 1.初始化 2.确认 3.发布 4.完成
+    @Enumerated
+    private EnumVersionState state;//状态 0.取消 1.初始化 2.确认 3.发布 4.完成
     private String version;//版本
 }

+ 4 - 5
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/RwdeditVersion.java

@@ -1,12 +1,10 @@
 package com.persagy.dmp.rwd.edit.entity;
 
+import com.persagy.dmp.rwd.edit.enumeration.EnumVersionState;
 import lombok.Getter;
 import lombok.Setter;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 import java.util.Date;
 
 @Setter
@@ -21,6 +19,7 @@ public class RwdeditVersion {
     @Column(name = "create_time", insertable = false, updatable = false)
     private Date createTime;
     private String createUser;
-    private Integer state;
+    @Enumerated
+    private EnumVersionState state;
 
 }

+ 50 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/enumeration/EnumVersionState.java

@@ -0,0 +1,50 @@
+package com.persagy.dmp.rwd.edit.enumeration;
+
+import lombok.Getter;
+
+/**
+ * @author sagadev
+ */
+
+public enum EnumVersionState {
+
+    /**
+     * 取消
+     */
+    CANCEL(0, "取消"),
+    /**
+     * 初始化
+     */
+    INIT(1, "初始化"),
+    /**
+     * 确认
+     */
+    CONFIRM(2, "确认"),
+    /**
+     * 发布
+     */
+    PUBLISH(3, "发布"),
+    /**
+     * 完成
+     */
+    FINISH(4, "完成");
+
+    @Getter
+    private Integer value;
+    @Getter
+    private String desc;
+
+    EnumVersionState(Integer value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+
+    public static EnumVersionState getByValue(Integer value) {
+        for (EnumVersionState state : EnumVersionState.values()) {
+            if (state.getValue().equals(value)) {
+                return state;
+            }
+        }
+        return null;
+    }
+}

+ 0 - 6
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/model/ClassDefChangeRecordModel.java

@@ -2,15 +2,9 @@ package com.persagy.dmp.rwd.edit.model;
 
 import com.persagy.dmp.rwd.edit.enumeration.EnumOperationType;
 import com.persagy.dmp.rwd.enums.ObjType;
-import com.persagy.dmp.rwd.model.FuncidDefModel;
-import com.vladmihalcea.hibernate.type.json.JsonStringType;
 import lombok.Getter;
 import lombok.Setter;
-import org.hibernate.annotations.SQLDelete;
-import org.hibernate.annotations.TypeDef;
-import org.hibernate.annotations.Where;
 
-import javax.persistence.*;
 import java.util.Date;
 
 @Setter

+ 10 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/repository/ClassDefRepository.java

@@ -0,0 +1,10 @@
+package com.persagy.dmp.rwd.edit.repository;
+
+import com.persagy.dmp.rwd.edit.entity.ClassDef;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
+
+public interface ClassDefRepository extends JpaRepository<ClassDef, String>, QuerydslPredicateExecutor<ClassDef> {
+
+}
+

+ 10 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/repository/FuncidDefRepository.java

@@ -0,0 +1,10 @@
+package com.persagy.dmp.rwd.edit.repository;
+
+import com.persagy.dmp.rwd.edit.entity.FuncidDef;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
+
+public interface FuncidDefRepository extends JpaRepository<FuncidDef, String>, QuerydslPredicateExecutor<FuncidDef> {
+
+}
+

+ 101 - 80
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/ClassDefChangeRecordService.java

@@ -6,10 +6,13 @@ import com.persagy.common.criteria.JacksonCriteria;
 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.ClassDef;
 import com.persagy.dmp.rwd.edit.entity.ClassDefChangeRecord;
 import com.persagy.dmp.rwd.edit.entity.QClassDefChangeRecord;
 import com.persagy.dmp.rwd.edit.enumeration.EnumOperationType;
+import com.persagy.dmp.rwd.edit.enumeration.EnumVersionState;
 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.querydsl.core.types.dsl.BooleanExpression;
 import lombok.extern.slf4j.Slf4j;
@@ -32,6 +35,9 @@ public class ClassDefChangeRecordService {
     @Autowired
     CriteriaUtils criteriaUtils;
 
+    @Autowired
+    ClassDefRepository classDefRepository;
+
     private List<BooleanExpression> parse(ObjectNode object) {
         List<BooleanExpression> list = new LinkedList<>();
         QClassDefChangeRecord qt = QClassDefChangeRecord.classDefChangeRecord;
@@ -49,7 +55,7 @@ public class ClassDefChangeRecordService {
         list.addAll(CriteriaUtils.parse(qt.publishUser, object.get("publishUser")));
         list.addAll(CriteriaUtils.parse(qt.publishTime, object.get("publishTime")));
         list.addAll(CriteriaUtils.parse(qt.finishTime, object.get("finishTime")));
-        list.addAll(CriteriaUtils.parse(qt.state, object.get("state")));
+        list.addAll(CriteriaUtils.parse(qt.state, object.get("state"), EnumVersionState.class));
         list.addAll(CriteriaUtils.parse(qt.version, object.get("version")));
         return list;
     }
@@ -66,7 +72,7 @@ public class ClassDefChangeRecordService {
             response.setFail("code is required");
             return response;
         }
-        List<ClassDefModel> classDefList = queryClassDef(code);
+        List<ClassDefModel> classDefList = queryClassDef(code, null);
         if (EnumOperationType.create.equals(param.getOperationType())) {
             if (classDefList.size() > 0) {
                 response.setFail("code is exists");
@@ -95,7 +101,7 @@ public class ClassDefChangeRecordService {
             param.setParentCode(classDef.getParentCode());
         }
         QClassDefChangeRecord qt = QClassDefChangeRecord.classDefChangeRecord;
-        BooleanExpression ex = qt.code.eq(code).and(qt.state.eq(1)).and(qt.version.isNull());
+        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);
@@ -105,21 +111,12 @@ public class ClassDefChangeRecordService {
         param.setOperationUser(UserUtils.currentUserId() + "");
         param.setOperationTime(new Date());
         param.setValid(true);
-        param.setState(1);
+        param.setState(EnumVersionState.INIT);
         repository.save(param);
         response.add("id", param.getId());
         return response;
     }
 
-    private List<ClassDefModel> queryClassDef(String code) {
-        JacksonCriteria criteria = JacksonCriteria.newInstance();
-        criteria.add("type", "common");
-        criteria.add("code", code);
-        PagedResponse<ClassDefModel> query = classDefService.query(criteria);
-        List<ClassDefModel> data = query.getData();
-        return data;
-    }
-
     @Transactional
     public MapResponse update(ClassDefChangeRecord param) {
         MapResponse response = new MapResponse();
@@ -129,7 +126,7 @@ public class ClassDefChangeRecordService {
             return response;
         }
         ClassDefChangeRecord changeRecord = optional.get();
-        if (changeRecord.getState() == 1 && changeRecord.getVersion() == null) {
+        if (EnumVersionState.INIT.equals(changeRecord.getState()) && changeRecord.getVersion() == null) {
             if (param.getAliasCode() != null) {
                 changeRecord.setAliasCode(param.getAliasCode());
             }
@@ -137,78 +134,13 @@ public class ClassDefChangeRecordService {
                 changeRecord.setAliasName(param.getAliasName());
             }
         }
-        if (param.getState() != null) {
-            switch (param.getState()) {
-                case 2: {
-                    changeRecord.setConfirmUser(UserUtils.currentUserId() + "");
-                    changeRecord.setConfirmTime(new Date());
-                    break;
-                }
-                case 3: {
-                    changeRecord.setPublishUser(UserUtils.currentUserId() + "");
-                    changeRecord.setPublishTime(new Date());
-                    break;
-                }
-                case 4: {
-                    changeRecord.setFinishTime(new Date());
-                    break;
-                }
-                default: {
-                    break;
-                }
-            }
-        }
         repository.save(changeRecord);
         return response;
     }
 
     @Transactional
-    public void updateStateByVersion(Integer state, String version) {
-        JacksonCriteria criteria = JacksonCriteria.newInstance();
-        criteria.add("version", version);
-        PagedResponse<ClassDefChangeRecord> query = query(criteria);
-        if (query.getCount() == 0) {
-            return;
-        }
-        List<ClassDefChangeRecord> data = query.getData();
-        switch (state) {
-            case 2: {
-                for (ClassDefChangeRecord changeRecord : data) {
-                    changeRecord.setConfirmUser(UserUtils.currentUserId() + "");
-                    changeRecord.setConfirmTime(new Date());
-                }
-                break;
-            }
-            case 3: {
-                for (ClassDefChangeRecord changeRecord : data) {
-                    changeRecord.setPublishUser(UserUtils.currentUserId() + "");
-                    changeRecord.setPublishTime(new Date());
-                }
-                break;
-            }
-            case 4: {
-                for (ClassDefChangeRecord changeRecord : data) {
-                    changeRecord.setFinishTime(new Date());
-                }
-                break;
-            }
-            default: {
-                break;
-            }
-        }
-        repository.saveAll(data);
-    }
-
-    @Transactional
     public MapResponse addVersion(String version, List<Integer> idList) {
         MapResponse response = new MapResponse();
-//        JacksonCriteria criteria = JacksonCriteria.newInstance();
-//        criteria.add("version", version);
-//        Long count = rwdeditVersionService.query(criteria).getCount();
-//        if (count == 0) {
-//            response.setFail("version not exists");
-//            return response;
-//        }
         Integer num = repository.addVersion(version, idList);
         response.setMessage("update num: " + num);
         return response;
@@ -220,7 +152,7 @@ public class ClassDefChangeRecordService {
         Optional<ClassDefChangeRecord> optional = repository.findById(param.getId());
         if (optional.isPresent()) {
             ClassDefChangeRecord changeRecord = optional.get();
-            if (changeRecord.getState() != 1 || changeRecord.getVersion() != null) {
+            if (!EnumVersionState.INIT.equals(changeRecord.getState()) || changeRecord.getVersion() != null) {
                 response.setFail(changeRecord.getId() + " 不可删除!");
                 return response;
             }
@@ -304,5 +236,94 @@ public class ClassDefChangeRecordService {
         }
         return sqlList;
     }
+
+    public void updateStateByVersion(EnumVersionState state, String version) {
+        JacksonCriteria criteria = JacksonCriteria.newInstance();
+        criteria.add("version", version);
+        PagedResponse<ClassDefChangeRecord> query = query(criteria);
+        if (query.getCount() == 0) {
+            return;
+        }
+        List<ClassDefChangeRecord> data = query.getData();
+        for (ClassDefChangeRecord changeRecord : data) {
+            switch (state) {
+                case CONFIRM: {
+                    changeRecord.setConfirmUser(UserUtils.currentUserId() + "");
+                    changeRecord.setConfirmTime(new Date());
+                    changeRecord.setState(state);
+                    break;
+                }
+                case PUBLISH: {
+                    changeRecord.setPublishUser(UserUtils.currentUserId() + "");
+                    changeRecord.setPublishTime(new Date());
+                    changeRecord.setState(state);
+                    break;
+                }
+                case FINISH: {
+                    changeRecord.setFinishTime(new Date());
+                    changeRecord.setState(state);
+                    break;
+                }
+                default: {
+                    changeRecord.setState(state);
+                    break;
+                }
+            }
+        }
+        if (state == EnumVersionState.FINISH) {
+            updateClassDef(data, version);
+        }
+        repository.saveAll(data);
+    }
+
+    private void updateClassDef(List<ClassDefChangeRecord> data, String version) {
+        List<ClassDef> classDefList = new ArrayList<>();
+        List<String> codeList = new ArrayList<>();
+        data.forEach(item -> {
+            String uuid = UUID.randomUUID().toString().replace("-", "");
+            ClassDef classDef = new ClassDef();
+            classDef.setId(uuid);
+            classDef.setCode(item.getCode());
+            classDef.setObjType(item.getObjType());
+            classDef.setName(item.getName());
+            classDef.setType(item.getType());
+            classDef.setGroupCode(item.getGroupCode());
+            classDef.setProjectId(item.getProjectId());
+            classDef.setAliasCode(item.getAliasCode());
+            classDef.setAliasName(item.getAliasName());
+            classDef.setMajorCode(item.getMajorCode());
+            classDef.setSystemCode(item.getSystemCode());
+            classDef.setEquipmentCode(item.getEquipmentCode());
+            classDef.setParentCode(item.getParentCode());
+            classDef.setIsUsed(1);
+            classDef.setVersion(version);
+            classDef.setLastUpdateTime(new Date());
+            classDefList.add(classDef);
+            codeList.add(item.getCode());
+        });
+        List<ClassDefModel> classDefModelList = queryClassDef(null, codeList);
+        if (classDefModelList != null) {
+            classDefModelList.forEach(item -> {
+                item.setIsUsed(0);
+                item.setLastUpdateTime(new Date());
+                classDefList.add(ClassDef.fromModel(item));
+            });
+        }
+        classDefRepository.saveAll(classDefList);
+    }
+
+    private List<ClassDefModel> queryClassDef(String code, List<String> codeList) {
+        JacksonCriteria criteria = JacksonCriteria.newInstance();
+        criteria.add("type", "common");
+        if (code != null) {
+            criteria.add("code", code);
+        }
+        if (codeList != null) {
+            criteria.add("code").in(codeList);
+        }
+        PagedResponse<ClassDefModel> query = classDefService.query(criteria);
+        List<ClassDefModel> data = query.getData();
+        return data;
+    }
 }
 

+ 122 - 83
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/FuncidDefChangeRecordService.java

@@ -8,11 +8,14 @@ import com.persagy.common.json.JacksonMapper;
 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.FuncidDef;
 import com.persagy.dmp.rwd.edit.entity.FuncidDefChangeRecord;
 import com.persagy.dmp.rwd.edit.entity.QFuncidDefChangeRecord;
 import com.persagy.dmp.rwd.edit.entity.RwdeditRefTypeInfos;
 import com.persagy.dmp.rwd.edit.enumeration.EnumOperationType;
+import com.persagy.dmp.rwd.edit.enumeration.EnumVersionState;
 import com.persagy.dmp.rwd.edit.repository.FuncidDefChangeRecordRepository;
+import com.persagy.dmp.rwd.edit.repository.FuncidDefRepository;
 import com.persagy.dmp.rwd.enums.FuncidDataType;
 import com.persagy.dmp.rwd.model.FuncidDefModel;
 import com.querydsl.core.types.dsl.BooleanExpression;
@@ -39,6 +42,9 @@ public class FuncidDefChangeRecordService {
     @Autowired
     CriteriaUtils criteriaUtils;
 
+    @Autowired
+    FuncidDefRepository funcidDefRepository;
+
     private List<BooleanExpression> parse(ObjectNode object) {
         List<BooleanExpression> list = new LinkedList<>();
         QFuncidDefChangeRecord qt = QFuncidDefChangeRecord.funcidDefChangeRecord;
@@ -52,7 +58,7 @@ public class FuncidDefChangeRecordService {
         list.addAll(CriteriaUtils.parse(qt.publishUser, object.get("publishUser")));
         list.addAll(CriteriaUtils.parse(qt.publishTime, object.get("publishTime")));
         list.addAll(CriteriaUtils.parse(qt.finishTime, object.get("finishTime")));
-        list.addAll(CriteriaUtils.parse(qt.state, object.get("state")));
+        list.addAll(CriteriaUtils.parse(qt.state, object.get("state"), EnumVersionState.class));
         list.addAll(CriteriaUtils.parse(qt.version, object.get("version")));
         return list;
     }
@@ -75,18 +81,17 @@ public class FuncidDefChangeRecordService {
             response.setFail("classCode is required");
             return response;
         }
-        List<FuncidDefModel> funcidDefList = queryFuncidDef(code, classCode);
+        FuncidDefModel funcidDef = queryFuncidDef(code, classCode);
         if (EnumOperationType.create.equals(param.getOperationType())) {
-            if (funcidDefList.size() > 0) {
+            if (funcidDef != null) {
                 response.setFail("code is exists");
                 return response;
             }
         } else {
-            if (funcidDefList.size() == 0) {
+            if (funcidDef == null) {
                 response.setFail("code not exists");
                 return response;
             }
-            FuncidDefModel funcidDef = funcidDefList.get(0);
             param.setOrigCode(funcidDef.getOrigCode());
             param.setName(funcidDef.getName());
             if (param.getAliasCode() == null) {
@@ -122,7 +127,7 @@ public class FuncidDefChangeRecordService {
             param.setWeakPoint(funcidDef.getWeakPoint());
         }
         QFuncidDefChangeRecord qt = QFuncidDefChangeRecord.funcidDefChangeRecord;
-        BooleanExpression ex = qt.code.eq(code).and(qt.state.eq(1)).and(qt.version.isNull());
+        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);
@@ -132,22 +137,12 @@ public class FuncidDefChangeRecordService {
         param.setOperationUser(UserUtils.currentUserId() + "");
         param.setOperationTime(new Date());
         param.setValid(true);
-        param.setState(1);
+        param.setState(EnumVersionState.INIT);
         repository.save(param);
         response.add("id", param.getId());
         return response;
     }
 
-    private List<FuncidDefModel> queryFuncidDef(String code, String classCode) {
-        JacksonCriteria criteria = JacksonCriteria.newInstance();
-        criteria.add("type", "common");
-        criteria.add("code", code);
-        criteria.add("classCode", classCode);
-        PagedResponse<FuncidDefModel> query = funcidDefService.query(criteria);
-        List<FuncidDefModel> data = query.getData();
-        return data;
-    }
-
     @Transactional
     public MapResponse update(FuncidDefChangeRecord param) {
         MapResponse response = new MapResponse();
@@ -157,7 +152,7 @@ public class FuncidDefChangeRecordService {
             return response;
         }
         FuncidDefChangeRecord changeRecord = optional.get();
-        if (changeRecord.getState() == 1 && changeRecord.getVersion() == null) {
+        if (EnumVersionState.INIT.equals(changeRecord.getState()) && changeRecord.getVersion() == null) {
             if (param.getAliasCode() != null) {
                 changeRecord.setAliasCode(param.getAliasCode());
             }
@@ -173,26 +168,8 @@ public class FuncidDefChangeRecordService {
             if (param.getNote() != null) {
                 changeRecord.setNote(param.getNote());
             }
-        }
-        if (param.getState() != null) {
-            switch (param.getState()) {
-                case 2: {
-                    changeRecord.setConfirmUser(UserUtils.currentUserId() + "");
-                    changeRecord.setConfirmTime(new Date());
-                    break;
-                }
-                case 3: {
-                    changeRecord.setPublishUser(UserUtils.currentUserId() + "");
-                    changeRecord.setPublishTime(new Date());
-                    break;
-                }
-                case 4: {
-                    changeRecord.setFinishTime(new Date());
-                    break;
-                }
-                default: {
-                    break;
-                }
+            if (param.getPriority() != null) {
+                changeRecord.setPriority(param.getPriority());
             }
         }
         repository.save(changeRecord);
@@ -200,52 +177,8 @@ public class FuncidDefChangeRecordService {
     }
 
     @Transactional
-    public void updateStateByVersion(Integer state, String version) {
-        JacksonCriteria criteria = JacksonCriteria.newInstance();
-        criteria.add("version", version);
-        PagedResponse<FuncidDefChangeRecord> query = query(criteria);
-        if (query.getCount() == 0) {
-            return;
-        }
-        List<FuncidDefChangeRecord> data = query.getData();
-        switch (state) {
-            case 2: {
-                for (FuncidDefChangeRecord changeRecord : data) {
-                    changeRecord.setConfirmUser(UserUtils.currentUserId() + "");
-                    changeRecord.setConfirmTime(new Date());
-                }
-                break;
-            }
-            case 3: {
-                for (FuncidDefChangeRecord changeRecord : data) {
-                    changeRecord.setPublishUser(UserUtils.currentUserId() + "");
-                    changeRecord.setPublishTime(new Date());
-                }
-                break;
-            }
-            case 4: {
-                for (FuncidDefChangeRecord changeRecord : data) {
-                    changeRecord.setFinishTime(new Date());
-                }
-                break;
-            }
-            default: {
-                break;
-            }
-        }
-        repository.saveAll(data);
-    }
-
-    @Transactional
     public MapResponse addVersion(String version, List<Integer> idList) {
         MapResponse response = new MapResponse();
-//        JacksonCriteria criteria = JacksonCriteria.newInstance();
-//        criteria.add("version", version);
-//        Long count = rwdeditVersionService.query(criteria).getCount();
-//        if (count == 0) {
-//            response.setFail("version not exists");
-//            return response;
-//        }
         Integer num = repository.addVersion(version, idList);
         response.setMessage("update num: " + num);
         return response;
@@ -257,7 +190,7 @@ public class FuncidDefChangeRecordService {
         Optional<FuncidDefChangeRecord> optional = repository.findById(param.getId());
         if (optional.isPresent()) {
             FuncidDefChangeRecord changeRecord = optional.get();
-            if (changeRecord.getState() != 1 || changeRecord.getVersion() != null) {
+            if (!EnumVersionState.INIT.equals(changeRecord.getState()) || changeRecord.getVersion() != null) {
                 response.setFail(changeRecord.getId() + " 不可删除!");
                 return response;
             }
@@ -406,5 +339,111 @@ public class FuncidDefChangeRecordService {
         }
         return sqlList;
     }
+
+    public void updateStateByVersion(EnumVersionState state, String version) {
+        JacksonCriteria criteria = JacksonCriteria.newInstance();
+        criteria.add("version", version);
+        PagedResponse<FuncidDefChangeRecord> query = query(criteria);
+        if (query.getCount() == 0) {
+            return;
+        }
+        List<FuncidDefChangeRecord> data = query.getData();
+        for (FuncidDefChangeRecord changeRecord : data) {
+            switch (state) {
+                case CONFIRM: {
+                    changeRecord.setConfirmUser(UserUtils.currentUserId() + "");
+                    changeRecord.setConfirmTime(new Date());
+                    changeRecord.setState(state);
+                    break;
+                }
+                case PUBLISH: {
+                    changeRecord.setPublishUser(UserUtils.currentUserId() + "");
+                    changeRecord.setPublishTime(new Date());
+                    changeRecord.setState(state);
+                    break;
+                }
+                case FINISH: {
+                    changeRecord.setFinishTime(new Date());
+                    changeRecord.setState(state);
+                    break;
+                }
+                default: {
+                    changeRecord.setState(state);
+                    break;
+                }
+            }
+        }
+        if (state == EnumVersionState.FINISH) {
+            updateFuncidDef(data, version);
+        }
+        repository.saveAll(data);
+    }
+
+    private void updateFuncidDef(List<FuncidDefChangeRecord> data, String version) {
+        List<FuncidDef> funcidDefList = new ArrayList<>();
+        data.forEach(item -> {
+            String uuid = UUID.randomUUID().toString().replace("-", "");
+            FuncidDef funcidDef = new FuncidDef();
+            funcidDef.setId(uuid);
+            funcidDef.setCode(item.getCode());
+            funcidDef.setOrigCode(item.getOrigCode());
+            funcidDef.setName(item.getName());
+            funcidDef.setAliasCode(item.getAliasCode());
+            funcidDef.setAliasName(item.getAliasName());
+            funcidDef.setClassCode(item.getClassCode());
+            funcidDef.setCategory(item.getCategory());
+            funcidDef.setType(item.getType());
+            funcidDef.setGroupCode(item.getGroupCode());
+            funcidDef.setProjectId(item.getProjectId());
+            funcidDef.setFirstTag(item.getFirstTag());
+            funcidDef.setSecondTag(item.getSecondTag());
+            funcidDef.setPriority(item.getPriority());
+            funcidDef.setInputMode(item.getInputMode());
+            funcidDef.setUnit(item.getUnit());
+            funcidDef.setOrigDataType(item.getOrigDataType());
+            funcidDef.setIsMultiple(item.getIsMultiple());
+            funcidDef.setIsRegion(item.getIsRegion());
+            funcidDef.setFormater(item.getFormater());
+            funcidDef.setNote(item.getNote());
+            funcidDef.setSubFlag(item.getSubFlag());
+            funcidDef.setWeakPoint(item.getWeakPoint());
+            if (!FuncidDataType.REFENUM.equals(item.getDataType())) {
+                funcidDef.setDataType(item.getDataType());
+                funcidDef.setDataSource(item.getDataSource());
+            } else {
+                funcidDef.setDataType(FuncidDataType.ENUM);
+                ArrayNode dataSource = item.getDataSource();
+                String refKey = dataSource.get(0).get("refKey").asText();
+                JacksonCriteria queryRef = JacksonCriteria.newInstance();
+                queryRef.add("refKey", refKey);
+                List<RwdeditRefTypeInfos> refInfos = rwdeditRefTypeInfosService.query(queryRef).getData();
+                funcidDef.setDataSource(JacksonMapper.toObject(JacksonMapper.toSimpleJson(refInfos), ArrayNode.class));
+            }
+            funcidDef.setIsUsed(1);//状态 0.历史版本 1.使用中
+            funcidDef.setVersion(version);//版本
+            funcidDef.setLastUpdateTime(new Date());//发布时间
+            funcidDefList.add(funcidDef);
+            FuncidDefModel funcidDefModel = queryFuncidDef(item.getCode(), item.getClassCode());
+            if (funcidDefModel != null) {
+                funcidDefModel.setIsUsed(0);
+                funcidDefModel.setLastUpdateTime(new Date());
+                funcidDefList.add(FuncidDef.fromModel(funcidDefModel));
+            }
+        });
+        funcidDefRepository.saveAll(funcidDefList);
+    }
+
+    private FuncidDefModel queryFuncidDef(String code, String classCode) {
+        JacksonCriteria criteria = JacksonCriteria.newInstance();
+        criteria.add("type", "common");
+        criteria.add("code", code);
+        criteria.add("classCode", classCode);
+        PagedResponse<FuncidDefModel> query = funcidDefService.query(criteria);
+        List<FuncidDefModel> data = query.getData();
+        if (data != null && data.size() != 0) {
+            return data.get(0);
+        }
+        return null;
+    }
 }
 

+ 12 - 6
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/RwdeditVersionService.java

@@ -11,6 +11,7 @@ import com.persagy.dmp.rwd.edit.entity.ClassDefChangeRecord;
 import com.persagy.dmp.rwd.edit.entity.FuncidDefChangeRecord;
 import com.persagy.dmp.rwd.edit.entity.QRwdeditVersion;
 import com.persagy.dmp.rwd.edit.entity.RwdeditVersion;
+import com.persagy.dmp.rwd.edit.enumeration.EnumVersionState;
 import com.persagy.dmp.rwd.edit.repository.RwdeditVersionRepository;
 import com.querydsl.core.types.dsl.BooleanExpression;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,7 +45,7 @@ public class RwdeditVersionService {
         list.addAll(CriteriaUtils.parse(qt.version, criteria.get("version")));
         list.addAll(CriteriaUtils.parse(qt.createTime, criteria.get("createTime")));
         list.addAll(CriteriaUtils.parse(qt.createUser, criteria.get("createUser")));
-        list.addAll(CriteriaUtils.parse(qt.state, criteria.get("state")));
+        list.addAll(CriteriaUtils.parse(qt.state, criteria.get("state"), EnumVersionState.class));
         return list;
     }
 
@@ -61,7 +62,12 @@ public class RwdeditVersionService {
             response.setFail("版本编号不可为空!");
             return response;
         }
-        long count = repository.count(QRwdeditVersion.rwdeditVersion.version.eq(version));
+        long count = repository.count(QRwdeditVersion.rwdeditVersion.state.in(EnumVersionState.INIT, EnumVersionState.CONFIRM, EnumVersionState.PUBLISH));
+        if (count > 0) {
+            response.setFail("存在未发布完成版本,不可重复创建!");
+            return response;
+        }
+        count = repository.count(QRwdeditVersion.rwdeditVersion.version.eq(version));
         if (count > 0) {
             response.setFail("版本编号已存在!");
             return response;
@@ -69,7 +75,7 @@ public class RwdeditVersionService {
 
         RwdeditVersion entity = new RwdeditVersion();
         entity.setVersion(version);
-        entity.setState(1);
+        entity.setState(EnumVersionState.INIT);
         entity.setCreateTime(new Date());
         entity.setCreateUser(UserUtils.currentUserId() + "");
         repository.save(entity);
@@ -81,7 +87,7 @@ public class RwdeditVersionService {
     public MapResponse update(RwdeditVersion param) {
         MapResponse response = new MapResponse();
         String version = param.getVersion();
-        Integer state = param.getState();
+        EnumVersionState state = param.getState();
         if (version == null) {
             response.setFail("version is required");
             return response;
@@ -111,7 +117,7 @@ public class RwdeditVersionService {
     public MapResponse delete(RwdeditVersion param) {
         MapResponse response = new MapResponse();
         String version = param.getVersion();
-        Integer state = param.getState();
+        EnumVersionState state = param.getState();
         if (version == null) {
             response.setFail("version is required");
             return response;
@@ -122,7 +128,7 @@ public class RwdeditVersionService {
             return response;
         }
         RwdeditVersion rwdeditVersion = data.get();
-        if (state == 1) {
+        if (state.equals(EnumVersionState.INIT)) {
             repository.delete(rwdeditVersion);
         } else {
             JacksonCriteria criteria = JacksonCriteria.newInstance();

+ 55 - 0
dmp-rwd-edit/src/main/resources/logback-spring.xml

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+
+    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
+    <property name="log_pattern" value="%-30thread %d{yyyyMMdd HH:mm:ss.SSS} %-5level %logger{140} - %msg%n"/>
+    <property name="app_name" value="rwd-edit"/>
+    <springProperty scope="context" name="log_path" source="persagy.log.path"/>
+    <property name="log_file" value="${log_path}/${app_name}"/>
+    <contextName>${app_name}</contextName>
+
+    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <pattern>${log_pattern}</pattern>
+        </layout>
+    </appender>
+
+    <!-- 日志文件 -->
+    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log_file}-%d{yyyyMMdd}.log</fileNamePattern>
+            <maxHistory>7</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log_pattern}</pattern>
+        </encoder>
+    </appender>
+
+    <logger name="org.hibernate" level="INFO"/>
+    <logger name="org.springframework" level="INFO"/>
+    <logger name="com.netflix" level="WARN"/>
+    <logger name="org.apache.http" level="INFO"/>
+
+    <springProfile name="log-dev">
+        <logger name="org.hibernate.SQL" level="DEBUG"/>
+        <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
+        <root level="info">
+            <appender-ref ref="stdout"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="log-test">
+        <logger name="org.hibernate.SQL" level="DEBUG"/>
+        <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
+        <root level="info">
+            <appender-ref ref="file"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="log-prod">
+        <root level="info">
+            <appender-ref ref="file"/>
+        </root>
+    </springProfile>
+
+</configuration>