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.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<PdmBiSlittingproductionplan> needPlans, String location, BstIvtShafttubeivt empty) {
public Boolean toCallAgvMovePaperTube(List<PdmBiSlittingproductionplan> needPlans, String location, BstIvtShafttubeivt empty) {
// 最多两根
List<String> 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<BstIvtStockingivt> 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;
}

View File

@@ -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;
}