ludc
2024-10-17 d02571d59633367ac76b7f58ab38584698b1aa1b
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -2078,9 +2078,9 @@
         wrapperData(dataList, templateVO, sqlBO.getSelectFieldList(), false);
//         maps.stream().forEach(map -> {
//            Map<String, String> data = new HashMap<>();
////            map.forEach((key, value) -> {
////               data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
////            });
         //    map.forEach((key, value) -> {
         //       data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
         //    });
//            for (String s : map.keySet()) {
//               data.put(((String) s).toLowerCase(Locale.ROOT), String.valueOf(map.get(s)));
//            }
@@ -2569,8 +2569,19 @@
            if (referFieldMap.containsKey(field)) {
               return VciBaseUtil.toInSql(referFieldMap.get(field), value);  //referFieldMap.get(field) + SPACE + "= '" + value + "'" + SPACE;
            } else {
               return (field.contains(".") ? "" : "t.") + field + SPACE + "= " + getStringValueInWhere(field, value, attrVOMap) + "" + SPACE;
               //TODO:暂时没考虑IN>1000条的问题
               //return (field.contains(".") ? "" : "t.") + field + SPACE + "= " + getStringValueInWhere(field, value, attrVOMap) + "" + SPACE;
               return (field.contains(".") ? "" : "t.") + field + SPACE + "IN (" + getStringValueInWhere(field, "IN//"+value, attrVOMap) + ")" + SPACE;
            }
         } else if (key.endsWith("_notin")) {
            String field = UBCSSqlKeyword.getColumn(key, "_in");
            if (referFieldMap.containsKey(field)) {
               return VciBaseUtil.toInSql(referFieldMap.get(field), value);  //referFieldMap.get(field) + SPACE + "= '" + value + "'" + SPACE;
            } else {
               //return (field.contains(".") ? "" : "t.") + field + SPACE + "not in (" + getStringValueInWhere(field, "IN//"+value, attrVOMap) + ")" + SPACE;
               return (field.contains(".") ? "" : "t.") + field + SPACE + "IN (" + getStringValueInWhere(field, "IN//"+value, attrVOMap) + ")" + SPACE;
            }
         } else {
//                if (referFieldMap.containsKey(key)) {
//                    //说明是参照的,我们参照的查询都认为是字符串,如果是时间格式的查询肯定有问题,
@@ -2667,15 +2678,23 @@
               || VciFieldTypeEnum.VTInteger.equals(fieldTypeEnum)) {
               return value;
            } else {
               if(value.contains("IN//")){
                  return MybatisParameterUtil.getInClause(Func.toStrList(value.replace("IN//","")));
               }
               return "'" + value + "'";
            }
         } else {
            if ((value.startsWith("(") && value.endsWith(")")) || (value.startsWith("'") && value.endsWith("'"))) {
               return value;
            }
            }else if(value.contains("IN//")){
               //暂时不考虑>1000的情况,因为搜索一般也不会出现搜索1000条的情况
               //return MybatisParameterUtil.convertToOrConditions(field, Func.toStrList(value.replace("IN//","")));
               return MybatisParameterUtil.getInClause(Func.toStrList(value.replace("IN//","")));
            }else{
            return "'" + value + "'";
         }
      }
      }
   }