diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java index fdd301f54..35bdef81a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java @@ -44,8 +44,6 @@ import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.Comparator; import java.util.List; -import java.util.Comparator; -import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -235,14 +233,18 @@ public class AutoCallAirShaftTask { log.info("查找到满足到对应尺寸的点位-{}", qzzPoint); if (qzzPoint.size() == 0) { //若套轴暂存位没有相同规格的气胀轴,直接去气胀轴库找即可 + // 要先判断AGV任务,才能去呼叫出轴 + if (!toCallAgvMovePaperTube(needPlans, location, empty)) { + log.error("呼叫AGV失败-穿拔轴{}不进行套轴,跳过!", empty.getPoint_code()); + return; + } // 调用ACS滚条气涨轴下来 if (!toAcsOutShaft(qzzSize,location, empty)) { - log.error("穿拔轴{}不进行套轴,跳过!", empty.getPoint_code()); + log.error("呼叫出轴失败-穿拔轴{}不进行套轴,跳过!", empty.getPoint_code()); return; } // 保存所需要的分切计划数据到点位上(套轴对接位)更新分切计划 saveCutPlanMessage(empty, needPlans, qzzSize); - toCallAgvMovePaperTube(needPlans, location, empty); return; } // 查找一条没任务的点位 @@ -313,8 +315,11 @@ public class AutoCallAirShaftTask { // 拔管数量 param.put("pullCount", oldPlans.size()); param.put("containers", oldPlans.stream().map(PdmBiSlittingproductionplan::getContainer_name).collect(Collectors.toList())); + if (!toCallAgvMovePaperTube(needPlans, location, empty)) { + log.error("呼叫AGV失败-穿拔轴{}不进行套轴,跳过!", empty.getPoint_code()); + return; + } trussCallAirShaftTask.createTask(param); - toCallAgvMovePaperTube(needPlans, location, empty); // 将分切计划is_paper_ok 1(纸管已经准备好) -> 2(已经套轴) needPlans.forEach(p -> { p.setIs_paper_ok("2"); @@ -350,7 +355,7 @@ public class AutoCallAirShaftTask { * @param needPlans 所需要套轴的分切计划 * @param location 位置 */ - public void toCallAgvMovePaperTube(List needPlans, String location, BstIvtShafttubeivt empty) { + public Boolean toCallAgvMovePaperTube(List needPlans, String location, BstIvtShafttubeivt empty) { // 最多两根 List tubes = needPlans.stream().map(plan -> { if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_FRP())) { @@ -383,7 +388,7 @@ public class AutoCallAirShaftTask { } // 说明三个位置中有包含此纸管的数据。 if (sum >= tubes.size() + otherDeviceTubeSize) { - return; + return true; } // 如果不够,就计算还缺多少个 int needTemp = tubes.size() + otherDeviceTubeSize - sum; @@ -406,7 +411,7 @@ public class AutoCallAirShaftTask { noticeService.createNotice("备货区找不到[" + tubes.get(0) + "]的纸管信息", "点位[" + empty.getPoint_name() + "]无法从备货区找到纸管信息", NoticeTypeEnum.EXCEPTION.getCode()); - return; + return false; } // 找到就创建AGV搬运任务 // 筛选3个位置中数量最少的搬走, 如果是空位,直接搬运过来 @@ -426,7 +431,7 @@ public class AutoCallAirShaftTask { .eq(MdPbPapervehicle::getVehicle_code, needPoint.getVehicle_code())); doSavePaperInfos(paperList, param); stockAreaCallTubeTask.createTask(param); - return; + return true; } // 查找一个没有任务的空位 List list = stockingivtService.getEmptyPointNotTask(location, "0"); @@ -434,7 +439,7 @@ public class AutoCallAirShaftTask { noticeService.createNotice("备货区找不到空位置搬运", "点位[" + empty.getPoint_name() + "]无法从备货区找到空位", NoticeTypeEnum.EXCEPTION.getCode()); - return; + return false; } BstIvtStockingivt endPoint = list.get(0); // 创建任务 -> HINT: 在此任务完成之后会调用搬回来的任务,因此任务中要记录需要搬运的点位放在任务请求参数中。 @@ -447,6 +452,7 @@ public class AutoCallAirShaftTask { param.put("task_type", SlitterEnum.TASK_TYPE.code("备货区送载具")); param.put("product_area", SlitterConstant.SLITTER_TASK_AREA); stockAreaSendVehicleTask.createTask(param); + return true; } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java index 8459c38d7..cdfd42e5b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java @@ -904,6 +904,7 @@ public class SlitterServiceImpl implements SlitterService { .eq("qty", "0"); boolean remove = papervehicleService.remove(deleteWrapper); } + // todo: 如果qty=0,创建AGV送空任务,(新的task_type)、后期优化可以新增诺宝取货完成提前释放货位,任务状态变成071 return res; }