From 7e2d63a0cdf469aa0ffc608f15db8f6790888467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=80=A1=E8=93=89?= <377046077@qq.com> Date: Mon, 24 Nov 2025 09:01:15 +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 --- .../scheduleTask/srgv/BaseSRgvThread.java | 173 ++++++++++++++++-- 1 file changed, 160 insertions(+), 13 deletions(-) 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 bd9164b..71ad0d5 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 @@ -23,6 +23,9 @@ import lombok.extern.slf4j.Slf4j; import java.util.*; import java.util.stream.Collectors; +import java.util.HashMap; +import java.util.List; +import java.util.Objects; @Slf4j public class BaseSRgvThread implements Runnable, SRgvThreadInterface { @@ -49,9 +52,9 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { init(); while (isRun) { - for (String type : sRgvCodeList.keySet()) { + for (String code : sRgvCodeList.keySet()) { - for (DeviceSrgv deviceSrgv : sRgvCodeList.get(type)) { + for (DeviceSrgv deviceSrgv : sRgvCodeList.get(code)) { try { if (ObjUtil.isNotNull(deviceSrgv)) { //循环所有楼层 @@ -195,7 +198,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { wcsSagvQueueMapper.insertWcsSrgvQueue(wsq); - } + } } } @@ -766,8 +769,13 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { /** * 小车完成队列 */ - private void completeCarTask(DeviceSrgv deviceSrgv,int floor) { - if (deviceSrgv.getWorkMode()==5){ + private void completeCarTask(DeviceSrgv deviceSrgv, int floor) { + //小车联机 + if (deviceSrgv.getWorkMode() == 5) { + + int agvId = deviceSrgv.getDeviceId(); + String currSite = deviceSrgv.getCurrSite(); + int status = deviceSrgv.getStatus(); //22到达充电位置 23到达换层目标 if (deviceSrgv.getStatus() == 1 || (deviceSrgv.getStatus() == 2 && (deviceSrgv.getWorkPhase() == 22 || deviceSrgv.getWorkPhase() == 23))) { WcsSrgvQueue param = new WcsSrgvQueue(); @@ -812,14 +820,149 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { * @return */ private boolean finishTaskByQueue(String currSite, WcsSrgvQueue wcsSrgvQueue, int floor) { - if (currSite.equals(wcsSrgvQueue.getEndSite())){ - //当前在放货站点 - WcsPort param = new WcsPort(); - param.setPortCode(currSite); - List wcsPorts = wcsPortService.selectWcsPortList(param); - if (CollUtil.isNotEmpty(wcsPorts)){ + int result = 0; + + //当前在放货站点 + if(Objects.equals(currSite,wcsSrgvQueue.getEndSite())){ + //如果,放货站点是提升机,记录提升机中转点 + WcsPort wcsPort=new WcsPort(); + wcsPort.setSpare4(currSite); + List wcsPorts = wcsPortService.selectWcsPortList(wcsPort); + if(!wcsPorts.isEmpty()){ + for(WcsPort wcsPort1:wcsPorts){ + //出库任务、移库出库任务 + WcsPort wcsPort2 = new WcsPort(); + wcsPort2.setId(wcsPort1.getId()); + wcsPort2.setStatus("1");//占用 + wcsPort2.setSpare1(wcsSrgvQueue.getTaskNo());//任务号 + wcsPort2.setSpare5("2");//出库 默认 + //换层移库的货 + if("11".equals(wcsSrgvQueue.getDefault05()) || "21".equals(wcsSrgvQueue.getDefault05())){ + //11代表换层移库的货 + wcsPort2.setSpare5("4");//换层 +// wcsPort2.setProductType("1"); + } + if("12".equals(wcsSrgvQueue.getDefault05())){ + //12代表换层移库的托盘 + wcsPort2.setSpare5("4");//换层 +// wcsTransitPoint1.setProductType("2"); + } + + + } } + +// WcsTransitPoint wcsTransitPoint = new WcsTransitPoint(); +// wcsTransitPoint.setDeviceSite(currSite); +// List wcsTransitPoints = transitPointMapper.selectWcsTransitPointList(wcsTransitPoint); +// if(wcsTransitPoints.size()>0){ +// +// for (WcsTransitPoint transitPoint : wcsTransitPoints) { +// +// //出库任务、移库出库任务 +// +// WcsTransitPoint wcsTransitPoint1 = new WcsTransitPoint(); +// wcsTransitPoint1.setGuid(transitPoint.getGuid()); +// wcsTransitPoint1.setStatus("1"); +// wcsTransitPoint1.setTaskNo(sagvQueue.getTaskNo()); +// wcsTransitPoint1.setTaskType("2");//出库 默认 +// +// //换层移库的货 +// if("11".equals(sagvQueue.getDefault05()) || "21".equals(sagvQueue.getDefault05())){ +// //11代表换层移库的货 +// wcsTransitPoint1.setTaskType("4");//换层 +// wcsTransitPoint1.setProductType("1"); +// } +// if("12".equals(sagvQueue.getDefault05())){ +// //12代表换层移库的托盘 +// wcsTransitPoint1.setTaskType("4");//换层 +// wcsTransitPoint1.setProductType("2"); +// } +// wcsTransitPoint1.setMsg("3"); +// int i = transitPointMapper.updateWcsTransitPoint(wcsTransitPoint1); +// result = result+i; +// } +// }else { +// +// String rgvTaskType = sagvQueue.getDefault02();//1入;2出;3充电;4点到点;7移库;8换层 +// if(Objects.equals(rgvTaskType,"4")){ +// String default05 = sagvQueue.getDefault05(); +// //点到点任务处理 +// if((default05!=null) && !Objects.equals("13",default05)){ +// //生成新任务 +// WcsSagvQueue wsq = new WcsSagvQueue(); +// wsq.setGuid(IdUtil.fastSimpleUUID()); +// wsq.setTaskNo(sagvQueue.getDefault04()); +// wsq.setTaskType("2");//载货 +// wsq.setPriority(10); +// wsq.setCargo("2");//出库 +// wsq.setIssued("0"); +// wsq.setPathInfo(null); +// wsq.setExecutionStatus("1"); +// wsq.setCargoPickSite(sagvQueue.getCargoPickSite()); +// //String cargoPlaceSite = sagvQueue.getCargoPlaceSite(); +// //String tarEndSite = sagvQueue.getUpDownSite() != null ? sagvQueue.getUpDownSite() : cargoPlaceSite; +// wsq.setCargoPlaceSite(sagvQueue.getCargoPlaceSite()); +// wsq.setStartSite(sagvQueue.getCargoPickSite()); +// wsq.setEndSite(sagvQueue.getCargoPlaceSite()); +// wsq.setTheFloor(floor+""); +// wsq.setTrunPath(null); +// wsq.setUpDownSite(sagvQueue.getCargoPlaceSite()); +// wsq.setCreateDate(DateUtil.now()); +// wsq.setAgvId(sagvQueue.getAgvId()); +// +// String default051 = sagvQueue.getDefault05(); +// if("7".equals(default051)){ +// wsq.setCargo("3");//移库 +// } +// wsq.setDefault02(default051);//2出库 7移库 4点到点 +// if("11".equals(default051) || "12".equals(default051)){ +// wsq.setDefault02("2");//出库 +// wsq.setDefault05(default051); +// } +// //判断取货站点是否是当前站点 +// +// int i = wcsSagvQueueMapper.insertWcsSagvQueue(wsq); +// result = result +i; +// +// //更新作业 +// WcsJob wcsJob = new WcsJob(); +// wcsJob.setTaskNo(sagvQueue.getDefault04()); +// wcsJob.setTaskStatus("2");//待执行的 +// wcsJob.setExePhase("21");//允许下发到wms +// wcsJob.setStartDate(DateUtil.now()); +// wcsJobMapper.updateWcsJobByTask(wcsJob); +// +// }else if(Objects.equals("13",default05)){ +// //是车点到点,任务,删除作业 +// wcsJobMapper.deleteWcsJobByTask(sagvQueue.getTaskNo()); +// result = result+1; +// }else{ +// result = result+1; +// } + +// }else { +// //是入库、其他 +// WcsJob wcsJob = new WcsJob(); +// wcsJob.setTaskNo(sagvQueue.getTaskNo()); +// List wcsJobs = wcsJobMapper.selectWcsJobList(wcsJob); +// if(wcsJobs.size()>0){ +// //完成作业 +// for (WcsJob job : wcsJobs) { +// WcsJob wcsJob1 = new WcsJob(); +// wcsJob1.setGuid(job.getGuid()); +// wcsJob1.setTaskStatus("4"); +// wcsJob1.setExePhase("21");//允许发送WMS +// int i = wcsJobMapper.updateWcsJob(wcsJob1); +// result = result+i; +// } +// }else { +// result = result+1; +// } +// } + +// } } return false; } @@ -829,11 +972,15 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { * @param deviceSrgv */ private void resQueue(DeviceSrgv deviceSrgv, int floor) { + //任务号 int taskNo = deviceSrgv.getTaskNo(); + //当前站点 String currSite = deviceSrgv.getCurrSite(); + //小车编码 Integer deviceId = deviceSrgv.getDeviceId(); - - if (taskNo>999 && !"000000".equals(currSite)){ + //如果已下发并且小车已离开起点,证明已下发成功,更改队列信息为已下发,更新开始时间 + if (taskNo > 999 && !"000000".equals(currSite)) { + //查到该任务号未下发的该队列 WcsSrgvQueue param = new WcsSrgvQueue(); param.setTheFloor(Convert.toStr(floor)); param.setTaskNo(Convert.toStr(taskNo));