diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java index 5cd1492c..8d426338 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java @@ -15,6 +15,7 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.job.domain.MydoJob; import com.ruoyi.queue.agv.domain.AgvQueue; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -126,5 +127,5 @@ public interface IApiService AjaxResult receiveInMydoJob(ReceiveJob receiveInJob); - AjaxResult requestEnterByEnterId(String enterId); + AjaxResult selectMydoJobByTrayCodeAndEntranceId(HashMap paramMap); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java index 0cee7f16..9c31fe30 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java @@ -30,6 +30,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -369,8 +370,8 @@ public class ApiServiceImpl implements IApiService { } @Override - public AjaxResult requestEnterByEnterId(String enterId) { - RequestLog requestLog = requestLogService.getRequestLog(REQUEST_ENTER_URL, "入库请求", JSONUtil.toJsonStr(enterId)); + public AjaxResult selectMydoJobByTrayCodeAndEntranceId(HashMap paramMap) { + RequestLog requestLog = requestLogService.getRequestLog(REQUEST_ENTER_URL, "请求获取入库作业", JSONUtil.toJsonStr(paramMap)); if ("1".equals(requestLog.getIsSuccessful())) { InterfaceReceive bean = JSONUtil.toBean(requestLog.getResponseBody(), InterfaceReceive.class); return AjaxResult.success(bean.getData()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java b/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java index 443289cb..1e89b77b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java @@ -15,7 +15,7 @@ public class Constant { public static final String REQUEST_MYDO_JOB_URL = WMS_BASE_URL+"requestByNoTrayCode"; public static final String RE_ASSIGN_URL = WMS_BASE_URL+"reAssign"; public static final String RE_MATERIAL_URL = WMS_BASE_URL+"reMaterial"; - public static final String REQUEST_ENTER_URL = WMS_BASE_URL+"requestEnterByEnterId"; + public static final String REQUEST_ENTER_URL = WMS_BASE_URL+"requestEnterByTrayCodeAndEntranceId"; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java index 0d072b17..b0325c8a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java @@ -141,8 +141,8 @@ public class ScheduleThread { */ public void startAllThread2() { monitoringCustomThread.thread.start(); - //floor1BothWayInSsjCustomThread.thread.start(); - //floor1BothWayOutSsjCustomThread.thread.start(); + floor1BothWayInSsjCustomThread.thread.start(); + floor1BothWayOutSsjCustomThread.thread.start(); floor1SingleSsjCustomThread.thread.start(); floor2InSsjCustomThread.thread.start(); lineSsjCustomThread.thread.start(); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java index 98ebfe5d..488a0627 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java @@ -100,7 +100,7 @@ public class PlcSsjRead implements Runnable { } /** - * 入库输送机 + * 巷道输送机 * * @param ssjDevice */ @@ -117,7 +117,7 @@ public class PlcSsjRead implements Runnable { } /** - * 拣选口输送机 + * 入出库输送机 * * @param ssjDevice */ @@ -136,7 +136,7 @@ public class PlcSsjRead implements Runnable { } /** - * 出库输送机 + * 产线输送机 * * @param ssjDevice */ @@ -151,8 +151,19 @@ public class PlcSsjRead implements Runnable { ssjDevice.setTraySize(ParseUtil.optInt(6, ddsx1)); ssjDevice.setTaskNo(ParseUtil.optDInt(8, ddsx1)); - - OperateResultExOne trayCodeRead = readWriteNet.Read("DB502.0", Short.parseShort("220")); + String trayCodeReadAddress=""; + switch (ssjDevice.getDeviceCode()){ + case "G1005": + trayCodeReadAddress = "DB502.0"; + break; + case "L2012": + trayCodeReadAddress = "DB503.0"; + break; + case "L2013": + trayCodeReadAddress = "DB504.0"; + break; + } + OperateResultExOne trayCodeRead = readWriteNet.Read(trayCodeReadAddress, Short.parseShort("220")); if (trayCodeRead.IsSuccess){ byte[] content = trayCodeRead.Content; //去除bytes中 @@ -208,12 +219,12 @@ public class PlcSsjRead implements Runnable { setIsConnect(false); } - public static int writeToSsj(String address, String taskNo, int qx) { + public static int writeToSsj(String address, String taskNo, int qx , int completed) { - int jym = Tools.getJYM(Integer.parseInt(taskNo), qx, 1); + int jym = Tools.getJYM(Integer.parseInt(taskNo), qx, completed); SendData taskNoSendData = new SendData(Tools.INT, taskNo); SendData qxSendData = new SendData(Tools.INT, qx); - SendData completedSendData = new SendData(Tools.INT, 1); + SendData completedSendData = new SendData(Tools.INT, completed); SendData jymSendData = new SendData(Tools.INT, jym); byte[] bytes = Tools.sendData(taskNoSendData, qxSendData, completedSendData, jymSendData); return PlcSsjRead.WriteToSSJ(address, bytes); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayInSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayInSsjThread.java index 3ff98897..1302e130 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayInSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayInSsjThread.java @@ -1,5 +1,6 @@ package com.ruoyi.schedule.scheduleTask.ssj.floor1; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; @@ -50,7 +51,7 @@ public class Floor1BothWayInSsjThread implements Runnable { ssjCodeList.put("roadway1", PlcSsjRead.deviceSsjMap.get("L2003")); ssjCodeList.put("roadway2", PlcSsjRead.deviceSsjMap.get("L2005")); ssjCodeList.put("in1", PlcSsjRead.deviceSsjMap.get("L2012")); - ssjCodeList.put("in2", PlcSsjRead.deviceSsjMap.get("L2005")); + ssjCodeList.put("in2", PlcSsjRead.deviceSsjMap.get("L2013")); apiService = SpringUtils.getBean(IApiService.class); @@ -133,7 +134,7 @@ public class Floor1BothWayInSsjThread implements Runnable { } private void dispatch2(DeviceSsj ssj) { - if (ssj.getDw() == 1 && ssj.getTaskNo() > 0 && ssj.getTaskNo() < 1000 && ssj.getRkqq() == 1) { + if (ssj.getDw() == 1 && ssj.getTaskNo() > 0 && ssj.getTaskNo() < 1000 && ssj.getTraySize() != 0) { //先检测有没有出库作业,有出库作业直接退回 MydoJob outMydoJob = mydoJobService.selectMydoJobByExitList(Collections.singletonList(ssj.getDeviceCode())); String l2012WriteAddress = "DB501.20"; @@ -143,20 +144,18 @@ public class Floor1BothWayInSsjThread implements Runnable { //下发去向 和任务号 switch (ssj.getDeviceCode()) { case "L2012": - i = writeToSsj(l2012WriteAddress,"0",2); + i = writeToSsj(l2012WriteAddress,"0",2,1); break; case "L2013": - i = writeToSsj(l2013WriteAddress,"0",2); + i = writeToSsj(l2013WriteAddress,"0",2,1); break; } if (i == 1) { log.info("未检测到托盘码下发回退 rwh:{},qx:{},trayCode:{}", ssj.getTaskNo(), 1, ssj.getTrayCode()); } } else { - if (StrUtil.isNotEmpty(ssj.getTrayCode())) { + if (StrUtil.isNotBlank(ssj.getTrayCode())) { MydoJob param = new MydoJob(); - param.setStatus(TASK_STATUS_CREATE); - param.setExecutionPhase("0"); param.setEntranceId(ssj.getDeviceCode()); List mydoJobs = mydoJobService.selectMydoJobList(param); MydoJob inJob = null; @@ -169,9 +168,10 @@ public class Floor1BothWayInSsjThread implements Runnable { paramMap.put("size", ssj.getTraySize()); paramMap.put("floor", "1"); paramMap.put("entranceId",ssj.getDeviceCode()); - AjaxResult result = apiService.createInMydoJob(paramMap); + AjaxResult result = apiService.selectMydoJobByTrayCodeAndEntranceId(paramMap); if (result.isSuccess()) { - inJob = (MydoJob) result.get("data"); + inJob = BeanUtil.toBean(result.get("data"), MydoJob.class); + inJob.setStatus(TASK_STATUS_CREATE); mydoJobService.insertMydoJob(inJob); } else { log.info("未检测到托盘码请求入库作业 rwh:{},trayCode:{}", ssj.getTaskNo(), ssj.getTrayCode()); @@ -182,10 +182,10 @@ public class Floor1BothWayInSsjThread implements Runnable { //下发去向 和任务号 switch (ssj.getDeviceCode()) { case "L2012": - i = writeToSsj(l2012WriteAddress,inJob.getTaskNo(),1); + i = writeToSsj(l2012WriteAddress,inJob.getTaskNo(),1,1); break; case "L2013": - i = writeToSsj(l2013WriteAddress,inJob.getTaskNo(),1); + i = writeToSsj(l2013WriteAddress,inJob.getTaskNo(),1,1); break; } if (i == 1) { @@ -197,6 +197,28 @@ public class Floor1BothWayInSsjThread implements Runnable { log.info("入库请求下发任务号加去向 rwh:{},qx:{},trayCode:{}", ssj.getTaskNo(), 1, ssj.getTrayCode()); } } + }else { + HashMap paramMap = new HashMap<>(); + paramMap.put("size", ssj.getTraySize()); + AjaxResult ajaxResult = apiService.selectMydoJobByNoTrayCode(paramMap); + if (ajaxResult.isSuccess()) { + MydoJob mydoJob2 = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class); + mydoJobService.insertMydoJob(mydoJob2); + int i = writeToSsj(ssj.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1); + if (i == 1) { + mydoJob2.setExecutionPhase("1"); + mydoJobService.updateMydoJob(mydoJob2); + log.info("{}下发任务号{}成功:",ssj.getDeviceCode(),mydoJob2.getTaskNo()); + } + } else if (ajaxResult.isError()) { + //超大,给plc下发错误信息,等待人工处理 + //托盘大小对不上,给plc下发错误信息,等待人工处理 + //码不对,给plc下发错误信息,等待人工处理 + int i = writeToSsj(ssj.getPlcDbWriteAddress(), "0", Integer.parseInt(ajaxResult.get("code").toString()), 2); + if (i == 1) { + log.info("{}下发错误信号{}成功:",ssj.getDeviceCode(),Integer.parseInt(ajaxResult.get("code").toString())); + } + } } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2InOutSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2InOutSsjThread.java index 0f9ca463..4fb3c7d6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2InOutSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2InOutSsjThread.java @@ -95,7 +95,7 @@ public class Floor2InOutSsjThread implements Runnable { //不允许放货 if (!agvQueues.isEmpty() && inSsjDevice.getAllowPut() == 0) { //如果有这个输送机口的agv队列并请求放货(状态为6) - int i = writeToSsj(inSsjDevice.getPlcDbWriteAddress(), "0", Integer.parseInt(agvQueues.get(0).getCtnrType())); + int i = writeToSsj(inSsjDevice.getPlcDbWriteAddress(), "0", Integer.parseInt(agvQueues.get(0).getCtnrType()),1); if (i == 1) { log.info(inSsjDevice.getDeviceCode() + "输送机下发请求放货成功"); } @@ -119,7 +119,7 @@ public class Floor2InOutSsjThread implements Runnable { agvQueue.setPositionCode2(inSsjDevice.getDeviceCode()); List agvQueues = agvQueueService.selectAgvQueueList(agvQueue); if (!agvQueues.isEmpty()) { - int i = writeToSsj(inSsjDevice.getPlcDbWriteAddress(), agvQueues.get(0).getWmsTaskNo(), 1); + int i = writeToSsj(inSsjDevice.getPlcDbWriteAddress(), agvQueues.get(0).getWmsTaskNo(), 1,1); if (i == 1) { log.info("输送机{}下发任务号{}成功", inSsjDevice.getDeviceCode(), agvQueues.get(0).getWmsTaskNo()); MydoJob mydoJob = mydoJobService.selectMydoJobByJobId(agvQueues.get(0).getTaskCode()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/LineSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/LineSsjThread.java index 74dd476e..24bf02bb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/LineSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/LineSsjThread.java @@ -23,6 +23,7 @@ import java.util.List; import static com.ruoyi.common.TaskStatusCode.TASK_EP_AGV; import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.deviceSsjMap; +import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.writeToSsj; /** * 生产线输送机 @@ -129,7 +130,7 @@ public class LineSsjThread implements Runnable { if (i == 1) { //mydoJob2.setExecutionPhase("1"); mydoJobService.updateMydoJob(mydoJob2); - log.info("G1005产线输送机下发任务号成功:" + mydoJob2.getTaskNo()); + log.info("G1005产线输送机下发任务号成功:{}" , mydoJob2.getTaskNo()); } } else { //超大,给plc下发错误信息,等待人工处理 @@ -169,7 +170,7 @@ public class LineSsjThread implements Runnable { paramMap.put("size", SsjDevice.getTraySize()); AjaxResult ajaxResult = apiService.selectMydoJobByNoTrayCode(paramMap); if (ajaxResult.isSuccess()) { - MydoJob mydoJob2 = (MydoJob) ajaxResult.get("data"); + MydoJob mydoJob2 = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class); mydoJobService.insertMydoJob(mydoJob2); int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1); if (i == 1) { @@ -251,17 +252,7 @@ public class LineSsjThread implements Runnable { } - private static int writeToSsj(String address,String taskNo,int qx,int completed) { - int jym = Tools.getJYM(Integer.parseInt(taskNo), qx, 1); - SendData taskNoSendData = new SendData(Tools.INT, taskNo); - SendData qxSendData = new SendData(Tools.INT,qx); - SendData completedSendData = new SendData(Tools.INT, completed); - SendData jymSendData = new SendData(Tools.INT, jym); - byte[] bytes = Tools.sendData(taskNoSendData, qxSendData, completedSendData, jymSendData); - int i = PlcSsjRead.WriteToSSJ(address, bytes); - return i; - } } diff --git a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml index 51f4b116..7481846b 100644 --- a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml @@ -197,7 +197,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{item} - and in_or_out <= 20 ans status = 3 + and in_or_out <= 20 and status = 3 order by priority desc,create_time desc