diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java index cba3169..01280f0 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java @@ -1402,32 +1402,31 @@ public class WmsHqlPack { entries.stream().filter(o -> !Strings.isNullOrEmpty(o.getKey())); for (Map.Entry> map : entries) { + String key = map.getKey(); List valueList = map.getValue(); List vList = valueList.stream().map(x -> x.getDataObjValue()).collect(Collectors.toList()); String data = String.join(",", vList); + if (StringUtils.isNotBlank(data)) { + List mapList = JSONObject.parseArray(data, Map.class); + if (StringUtils.equalsIgnoreCase(WmsEnumUtil.DATA_OBJ_TYPE.WAREHOUSE.getValue() + "", key)) { - for (Map whNoItem : mapList) { - // 拼接仓库查询sql - DdlPreparedPack.getStringEqualPackOr(whNoItem.get("WH_CODE").toString(), "destWhNo", result); - } + + packMutilConditionHql(mapList, "WH_CODE", "destWhNo", result); + } else if (StringUtils.equalsIgnoreCase(WmsEnumUtil.DATA_OBJ_TYPE.LOCATE.getValue() + "", key)) { - for (Map locateNoItem : mapList) { - // 拼接库位查询sql - DdlPreparedPack.getStringEqualPackOr(locateNoItem.get("LOCATE_NO").toString(), "destLocateNo", result); - } + + packMutilConditionHql(mapList, "LOCATE_NO", "destLocateNo", result); + } else if (StringUtils.equalsIgnoreCase(WmsEnumUtil.DATA_OBJ_TYPE.ZONE.getValue() + "", key)) { - for (Map zoneNoItem : mapList) { - // 拼接存储区查询sql - DdlPreparedPack.getStringEqualPackOr(zoneNoItem.get("ZONE_CODE").toString(), "destZoneNo", result); - } + + packMutilConditionHql(mapList, "ZONE_CODE", "destZoneNo", result); + } else if (StringUtils.equalsIgnoreCase(WmsEnumUtil.DATA_OBJ_TYPE.MATERIAL.getValue() + "", key)) { - for (Map partNoItem : mapList) { - // 拼接物料查询sql - DdlPreparedPack.getStringEqualPackOr(partNoItem.get("PART_NO").toString(), "partNo", result); - } + + packMutilConditionHql(mapList, "PART_NO", "partNo", result); } } } @@ -1443,6 +1442,24 @@ public class WmsHqlPack { } /** + * 把 List 中的一组查询条件封装成 HQL + * @param mapList + * @param keyName + * @param columnName + * @param packBean + */ + private static void packMutilConditionHql(List mapList, String keyName, + String columnName, DdlPackBean packBean) { + Integer index = 1; + + for (Map item : mapList) { + packBean.addColumnQuery(columnName," or model." + + columnName + " = :m_" + columnName + (index++).toString(), + item.get(keyName).toString()); + } + } + + /** * 给定字段动态in sql * * @param columnName