1. 解决 WMS 数据权限查询时多个值覆盖的问题

yun-zuoyi
于学杰 6 years ago
parent 5d034e2a8a
commit c3ff60a581

@ -1402,32 +1402,31 @@ public class WmsHqlPack {
entries.stream().filter(o -> !Strings.isNullOrEmpty(o.getKey()));
for (Map.Entry<String, List<WmsDataAuth>> map : entries) {
String key = map.getKey();
List<WmsDataAuth> valueList = map.getValue();
List<String> vList = valueList.stream().map(x -> x.getDataObjValue()).collect(Collectors.toList());
String data = String.join(",", vList);
if (StringUtils.isNotBlank(data)) {
List<Map> 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<Map> HQL
* @param mapList
* @param keyName
* @param columnName
* @param packBean
*/
private static void packMutilConditionHql(List<Map> 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

Loading…
Cancel
Save