Browse Source

fix bug:ADM中删除建筑失败的问题

lijie 3 years ago
parent
commit
538fc7045c

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

@@ -5,9 +5,12 @@ import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.BooleanUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
@@ -19,6 +22,7 @@ import com.persagy.dmp.common.model.entity.BaseEntity;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
 import com.persagy.dmp.rwd.digital.domain.CalculatingDTO;
+import lombok.SneakyThrows;
 
 import java.util.*;
 
@@ -372,13 +376,28 @@ public class ObjectDigitalCriteriaHelper {
      * @param inSql in条件
      * @param field 属性名
      */
+    @SneakyThrows
     private static void addWhereCond(JsonNode node, StringBuilder inSql, String field) {
         Object value = JsonNodeUtils.getNodeValue(node.get(field));
+        // 转下划线
+        String column = StrUtil.toUnderlineCase(field);
         if(value == null) {
+            // 如果是数组形式,则加上in查询
+            JsonNode specialNode = node.get(field);
+            if (specialNode == null || specialNode.isNull()
+                    || !specialNode.isArray() || specialNode.size()<1 || !specialNode.get(0).isTextual()){
+               return;
+            }
+            ObjectMapper objectMapper = SpringUtil.getBean(ObjectMapper.class);
+            List<String> codes = objectMapper
+                    .readValue(objectMapper.writeValueAsString(specialNode),new TypeReference<List<String>>(){});
+            inSql.append("and ")
+                    .append(column)
+                    .append(" in('")
+                    .append(String.join("','",codes))
+                    .append("') ");
             return;
         }
-        // 转下划线
-        String column = StrUtil.toUnderlineCase(field);
         // 字符串的加单引号,其他的不加
         if(value instanceof String) {
             String stringValue = (String) value;