From b5656f096e355aad6333369f5afaa9ba8dada7f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=80=A1=E8=93=89?= <377046077@qq.com> Date: Wed, 24 Sep 2025 10:39:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A7=E7=BA=BF=E8=BE=93=E9=80=81=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ssj/floor2/LineSsjThread.java | 109 ++++++++++++------ 1 file changed, 71 insertions(+), 38 deletions(-) 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 a019a26..948fa7b 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 @@ -4,12 +4,14 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import com.ruoyi.api.service.IApiService; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.domain.SendData; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.device.ssj.domain.DeviceSsj; import com.ruoyi.job.domain.MydoJob; import com.ruoyi.job.service.IMydoJobService; import com.ruoyi.queue.agv.service.IAgvQueueService; import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; +import com.ruoyi.schedule.plcRead.util.Tools; import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; @@ -79,51 +81,82 @@ public class LineSsjThread implements Runnable { public void inDispatch(DeviceSsj SsjDevice) { - //如果到位,扫到条码,托盘大小, - if (SsjDevice.getDw() == 1 && StrUtil.isNotBlank(SsjDevice.getTrayCode()) && SsjDevice.getTraySize() !=0) { + //如果到位,扫到条码,托盘大小,执行阶段卡控一下(下发输送机后改执行阶段) + if (SsjDevice.getDw() == 1 && StrUtil.isNotBlank(SsjDevice.getTrayCode()) && SsjDevice.getTraySize() !=0 && SsjDevice.getTaskNo()<1000) { + log.info("设备:{} 位置:{} 条码:{} 托盘大小:{}",SsjDevice.getDeviceCode(),"产线到位",SsjDevice.getTrayCode(),SsjDevice.getTraySize()); + + //查作业,入如果已经有了,直接下发输送线 + MydoJob mydoJob = new MydoJob(); + mydoJob.setInOrOut("1"); + mydoJob.setStatus("1"); + mydoJob.setEntranceId("G1005"); + mydoJob.setExecutionPhase("0"); + List mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob); + //有作业,下发输送机任务号,覆盖任务号 + if(mydoJobs.size()>0){ + + mydoJob = mydoJobs.get(0); + SendData taskNo = new SendData(Tools.INT, mydoJob.getTaskNo()); + byte[] bytes = Tools.sendData(taskNo); + int i = PlcSsjRead.WriteToSSJ(SsjDevice.getPlcDbWriteAddress(), bytes); + if (i==1){ + mydoJob.setExecutionPhase("1"); + mydoJobService.updateMydoJob(mydoJob); + log.info("G1005产线输送机下发任务号成功:"+mydoJob.getTaskNo()); + } + + + }else { + + //请求wms生成入库作业 + HashMap paramMap = new HashMap<>(); + paramMap.put("trayCode", SsjDevice.getTrayCode()); + paramMap.put("size", SsjDevice.getTraySize()); + paramMap.put("floor", "2"); + paramMap.put("extranceId", "G1005"); + AjaxResult ajaxResult = apiService.createInMydoJob(paramMap); + if (ajaxResult.isSuccess()) { + //拿到正常作业,插到wcs作业表,下发给输送机任务号,覆盖任务号 + MydoJob mydoJob2 = (MydoJob) ajaxResult.get("mydoJob"); + mydoJobService.insertMydoJob(mydoJob2); + SendData taskNo = new SendData(Tools.INT, mydoJob2.getTaskNo()); + byte[] bytes = Tools.sendData(taskNo); + int i = PlcSsjRead.WriteToSSJ(SsjDevice.getPlcDbWriteAddress(), bytes); + if (i==1){ + mydoJob2.setExecutionPhase("1"); + mydoJobService.updateMydoJob(mydoJob2); + log.info("G1005产线输送机下发任务号成功:"+mydoJob2.getTaskNo()); + } + } else if (ajaxResult.isError()) { + //超大,给plc下发错误信息,等待人工处理 + //托盘大小对不上,给plc下发错误信息,等待人工处理 + //码不对,给plc下发错误信息,等待人工处理 + } + + + } + } + + if (SsjDevice.getDw() == 1 && StrUtil.isBlank(SsjDevice.getTrayCode()) && SsjDevice.getTraySize() !=0 && SsjDevice.getTaskNo()<1000) { + log.info("设备:{} 位置:{} 条码:{} 托盘大小:{}",SsjDevice.getDeviceCode(),"产线",SsjDevice.getTrayCode(),SsjDevice.getTraySize()); - //请求wms生成入库作业 - HashMap paramMap = new HashMap<>(); - paramMap.put("trayCode",SsjDevice.getTrayCode()); - paramMap.put("size",SsjDevice.getTraySize()); - paramMap.put("floor","2"); - paramMap.put("extranceId","G1005"); - AjaxResult ajaxResult = apiService.createInMydoJob(paramMap); - //判断结果是否成功 - if(ajaxResult.isSuccess()){ - log.info("请求wms生成入库作业成功,条码为:{}",SsjDevice.getTrayCode()); - }else{ - log.error("请求wms生成入库作业失败,条码为:{}",SsjDevice.getTrayCode()); - } + //查wcs有没作业,有下发给输送机任务号,覆盖任务号 + MydoJob mydoJob = new MydoJob(); + mydoJob.setInOrOut("1"); + mydoJob.setStatus("1"); + mydoJob.setEntranceId("G1005"); + mydoJob.setExecutionPhase("0"); + List mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob); + //没有,请求错误接口,找作业,返回成功,//拿到正常作业,插到wcs作业表,下发给输送机任务号,覆盖任务号,shibai... } - //查这个口的入库作业,与出库作业,如果没有出库作业,且有入库作业,生成agv搬运作业 - MydoJob mydoJob = new MydoJob(); - mydoJob.setEntranceId("G1005"); - mydoJob.setStatus("1"); - mydoJob.setInOut("1"); - List mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob); - if (mydoJobs.size() > 0) { + if (SsjDevice.getDw() == 1 && SsjDevice.getTraySize() ==0 && SsjDevice.getTaskNo()>1000) { - for (MydoJob mydoJob1 : mydoJobs) { - MydoJob mydoJob2 = new MydoJob(); - if ("1".equals(mydoJob1.getRoadwayId())){ - mydoJob2.setExitId("L1011"); - }else{ - mydoJob2.setExitId("L1012"); - } - mydoJob2.setInOut("2"); - mydoJob2.setStatus("3"); - List mydoJobouts = mydoJobService.selectInOrOutMydoJobList(mydoJob2); - if (mydoJobouts.size() == 0) { - //生成agv搬运作业 - } - } + log.info("设备:{} 位置:{} 条码:{} 托盘大小:{}",SsjDevice.getDeviceCode(),"产线",SsjDevice.getTrayCode(),SsjDevice.getTraySize()); + //任务号查wcs作业,查巷道,看目标输送线是否空闲 } - - } }