Bladeren bron

初始化状态,只保留最后一条变更记录

fengyanjie 4 jaren geleden
bovenliggende
commit
5636d9ca76

+ 4 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/ChangeRecord.java

@@ -6,8 +6,10 @@ import com.persagy.dmp.rwd.edit.model.ChangeRecordModel;
 import com.vladmihalcea.hibernate.type.json.JsonStringType;
 import lombok.Getter;
 import lombok.Setter;
+import org.hibernate.annotations.SQLDelete;
 import org.hibernate.annotations.Type;
 import org.hibernate.annotations.TypeDef;
+import org.hibernate.annotations.Where;
 
 import javax.persistence.*;
 import java.util.Date;
@@ -17,6 +19,8 @@ import java.util.Date;
 @Entity
 @Table(name = "rwd_change_record")
 @TypeDef(name = "json", typeClass = JsonStringType.class)
+@Where(clause = "valid = 1")
+@SQLDelete(sql = "update rwd_change_record set valid = 0 where id = ?")
 public class ChangeRecord {
 
     @Id

+ 33 - 11
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/ChangeRecordService.java

@@ -1,6 +1,5 @@
 package com.persagy.dmp.rwd.edit.service;
 
-import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -15,7 +14,6 @@ import com.persagy.dmp.rwd.edit.entity.ChangeRecord;
 import com.persagy.dmp.rwd.edit.entity.QChangeRecord;
 import com.persagy.dmp.rwd.edit.enumeration.EnumOperationType;
 import com.persagy.dmp.rwd.edit.repository.ChangeRecordRepository;
-import com.persagy.dmp.rwd.model.FuncidDefModel;
 import com.querydsl.core.types.dsl.BooleanExpression;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -55,7 +53,6 @@ public class ChangeRecordService {
         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.valid, object.get("valid")));
         list.addAll(CriteriaUtils.parse(qt.state, object.get("state")));
         return list;
     }
@@ -68,13 +65,30 @@ public class ChangeRecordService {
     @Transactional
     public MapResponse create(ChangeRecord param) {
         MapResponse response = new MapResponse();
+        String code = param.getCode();
+        String infoCode = param.getInfoCode();
+        if (code == null) {
+            response.setFail("code is required");
+            return response;
+        }
         if (EnumOperationType.create.equals(param.getOperationType())) {
-            Boolean isExists = isExists(param.getCode(), param.getInfoCode());
+            Boolean isExists = isExists(code, infoCode);
             if (!isExists) {
                 response.setFail("code is exists");
                 return response;
             }
         }
+        QChangeRecord qt = QChangeRecord.changeRecord;
+        BooleanExpression ex = qt.code.eq(code).and(qt.state.eq(1));
+        if (infoCode != null) {
+            ex.and(qt.infoCode.eq(infoCode));
+        }
+        Iterable<ChangeRecord> all = repository.findAll(ex);
+        List<ChangeRecord> 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);
@@ -89,28 +103,24 @@ public class ChangeRecordService {
         HttpUtils.HttpResult result;
         if (infoCode != null) {
             criteria.add("classCode", code);
+            criteria.add("code", infoCode);
             StringBuilder url = new StringBuilder(dmpServer);
             url.append("/rwd/def/funcid");
             url.append("?groupCode=0");
             result = httpUtils.post(url.toString(), JacksonMapper.toSimpleJson(criteria), 300000);
         } else {
             criteria.add("type", "common");
+            criteria.add("code", code);
             StringBuilder url = new StringBuilder(dmpServer);
             url.append("/rwd/def/funcid");
             url.append("?groupCode=0");
             result = httpUtils.post(url.toString(), JacksonMapper.toSimpleJson(criteria), 300000);
         }
         if (result.success()) {
-            List<String> codeList = new ArrayList<>();
             String content = result.getContent();
             ObjectNode object = JacksonMapper.toObject(content, ObjectNode.class);
             ArrayNode data = JacksonMapper.getArray(object, "data", JsonNodeFactory.instance.arrayNode());
-            for (JsonNode datum : data) {
-                ObjectNode funcJson = (ObjectNode) datum;
-                FuncidDefModel funcidDefModel = JacksonMapper.toObject(funcJson.toString(), FuncidDefModel.class);
-                codeList.add(funcidDefModel.getCode());
-            }
-            if (codeList.contains(infoCode) || codeList.contains(code)) {
+            if (data.size() > 0) {
                 return false;
             }
         }
@@ -160,6 +170,18 @@ public class ChangeRecordService {
         return response;
     }
 
+    public List<String> getSqlList(List<Integer> idList) {
+        List<ChangeRecord> data = repository.findAllById(idList);
+        for (ChangeRecord changeRecord : data) {
+            StringBuilder sql = new StringBuilder();
+            sql.append("update");
+            changeRecord.getValue();
+            sql.append(" where 1=1");
+            sql.append(" and code = '" + changeRecord.getCode() + "'");
+
+        }
+        return null;
+    }
 
 }