From d182f6feacc10ef69d5ae2ef9e6691dd86166272 Mon Sep 17 00:00:00 2001 From: gongbaoxiong Date: Mon, 6 Jan 2025 09:18:02 +0800 Subject: [PATCH] =?UTF-8?q?add:=E4=BB=BB=E5=8A=A1=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=90=8C=E6=AD=A5ndc;=20=E4=BB=BB=E5=8A=A1=E5=8F=8D=E9=A6=88wc?= =?UTF-8?q?s=E9=87=8D=E8=AF=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agv/ndcone/AgvNdcOneDeviceDriver.java | 74 +++++++++---------- .../service/impl/InstructionServiceImpl.java | 30 ++++---- .../task/service/impl/TaskServiceImpl.java | 32 ++++---- .../org/nl/quartz/task/SyncDeviceStatus.java | 7 +- .../src/main/resources/logback-spring.xml | 2 +- 5 files changed, 70 insertions(+), 75 deletions(-) diff --git a/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java b/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java index 0d2d243..f47b9eb 100644 --- a/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java +++ b/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java @@ -500,36 +500,36 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic } } //到达桁架2请求放货 - if (device.getDeviceDriver() instanceof Hj1DeviceDriver) { - hj1DeviceDriver = (Hj1DeviceDriver) device.getDeviceDriver(); - hj1DeviceDriver.writing(7); - log.info("agv到达" + device_code + ",放货点,开始写入信号7进行进入申请,当前信号值为:Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction()); + if (device.getDeviceDriver() instanceof Hj2DeviceDriver) { + hj2DeviceDriver = (Hj2DeviceDriver) device.getDeviceDriver(); + hj2DeviceDriver.writing(7); + log.info("agv到达" + device_code + ",放货点,开始写入信号7进行进入申请,当前信号值为:Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction()); //反馈WMS请求放货 //sendAgvTaskStatus(inst, device_code, Integer.parseInt(AgvActionEnum.ACTION_STATUS.code("请求取货"))); - if (hj1DeviceDriver.getMode() != 0 && hj1DeviceDriver.getMove() == 0) { - if (hj1DeviceDriver.getAction() == 3) { - log.info("设备" + device_code + "的Action信号已变更为3允许进入,当前信号值为:Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction() + ",agv开始进入放货。"); + if (hj2DeviceDriver.getMode() != 0 && hj2DeviceDriver.getMove() == 0) { + if (hj2DeviceDriver.getAction() == 3) { + log.info("设备" + device_code + "的Action信号已变更为3允许进入,当前信号值为:Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction() + ",agv开始进入放货。"); agv_status = 2; flag = true; data = getData(data, index, inst, task); } else { - log.info("设备" + device_code + "的Action信号未变更为3,不允许进入,当前信号值为:Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction() + ",尝试重新写入信号7进行进入申请"); - hj1DeviceDriver.writing(7); - log.info("设备" + device_code + "已完成信号7写入,当前信号值为:" + "Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction()); + log.info("设备" + device_code + "的Action信号未变更为3,不允许进入,当前信号值为:Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction() + ",尝试重新写入信号7进行进入申请"); + hj2DeviceDriver.writing(7); + log.info("设备" + device_code + "已完成信号7写入,当前信号值为:" + "Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction()); //反馈WMS请求放货 //sendAgvTaskStatus(inst, device_code, Integer.parseInt(AgvActionEnum.ACTION_STATUS.code("请求取货"))); } - hj1DeviceDriver.setMessage(""); + hj2DeviceDriver.setMessage(""); } else { String message = ""; - if (hj1DeviceDriver.getMode() == 0) { + if (hj2DeviceDriver.getMode() == 0) { message += "设备Mode值为0,设备异常,请检查!"; } else { message += "设备光电信号不为0,站点有货,请检查!"; } message += "不允许AGV放货。"; - agv_message = hj1DeviceDriver.getDevice_code() + message; - hj1DeviceDriver.setMessage(message); + agv_message = hj2DeviceDriver.getDevice_code() + message; + hj2DeviceDriver.setMessage(message); logServer.deviceExecuteLog(device_code, "", "", message); log.info(device_code + message); lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, message)); @@ -605,24 +605,24 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic } transportOrder = ""; // "========================================================================放货完成=================================================================================" - //到达桁架2放货完成 - if (device.getDeviceDriver() instanceof Hj2DeviceDriver) { - hj2DeviceDriver = (Hj2DeviceDriver) device.getDeviceDriver(); - log.info("agv进入" + device_code + ",放货完成,开始写入信号5进行安全交互,当前信号值为:Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction()); - hj2DeviceDriver.writing(5); - if (hj2DeviceDriver.getMode() == 4) { - log.info("设备" + device_code + "的Mode信号已变更为4,当前信号值为:Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction() + ",开始写入0清除mode信号。"); - hj2DeviceDriver.writing(0); + //到达桁架1放货完成 + if (device.getDeviceDriver() instanceof Hj1DeviceDriver) { + hj1DeviceDriver = (Hj1DeviceDriver) device.getDeviceDriver(); + log.info("agv进入" + device_code + ",放货完成,开始写入信号5进行安全交互,当前信号值为:Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction()); + hj1DeviceDriver.writing(5); + if (hj1DeviceDriver.getMode() == 4) { + log.info("设备" + device_code + "的Mode信号已变更为4,当前信号值为:Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction() + ",开始写入0清除mode信号。"); + hj1DeviceDriver.writing(0); agv_status = 0; flag = true; - data = actionComplete(index, inst, device_code, hj2DeviceDriver.getTo_command(), Integer.parseInt(AgvActionEnum.ACTION_STATUS.code("放货完成")), "放货完成"); - log.info("设备" + device_code + "已完成信号0写入,当前信号值为:" + "Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction() + ",agv开始离开。"); + data = actionComplete(index, inst, device_code, hj1DeviceDriver.getTo_command(), Integer.parseInt(AgvActionEnum.ACTION_STATUS.code("放货完成")), "放货完成"); + log.info("设备" + device_code + "已完成信号0写入,当前信号值为:" + "Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction() + ",agv开始离开。"); } else { - log.info("设备" + device_code + "的Mode信号未变更为4,当前信号值为:Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction() + ",尝试重新写入信号5进行安全交互"); - hj2DeviceDriver.writing(5); - log.info("设备" + device_code + "已完成信号5写入,当前信号值为:" + "Mode:" + hj2DeviceDriver.getMode() + ",Move:" + hj2DeviceDriver.getMove() + ",Action:" + hj2DeviceDriver.getAction()); + log.info("设备" + device_code + "的Mode信号未变更为4,当前信号值为:Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction() + ",尝试重新写入信号5进行安全交互"); + hj1DeviceDriver.writing(5); + log.info("设备" + device_code + "已完成信号5写入,当前信号值为:" + "Mode:" + hj1DeviceDriver.getMode() + ",Move:" + hj1DeviceDriver.getMove() + ",Action:" + hj1DeviceDriver.getAction()); } - hj2DeviceDriver.setMessage(""); + hj1DeviceDriver.setMessage(""); } //到达桁架2放货完成 if (device.getDeviceDriver() instanceof Hj2DeviceDriver) { @@ -647,19 +647,19 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic if (device.getDeviceDriver() instanceof SsxDeviceDriver) { ssxDeviceDriver = (SsxDeviceDriver) device.getDeviceDriver(); log.info("agv进入" + device_code + ",放货完成,开始写入信号5进行安全交互,当前信号值为:Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction()); -// ssxDeviceDriver.writing(5); -// if (ssxDeviceDriver.getMode() == 4) { + ssxDeviceDriver.writing(5); + if (ssxDeviceDriver.getMode() == 4) { log.info("设备" + device_code + "的Mode信号已变更为4,当前信号值为:Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction() + ",开始写入0清除mode信号。"); -// ssxDeviceDriver.writing(0); + ssxDeviceDriver.writing(0); agv_status = 0; flag = true; data = actionComplete(index, inst, device_code, ssxDeviceDriver.getTo_command(), Integer.parseInt(AgvActionEnum.ACTION_STATUS.code("放货完成")), "放货完成"); log.info("设备" + device_code + "已完成信号0写入,当前信号值为:" + "Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction() + ",agv开始离开。"); -// } else { -// log.info("设备" + device_code + "的Mode信号未变更为4,当前信号值为:Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction() + ",尝试重新写入信号5进行安全交互"); -// ssxDeviceDriver.writing(5); -// log.info("设备" + device_code + "已完成信号5写入,当前信号值为:" + "Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction()); -// } + } else { + log.info("设备" + device_code + "的Mode信号未变更为4,当前信号值为:Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction() + ",尝试重新写入信号5进行安全交互"); + ssxDeviceDriver.writing(5); + log.info("设备" + device_code + "已完成信号5写入,当前信号值为:" + "Mode:" + ssxDeviceDriver.getMode() + ",Move:" + ssxDeviceDriver.getMove() + ",Action:" + ssxDeviceDriver.getAction()); + } ssxDeviceDriver.setMessage(""); } //agv普通站点放货完成 @@ -779,7 +779,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic .method("feedAgvTaskStatus") .build(); luceneExecuteLogService.deviceExecuteLog(reqlogDto); - for (int i = 0; i < 5; i++) { + for (int i = 0; i < 10; i++) { log.info("点位:" + device_code + ",agv开始反馈wcs动作" + AgvActionEnum.ACTION_STATUS.check(String.valueOf(status)) ); JSONObject resp = acsToWmsService.feedAgvTaskAction(ja); if ("200".equals(resp.getString("code"))) { diff --git a/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index a4631c3..946998c 100644 --- a/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -1,5 +1,6 @@ package org.nl.acs.instruction.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; @@ -14,6 +15,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.nl.acs.AcsConfig; import org.nl.acs.agv.server.MagicAgvService; @@ -1221,13 +1223,17 @@ public class InstructionServiceImpl extends CommonServiceImpl entities = this.list(new LambdaQueryWrapper().eq(InstructionMybatis::getTask_id, id).lt(InstructionMybatis::getInstruction_status, 2)); + if (CollectionUtils.isNotEmpty(entities)) { + entity = BeanUtil.copyProperties(entities.get(0), InstructionDto.class); + } else { + return; + } } TaskDto task = taskService.findByCodeFromCache(entity.getTask_code()); if (StrUtil.isEmpty(entity.getRoute_plan_code())) { entity.setRoute_plan_code(task.getRoute_plan_code()); } - // != 0 为agv任务 1=magic 2=NDC 3=XZ,4=ZHEDA if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "1") && !StrUtil.equals(entity.getSend_status(), "2")) { @@ -1237,12 +1243,12 @@ public class InstructionServiceImpl extends CommonServiceImpl impleme if (entity == null) { throw new BadRequestException("被删除或无权限,操作失败!"); } - InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl"); - InstructionDto instdto = instructionservice.findByTaskid(id, "instruction_status <2 "); - if (instdto != null) { - throw new BadRequestException("有指令未完成!"); + try { + InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl"); + instructionservice.cancel(id); + } catch (Exception e) { + throw new BadRequestException(e.getMessage()); } String currentUsername = SecurityUtils.getCurrentUsername(); String now = DateUtil.now(); entity.setUpdate_time(now); entity.setUpdate_by(currentUsername); entity.setTask_status("3"); - Task task = ConvertUtil.convert(entity, Task.class); taskMapper.updateById(task); - - -// synchronized (TaskServiceImpl.class){ -// Iterator it = tasks.iterator(); -// // 清理缓存 -// while (it.hasNext()) { -// TaskDto taskDto = it.next(); -// if (taskDto.getTask_id().equals(id)) { -// tasks.remove(taskDto); -// } -// }} - + // synchronized (TaskServiceImpl.class){ + // Iterator it = tasks.iterator(); + // // 清理缓存 + // while (it.hasNext()) { + // TaskDto taskDto = it.next(); + // if (taskDto.getTask_id().equals(id)) { + // tasks.remove(taskDto); + // } + // }} removeByCodeFromCache(entity.getTask_code()); - // 判断是否为WMS下发的任务,如果是反馈任务状态给WMS String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue(); if (!StrUtil.startWith(entity.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) { diff --git a/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java b/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java index 453f29e..0af9171 100644 --- a/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java +++ b/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java @@ -86,11 +86,12 @@ public class SyncDeviceStatus { param.put("AGV", AGV); redisUtils.set("AGV", AGV); //agv状态信息反馈 - acsToWmsService.shipAgvUpdate(AGV); - //log.trace("自动上 报agv状态,完毕耗时{}", System.currentTimeMillis() - startTime); + //acsToWmsService.shipAgvUpdate(AGV); + log.trace("自动上报agv状态,完毕耗时{}", System.currentTimeMillis() - startTime); + Integer sd =0; } } catch (Exception e) { - // log.error("自动线程开始查询AGV设备状态失败{}{}", e, e.getMessage()); + log.error("自动线程开始查询AGV设备状态失败{}{}", e, e.getMessage()); } } } diff --git a/nlsso-server/src/main/resources/logback-spring.xml b/nlsso-server/src/main/resources/logback-spring.xml index 679deea..a9b8bd7 100644 --- a/nlsso-server/src/main/resources/logback-spring.xml +++ b/nlsso-server/src/main/resources/logback-spring.xml @@ -71,7 +71,7 @@ https://juejin.cn/post/6844903775631572999 - +