diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java index 3b9352574..629581818 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java @@ -130,18 +130,47 @@ public class TwoOutHeapTask extends AbstractAcsTask { if (pointJson.size() == 1) { JSONObject json = pointJson.get(0); if (json.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1"))) { + // 行架位1有任务则下发行架位2的任务 JSONObject twoJson = taskArrAll.stream() .filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位2"))) .findFirst().orElse(null); if (ObjectUtil.isNotEmpty(twoJson)) { + // 如果能找到去行架位2的任务则下发当前任务 taskArr.add(twoJson); + } else { + // 如果不能找到去行架位2则找去行架位1的任务进行二次分配到行架位2 + JSONObject twoJsonOne = taskArrAll.stream() + .filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1"))) + .findFirst().orElse(null); + + if (ObjectUtil.isNotEmpty(twoJsonOne)) { + // 进行二次分配 + twoJsonOne.put("point_code2",IOSEnum.OUT_HANGER.code("行架位2")); + wo_Task.update(twoJsonOne); + taskArr.add(twoJsonOne); + } + } } else { + // 行架位2有任务则下发行架位1的任务 JSONObject oneJson = taskArrAll.stream() .filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位1"))) .findFirst().orElse(null); if (ObjectUtil.isNotEmpty(oneJson)) { + // 如果能找到去行架位1的任务则下发当前任务 taskArr.add(oneJson); + } else { + // 如果不能找到去行架位1则找去行架位2的任务进行二次分配到行架位1 + JSONObject twoJsonTwo = taskArrAll.stream() + .filter(row -> row.getString("point_code2").equals(IOSEnum.OUT_HANGER.code("行架位2"))) + .findFirst().orElse(null); + + if (ObjectUtil.isNotEmpty(twoJsonTwo)) { + // 进行二次分配 + twoJsonTwo.put("point_code2",IOSEnum.OUT_HANGER.code("行架位1")); + wo_Task.update(twoJsonTwo); + taskArr.add(twoJsonTwo); + } } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBussManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBussManageServiceImpl.java index 66b949ede..474450536 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBussManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBussManageServiceImpl.java @@ -651,6 +651,11 @@ public class InBussManageServiceImpl implements InBussManageService { * @return JSONObject : 仓位 */ private JSONObject getStruct(JSONObject jsonSub) { + // 根据巷道找这一巷道相同订单号、物料的仓位 + JSONObject jsonLikeBox = queryEqualBox(jsonSub); + if (ObjectUtil.isNotEmpty(jsonLikeBox)) { + return jsonLikeBox; + } // 获取此仓库、库区、巷道、排的所有空位 根据列、层、深度排序 jsonSub.put("flag", "5"); @@ -750,4 +755,62 @@ public class InBussManageServiceImpl implements InBussManageService { return jsonAttr; } + + /** + * 匹配相同订单、物料的仓位 + * @param jsonSub{子卷包装关系} + * @return JSONObject:要入库的仓位 + */ + private JSONObject queryEqualBox(JSONObject jsonSub) { + // 需要返回的仓位 + JSONObject result = new JSONObject(); + // 1.匹配相同订单号、物料的排(row_num) + jsonSub.put("flag", "7"); + List rowList = WQL.getWO("BST_INRULE").addParamMap(jsonSub) + .process().getResultJSONArray(0).toJavaList(JSONObject.class); + + // 查询此排的所有仓位 + String row_in = rowList.stream() + .map(row -> row.getString("row_num")) + .distinct() + .collect(Collectors.joining("','")); + + List attrRowAllList = WQL.getWO("BST_INRULE").addParam("flag", "8") + .addParam("sect_id", jsonSub.getString("sect_id")) + .addParam("row_in", "('" + row_in + "')").process().getResultJSONArray(0).toJavaList(JSONObject.class); + + for (JSONObject json : rowList) { + // 判断此深仓位是否有货、是否被锁住 + if (ObjectUtil.isEmpty(json.getString("storagevehicle_code")) + || !json.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定")) + ) { + continue; + } + + // 找对应的浅货位 + JSONObject darkJson = attrRowAllList.stream() + .filter(row -> row.getString("col_num").equals(json.getString("col_num")) && + row.getString("layer_num").equals(json.getString("layer_num")) && + row.getString("row_num").equals(json.getString("row_num")) && + row.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("浅"))) + .findFirst().orElse(null); + + if (ObjectUtil.isEmpty(darkJson)) { + notInRowList.clear(); + notInBlockList.clear(); + throw new BadRequestException("仓位:" + json.getString("struct_code") + "对应的深货位错误!"); + } + + // 判断浅货位是否有货、未锁定 + if (ObjectUtil.isNotEmpty(darkJson.getString("storagevehicle_code")) + || !darkJson.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定")) + ) { + continue; + } + + result = darkJson; + break; + } + return result; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INRULE.wql b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INRULE.wql index a780223a4..04c091eab 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INRULE.wql +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/wql/BST_INRULE.wql @@ -30,6 +30,8 @@ 输入.row_num TYPEAS s_string 输入.not_row_in TYPEAS f_string 输入.not_block TYPEAS f_string + 输入.product_name TYPEAS s_string + 输入.product_name TYPEAS s_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -263,3 +265,61 @@ ENDSELECT ENDQUERY ENDIF + + IF 输入.flag = "7" + QUERY + SELECT + attr.* + FROM + st_ivt_structivt ivt + INNER JOIN st_ivt_structattr attr ON ivt.struct_code = attr.struct_code + INNER JOIN pdm_bi_subpackagerelation sub ON attr.storagevehicle_code = sub.package_box_sn AND ivt.pcsn = sub.container_name + WHERE + attr.is_used = '1' + AND attr.is_delete = '0' + AND attr.lock_type = '1' + AND IFNULL(attr.storagevehicle_code,'') <> '' + AND attr.stor_id = 输入.stor_id + AND attr.sect_id = 输入.sect_id + AND attr.height IN 输入.height + AND attr.zdepth = '2' + AND attr.storagevehicle_type = 输入.vehicle_type + + OPTION 输入.block_num <> "" + attr.block_num = 输入.block_num + ENDOPTION + + OPTION 输入.product_name <> "" + sub.product_name = 输入.product_name + ENDOPTION + + OPTION 输入.sale_order_name <> "" + sub.sale_order_name = 输入.sale_order_name + ENDOPTION + + order by attr.col_num,attr.layer_num ASC + + ENDSELECT + ENDQUERY + ENDIF + + + IF 输入.flag = "8" + QUERY + SELECT + attr.* + FROM + st_ivt_structattr attr + WHERE + attr.is_used = '1' + AND attr.is_delete = '0' + AND attr.sect_id = 输入.sect_id + + OPTION 输入.row_in <> "" + attr.row_num IN 输入.row_in + ENDOPTION + + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_PRODUCTPLAN.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_PRODUCTPLAN.wql index ae0799daf..c410896b2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_PRODUCTPLAN.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_PRODUCTPLAN.wql @@ -52,7 +52,7 @@ mst.* FROM st_ivt_productplanmst mst - LEFT JOIN ( + INNER JOIN ( SELECT plan_id FROM diff --git a/lms/nladmin-ui/src/views/wms/st/inStor/reCutPlan/index.vue b/lms/nladmin-ui/src/views/wms/st/inStor/reCutPlan/index.vue index d31739d38..87047524b 100644 --- a/lms/nladmin-ui/src/views/wms/st/inStor/reCutPlan/index.vue +++ b/lms/nladmin-ui/src/views/wms/st/inStor/reCutPlan/index.vue @@ -8,7 +8,7 @@ :inline="true" class="demo-form-inline" label-position="right" - label-width="80px" + label-width="100px" label-suffix=":" > @@ -37,12 +37,12 @@ /> - +