From 5b13c88b16503ca3fbed1822cf4ebc4409ec6db3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=80=A1=E8=93=89?= <377046077@qq.com> Date: Fri, 5 Dec 2025 15:46:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E8=BD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/job/mapper/MydoJobMapper.java | 2 + .../ruoyi/job/service/IMydoJobService.java | 7 + .../job/service/impl/MydoJobServiceImpl.java | 10 + .../scheduleTask/srgv/BaseSRgvThread.java | 454 ++++++++---------- .../resources/mapper/job/MydoJobMapper.xml | 8 + 5 files changed, 218 insertions(+), 263 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java index 76aaa74..81ffb88 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java @@ -81,4 +81,6 @@ public interface MydoJobMapper List selectMydoJobFinishList(MydoJob mydoJob); MydoJob selectRunningMydoJobByExitList(@Param("exitList") List exitList); + + void selectMydoJobOutside(HashMap map); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java b/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java index 98a316a..0910781 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java @@ -1,5 +1,6 @@ package com.ruoyi.job.service; +import java.util.HashMap; import java.util.List; import com.ruoyi.common.core.domain.AjaxResult; @@ -29,6 +30,8 @@ public interface IMydoJobService */ public List selectMydoJobList(MydoJob mydoJob); + public List selectNotThisFloorMydoJobList(MydoJob mydoJob); + /** * 新增作业信息 * @@ -80,4 +83,8 @@ public interface IMydoJobService MydoJob selectRunningMydoJobByExitList(List strings); AjaxResult manualCallback(String jobId); + + void selectMydoJobOutside(HashMap map); + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java index d54bcd9..3e78535 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java @@ -49,6 +49,11 @@ public class MydoJobServiceImpl implements IMydoJobService return mydoJobMapper.selectMydoJobList(mydoJob); } + @Override + public List selectNotThisFloorMydoJobList(MydoJob mydoJob) { + return null; + } + /** * 新增作业信息 * @@ -173,4 +178,9 @@ public class MydoJobServiceImpl implements IMydoJobService } return AjaxResult.error("手动回调失败"); } + + @Override + public void selectMydoJobOutside(HashMap map) { + mydoJobMapper.selectMydoJobOutside(map); + } } 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 afb61b8..a3165dc 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 @@ -12,6 +12,8 @@ import com.ruoyi.bas.srgvmap.service.RoadCacheService; import com.ruoyi.common.domain.SendData2; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.device.srgv.domain.DeviceSrgv; +import com.ruoyi.device.srgv.service.IDeviceSrgvService; +import com.ruoyi.device.tsj.domain.DeviceTsj; import com.ruoyi.job.charg.domain.SrgvChargingJob; import com.ruoyi.job.charg.service.ISrgvChargingJobService; import com.ruoyi.job.domain.MydoJob; @@ -19,8 +21,11 @@ import com.ruoyi.job.service.IMydoJobService; import com.ruoyi.queue.srgv.domain.WcsSrgvQueue; import com.ruoyi.queue.srgv.service.IWcsSrgvQueueFinishService; import com.ruoyi.queue.srgv.service.IWcsSrgvQueueService; +import com.ruoyi.queue.tsj.domain.TsjDeviceExecutionQueue; +import com.ruoyi.queue.tsj.service.ITsjDeviceExecutionQueueService; import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead; import com.ruoyi.schedule.plcRead.srgv.roadUtil.PathFinder; +import com.ruoyi.schedule.plcRead.tsj.PlcTsjRead; import lombok.extern.slf4j.Slf4j; import java.text.SimpleDateFormat; @@ -51,6 +56,11 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { public RoadCacheService roadCacheService; + public ITsjDeviceExecutionQueueService tsjDeviceExecutionQueueService; + + + public IDeviceSrgvService deviceSrgvService; + public void init() { sRgvCodeList = new HashMap<>(); @@ -86,9 +96,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { sRgvTask(deviceSrgv); - createCarInQueue(); + createCarQueue(deviceSrgv); - createCarOutQueue(); inCharging(deviceSrgv); @@ -186,289 +195,208 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { } - /** - * 生成出库小车队列 - */ - private void createCarOutQueue() { - MydoJob mydoJob = new MydoJob(); - mydoJob.setInOut("2"); - mydoJob.setExecutionPhase("0"); - mydoJob.setStatus("1"); - List mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob); - if (!mydoJobs.isEmpty()) { - MydoJob mydoJob1 = mydoJobs.get(0); - // 查询是否有已下发的该任务号队列 - WcsSrgvQueue wcsSrgvQueue1 = wcsSagvQueueMapper.selectWcsSrgvQueueByTaskNo(mydoJob1.getTaskNo()); - if (wcsSrgvQueue1 == null) { - ConcurrentHashMap deviceSrgvMap = PlcSrgvRead.deviceSrgvMap; - List deviceSrgvList = deviceSrgvMap.values().stream() - .filter(deviceSrgv -> deviceSrgv.getWorkMode() == 4) - .sorted((d1, d2) -> Math.abs(Integer.parseInt(mydoJob1.getTheFloor()) - d2.getCurrFloor()) - - Math.abs(Integer.parseInt(mydoJob1.getTheFloor()) - d1.getCurrFloor())) - .collect(Collectors.toList()); - if (!deviceSrgvList.isEmpty()) { - DeviceSrgv deviceSrgv = null; - for (DeviceSrgv deviceSrgv1 : deviceSrgvList) { - //优先出库层,如果没有优先邻近层 - if (deviceSrgv1.getCurrFloor().toString().equals(mydoJob1.getTheFloor())) { - deviceSrgv = deviceSrgv1; - break; - } else if (deviceSrgv == null || (Math.abs(Integer.parseInt(mydoJob1.getTheFloor()) - deviceSrgv1.getCurrFloor())) < (Math.abs(Integer.parseInt(mydoJob1.getTheFloor()) - deviceSrgv.getCurrFloor()))) { - WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv1.getDeviceId().toString()); - if (deviceSrgv1.getStatus() == 1 && wcsSrgvQueue2 == null) { - deviceSrgv = deviceSrgv1; - break; - } - } - } - if (deviceSrgv != null) { - WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv.getDeviceId().toString()); - if (wcsSrgvQueue2 == null && deviceSrgv.getStatus() == 1) { - //查询小车是否为取货楼层 - String endSite = ""; - String issued = "0"; - String executionStatus = "1"; - WcsSrgvMap wcsSrgvMap = new WcsSrgvMap(); - wcsSrgvMap.setCargoSpaceId(mydoJob1.getCargoSpaceId()); - List wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap); - //取货地址 - String cargoPickSite = wcsSrgvMaps.get(0).getSiteId(); - - if (deviceSrgv.getCurrFloor().equals(wcsSrgvMaps.get(0).getTheLayer())) { - //终点是巷道口到位输送线 - endSite = cargoPickSite; - if(cargoPickSite.equals(deviceSrgv.getCurrSite())){ - issued="1"; - executionStatus="3"; - } - } else{ - //终点是提升机 - endSite = "tsj"; - } - WcsSrgvMap wcsSrgvMap1 = new WcsSrgvMap(); - wcsSrgvMap1.setRemark(mydoJob1.getExitId()); - List wcsSrgvMaps1 = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap1); - String cargoPlaceSite = wcsSrgvMaps1.get(0).getSiteId(); - - List sameSiteDevices = deviceSrgvMap.values().stream() - .filter(d -> d.getWorkMode() == 4 - && d.getStatus() == 1 - && d.getCurrSite().equals(cargoPlaceSite)) - .collect(Collectors.toList()); - if(!sameSiteDevices.isEmpty() &&!Objects.equals(sameSiteDevices.get(0).getDeviceId(), deviceSrgv.getDeviceId())){ - WcsSrgvMap wcsSrgvMap3 = new WcsSrgvMap(); - wcsSrgvMap3.setRemark("cache"); - List wcsSrgvMaps3 = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap3); - for(WcsSrgvMap wcsSrgvMap4 : wcsSrgvMaps3){ - //deviceSrgvMap中所有对象的currSite都不等于wcsSrgvMap4的siteId的对象 - if(deviceSrgvMap.values().stream().noneMatch(d -> d.getCurrSite().equals(wcsSrgvMap4.getSiteId()))) { - //生成小车到缓存点队列 - WcsSrgvQueue wcsSrgvQueue5 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(sameSiteDevices.get(0).getDeviceId().toString()); - WcsSrgvQueue wcsSrgvQueue=new WcsSrgvQueue(); - wcsSrgvQueue.setCargoPlaceSite(wcsSrgvMap4.getSiteId()); - List wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueue); - if (wcsSrgvQueue5 == null && wcsSrgvQueues.isEmpty()) { - WcsSrgvQueue wcsSrgvQueue3 = new WcsSrgvQueue(); - wcsSrgvQueue3.setGuid(UUID.randomUUID().toString()); - wcsSrgvQueue3.setTaskNo("9999"); - wcsSrgvQueue3.setTaskType("1"); - wcsSrgvQueue3.setPriority(Long.parseLong("2")); - wcsSrgvQueue3.setCargo("1"); - wcsSrgvQueue3.setIssued(issued); - wcsSrgvQueue3.setExecutionStatus(executionStatus); - wcsSrgvQueue3.setCargoPickSite(cargoPickSite); - wcsSrgvQueue3.setCargoPlaceSite(wcsSrgvMap4.getSiteId()); - wcsSrgvQueue3.setStartSite(sameSiteDevices.get(0).getCurrSite()); - wcsSrgvQueue3.setEndSite(wcsSrgvMap4.getSiteId()); - wcsSrgvQueue3.setTheFloor(sameSiteDevices.get(0).getCurrFloor().toString()); - wcsSrgvQueue3.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - wcsSrgvQueue3.setAgvId(sameSiteDevices.get(0).getDeviceId().toString()); - wcsSrgvQueue3.setDefault02("4"); - wcsSrgvQueue3.setDefault07(sameSiteDevices.get(0).getCurrFloor().toString()); - wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSrgvQueue3); - } - } - - - } - } - - - //生成小车取货队列 - 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(issued); - wcsSrgvQueue.setExecutionStatus(executionStatus); - wcsSrgvQueue.setCargoPickSite(cargoPickSite); - - wcsSrgvQueue.setCargoPlaceSite(cargoPlaceSite); - 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("4"); - wcsSrgvQueue.setDefault07("1"); - wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSrgvQueue); - - } - } - - } - - - } - } - } /** * 生成入库小车队列 */ - private void createCarInQueue() { - MydoJob mydoJob = new MydoJob(); - mydoJob.setExecutionPhase("2"); - mydoJob.setInOut("1"); - List mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob); - if (!mydoJobs.isEmpty()) { - MydoJob mydoJob1 = mydoJobs.get(0); - // 查询是否有已下发的该任务号队列 - WcsSrgvQueue wcsSrgvQueue1 = wcsSagvQueueMapper.selectWcsSrgvQueueByTaskNo(mydoJob1.getTaskNo()); + private void createCarQueue(DeviceSrgv deviceSrgv) { - if (wcsSrgvQueue1 == null) { - ConcurrentHashMap deviceSrgvMap = PlcSrgvRead.deviceSrgvMap; + if(deviceSrgv.getWorkMode()==4 && deviceSrgv.getStatus()==1) { + WcsSrgvQueue wcsSrgvQueue = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv.getDeviceId().toString()); - List deviceSrgvList = deviceSrgvMap.values().stream() - .filter(deviceSrgv -> deviceSrgv.getWorkMode() == 4) - .sorted((d1, d2) -> d2.getCurrFloor().compareTo(d1.getCurrFloor())) - .collect(Collectors.toList()); - if (!deviceSrgvList.isEmpty()) { - DeviceSrgv deviceSrgv = null; - for (DeviceSrgv deviceSrgv1 : deviceSrgvList) { - if (deviceSrgv1.getCurrFloor().toString().equals(mydoJob1.getTheFloor())) { - deviceSrgv = deviceSrgv1; - break; // 找到了相同楼层的直接选它 - } else { - WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv1.getDeviceId().toString()); - if (deviceSrgv1.getStatus() == 1 && wcsSrgvQueue2 == null) { - deviceSrgv = deviceSrgv1; // 更新为更小楼层的小车 - break; - } + if (wcsSrgvQueue == null) { + + //找小车当前层作业,生成队列 + //如果没有当前层作业,就找最近层换层作业,生成队列 + MydoJob mydoJob1 = new MydoJob(); + mydoJob1.setTheFloor(deviceSrgv.getCurrFloor().toString()); + mydoJob1.setInOut("1"); + mydoJob1.setStatus("3"); + // todo 定提升机到达阶段 + mydoJob1.setExecutionPhase("3"); + List mydoJobs = mydoJobService.selectMydoJobList(mydoJob1); + if (!mydoJobs.isEmpty()) { + //生成了从小车现在位置到提升机接货的队列 + createCarQueue(mydoJobs.get(0), deviceSrgv, "4","0"); + } else { + MydoJob mydoJob = new MydoJob(); + mydoJob.setInOut("2"); + mydoJob.setStatus("1"); + mydoJob.setTheFloor(deviceSrgv.getCurrFloor().toString()); + List mydoJobs1 = mydoJobService.selectMydoJobList(mydoJob); + //当前层出库作业 + if (!mydoJobs1.isEmpty()) { + //找最外层作业存储过程 + HashMap map = new HashMap<>(); + map.put("v_layer",deviceSrgv.getCurrFloor()); + mydoJobService.selectMydoJobOutside(map); + String jobId = map.get("v_job_ids").toString(); + MydoJob mydoJob2 = mydoJobService.selectMydoJobByJobId(jobId); + //判断小车当前点是否是出库作业货位点,如果不是,就生成队列{},如果是生成已下发队列 + WcsSrgvMap wcsSrgvMap = new WcsSrgvMap(); + wcsSrgvMap.setCargoSpaceId(mydoJob2.getCargoSpaceId()); + List wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap); + if(!deviceSrgv.getCurrSite().equals(wcsSrgvMaps.get(0).getSiteId())){ + createCarQueue(mydoJob2, deviceSrgv, "4","0"); + }else{ + createCarQueue(mydoJob2, deviceSrgv, "4","1"); } + + } else { + //别的层的出库作业和入库作业 + + ArrayList mydoJobs2 = new ArrayList<>(); + MydoJob mydoJob2 = new MydoJob(); + mydoJob2.setInOut("2"); + mydoJob2.setStatus("1"); + List mydoJobs3 = mydoJobService.selectMydoJobList(mydoJob2); + MydoJob mydoJob3 = new MydoJob(); + mydoJob3.setStatus("3"); + mydoJob3.setInOut("1"); + //todo 输送机阶段 + mydoJob3.setExecutionPhase("1"); + List mydoJobs4 = mydoJobService.selectMydoJobList(mydoJob3); + mydoJobs2.addAll(mydoJobs3); + mydoJobs2.addAll(mydoJobs4); + + //判断那层没有小车,并且没有要去那层的小车队列,查监控表 + //生成换层任务 + MydoJob job = mydoJobs2.get(0); + + DeviceSrgv deviceSrgv1 = new DeviceSrgv(); + deviceSrgv1.setCurrFloor(Convert.toInt(job.getTheFloor())); + List srgvs = deviceSrgvService.selectDeviceSrgvList(deviceSrgv1); + //这个作业的目标层没有小车 + if (srgvs.isEmpty()) { + + WcsSrgvQueue wcsSrgvQueue1 = new WcsSrgvQueue(); + wcsSrgvQueue1.setDefault07(job.getTheFloor()); +// wcsSrgvQueue1.setTaskType("3"); + List wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueue1); + if (wcsSrgvQueues.isEmpty()) { + //生成换层任务 + createCarQueue(mydoJob2, deviceSrgv, "8","0"); + } + } + + + } - if (deviceSrgv != null) { - WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv.getDeviceId().toString()); - if (wcsSrgvQueue2 == null && deviceSrgv.getStatus() == 1) { - - //查询小车是否为1楼,且1楼小车不在入库站点 - String endSite = ""; - String issued = "0"; - String executionStatus = "1"; - WcsSrgvMap wcsSrgvMap = new WcsSrgvMap(); - wcsSrgvMap.setRemark(mydoJob1.getEntranceId()); - if (StrUtil.isEmpty(wcsSrgvMap.getRemark())) { - log.error("入库任务号:{} 入库入口ID为空" , mydoJob1.getTaskNo()); - return; - } - List wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap); - //取货地址 - String cargoPickSite = wcsSrgvMaps.get(0).getSiteId(); - - if (deviceSrgv.getCurrFloor() == 1) { - endSite = cargoPickSite; - if (cargoPickSite.equals(deviceSrgv.getCurrSite())) { - // 小车已在取货点 - issued = "1"; - executionStatus = "3"; - } - } else { - // 小车不在1楼 - endSite = "tsj"; - } - //筛选出deviceSrgvMap中deviceSrgv.getWorkMode() == 4并且deviceSrgv.getStatus() == 1并且deviceSrgv.getCurrSite() == cargoPickSite得对象,并排除掉其中deviceId与deviceSrgv.getDeviceId()相同的对象 - - List sameSiteDevices = deviceSrgvMap.values().stream() - .filter(d -> d.getWorkMode() == 4 - && d.getStatus() == 1 - && d.getCurrSite().equals(cargoPickSite)) - .collect(Collectors.toList()); - if(!sameSiteDevices.isEmpty() && !Objects.equals(sameSiteDevices.get(0).getDeviceId(), deviceSrgv.getDeviceId())){ - WcsSrgvMap wcsSrgvMap3 = new WcsSrgvMap(); - wcsSrgvMap3.setRemark("cache"); - List wcsSrgvMaps3 = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap3); - for(WcsSrgvMap wcsSrgvMap4 : wcsSrgvMaps3){ - //deviceSrgvMap中所有对象的currSite都不等于wcsSrgvMap4的siteId的对象 - if(deviceSrgvMap.values().stream().noneMatch(d -> d.getCurrSite().equals(wcsSrgvMap4.getSiteId()))) { - WcsSrgvQueue wcsSrgvQueue5 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(sameSiteDevices.get(0).getDeviceId().toString()); - WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue(); - wcsSrgvQueue.setCargoPlaceSite(wcsSrgvMap4.getSiteId()); - List wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueue); - if (wcsSrgvQueue5 == null && wcsSrgvQueues.isEmpty()) { - //生成占位小车到缓存点队列 - WcsSrgvQueue wcsSrgvQueue3 = new WcsSrgvQueue(); - wcsSrgvQueue3.setGuid(UUID.randomUUID().toString()); - wcsSrgvQueue3.setTaskNo(mydoJob1.getTaskNo()); - wcsSrgvQueue3.setTaskType("1"); - wcsSrgvQueue3.setPriority(Long.parseLong("2")); - wcsSrgvQueue3.setCargo("1"); - wcsSrgvQueue3.setIssued(issued); - wcsSrgvQueue3.setExecutionStatus(executionStatus); - wcsSrgvQueue3.setCargoPickSite(cargoPickSite); - wcsSrgvQueue3.setCargoPlaceSite(wcsSrgvMap4.getSiteId()); - wcsSrgvQueue3.setStartSite(sameSiteDevices.get(0).getCurrSite()); - wcsSrgvQueue3.setEndSite(wcsSrgvMap4.getSiteId()); - wcsSrgvQueue3.setTheFloor(sameSiteDevices.get(0).getCurrFloor().toString()); - wcsSrgvQueue3.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - wcsSrgvQueue3.setAgvId(sameSiteDevices.get(0).getDeviceId().toString()); - wcsSrgvQueue3.setDefault02("4"); - wcsSrgvQueue3.setDefault07(sameSiteDevices.get(0).getCurrFloor().toString()); - wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSrgvQueue3); - return; - } - } + } - } - } + } else{ + if ( "1".equals(wcsSrgvQueue.getIssued())) { + MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(wcsSrgvQueue.getTaskNo())); + if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getEndSite()) && wcsSrgvQueue.getTaskType().equals("1")) { + // todo 通知wms入库完成 完成队列 完成作业 + wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); + wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); + mydoJobService.insertHistory(mydoJob.getJobId()); + mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId()); + } else if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getDefault03()) && wcsSrgvQueue.getTaskType().equals("2")) { + //完成队列 更新作业阶段 + wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); + wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); + //提升机修改阶段 +// mydoJob.setExecutionPhase(""); +// mydoJobService.updateMydoJob(mydoJob); + } else if (deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getDefault03()) && wcsSrgvQueue.getTaskType().equals("4")) { + //根据任务类型 ,生成队列 + if (Convert.toInt(mydoJob.getInOrOut()) < 20) { + wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); + wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); - - //生成小车取货队列 - 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(issued); - wcsSrgvQueue.setExecutionStatus(executionStatus); - wcsSrgvQueue.setCargoPickSite(cargoPickSite); - WcsSrgvMap wcsSrgvMap1 = new WcsSrgvMap(); - wcsSrgvMap1.setCargoSpaceId(mydoJob1.getCargoSpaceId()); - List wcsSrgvMaps1 = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap1); - wcsSrgvQueue.setCargoPlaceSite(wcsSrgvMaps1.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("4"); - wcsSrgvQueue.setDefault07("1"); - wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSrgvQueue); - + createCarQueue(mydoJob, deviceSrgv, "1","0"); + } else { + wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); + wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); + createCarQueue(mydoJob, deviceSrgv, "2","0"); } + }else if(deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getDefault03()) && wcsSrgvQueue.getTaskType().equals("8")){ + wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); + wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); + + }else if ( deviceSrgv.getCurrSite().equals(wcsSrgvQueue.getEndSite()) && wcsSrgvQueue.getTaskType().equals("3")) { + //充电任务 + wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); + wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid()); } } + } + +// } + } + + } + + private void createCarQueue(MydoJob mydoJob1, DeviceSrgv deviceSrgv,String taskType,String issued) { + WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue(); + wcsSrgvQueue.setGuid(UUID.randomUUID().toString()); + wcsSrgvQueue.setTaskNo(mydoJob1.getTaskNo()); + wcsSrgvQueue.setTaskType(taskType); + wcsSrgvQueue.setPriority(Long.parseLong("2")); +// wcsSrgvQueue.setCargo("1"); + wcsSrgvQueue.setIssued(issued); + wcsSrgvQueue.setExecutionStatus("1"); +// wcsSrgvQueue.setCargoPlaceSite("tsj"); + WcsSrgvMap wcsSrgvMap1 = new WcsSrgvMap(); + wcsSrgvMap1.setTheRow(4); + wcsSrgvMap1.setTheColumn(5); + wcsSrgvMap1.setTheLayer(Convert.toInt(mydoJob1.getTheFloor())); + List wcsSrgvMaps1 = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap1); + + if(Integer.parseInt(mydoJob1.getInOrOut())<20 && "4".equals(taskType)){ + wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite()); + wcsSrgvQueue.setEndSite("tsj"); + //每一层的停靠点 + wcsSrgvQueue.setDefault03(wcsSrgvMaps1.get(0).getSiteId()); + } + else if(Integer.parseInt(mydoJob1.getInOrOut())<20 && "1".equals(taskType)){ + wcsSrgvQueue.setStartSite("tsj"); + WcsSrgvMap wcsSrgvMap = new WcsSrgvMap(); + wcsSrgvMap.setCargoSpaceId(mydoJob1.getCargoSpaceId()); + List wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap); + wcsSrgvQueue.setEndSite(wcsSrgvMaps.get(0).getSiteId()); + //每一层的停靠点 + wcsSrgvQueue.setDefault03(wcsSrgvMaps1.get(0).getSiteId()); + } + else if(Integer.parseInt(mydoJob1.getInOrOut())>=20 && "4".equals(taskType)){ + wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite()); + WcsSrgvMap wcsSrgvMap = new WcsSrgvMap(); + wcsSrgvMap.setCargoSpaceId(mydoJob1.getCargoSpaceId()); + List wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap); + wcsSrgvQueue.setEndSite(wcsSrgvMaps.get(0).getSiteId()); + //每一层的停靠点 + wcsSrgvQueue.setDefault03(wcsSrgvMaps1.get(0).getSiteId()); + } + else if(Integer.parseInt(mydoJob1.getInOrOut())>=20 && "2".equals(taskType)){ + wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite()); + wcsSrgvQueue.setEndSite("tsj"); + //每一层的停靠点 + wcsSrgvQueue.setDefault03(wcsSrgvMaps1.get(0).getSiteId()); + } + else if("8".equals(taskType)){ + wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite()); + wcsSrgvQueue.setEndSite("tsj"); + wcsSrgvQueue.setDefault03(wcsSrgvMaps1.get(0).getSiteId()); + } + + + 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(taskType); + wcsSrgvQueue.setDefault07(mydoJob1.getTheFloor()); + wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSrgvQueue); } /** diff --git a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml index cc3cdf3..ce19c80 100644 --- a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml @@ -239,4 +239,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and status = 3 order by priority desc,create_time + + +