diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java index a9e972903..6161c5811 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java @@ -3255,7 +3255,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { StructAllsetDto left = needStructs.get(0); StructAllsetDto right = needStructs.get(needStructs.size()-1); //确认左/右出库并根据出库顺序获取货位集合 - List structs = 左右出库确认(needStructs, left, right); + List structs = 左右出库确认(needStructs, left, right,whereJson.getString("iostorinv_id")); //attr.struct_code,attr.lock_type,attr.storagevehicle_code,attr.inv_code,storagevehicle_code List needStructList = needStructs.stream().map(StructAllsetDto::getStruct_code).collect(Collectors.toList()); /** @@ -3270,29 +3270,29 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { for (int i = 0; i < structs.size(); i++) { JSONObject item = structs.get(i); item.put("task_group_id",taskGroup); - item.put("seq",i); + item.put("sort_seq",i); item.put("point_code",point_code); item.put("point_id",jsonPoint2.getString("point_id")); String structCode = item.getString("struct_code"); - if (CollectionUtils.isEmpty(needStructs)){ + if (CollectionUtils.isEmpty(needStructList)){ break; } - if (!item.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))){ - continue; - } if (needStructList.contains(structCode)){ //出库 this.createOut(item); needStructList.remove(structCode); }else { - //移库 + //移库:如果当前存在业务锁定则说明存在相关任务,不需要移库,直接跳过 + if (!item.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))){ + continue; + } this.createMove(item); } } }; } - private List 左右出库确认(List structs, StructAllsetDto left, StructAllsetDto right) { + private List 左右出库确认(List structs, StructAllsetDto left, StructAllsetDto right,String invId) { /** * 1.查询当前排被锁住的货位集合 * 2.过滤仓位没有没有被其他单据锁定的货位 @@ -3308,9 +3308,10 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { //查询当前排 //lock_type('2','3','6','7') // 查询仓位被锁住的货位 - HashMap param = MapOf.of("flag", "51", "sect_id",left.getSect_id(),"block_num", left.getBlock_num(), "row_num", left.getRow_num()); + HashMap param = MapOf.of("invId",invId,"flag", "51", "sect_id",left.getSect_id(),"block_num", left.getBlock_num(), "row_num", left.getRow_num()); JSONArray allLock = WQL.getWO("ST_OUTIVT04").addParamMap(param).process().getResultJSONArray(0); List hasLock = this.isNumList(allLock); + String option; //如果货位有锁定则需要判断左右 //口回口口回口*口口 <---> @@ -3360,8 +3361,8 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { //查询当前排最大order HashMap maxParam = MapOf.of("flag", "52", "sect_id",left.getSect_id(),"block_num", left.getBlock_num(), "row_num", left.getRow_num()); JSONObject result = WQL.getWO("ST_OUTIVT04").addParamMap(maxParam).process().uniqueResult(0); - Integer maxSeq = result.getInteger("maxSeq"); - Integer minSeq = result.getInteger("minSeq"); + Integer maxSeq = result.getInteger("maxseq"); + Integer minSeq = result.getInteger("minseq"); int leftVe = Integer.valueOf(left.getOut_order_seq()) - minSeq; int rightVe = maxSeq - Integer.valueOf(right.getOut_order_seq()); option = leftVe>rightVe?"03":"02"; @@ -3369,8 +3370,9 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { option = placementType; } } - //option确认了左边出库还是右边出库03左边,02右边 - HashMap structParam = MapOf.of("flag", "53", "out_order_seq",option,"sect_id",left.getSect_id(),"block_num", left.getBlock_num(), "row_num", left.getRow_num()); + //option确认了左边出库还是右边出库03右边,02左边 + String orderBy = "order by out_order_seq "+(option.equals("02")?"asc":"desc"); + HashMap structParam = MapOf.of("flag", "53", "order_by",orderBy,"sect_id",left.getSect_id(),"block_num", left.getBlock_num(), "row_num", left.getRow_num()); return WQL.getWO("ST_OUTIVT04").addParamMap(structParam).process().getResultJSONArray(0).toJavaList(JSONObject.class); } @Transactional @@ -3429,7 +3431,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { form.put("point_code1", json.getString("struct_code")); form.put("point_code2", jsonMove.getString("struct_code")); form.put("task_group_id", struct.getLongValue("task_group_id")); // 任务组 - form.put("sort_seq", struct.getIntValue("seq") + 1); // 任务组顺序号 + form.put("sort_seq", struct.getIntValue("sort_seq") + 1); // 任务组顺序号 json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); json.put("task_type", form.getString("task_type")); @@ -3472,7 +3474,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { param.put("material_id", oneDis.getMaterial_id()); // 更新出库任务:任务组和顺序号 param.put("task_group_id", struct.getString("task_group_id")); // 任务组 - param.put("sort_seq", struct.getString("sort_seq")+1); // 任务组顺序号 + param.put("sort_seq", struct.getIntValue("sort_seq")+1); // 任务组顺序号 String create_task_id = outTask.createTask(param); //批量更细分配明细 List disIds = list.stream().map(StIvtIostorinvdis::getIostorinvdis_id).collect(Collectors.toList()); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT04.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT04.wql index 8e1d51878..5fe0f5216 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT04.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT04.wql @@ -18,8 +18,9 @@ 输入.iostorinvdtl_id TYPEAS s_string 输入.block_num TYPEAS s_string 输入.sect_id TYPEAS s_string + 输入.invId TYPEAS s_string 输入.row_num TYPEAS s_string - 输入.out_order_seq TYPEAS s_string + 输入.order_by TYPEAS f_string 输入.iostorinvdis_id TYPEAS s_string [临时表] @@ -278,7 +279,7 @@ IF 输入.flag = "51" QUERY SELECT - attr.struct_code,attr.lock_type,attr.storagevehicle_code,attr.inv_code + attr.struct_code,attr.lock_type,attr.storagevehicle_code,attr.inv_code,attr.out_order_seq FROM st_ivt_structattr attr WHERE @@ -287,13 +288,16 @@ AND attr.row_num = 输入.row_num AND attr.sect_id = 输入.sect_id AND IFNULL( attr.storagevehicle_code, '' ) <> '' + OPTION 输入.invId <> "" + attr.inv_id <> 输入.invId + ENDOPTION ENDSELECT ENDQUERY ENDIF IF 输入.flag = "52" QUERY SELECT - MAX(attr.out_order_seq) as maxSeq,MIN(attr.out_order_seq) as minSeq + MAX(attr.out_order_seq) as maxseq,MIN(attr.out_order_seq) as minseq FROM st_ivt_structattr attr WHERE @@ -305,25 +309,22 @@ ENDQUERY ENDIF IF 输入.flag = "53" - QUERY - SELECT - attr.struct_code,attr.lock_type,attr.storagevehicle_code,attr.inv_code - FROM - st_ivt_structattr attr - WHERE - attr.block_num = 输入.block_num - AND attr.row_num = 输入.row_num - AND attr.sect_id = 输入.sect_id - AND IFNULL( attr.storagevehicle_code, '' ) <> '' - OPTION 输入.out_order_seq == "03" - ORDER BY out_order_seq asc - ENDOPTION - OPTION 输入.out_order_seq == "02" - ORDER BY out_order_seq desc - ENDOPTION - ENDSELECT - ENDQUERY - ENDIF + QUERY + SELECT + attr.struct_code,attr.lock_type,attr.storagevehicle_code,attr.inv_code + FROM + st_ivt_structattr attr + WHERE + attr.block_num = 输入.block_num + AND attr.row_num = 输入.row_num + AND attr.sect_id = 输入.sect_id + AND IFNULL( attr.storagevehicle_code, '' ) <> '' + OPTION 输入.order_by <> "" + 1=1 输入.order_by + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF IF 输入.flag = "6" QUERY