opt:优化呼叫套轴时,对虚拟分切计划的处理

This commit is contained in:
DESKTOP-5DIJMF9\admin
2025-03-27 12:44:29 +08:00
parent 7a5df21681
commit 39c72e1064
3 changed files with 30 additions and 7 deletions

View File

@@ -207,6 +207,7 @@ public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl<PdmBiSli
LambdaQueryWrapper<PdmBiSlittingproductionplan> lam = new QueryWrapper<PdmBiSlittingproductionplan>().lambda(); LambdaQueryWrapper<PdmBiSlittingproductionplan> lam = new QueryWrapper<PdmBiSlittingproductionplan>().lambda();
lam.eq(PdmBiSlittingproductionplan::getResource_name, deviceCode) lam.eq(PdmBiSlittingproductionplan::getResource_name, deviceCode)
.like(PdmBiSlittingproductionplan::getContainer_name, "虚拟") .like(PdmBiSlittingproductionplan::getContainer_name, "虚拟")
.lt(PdmBiSlittingproductionplan::getStatus, "03")
.eq(PdmBiSlittingproductionplan::getIs_delete, "0"); .eq(PdmBiSlittingproductionplan::getIs_delete, "0");
return this.list(lam); return this.list(lam);
} }

View File

@@ -122,7 +122,7 @@ public class AutoSendAirShaftAgvTask {
SlitterTaskUtil.getNumberByResourceCode(demoPlan.getResource_name()), SlitterTaskUtil.getNumberByResourceCode(demoPlan.getResource_name()),
area)); area));
if (emptyPoint.size() == 0) { if (emptyPoint.size() == 0) {
log.warn("找不到对应的位置!"); log.warn("当前分切机找不到空闲的对接位置!");
continue; continue;
} }
// 创建任务 // 创建任务

View File

@@ -1974,9 +1974,31 @@ public class SlitterServiceImpl implements SlitterService {
String downRightSizeV = param.getString("down_right_size_v"); String downRightSizeV = param.getString("down_right_size_v");
// 获取设备的 // 获取设备的
List<PdmBiSlittingproductionplan> checkPlans = slittingproductionplanService.getXnPlanByDevice(deviceCode); List<PdmBiSlittingproductionplan> checkPlans = slittingproductionplanService.getXnPlanByDevice(deviceCode);
if (!doCheckCanCallAgain(checkPlans)) { //判断是否有未配送完成的虚拟分切计划
throw new BadRequestException("气胀轴正在准备或配送中、未使用,不允许二次呼叫套轴!"); if (ObjectUtil.isNotEmpty(checkPlans)) {
PdmBiSlittingproductionplan now_checkPlan = checkPlans.get(0);
if("01".equals(now_checkPlan.getStatus())){
log.debug(deviceCode+"气胀轴正在准备,不允许二次呼叫套轴!");
throw new BadRequestException(deviceCode+"气胀轴正在准备,不允许二次呼叫套轴!");
}else if("02".equals(now_checkPlan.getStatus())){
log.debug(deviceCode+"气胀轴配送中,不允许二次呼叫套轴!");
throw new BadRequestException(deviceCode+"气胀轴配送中,不允许二次呼叫套轴!");
}
} }
//判断分切暂存位是否有已配送的气胀轴或未下料完成的子卷
//根据机台号获取分切区域表
StIvtCutpointivt deviceCut = cutpointivtService.getPintByExtCode(deviceCode, false);
//获取机台对应的空闲对接位
List<BstIvtCutpointivt> emptyPoint = slitterMapper.getEmptyCutPointNotTask(deviceCut.getProduct_area(),
deviceCut.getSort_seq(),
SlitterTaskUtil.getPointLocationInCutDevice(
SlitterTaskUtil.getNumberByResourceCode(deviceCode),
deviceCut.getProduct_area()));
if (emptyPoint.size() == 0) {
log.debug(deviceCode+"对接缓存位不是空位或存在执行中的任务!");
throw new BadRequestException(deviceCode+"对接缓存位不是空位或存在执行中的任务!");
}
List<PdmBiSlittingproductionplan> plans = new ArrayList<>(); List<PdmBiSlittingproductionplan> plans = new ArrayList<>();
// 虚拟计划 // 虚拟计划
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
@@ -2145,14 +2167,14 @@ public class SlitterServiceImpl implements SlitterService {
return res; return res;
} }
private boolean doCheckCanCallAgain(List<PdmBiSlittingproductionplan> checkPlans) { private PdmBiSlittingproductionplan doCheckCanCallAgain(List<PdmBiSlittingproductionplan> checkPlans) {
// 如果is_paper_ok = 2那就不允许 // 如果is_paper_ok = 2那就不允许
for (PdmBiSlittingproductionplan checkPlan : checkPlans) { for (PdmBiSlittingproductionplan checkPlan : checkPlans) {
if ("2".equals(checkPlan.getIs_paper_ok())) { if ("2".equals(checkPlan.getStatus())) {
return false; return checkPlan;
} }
} }
return true; return null;
} }
@Override @Override