Browse Source

fix bug:修复当relationFrom和id同时查询时筛选数据不正确

lijie 3 years ago
parent
commit
d4d3b3bdb7

+ 1 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/controller/ObjectDigitalController.java

@@ -85,6 +85,7 @@ public class ObjectDigitalController{
         ObjectDigitalCriteriaHelper.presetDigitalCriteria(criteria);
         // 转换查询条件
         QueryCriteriaHelper.toWrapper(wrapper, criteria, ObjectDigital.class);
+
         Page page = QueryCriteriaHelper.toPage(criteria);
         if(criteria.isOnlyCount()) {
             Integer total = service.queryCount(wrapper);

+ 2 - 2
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/utils/ObjectDigitalCriteriaHelper.java

@@ -100,7 +100,7 @@ public class ObjectDigitalCriteriaHelper {
                 continue;
             }
             // 基础属性不用处理
-            if(DIGITAL_FIELDS.contains(infoCode)) {
+            if(DIGITAL_FIELDS.contains(infoCode) || QueryOperator.RELATION_ID.getIndex().equals(infoCode)) {
                 continue;
             }
             if (QueryOperator.AND_OR.getIndex().equalsIgnoreCase(infoCode)){
@@ -365,7 +365,7 @@ public class ObjectDigitalCriteriaHelper {
         Object bindFlag = JsonNodeUtils.getNodeValue(jsonNode.get(BIND_FLAG));
         boolean notBind = bindFlag != null && bindFlag instanceof Boolean && BooleanUtil.isFalse((Boolean) bindFlag);
         // 重置查询条件
-        ObjectNode inObj = criteria.putObject(BaseEntity.PROP_ID);
+        ObjectNode inObj = criteria.putObject(QueryOperator.RELATION_ID.getIndex());
         inObj.put(notBind?QueryOperator.NOT_IN_SQL.getIndex():QueryOperator.IN_SQL.getIndex(), inSql.toString());
         // 处理完成后删除
         criteria.remove(flagKey);

+ 3 - 1
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/basic/model/QueryOperator.java

@@ -38,7 +38,9 @@ public enum QueryOperator {
     AND_OR("$andOr", "且中或"),
     /** 20210816 支持数据中心左、右like条件 */
     LIKE_LEFT("$likeLeft", "左包含"),
-    LIKE_RIGHT("$likeRight", "右包含");
+    LIKE_RIGHT("$likeRight", "右包含"),
+    /** 20211220 修复关系筛选及id同时传值导致查询结果失败的问题 */
+    RELATION_ID("$id", "关系转换后的key");
 
     private String index;
     private String name;

+ 7 - 0
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/basic/utils/QueryCriteriaHelper.java

@@ -11,6 +11,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.basic.model.QueryOperator;
 import com.persagy.dmp.common.model.entity.BaseEntity;
+import com.persagy.dmp.digital.entity.ObjectDigital;
 
 import java.util.Iterator;
 import java.util.List;
@@ -89,6 +90,12 @@ public class QueryCriteriaHelper {
                 wrapper.or(orWrapper -> addOrCondition(orWrapper, fieldValue));
                 continue;
             }
+            // 20210816增加or条件支持
+            if(QueryOperator.RELATION_ID.getIndex().equalsIgnoreCase(field)) {
+                // 内部重新创建QueryWrapper
+                commonAddCondition(wrapper, fieldValue, ObjectDigital.PROP_ID);
+                continue;
+            }
             // 20210827增加and(condition OR condition)条件支持
             if(QueryOperator.AND_OR.getIndex().equalsIgnoreCase(field)) {
                 // 内部重新创建QueryWrapper