fix: 修复呼叫AGV失败但是最终还是出了气胀轴绑定了信息BUG

This commit is contained in:
2025-04-19 10:48:20 +08:00
parent 19bade4b5f
commit f13651e5ca
2 changed files with 17 additions and 10 deletions

View File

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

View File

@@ -904,6 +904,7 @@ public class SlitterServiceImpl implements SlitterService {
.eq("qty", "0"); .eq("qty", "0");
boolean remove = papervehicleService.remove(deleteWrapper); boolean remove = papervehicleService.remove(deleteWrapper);
} }
// todo: 如果qty=0创建AGV送空任务新的task_type、后期优化可以新增诺宝取货完成提前释放货位任务状态变成071
return res; return res;
} }