From 16a7f1e37dbd5894e0e39eed4fbe619773156818 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:01 +0800
Subject: [PATCH 1/2] =?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
---
.../com/ruoyi/bas/port/domain/WcsPort.java | 21 ++++++++++++++++++-
.../resources/mapper/bas/WcsPortMapper.xml | 12 ++++++++++-
2 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/bas/port/domain/WcsPort.java b/ruoyi-admin/src/main/java/com/ruoyi/bas/port/domain/WcsPort.java
index fac2a52..5c494de 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/bas/port/domain/WcsPort.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/bas/port/domain/WcsPort.java
@@ -46,11 +46,30 @@ public class WcsPort extends BaseEntity
@Excel(name = "备用字段")
private String spare3;
+ private String spare4;
+ private String spare5;
+
/** 状态 */
@Excel(name = "状态")
private String status;
- public void setId(Long id)
+ public String getSpare5() {
+ return spare5;
+ }
+
+ public void setSpare5(String spare5) {
+ this.spare5 = spare5;
+ }
+
+ public String getSpare4() {
+ return spare4;
+ }
+
+ public void setSpare4(String spare4) {
+ this.spare4 = spare4;
+ }
+
+ public void setId(Long id)
{
this.id = id;
}
diff --git a/ruoyi-admin/src/main/resources/mapper/bas/WcsPortMapper.xml b/ruoyi-admin/src/main/resources/mapper/bas/WcsPortMapper.xml
index f8f8ac6..bf77824 100644
--- a/ruoyi-admin/src/main/resources/mapper/bas/WcsPortMapper.xml
+++ b/ruoyi-admin/src/main/resources/mapper/bas/WcsPortMapper.xml
@@ -13,11 +13,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
- select id, port_code, port_name, port_type, port_region, spare1, spare2, spare3, status from wcs_port
+ select id, port_code, port_name, port_type, port_region, spare1, spare2, spare3, status,spare4,spare5 from wcs_port
@@ -53,6 +57,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
spare1,
spare2,
spare3,
+ spare4,
+ spare5,
status,
@@ -63,6 +69,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{spare1},
#{spare2},
#{spare3},
+ #{spare4},
+ #{spare5},
#{status},
@@ -77,6 +85,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
spare1 = #{spare1},
spare2 = #{spare2},
spare3 = #{spare3},
+ spare4 = #{spare4},
+ spare5 = #{spare5},
status = #{status},
where id = #{id}
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 2/2] =?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));