From 150af6a5f815565a6f1d0469d3e52a7515c4372a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=80=A1=E8=93=89?= <377046077@qq.com> Date: Tue, 25 Nov 2025 13:55:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BE=93=E9=80=81=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../queue/srgv/mapper/WcsSrgvQueueMapper.java | 4 + .../srgv/service/IWcsSrgvQueueService.java | 4 + .../service/impl/WcsSrgvQueueServiceImpl.java | 6 ++ .../scheduleTask/srgv/BaseSRgvThread.java | 78 ++++++++++++++++++- .../schedule/scheduleTask/ssj/SsjThread.java | 34 +++++++- .../mapper/queue/WcsSrgvQueueMapper.xml | 6 ++ 6 files changed, 127 insertions(+), 5 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/queue/srgv/mapper/WcsSrgvQueueMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/queue/srgv/mapper/WcsSrgvQueueMapper.java index 326eae5..54acbf3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/queue/srgv/mapper/WcsSrgvQueueMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/queue/srgv/mapper/WcsSrgvQueueMapper.java @@ -19,6 +19,10 @@ public interface WcsSrgvQueueMapper */ public WcsSrgvQueue selectWcsSrgvQueueByGuid(String guid); + + public WcsSrgvQueue selectWcsSrgvQueueByTaskNo(String taskNo); + + /** * 查询四向小车任务队列列表 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/queue/srgv/service/IWcsSrgvQueueService.java b/ruoyi-admin/src/main/java/com/ruoyi/queue/srgv/service/IWcsSrgvQueueService.java index fd1df3e..c998dda 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/queue/srgv/service/IWcsSrgvQueueService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/queue/srgv/service/IWcsSrgvQueueService.java @@ -19,6 +19,10 @@ public interface IWcsSrgvQueueService */ public WcsSrgvQueue selectWcsSrgvQueueByGuid(String guid); + + public WcsSrgvQueue selectWcsSrgvQueueByTaskNo(String taskNo); + + /** * 查询四向小车任务队列列表 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/queue/srgv/service/impl/WcsSrgvQueueServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/queue/srgv/service/impl/WcsSrgvQueueServiceImpl.java index 395c7fc..0f7bf30 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/queue/srgv/service/impl/WcsSrgvQueueServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/queue/srgv/service/impl/WcsSrgvQueueServiceImpl.java @@ -31,6 +31,12 @@ public class WcsSrgvQueueServiceImpl implements IWcsSrgvQueueService return wcsSrgvQueueMapper.selectWcsSrgvQueueByGuid(guid); } + + @Override + public WcsSrgvQueue selectWcsSrgvQueueByTaskNo(String taskNo) { + return wcsSrgvQueueMapper.selectWcsSrgvQueueByTaskNo(taskNo); + } + /** * 查询四向小车任务队列列表 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java index 8e61cbd..31d1267 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java @@ -9,18 +9,24 @@ import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; import com.ruoyi.bas.port.domain.WcsPort; import com.ruoyi.bas.port.service.IWcsPortService; +import com.ruoyi.bas.srgvmap.domain.WcsSrgvMap; +import com.ruoyi.bas.srgvmap.service.IWcsSrgvMapService; import com.ruoyi.common.domain.SendData2; import com.ruoyi.device.srgv.domain.DeviceSrgv; import com.ruoyi.job.charg.domain.SrgvChargingJob; import com.ruoyi.job.charg.service.ISrgvChargingJobService; import com.ruoyi.job.domain.MydoJob; +import com.ruoyi.job.service.IMydoJobService; import com.ruoyi.queue.srgv.domain.WcsSrgvQueue; import com.ruoyi.queue.srgv.domain.WcsSrgvQueueFinish; import com.ruoyi.queue.srgv.service.IWcsSrgvQueueFinishService; import com.ruoyi.queue.srgv.service.IWcsSrgvQueueService; import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead; import com.ruoyi.schedule.plcRead.srgv.roadUtil.PathFinder; +import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; import lombok.extern.slf4j.Slf4j; + +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import java.util.HashMap; @@ -44,6 +50,10 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { public ISrgvChargingJobService srgvChargingJobMapper; + public IMydoJobService mydoJobService; + + public IWcsSrgvMapService wcsSrgvMapService; + public void init() { @@ -68,7 +78,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { sRgvTask(deviceSrgv, i); } - createCarInQueue(); + createCarInQueue(deviceSrgv); createCarOutQueue(); @@ -81,9 +91,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { } } - for(String code:ssjCodeList.keySet()){ - } try { Thread.sleep(1500); @@ -121,8 +129,70 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { /** * 生成入库小车队列 */ - private void createCarInQueue() { + private void createCarInQueue(DeviceSrgv deviceSrgv) { + MydoJob mydoJob = new MydoJob(); + mydoJob.setExecutionPhase("2"); + List mydoJobs = mydoJobService.selectMydoJobList(mydoJob); + if(!mydoJobs.isEmpty()){ + MydoJob mydoJob1 = mydoJobs.get(0); + // 查询是否有已下发的该任务号队列 + WcsSrgvQueue wcsSrgvQueue1 = wcsSagvQueueMapper.selectWcsSrgvQueueByTaskNo(mydoJob1.getTaskNo()); + if(wcsSrgvQueue1==null){ + + //查询1楼是否有空闲联机自动的小车,且1楼小车不在入库站点 + String endSite=""; + String xfType=""; + + WcsPort wcsPort = new WcsPort(); + wcsPort.setPortType("4"); + wcsPort.setPortRegion("1"); + wcsPort.setPortCode(mydoJob1.getEntranceId()); + List wcsPorts = wcsPortService.selectWcsPortList(wcsPort); + //取货地址 + String cargoPickSite=wcsPorts.get(0).getSpare4(); + + if(deviceSrgv.getCurrFloor()==1 && deviceSrgv.getWorkMode()==4 && deviceSrgv.getStatus()==1 && !cargoPickSite.equals(deviceSrgv.getCurrSite())){ + //终点是巷道口到位输送线 + endSite=cargoPickSite; + xfType="4"; + }else if(deviceSrgv.getCurrFloor()!=1 && deviceSrgv.getWorkMode()==4 && deviceSrgv.getStatus()==1){ + //终点是提升机口 + WcsPort wcsPort1 = new WcsPort(); + wcsPort1.setPortType("1"); + wcsPort1.setPortRegion(deviceSrgv.getCurrFloor().toString()); + List wcsPorts1 = wcsPortService.selectWcsPortList(wcsPort1); + endSite=wcsPorts1.get(0).getSpare4(); + xfType="8"; + }else{ + return; + } + + //生成小车取货队列 + WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue(); + wcsSrgvQueue.setGuid(UUID.randomUUID().toString()); + wcsSrgvQueue.setTaskNo(mydoJob1.getTaskNo()); + wcsSrgvQueue.setTaskType("1"); + wcsSrgvQueue.setPriority(Long.parseLong("2")); + wcsSrgvQueue.setCargo("1"); + wcsSrgvQueue.setIssued("0"); + wcsSrgvQueue.setExecutionStatus("1"); + wcsSrgvQueue.setCargoPickSite(cargoPickSite); + WcsSrgvMap wcsSrgvMap = new WcsSrgvMap(); + wcsSrgvMap.setCargoSpaceId(mydoJob1.getCargoSpaceId()); + List wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap); + wcsSrgvQueue.setCargoPlaceSite(wcsSrgvMaps.get(0).getSiteId()); + wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite()); + wcsSrgvQueue.setEndSite(endSite); + wcsSrgvQueue.setTheFloor(deviceSrgv.getCurrFloor().toString()); + wcsSrgvQueue.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + wcsSrgvQueue.setAgvId(deviceSrgv.getDeviceId().toString()); + wcsSrgvQueue.setDefault02(xfType); + wcsSrgvQueue.setDefault07("1"); + wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSrgvQueue); + + } + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/SsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/SsjThread.java index 27b49eb..183eae0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/SsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/SsjThread.java @@ -42,6 +42,10 @@ public class SsjThread implements Runnable { ssjCodes1.add("GS1002"); ssjCodes1.add("GS1007"); ssjCodeList.put("in", ssjCodes1); + ArrayList ssjCodes2 = new ArrayList<>(); + ssjCodes2.add("L1004"); + ssjCodes2.add("L1005"); + ssjCodeList.put("road", ssjCodes2); mydoJobService = SpringUtils.getBean(IMydoJobService.class); jobCallBackService = SpringUtils.getBean(IJobCallBackService.class); apiService = SpringUtils.getBean(IApiService.class); @@ -81,6 +85,18 @@ public class SsjThread implements Runnable { } break; + case "road": + for (String ssjCode : ssjCodeList.get("road")) { + try { + if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) { + inDispatch2(PlcSsjRead.deviceSsjMap.get(ssjCode)); + } else { + log.error("设备不存在 ssjCode{}", ssjCode); + } + } catch (RuntimeException e) { + log.error(e.getMessage(), e); + } + } } } } @@ -118,8 +134,13 @@ public class SsjThread implements Runnable { //拿到正常作业,插到wcs作业表,下发给输送机任务号,覆盖任务号 MydoJob mydoJob = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class); mydoJob.setStatus("1"); - mydoJob.setExecutionPhase("0"); + mydoJob.setExecutionPhase("1"); mydoJob.setCreateTime(new Date()); + if("GS1002".equals(deviceSsj.getDeviceCode())) { + mydoJob.setEntranceId("GS1002"); + }else{ + mydoJob.setEntranceId("GS1007"); + } mydoJobService.insertMydoJob(mydoJob); int i = writeToSsj(deviceSsj.getPlcDbWriteAddress(), mydoJob.getTaskNo(), 1, 1); @@ -138,4 +159,15 @@ public class SsjThread implements Runnable { } } + + void inDispatch2(DeviceSsj deviceSsj){ + if(deviceSsj.getDw() == 1 && deviceSsj.getTaskNo()>1000){ + + MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo((long) deviceSsj.getTaskNo()); + if(mydoJob!=null){ + mydoJob.setExecutionPhase("2"); + mydoJobService.updateMydoJob(mydoJob); + } + } + } } diff --git a/ruoyi-admin/src/main/resources/mapper/queue/WcsSrgvQueueMapper.xml b/ruoyi-admin/src/main/resources/mapper/queue/WcsSrgvQueueMapper.xml index 67a5062..f82b5f7 100644 --- a/ruoyi-admin/src/main/resources/mapper/queue/WcsSrgvQueueMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/queue/WcsSrgvQueueMapper.xml @@ -73,6 +73,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where guid = #{guid} + + insert into wcs_srgv_queue @@ -175,4 +180,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{guid} + \ No newline at end of file