Explorar o código

创建信息点/类型时判断数据是否已存在

fengyanjie %!s(int64=4) %!d(string=hai) anos
pai
achega
e00720ff06

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

@@ -11,10 +11,8 @@ import org.apache.shiro.mgt.SecurityManager;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.client.SpringCloudApplication;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.annotation.Bean;
-import org.springframework.core.env.ConfigurableEnvironment;
 
 import javax.persistence.EntityManager;
 

+ 55 - 4
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/ChangeRecordService.java

@@ -1,36 +1,47 @@
 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;
 import com.persagy.common.criteria.CriteriaUtils;
 import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.json.JacksonMapper;
 import com.persagy.common.web.MapResponse;
 import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.common.http.HttpUtils;
 import com.persagy.dmp.rwd.edit.config.web.UserUtils;
 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;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.actuate.endpoint.OperationType;
 import org.springframework.stereotype.Service;
 
 import javax.transaction.Transactional;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.*;
 
 @Slf4j
 @Service
 public class ChangeRecordService {
 
+    @Value("${persagy.dmp.server}")
+    private String dmpServer;
+
     @Autowired
     ChangeRecordRepository repository;
 
     @Autowired
     CriteriaUtils criteriaUtils;
 
+    @Autowired
+    HttpUtils httpUtils;
+
     private List<BooleanExpression> parse(ObjectNode object) {
         List<BooleanExpression> list = new LinkedList<>();
         QChangeRecord qt = QChangeRecord.changeRecord;
@@ -58,6 +69,13 @@ public class ChangeRecordService {
     @Transactional
     public MapResponse create(ChangeRecord param) {
         MapResponse response = new MapResponse();
+        if (EnumOperationType.create.equals(param.getOperationType())) {
+            Boolean isExists = isExists(param.getCode(), param.getInfoCode());
+            if(!isExists){
+                response.setFail("code is exists");
+                return response;
+            }
+        }
         param.setOperationUser(UserUtils.currentUserId() + "");
         param.setOperationTime(new Date());
         param.setValid(true);
@@ -67,6 +85,39 @@ public class ChangeRecordService {
         return response;
     }
 
+    private Boolean isExists(String code, String infoCode) {
+        JacksonCriteria criteria = JacksonCriteria.newInstance();
+        HttpUtils.HttpResult result;
+        if (infoCode != null) {
+            criteria.add("classCode", code);
+            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");
+            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)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
     @Transactional
     public MapResponse update(ChangeRecord param) {
         MapResponse response = new MapResponse();