fix: 修复呼叫AGV失败但是最终还是出了气胀轴绑定了信息BUG
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user