输送线
This commit is contained in:
@@ -13,6 +13,7 @@ import com.ruoyi.common.domain.SendData2;
|
|||||||
import com.ruoyi.device.srgv.domain.DeviceSrgv;
|
import com.ruoyi.device.srgv.domain.DeviceSrgv;
|
||||||
import com.ruoyi.job.charg.domain.SrgvChargingJob;
|
import com.ruoyi.job.charg.domain.SrgvChargingJob;
|
||||||
import com.ruoyi.job.charg.service.ISrgvChargingJobService;
|
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.WcsSrgvQueue;
|
||||||
import com.ruoyi.queue.srgv.domain.WcsSrgvQueueFinish;
|
import com.ruoyi.queue.srgv.domain.WcsSrgvQueueFinish;
|
||||||
import com.ruoyi.queue.srgv.service.IWcsSrgvQueueFinishService;
|
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.PlcSrgvRead;
|
||||||
import com.ruoyi.schedule.plcRead.srgv.roadUtil.PathFinder;
|
import com.ruoyi.schedule.plcRead.srgv.roadUtil.PathFinder;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -34,6 +34,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
|
|
||||||
public HashMap<String, List<DeviceSrgv>> sRgvCodeList;
|
public HashMap<String, List<DeviceSrgv>> sRgvCodeList;
|
||||||
|
|
||||||
|
public HashMap<String, List<String>> ssjCodeList;
|
||||||
|
|
||||||
public IWcsSrgvQueueService wcsSagvQueueMapper;
|
public IWcsSrgvQueueService wcsSagvQueueMapper;
|
||||||
|
|
||||||
public IWcsSrgvQueueFinishService wcsSagvQueueFinishMapper;
|
public IWcsSrgvQueueFinishService wcsSagvQueueFinishMapper;
|
||||||
@@ -45,6 +47,10 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
|
|
||||||
|
|
||||||
public void init() {
|
public void init() {
|
||||||
|
ArrayList<String> ssjCodes1 = new ArrayList<>();
|
||||||
|
ssjCodes1.add("L1004");
|
||||||
|
ssjCodes1.add("L1005");
|
||||||
|
ssjCodeList.put("road", ssjCodes1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -64,8 +70,6 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
|
|
||||||
createCarInQueue();
|
createCarInQueue();
|
||||||
|
|
||||||
callEmptySRgv();
|
|
||||||
|
|
||||||
createCarOutQueue();
|
createCarOutQueue();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -77,6 +81,10 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for(String code:ssjCodeList.keySet()){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Thread.sleep(1500);
|
Thread.sleep(1500);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
@@ -104,127 +112,18 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
* 生成出库小车队列
|
* 生成出库小车队列
|
||||||
*/
|
*/
|
||||||
private void createCarOutQueue() {
|
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() {
|
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);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user