输送线

This commit is contained in:
张怡蓉
2025-11-25 09:39:54 +08:00
parent 539a9bac95
commit e6915aa48c

View File

@@ -13,6 +13,7 @@ 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.queue.srgv.domain.WcsSrgvQueue;
import com.ruoyi.queue.srgv.domain.WcsSrgvQueueFinish;
import com.ruoyi.queue.srgv.service.IWcsSrgvQueueFinishService;
@@ -20,7 +21,6 @@ import com.ruoyi.queue.srgv.service.IWcsSrgvQueueService;
import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead;
import com.ruoyi.schedule.plcRead.srgv.roadUtil.PathFinder;
import lombok.extern.slf4j.Slf4j;
import java.util.*;
import java.util.stream.Collectors;
import java.util.HashMap;
@@ -34,6 +34,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
public HashMap<String, List<DeviceSrgv>> sRgvCodeList;
public HashMap<String, List<String>> ssjCodeList;
public IWcsSrgvQueueService wcsSagvQueueMapper;
public IWcsSrgvQueueFinishService wcsSagvQueueFinishMapper;
@@ -45,6 +47,10 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
public void init() {
ArrayList<String> ssjCodes1 = new ArrayList<>();
ssjCodes1.add("L1004");
ssjCodes1.add("L1005");
ssjCodeList.put("road", ssjCodes1);
}
@Override
@@ -64,8 +70,6 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
createCarInQueue();
callEmptySRgv();
createCarOutQueue();
} else {
@@ -77,6 +81,10 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
}
}
for(String code:ssjCodeList.keySet()){
}
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
@@ -104,127 +112,18 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
* 生成出库小车队列
*/
private void createCarOutQueue() {
MydoJob param = new MydoJob();
param.setInOut("2");
for (MydoJob mydoJob : mydoJobService.selectInOrOutMydoJobList(param)) {
if ("0".equals(mydoJob.getExecutionPhase())) {
//生成任务
String roadwayId = mydoJob.getRoadwayId();
//判断1层是否存在空车
DeviceSrgv currSRgv = null;
for (String key : deviceSrgvMap.keySet()) {
DeviceSrgv deviceSrgv = deviceSrgvMap.get(key);
if (deviceSrgv.getCurrFloor().equals(Convert.toInt(roadwayId)) && deviceSrgv.getStatus() == 1) {
currSRgv = deviceSrgv;
}
}
//任务阶段是在入库ssj取货位置
if (currSRgv == null) {
//无空车
//修改任务阶段 为入库无空车
//mydoJob.setTaskNo(Convert.toStr(ssj.getTaskNo()));
mydoJob.setStatus("3");
mydoJob.setStartTime(DateUtil.formatDateTime(new Date()));
mydoJob.setExecutionPhase("21");
mydoJobService.updateMydoJob(mydoJob);
} else {
//有空车
//生成取货队列
WcsSrgvQueue wcsSagvQueue = new WcsSrgvQueue();
wcsSagvQueue.setGuid(IdUtil.simpleUUID());
wcsSagvQueue.setTaskType("1");
wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSagvQueue);
//mydoJob.setTaskNo(Convert.toStr(ssj.getTaskNo()));
mydoJob.setStatus("3");
mydoJob.setStartTime(DateUtil.formatDateTime(new Date()));
//取货
mydoJob.setExecutionPhase("02");
mydoJobService.updateMydoJob(mydoJob);
}
}
}
}
/**
* 呼叫空车
*/
private void callEmptySRgv() {
MydoJob param = new MydoJob();
param.setStatus("3");
//入库无空车
param.setExecutionPhase("11");
for (MydoJob mydoJob : mydoJobService.selectMydoJobList(param)) {
String roadwayId = mydoJob.getRoadwayId();
boolean existsEmptySRgv = false;
//校验对应楼层是否存在空车
for (String key : deviceSrgvMap.keySet()) {
DeviceSrgv deviceSrgv = deviceSrgvMap.get(key);
if (deviceSrgv.getStatus() == 1 && deviceSrgv.getCurrFloor().equals(Convert.toInt(roadwayId))) {
//存在则跳过
existsEmptySRgv = true;
break;
}
}
}
}
/**
* 生成入库小车队列
*/
private void createCarInQueue() {
WcsPort param = new WcsPort();
param.setPortRegion("1");
param.setPortType("4");
param.setSpare2("0");
param.setStatus("1");
List<WcsPort> wcsPorts = wcsPortService.selectWcsPortList(param);
if (CollUtil.isNotEmpty(wcsPorts)) {
for (WcsPort wcsPort : wcsPorts) {
DeviceSsj ssj = PlcSsjRead.deviceSsjMap.get(wcsPort.getPortCode());
if (ssj.getRkqq() == 1 && ssj.getDw() == 1 && ssj.getTaskNo() > 0) {
//判断1层是否存在空车
DeviceSrgv currSRgv = null;
for (String key : deviceSrgvMap.keySet()) {
DeviceSrgv deviceSrgv = deviceSrgvMap.get(key);
if (deviceSrgv.getCurrFloor() == 1 && deviceSrgv.getStatus() == 1) {
currSRgv = deviceSrgv;
}
}
MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(ssj.getTaskNo()));
if ("01".equals(mydoJob.getExecutionPhase())) {
//任务阶段是在入库ssj取货位置
if (currSRgv == null) {
//无空车
//修改任务阶段 为入库无空车
mydoJob.setTaskNo(Convert.toStr(ssj.getTaskNo()));
mydoJob.setStatus("3");
mydoJob.setStartTime(DateUtil.formatDateTime(new Date()));
mydoJob.setExecutionPhase("11");
mydoJobService.updateMydoJob(mydoJob);
} else {
//有空车
//生成取货队列
WcsSrgvQueue wcsSagvQueue = new WcsSrgvQueue();
wcsSagvQueue.setGuid(IdUtil.simpleUUID());
wcsSagvQueue.setTaskType("1");
wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSagvQueue);
mydoJob.setTaskNo(Convert.toStr(ssj.getTaskNo()));
mydoJob.setStatus("3");
mydoJob.setStartTime(DateUtil.formatDateTime(new Date()));
//取货
mydoJob.setExecutionPhase("02");
mydoJobService.updateMydoJob(mydoJob);
}
}
}
}
}
}
/**