Browse Source

Merge branch 'develop' of http://39.106.8.246:3003/BDTP/adm-middleware.git into develop

zhangqiankun 3 years ago
parent
commit
52ce662062

+ 0 - 2
src/main/java/com/persagy/proxy/adm/controller/AdmEquipShaftController.java

@@ -67,8 +67,6 @@ public class AdmEquipShaftController {
         request.setName(AdmEquipment.OBJ_TYPE);
         // 设置关系条件
         request.resetRelationCond(true, "MechInArch", "Eq2Sh", shaftId, false);
-        // TODO 级别获取设备类别对象未处理,再单独查一次即可
-
         return equipmentService.doQuery(AdmContextUtil.toDmpContext(), request, AdmEquipment.class);
     }
 

+ 7 - 12
src/main/java/com/persagy/proxy/adm/controller/RelationSyInSpController.java

@@ -22,10 +22,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -100,9 +97,9 @@ public class RelationSyInSpController {
      */
     @PostMapping(value = "/link-sy-sps")
     public AdmResponse createSySps( @RequestBody JSONObject param) {
-        JSONObject rSyIn = param.getJSONObject("rSyInSpBase");
+        //JSONObject rSyIn = param.getJSONObject("rSyInSpBase");
         String type = param.getString("type");
-        SyInSpBaseList  syInSpBaseList= JSON.toJavaObject(rSyIn, SyInSpBaseList.class);
+        SyInSpBaseList  syInSpBaseList= JSON.toJavaObject(param, SyInSpBaseList.class);
         List<String> spaceIdList = syInSpBaseList.getSpaceIdList();
         String sysId = syInSpBaseList.getSysId();
         List<RelationDTO> voList = new ArrayList<>();
@@ -127,11 +124,10 @@ public class RelationSyInSpController {
      * @return 删除的结果信息
      */
     @PostMapping("/unlink-list")
-    public AdmResponse delete(@RequestBody JSONObject param) {
-        JSONArray jsonArray = param.getJSONArray("rSyInSpBase");
-        List<SyInSpBase> syInSpBases = JSONArray.parseArray(jsonArray.toJSONString(),SyInSpBase.class);
-        String type = param.getString("type");
-//        String type = deleteSyInSpBase.getType();
+    public AdmResponse delete(@RequestParam(value = "type",required = false) String type, @RequestBody JSONArray param) {
+        //JSONArray jsonArray = param.getJSONArray("rSyInSpBase");
+        List<SyInSpBase> syInSpBases = JSONArray.parseArray(param.toJSONString(),SyInSpBase.class);
+        //String type = param.getString("type");
         AdmRelationTypeEnum typeEnum = AdmRelationTypeEnum.SY2SP;
         String graphCode = typeEnum.getGraphCode();
         String relCode = typeEnum.getRelCode();
@@ -149,7 +145,6 @@ public class RelationSyInSpController {
             ObjectNode node = JsonNodeFactory.instance.objectNode();
             node.put("graphCode", graphCode);
             node.put("relCode", relCode);
-            node.put("relValue", type);
             node.put("objFrom", sysId);
             node.put("objTo", spaceId);
             criteria.setCriteria(node);

+ 2 - 0
src/main/java/com/persagy/proxy/adm/model/AdmDefFuncIdGather.java

@@ -23,4 +23,6 @@ public class AdmDefFuncIdGather {
     private Boolean visible;
     /** 采集类型 type-common 通用 type-project 项目级 */
     private String type;
+
+    private Boolean keyWord;
 }

+ 1 - 1
src/main/java/com/persagy/proxy/adm/model/AdmSpace.java

@@ -108,7 +108,7 @@ public class AdmSpace extends AdmSBaseEntity<AdmSpace>{
     @CascadeColumn(graphCode = "MechInArch", relCode = "Sp2Si")
     private List<AdmISpace> zoneIspace;
     /** 级联-系统 */
-    @CascadeColumn(graphCode = "MechForArch", relCode = "Sy2Sp", selectToObj = false)
+    @CascadeColumn(graphCode = "MechInArch", relCode = "Sy2Sp", selectToObj = false)
     private List<AdmSystem> generalSystem;
     /** 级联-服务于空间的设备 */
     @CascadeColumn(graphCode = "MechForArch", relCode = "Eq2Sp", selectToObj = false)

+ 3 - 3
src/main/java/com/persagy/proxy/adm/request/AdmQueryCriteria.java

@@ -1,13 +1,12 @@
 package com.persagy.proxy.adm.request;
 
-import java.util.List;
-
 import com.fasterxml.jackson.annotation.JsonAlias;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * ADM通用查询条件
  * @author Charlie Yu
@@ -30,6 +29,7 @@ public class AdmQueryCriteria {
     /** 去除重复记录 */
     private Boolean distinct;
     /** 级联对象属性名 - 为级联对象时有值 */
+    @JsonAlias(value = {"name", "Name"})
     private String name;
     /** 字段影射,空为查询所有字段 */
     private List<String> projection;

+ 3 - 0
src/main/java/com/persagy/proxy/adm/service/impl/AdmDictServiceImpl.java

@@ -16,6 +16,7 @@ import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.IAdmDictService;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
+import lombok.EqualsAndHashCode;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Service;
@@ -32,6 +33,7 @@ import java.util.stream.Collectors;
  **/
 @Slf4j
 @Service
+@EqualsAndHashCode(callSuper=true)
 public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> implements IAdmDictService<T> {
 
     /**
@@ -276,6 +278,7 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
             infoCollect.setClassCode(funcIdGather.getClassCode());
             infoCollect.setCode(funcIdGather.getCode());
             infoCollect.setVisiable(funcIdGather.getVisible());
+            infoCollect.setKeyWord(funcIdGather.getKeyWord());
             list.add((T) infoCollect);
         }
         //设置采集信息点

+ 7 - 1
src/main/java/com/persagy/proxy/adm/service/impl/AdmFloorServiceImpl.java

@@ -26,7 +26,13 @@ import java.util.List;
 public class AdmFloorServiceImpl extends AbstractAdmBaseServiceImpl<AdmFloor> implements IAdmFloorService {
     @Autowired
     private ObjectMapper objectMapper;
-
+    @Override
+    public AdmResponse doQuery(InstanceUrlParam context, AdmQueryCriteria request, Class<AdmFloor> clazz) {
+        AdmResponse response = super.doQuery(context, request, clazz);
+        // 处理properteies 特殊属性
+        ensureSpecialValues(context, (List<AdmFloor>) response.getContent(), true);
+        return response;
+    }
     @Override
     public AdmResponse doQueryOutLine(InstanceUrlParam context, AdmQueryCriteria request, Class<AdmFloor> clazz) {
         request.setProjection(null);

+ 24 - 4
src/main/java/com/persagy/proxy/adm/service/impl/AdmSpaceServiceImpl.java

@@ -19,6 +19,7 @@ import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.IAdmEquipmentService;
 import com.persagy.proxy.adm.service.IAdmRelationService;
 import com.persagy.proxy.adm.service.IAdmSpaceService;
+import com.persagy.proxy.adm.service.IAdmSystemService;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
 import com.persagy.proxy.common.client.DmpRwdClient;
 import com.persagy.proxy.common.entity.DmpResult;
@@ -46,7 +47,9 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
     @Autowired
     private IAdmRelationService relationService;
     @Autowired
-    protected IAdmEquipmentService equipmentService;
+    private IAdmEquipmentService equipmentService;
+    @Autowired
+    private IAdmSystemService systemService;
 
     @Override
     public AdmResponse doQuery(InstanceUrlParam context, AdmQueryCriteria request, Class<AdmSpace> clazz) {
@@ -187,17 +190,34 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
         if(CollUtil.isEmpty(vos)) {
             return;
         }
-        // 给系统赋值 - 同时收集设备对象,扩展设备对象赋值
+        // 1. 收集空间的设备对象,扩展设备对象赋值
         List<AdmEquipment> equipmentList = new ArrayList<>();
         for(AdmSpace vo:vos) {
             // 收集设备对象
-            if(CollUtil.isEmpty(vo.getEquipment())) {
+            if(CollUtil.isEmpty(vo.getEquipment()) && CollUtil.isEmpty(vo.getEquipmentFor())) {
                 continue;
             }
-            equipmentList.addAll(vo.getEquipment());
+            if(CollUtil.isNotEmpty(vo.getEquipment())) {
+                equipmentList.addAll(vo.getEquipment());
+            }
+            if(CollUtil.isNotEmpty(vo.getEquipmentFor())) {
+                equipmentList.addAll(vo.getEquipmentFor());
+            }
         }
         // 对象扩展属性赋值
         equipmentService.ensureSpecialValues(context, equipmentList);
+
+        //2.收集空间的系统 扩展系统、及系统下设备对象赋值
+        List<AdmSystem> admSystemList = new ArrayList<>();
+        for(AdmSpace vo:vos) {
+            // 收集设备对象
+            if(CollUtil.isEmpty(vo.getGeneralSystem())) {
+                continue;
+            }
+            admSystemList.addAll(vo.getGeneralSystem());
+        }
+        // 对象扩展属性赋值
+        systemService.ensureSpecialValues(context, admSystemList);
     }
 
     @Override

+ 3 - 0
src/main/java/com/persagy/proxy/adm/utils/AdmEntityTransferUtil.java

@@ -119,6 +119,9 @@ public class AdmEntityTransferUtil {
         if(CollUtil.isNotEmpty(projection)) {
             // 转换为Set,提供遍历效率
             Set<String> fieldSet = CollUtil.newHashSet(projection);
+            if(fieldSet.contains("localID")){//兼容adm前端数据
+                fieldSet.add("localId");
+            }
             Iterator<String> fields =  dmpData.fieldNames();
             while (fields.hasNext()) {
                 String field = fields.next();

+ 37 - 33
src/main/java/com/persagy/proxy/adm/utils/AdmQueryCriteriaHelper.java

@@ -1,5 +1,6 @@
 package com.persagy.proxy.adm.utils;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.StrUtil;
@@ -30,7 +31,7 @@ public class AdmQueryCriteriaHelper {
     /** 条件匹配字符串 */
     public static final String[] COND_STR = {" = "," != "," > "," >= "," < "," <= "," in "," isnull "," contain "," startwith "," endwith "};
     /** 条件匹配字符串 根据ADM实际调用查看,去掉空格*/
-    public static final String[] COND_STR_TRIM = {"=","!=",">",">=","<","<=","in","isnull","contain","startwith","endwith"};
+    public static final String[] COND_STR_TRIM = {"=","!=",">",">=","<","<=","contain","in","isnull","startwith","endwith"};
     /** 需要替换的字段对照 Map<AdmQueryCriteria.name, Map<AdmFieldName, DmpFieldName> */
     public static Map<String, Map<String, String>> RENAME_MAP = new HashMap<>(16);
     /** 与数据中台的操作参数对照 */
@@ -116,6 +117,9 @@ public class AdmQueryCriteriaHelper {
         if(StrUtil.isBlank(orderStr)) {
             return null;
         }
+        // 2021年10月20日16:00:01 兼容DMP中台的createTime,updateTime字段
+        orderStr = StrUtil.replace(orderStr,"createTime","creationTime");
+        orderStr = StrUtil.replace(orderStr,"updateTime","modifiedTime");
         // 按,分隔
         String[] orders = StrUtil.split(orderStr, ",");
         List<OrderItem> orderList = new ArrayList<>();
@@ -157,43 +161,42 @@ public class AdmQueryCriteriaHelper {
         filters = StrUtil.replace(filters, "[", " ( ");
         filters = StrUtil.replace(filters, "]", " ) ");
         // 查找下一个 连接点[and or为连接点]
-        ensureOrCondition(name, criteria, filters);
+        convertCondition(name, criteria, filters);
         return criteria;
     }
 
     /**
-     * 从or条件中截取表达式
-     * @param criteria
-     * @param filters
-     */
-    private static void ensureOrCondition(String name, ObjectNode criteria, String filters) {
-        int orIndex = StrUtil.indexOfIgnoreCase(filters, " or ", 0);
-        String orLeft = orIndex < 0 ? filters : StrUtil.subPre(filters, orIndex);
-        ensureAndCondition(name, criteria, orLeft);
-        // 有or条件
-        if(orIndex >= 0) {
-            String orRight = StrUtil.subSuf(filters, orIndex + 4);
-            ObjectNode node = criteria.putObject("$or");
-            // 右侧字符串继续递归处理
-            ensureOrCondition(name, node, orRight);
-        }
-    }
-
-    /**
-     * 从and条件中截取表达式
+     * 转换为查询条件
+     * @param name
      * @param criteria
      * @param filters
      */
-    private static void ensureAndCondition(String name, ObjectNode criteria, String filters) {
-        int andIndex = StrUtil.indexOfIgnoreCase(filters, " and ", 0);
-        String andLeft = andIndex < 0 ? filters : StrUtil.subPre(filters, andIndex);
-        // 处理左侧条件
-        ensureAndExpress(name, criteria, andLeft);
-        // 处理右侧条件
-        if(andIndex >= 0) {
-            String andRight = StrUtil.subSuf(filters, andIndex+5);
-            // 递归处理and
-            ensureAndCondition(name, criteria, andRight);
+    private static void convertCondition(String name, ObjectNode criteria, String filters) {
+        // 按and分隔
+        List<String> andFilters = StrUtil.splitTrim(filters, " and ");
+        // 按分隔后的表达式依次处理
+        for(String andFilter:andFilters) {
+            // 按or分组
+            List<String> orFilters = StrUtil.splitTrim(andFilter, " or ");
+            if(CollUtil.isEmpty(orFilters)) {
+                continue;
+            }
+            // 长度为1,则不是or条件
+            if(orFilters.size() == 1) {
+                // 转换为Condition
+                convertExpress(name, criteria, orFilters.get(0));
+                continue;
+            }
+            // or条件
+            ObjectNode andOr = (ObjectNode) criteria.get(QueryOperator.AND_OR.getIndex());
+            if(andOr == null) {
+                // 没有此条件则创建
+                andOr = criteria.putObject(QueryOperator.AND_OR.getIndex());
+            }
+            // 转换为Condition
+            for(String orFilter:orFilters) {
+                convertExpress(name, andOr, orFilter);
+            }
         }
     }
 
@@ -202,8 +205,9 @@ public class AdmQueryCriteriaHelper {
      * @param criteria
      * @param express
      */
-    private static void ensureAndExpress(String name, ObjectNode criteria, String express) {
-        String cond = StrUtil.isBlank(StrUtil.getContainsStr(express, COND_STR)) ? StrUtil.getContainsStr(express, COND_STR_TRIM) : StrUtil.getContainsStr(express, COND_STR);
+    private static void convertExpress(String name, ObjectNode criteria, String express) {
+        String cond = StrUtil.isBlank(StrUtil.getContainsStr(express, COND_STR)) ?
+                StrUtil.getContainsStr(express, COND_STR_TRIM) : StrUtil.getContainsStr(express, COND_STR);
         if(StrUtil.isBlank(cond)) {
             return;
         }

+ 1 - 1
src/main/java/com/persagy/proxy/common/client/DmpRwdClient.java

@@ -21,7 +21,7 @@ import java.util.List;
  *@author:lgy
  *@data:2021/8/11 14:56
  */
-@FeignClient(name = "dmp-rwd", configuration = DigitalFeignConfig.class)
+@FeignClient(name = "dmp-rwd", configuration = DigitalFeignConfig.class,url = "${persagy.bdtp.rwd.service:}")
 public interface DmpRwdClient {
     /**
      * @description: 查询关系