From 18aa216a9b7dab7fe357cc6574b71f22b8dfabf8 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Wed, 11 Jun 2025 19:22:38 +0800 Subject: [PATCH] =?UTF-8?q?opt:=20=E5=A5=97=E8=BD=B4=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tasks/slitter/TrussSendAirShaftTask.java | 8 +- .../service/impl/SlitterServiceImpl.java | 112 ++++++++++++------ 2 files changed, 82 insertions(+), 38 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussSendAirShaftTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussSendAirShaftTask.java index 60cfcc551..d64f0d76f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussSendAirShaftTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussSendAirShaftTask.java @@ -142,7 +142,9 @@ public class TrussSendAirShaftTask extends AbstractAcsTask { SchBaseTask task = new SchBaseTask(); task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr()); task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr()); - task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + task.setTask_status(ObjectUtil.isNotEmpty(form.getString("task_status")) + ? form.getString("task_status") + : TaskStatusEnum.START_AND_POINT.getCode()); task.setPoint_code1(form.getString("point_code1")); task.setPoint_code2(form.getString("point_code2")); task.setVehicle_code(form.getString("vehicle_code1")); @@ -164,7 +166,9 @@ public class TrussSendAirShaftTask extends AbstractAcsTask { task.setPriority(priority_jo.getString("value")); } taskService.save(task); - this.immediateNotifyAcs(null); + if ("1".equals(form.getString("immediateNotifyAcs"))) { + this.immediateNotifyAcs(null); + } return task.getTask_id(); } 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 fdece2c57..978a030ea 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 @@ -45,6 +45,7 @@ import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.TaskUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.RedisUtils; +import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.system.service.notice.ISysNoticeService; import org.nl.system.service.param.ISysParamService; @@ -380,6 +381,19 @@ public class SlitterServiceImpl implements SlitterService { // 当前套轴的分切计划 PdmBiSlittingproductionplan demoPlan = plans.get(0); + // 分切计划设置套轴完成 + String resourceName = demoPlan.getResource_name(); + String qzzNo = resourceName.substring(0, 2) + + resourceName.substring(resourceName.length() - 2) + + demoPlan.getSplit_group() + + TaskUtils.getDateTime("yyMMddHHmmss") + "-" + + demoPlan.getUp_or_down(); + plans.forEach(plan -> { + plan.setIs_child_tz_ok(SlitterConstant.SLITTER_YES); + plan.setQzzno(qzzNo); + TaskUtils.updateOptMessageBySlitterPlan(plan); + }); + slittingproductionplanService.updateBatchById(plans); // 查找是否有同组的气胀轴位置 BstIvtCutpointivt cutPoint = slitterMapper.getSameGroupPoint(demoPlan); if (ObjectUtil.isEmpty(cutPoint)) { @@ -393,55 +407,57 @@ public class SlitterServiceImpl implements SlitterService { } if (ObjectUtil.isEmpty(cutPoint)) { // 获取一个空位 (上下区域) -// List emptyNotTaskPoint = bcutpointivtService.getAreaNotTaskPointByStatus( -// "1", "1", startPoint.getPoint_location(), "1"); List emptyNotTaskPoint = bcutpointivtService.getNBJAreaNotTaskPointByStatus( "1", "1", startPoint.getPoint_location(), "1"); - if (emptyNotTaskPoint.size() == 0) { - stepTipLogs.add("套轴完成->找不到可用套轴对接位!"); + if (emptyNotTaskPoint.size() > 0) { + cutPoint = emptyNotTaskPoint.get(0); + } else { + stepTipLogs.add("提示:套轴完成->找不到可用套轴对接位,创建半条任务,等待AGV取货完成触发!"); redisUtils.set("ERROR" + deviceCode, stepTipLogs); - throw new BadRequestException("找不到可用套轴对接位!"); - } - cutPoint = emptyNotTaskPoint.get(0); - } - String resourceName = demoPlan.getResource_name(); - // 枷锁 - RLock lockPoint = redissonClient.getLock(cutPoint.getPoint_code()); - boolean tryLockPoint = lockPoint.tryLock(0, TimeUnit.SECONDS); - try { - if (tryLockPoint) { - // 分切计划设置套轴完成 - String qzzNo = resourceName.substring(0, 2) - + resourceName.substring(resourceName.length() - 2) - + demoPlan.getSplit_group() - + TaskUtils.getDateTime("yyMMddHHmmss") + "-" - + demoPlan.getUp_or_down(); - plans.forEach(plan -> { - plan.setIs_child_tz_ok(SlitterConstant.SLITTER_YES); - plan.setQzzno(qzzNo); - TaskUtils.updateOptMessageBySlitterPlan(plan); - }); - slittingproductionplanService.updateBatchById(plans); // 创建任务 JSONObject taskParam = new JSONObject(); taskParam.put("point_code1", startPoint.getPoint_code()); - taskParam.put("point_code2", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) - ? cutPoint.getTruss_point_code1() : cutPoint.getTruss_point_code2()); + taskParam.put("point_code2", "-"); + taskParam.put("needPosition", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) + ? "A" : "B"); taskParam.put("vehicle_code1", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) ? qzzNo : ""); taskParam.put("vehicle_code2", SlitterConstant.SLITTER_SHAFT_DOWN.equals(demoPlan.getUp_or_down()) ? qzzNo : ""); taskParam.put("task_type", "010814"); + taskParam.put("task_status", TaskStatusEnum.SURE_START.getCode()); taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + taskParam.put("immediateNotifyAcs", "0"); trussSendAirShaftTask.createTask(taskParam); - } else { - stepTipLogs.add("套轴完成->系统繁忙,稍后在试!"); - redisUtils.set("ERROR" + deviceCode, stepTipLogs); - throw new BadRequestException("系统繁忙,稍后在试!"); - } - } finally { - if (tryLockPoint) { - lockPoint.unlock(); } } + if (ObjectUtil.isNotEmpty(cutPoint)) { + // 枷锁 + RLock lockPoint = redissonClient.getLock(cutPoint.getPoint_code()); + boolean tryLockPoint = lockPoint.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLockPoint) { + // 创建任务 + JSONObject taskParam = new JSONObject(); + taskParam.put("point_code1", startPoint.getPoint_code()); + taskParam.put("point_code2", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) + ? cutPoint.getTruss_point_code1() : cutPoint.getTruss_point_code2()); + taskParam.put("vehicle_code1", SlitterConstant.SLITTER_SHAFT_UP.equals(demoPlan.getUp_or_down()) ? qzzNo : ""); + taskParam.put("vehicle_code2", SlitterConstant.SLITTER_SHAFT_DOWN.equals(demoPlan.getUp_or_down()) ? qzzNo : ""); + taskParam.put("task_type", "010814"); + taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + taskParam.put("immediateNotifyAcs", "1"); + trussSendAirShaftTask.createTask(taskParam); + } else { + stepTipLogs.add("套轴完成->系统繁忙,稍后在试!"); + redisUtils.set("ERROR" + deviceCode, stepTipLogs); + throw new BadRequestException("系统繁忙,稍后在试!"); + } + } finally { + if (tryLockPoint) { + lockPoint.unlock(); + } + } + } + res.put("status", HttpStatus.HTTP_OK); res.put("message", "请求成功"); res.put("msg", msg); @@ -1093,6 +1109,30 @@ public class SlitterServiceImpl implements SlitterService { result.put("message", "不更新库存,放行!"); return result; } + // 判断是不是内包间的点位 + if (task.getPoint_code1().startsWith("TZZC")) { + // 查找半条任务,并创建下发 + List list = taskService.list(new LambdaQueryWrapper() + .eq(SchBaseTask::getTask_type, "010814") + .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()) + .eq(SchBaseTask::getIs_delete, "0") + .orderByAsc(SchBaseTask::getCreate_time)); + if (list.size() > 0) { + SchBaseTask schBaseTask = list.get(0); + JSONObject requestParam = JSONObject.parseObject(schBaseTask.getRequest_param()); + if (ObjectUtil.isNotEmpty(requestParam.getString("needPosition")) && "A".equals(requestParam.getString("needPosition"))) { + schBaseTask.setPoint_code2(task.getPoint_code1() + "_" + requestParam.getString("needPosition")); + } + if (ObjectUtil.isNotEmpty(requestParam.getString("needPosition")) && "B".equals(requestParam.getString("needPosition"))) { + schBaseTask.setPoint_code2(task.getPoint_code1() + "_" + requestParam.getString("needPosition")); + } + schBaseTask.setRemark("AGV取货完成触发!"); + schBaseTask.setUpdate_time(DateUtil.now()); + schBaseTask.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + taskService.updateById(schBaseTask); + trussSendAirShaftTask.immediateNotifyAcs(schBaseTask.getTask_id()); + } + } startPointObj.setPoint_status("1"); startPointObj.setQzz_no1(""); startPointObj.setQzz_no2("");