diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java index 1dc0cfefb..f382acacd 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java @@ -309,19 +309,32 @@ public class ProductInstorServiceImpl implements ProductInstorService { .findFirst().orElse(null); if (jsonOne.getDoubleValue("num") <= Double.parseDouble(download_attr_num)) { - throw new BadRequestException(jsonOne.getString("layer_num") + "层主存区仓位数不足" + download_attr_num + "个,不允许入库!"); + List layerList = attrList.stream() + .filter(row -> "2,3".contains(row.getString("layer_num"))) + .collect(Collectors.toList()); + + int num = layerList.stream() + .map(row -> row.getBigDecimal("num")) + .reduce(BigDecimal.ZERO, BigDecimal::add) + .intValue(); + + if (num <= (Integer.parseInt(download_attr_num) * 2)) { + throw new BadRequestException("立库主存区仓位数不足" + download_attr_num + "个,不允许入库!"); + } + } } else { List layerList = attrList.stream() .filter(row -> "2,3".contains(row.getString("layer_num"))) .collect(Collectors.toList()); - JSONObject jsonAttr = layerList.stream() - .filter(row -> row.getDoubleValue("num") <= Double.parseDouble(download_attr_num)) - .findFirst().orElse(null); + int num = layerList.stream() + .map(row -> row.getBigDecimal("num")) + .reduce(BigDecimal.ZERO, BigDecimal::add) + .intValue(); - if (ObjectUtil.isNotEmpty(jsonAttr)) { - throw new BadRequestException(jsonAttr.getString("layer_num") + "层主存区仓位数不足" + download_attr_num + "个,不允许入库!"); + if (num <= (Integer.parseInt(download_attr_num) * 2)) { + throw new BadRequestException("2、3层立库主存区仓位数不足" + download_attr_num + "个,不允许入库!"); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java index a6c67db29..273a6100d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java @@ -996,36 +996,84 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { if (box_high > Double.parseDouble(in_up_box_high)) { throw new BadRequestException("木箱:" + sub_jo.getString("package_box_sn") + "高度不符合要求,请检查!"); } - row_map.put("in_layer_num", in_layer_num); //查询到当前可用的巷道 JSONArray rowArr2 = new JSONArray(); + // 仓位下限阈值 + String download_attr_num = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("download_attr_num").getValue(); + + List attrListAll = WQL.getWO("PDA_ST_01").addParam("flag", "10") + .addParam("layer_num", "('1','2','3')").process() + .getResultJSONArray(0).toJavaList(JSONObject.class); + if (box_high <= Double.parseDouble(in_download_box_high)) { - // 优先入1层 - row_map.put("layer_num", "1"); + // 判断1层主存区是否超过阈值 + JSONObject jsonOne = attrListAll.stream() + .filter(row -> row.getString("layer_num").equals("1")) + .findFirst().orElse(null); - rowArr2 = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0); + if (jsonOne.getDoubleValue("num") <= Double.parseDouble(download_attr_num)) { + in_layer_num = "('2','3')"; + // 判断2层3层的仓位是否够 + List layerList = attrListAll.stream() + .filter(row -> "2,3".contains(row.getString("layer_num"))) + .collect(Collectors.toList()); + + JSONObject jsonAttr = layerList.stream() + .filter(row -> row.getDoubleValue("num") <= Double.parseDouble(download_attr_num)) + .findFirst().orElse(null); + + if (ObjectUtil.isNotEmpty(jsonAttr)) { + if (jsonAttr.getString("layer_num").equals("2")) { + in_layer_num = "('3')"; + } else { + in_layer_num = "('2')"; + } + } + } else { + // 优先入1层 + row_map.put("in_layer_num", "('1')"); - if (ObjectUtil.isEmpty(rowArr2)) { - // 如果1层没有相同物料订单号的则找有空位的一排 - row_map.put("flag", "1111"); rowArr2 = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0); - // 如果为空则进行扩容 if (ObjectUtil.isEmpty(rowArr2)) { - boolean is_expansion = updateStructSectOne(); + // 如果1层没有相同物料订单号的则找有空位的一排 + row_map.put("flag", "1111"); + rowArr2 = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0); - if (is_expansion) { - // 如果为true则在进行查询一次 - rowArr2 = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0); + // 如果为空则进行扩容 + if (ObjectUtil.isEmpty(rowArr2)) { + boolean is_expansion = updateStructSectOne(); + + if (is_expansion) { + // 如果为true则在进行查询一次 + rowArr2 = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0); + } } } } + } else { + // 判断2层3层的仓位是否够 + List layerList = attrListAll.stream() + .filter(row -> "2,3".contains(row.getString("layer_num"))) + .collect(Collectors.toList()); + + JSONObject jsonAttr = layerList.stream() + .filter(row -> row.getDoubleValue("num") <= Double.parseDouble(download_attr_num)) + .findFirst().orElse(null); + + if (ObjectUtil.isNotEmpty(jsonAttr)) { + if (jsonAttr.getString("layer_num").equals("2")) { + in_layer_num = "('3')"; + } else { + in_layer_num = "('2')"; + } + } } + row_map.put("in_layer_num", in_layer_num); if (ObjectUtil.isEmpty(rowArr2)) { - row_map.put("layer_num", ""); row_map.put("flag", "111"); rowArr2 = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParamMap(row_map).process().getResultJSONArray(0); } @@ -1181,7 +1229,12 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { int box_num = (int) Math.ceil(plan_rows.size() / 2) + box_rows.size(); //查询数量与订单物料箱子数量相近的一排 - JSONObject empty_row = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("sect_id", sect_id).addParam("flag", "13").addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num),block_num,row_num").process().uniqueResult(0); + JSONObject empty_row = WQL.getWO("QST_IVT_RAWASSISTISTOR") + .addParam("sect_id", sect_id) + .addParam("in_layer_num",in_layer_num) + .addParam("flag", "13") + .addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num),block_num,row_num") + .process().uniqueResult(0); if (ObjectUtil.isNotEmpty(empty_row)) { String block_num2 = empty_row.getString("block_num"); String row_num2 = empty_row.getString("row_num"); @@ -1212,7 +1265,12 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { } } else { //如果查询不到空的一排,则查询有空位双通的一排 - JSONArray haveArr = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("sect_id", sect_id).addParam("flag", "14").addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num)").process().getResultJSONArray(0); + JSONArray haveArr = WQL.getWO("QST_IVT_RAWASSISTISTOR") + .addParam("sect_id", sect_id) + .addParam("flag", "14") + .addParam("in_layer_num",in_layer_num) + .addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num)") + .process().getResultJSONArray(0); for (int j = 0; j < haveArr.size(); j++) { JSONObject have_row = haveArr.getJSONObject(j); @@ -1333,7 +1391,11 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { } } else { //如果查询不到空的一排,则查询有空位双通的一排 - JSONArray haveArr = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("in_layer_num", in_layer_num).addParam("sect_id", sect_id).addParam("flag", "14").addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num)").process().getResultJSONArray(0); + JSONArray haveArr = WQL.getWO("QST_IVT_RAWASSISTISTOR") + .addParam("in_layer_num", in_layer_num) + .addParam("sect_id", sect_id).addParam("flag", "14") + .addParam("sql_str", " ORDER BY abs(" + box_num + "-a.struct_num)") + .process().getResultJSONArray(0); for (int j = 0; j < haveArr.size(); j++) { JSONObject have_row = haveArr.getJSONObject(j); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql index f34164670..6b03d0ca3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql @@ -474,7 +474,6 @@ LEFT JOIN md_me_materialbase mb ON mb.material_id = ivt.material_id WHERE sa.sect_id = 输入.sect_id - AND IFNULL(sa.storagevehicle_code,"") = '' AND sa.is_used = '1' AND sa.is_delete = '0' AND sa.lock_type = '1' @@ -485,10 +484,11 @@ sub.sale_order_name = 输入.sale_order_name ENDOPTION - OPTION 输入.layer_num <> "" - sa.layer_num = 输入.layer_num + OPTION 输入.in_layer_num <> "" + sa.layer_num IN 输入.in_layer_num ENDOPTION + GROUP BY sa.block_num,sa.row_num,sa.placement_type ORDER BY @@ -513,8 +513,8 @@ and ifnull(sa.storagevehicle_code,'') = '' and sa.lock_type = '1' - OPTION 输入.layer_num <> "" - sa.layer_num = 输入.layer_num + OPTION 输入.in_layer_num <> "" + sa.layer_num IN 输入.in_layer_num ENDOPTION GROUP BY