瀏覽代碼

Merge remote-tracking branch 'origin/develop' into develop

lijie 3 年之前
父節點
當前提交
1fed891fe7

+ 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);
     }
 

+ 3 - 8
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;
@@ -127,11 +124,10 @@ public class RelationSyInSpController {
      * @return 删除的结果信息
      */
     @PostMapping("/unlink-list")
-    public AdmResponse delete(@RequestBody JSONObject param) {
+    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");
-//        String type = deleteSyInSpBase.getType();
+        //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);

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

@@ -200,7 +200,7 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
             if(CollUtil.isNotEmpty(vo.getEquipment())) {
                 equipmentList.addAll(vo.getEquipment());
             }
-            if(CollUtil.isEmpty(vo.getEquipmentFor())) {
+            if(CollUtil.isNotEmpty(vo.getEquipmentFor())) {
                 equipmentList.addAll(vo.getEquipmentFor());
             }
         }

+ 33 - 32
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;
@@ -160,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);
+            }
         }
     }
 
@@ -205,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;
         }