Преглед изворни кода

fix bug:/rel-manual-calc/add不返回内容不存在的问题

lijie пре 3 година
родитељ
комит
9eda63748c

+ 2 - 0
src/main/java/com/persagy/proxy/adm/constant/AdmObjectInfoConstant.java

@@ -14,6 +14,8 @@ import java.util.Set;
 public interface AdmObjectInfoConstant {
     /** CADID图纸编码*/
     String CADID = "cadId";
+    /** CADID图纸编码*/
+    String CADID_INFO = "cADID";
     /**名称*/
     String NAME = "name";
     /**ID*/

+ 87 - 4
src/main/java/com/persagy/proxy/calculation/service/impl/AdmManualRelCalServiceImpl.java

@@ -1,11 +1,12 @@
 package com.persagy.proxy.calculation.service.impl;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
+import java.util.stream.Collectors;
 
+import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.constant.CommonConstant;
 import com.persagy.dmp.common.helper.SpringHelper;
+import com.persagy.dmp.digital.client.DigitalObjectFacade;
 import org.springframework.stereotype.Service;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -107,6 +108,44 @@ public class AdmManualRelCalServiceImpl implements AdmManualRelCalService {
                 return AdmCreateResponse.failure(request.getMainContent()+":从对象不能重复","2");
             }
         }
+        // 判断主内容重复
+        CommonResult<List<ObjectNode>> mainResult = queryMainContent(request.getType(),request.getMainContent(),relationTypeEnum.getMasterObjType());
+        if (!CommonConstant.QUERY_SUCCESS.equals(mainResult.getResult())){
+            return AdmCreateResponse.failure(mainResult.getMessage());
+        }
+        List<ObjectNode> mainResultData = mainResult.getData();
+        if (CollUtil.isEmpty(mainResultData)){
+            return AdmCreateResponse.failure(request.getMainContent()+":不存在","1");
+        }
+        if (mainResultData.size()>1){
+            return AdmCreateResponse.failure(request.getMainContent()+":存在多个实例","1");
+        }
+        // 判断从内容重复
+        CommonResult<List<ObjectNode>> fromResult = queryFromContent(request.getType(),request.getFromContent(),relationTypeEnum.getSlaveObjType());
+        if (!CommonConstant.QUERY_SUCCESS.equals(fromResult.getResult())){
+            return AdmCreateResponse.failure(fromResult.getMessage());
+        }
+        List<ObjectNode> fromResultData = fromResult.getData();
+        if (CollUtil.isEmpty(fromResultData)){
+            return AdmCreateResponse.failure(String.join(",", request.getFromContent()) +":不存在","2");
+        }
+        Map<String,List<ObjectNode>> fromMap = new HashMap<>();
+        for (ObjectNode node : fromResultData) {
+            List<ObjectNode> subList = fromMap.getOrDefault(node
+                    .get(AdmObjectInfoConstant.CADID.equals(request.getType())?AdmObjectInfoConstant.CADID_INFO:request.getType()).asText(), new ArrayList<>());
+            subList.add(node);
+            fromMap.put(node
+                    .get(AdmObjectInfoConstant.CADID.equals(request.getType())?AdmObjectInfoConstant.CADID_INFO:request.getType()).asText(),subList);
+        }
+        for (String fromContent : request.getFromContent()) {
+            if (!fromMap.containsKey(fromContent) || CollUtil.isEmpty(fromMap.get(fromContent))){
+                return AdmCreateResponse.failure(fromContent +":不存在","2");
+            }
+            if (fromMap.get(fromContent).size()>1){
+                return AdmCreateResponse.failure(fromContent +":存在多个实例","2");
+            }
+
+        }
         RequestData requestData = RequestData.builder()
                 .graphCode(relationTypeEnum.getGraphCode())
                 .relCode(relationTypeEnum.getRelCode())
@@ -289,6 +328,50 @@ public class AdmManualRelCalServiceImpl implements AdmManualRelCalService {
 
     }
     /***
+     * Description: 查询从内容
+     * @param type : 字段类型
+     * @param fromContent : 从内容
+     * @return : com.persagy.dmp.common.model.response.CommonResult<com.persagy.dmp.digital.entity.ObjectDigital>
+     * @author : lijie
+     * @date :2021/11/26 15:02
+     * Update By lijie 2021/11/26 15:02
+     */
+    private CommonResult<List<ObjectNode>> queryFromContent(String type, Set<String> fromContent,String objType) {
+        QueryCriteria queryCriteria = new QueryCriteria();
+        ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+        ObjectNode objectNode = objectMapper.createObjectNode();
+        objectNode.put(ObjectDigital.PROP_VALID,Boolean.TRUE);
+        objectNode.putPOJO(AdmObjectInfoConstant.CADID.equals(type)?AdmObjectInfoConstant.CADID_INFO:type,fromContent);
+        objectNode.put(ObjectDigital.OBJ_TYPE_HUM,objType);
+        queryCriteria.setCriteria(objectNode);
+        return DigitalObjectFacade.queryPrototype(AppContext.getContext().getGroupCode(),
+                AppContext.getContext().getProjectId(),AppContext.getContext().getAppId(),
+                AppContext.getContext().getAccountId(),queryCriteria);
+    }
+
+    /***
+     * Description: 查询主内容
+     * @param type : 字段类型
+     * @param mainContent : 主内容
+     * @return : com.persagy.dmp.common.model.response.CommonResult<com.persagy.dmp.digital.entity.ObjectDigital>
+     * @author : lijie
+     * @date :2021/11/26 15:02
+     * Update By lijie 2021/11/26 15:02
+     */
+    private CommonResult<List<ObjectNode>> queryMainContent(String type, String mainContent,String objType) {
+        QueryCriteria queryCriteria = new QueryCriteria();
+        ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+        ObjectNode objectNode = objectMapper.createObjectNode();
+        objectNode.put(ObjectDigital.PROP_VALID,Boolean.TRUE);
+        objectNode.put(AdmObjectInfoConstant.CADID.equals(type)?AdmObjectInfoConstant.CADID_INFO:type,mainContent);
+        objectNode.put(ObjectDigital.OBJ_TYPE_HUM,objType);
+        queryCriteria.setCriteria(objectNode);
+        return DigitalObjectFacade.queryPrototype(AppContext.getContext().getGroupCode(),
+                AppContext.getContext().getProjectId(),AppContext.getContext().getAppId(),
+                AppContext.getContext().getAccountId(),queryCriteria);
+    }
+
+    /***
      * Description: 删除关系
      * @param admManualRelationCalcDel : 请求参数
      * @return : com.persagy.proxy.adm.request.AdmCreateResponse