提升机调度逻辑修改
This commit is contained in:
@@ -32,6 +32,7 @@ public class AgvPathProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void processAgvPathInfo(int[][] ints, int floor) {
|
public void processAgvPathInfo(int[][] ints, int floor) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void processOnlineAgvSites(int[][] ints, int floor) {
|
public void processOnlineAgvSites(int[][] ints, int floor) {
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ public class DeviceSrgv extends BaseEntity
|
|||||||
private String spare1;
|
private String spare1;
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
@Excel(name = "")
|
@Excel(name = "请求进入提升机 0-否 1-是")
|
||||||
private String spare2;
|
private String spare2;
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
|
|||||||
@@ -11,14 +11,18 @@ import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService;
|
|||||||
import com.ruoyi.bas.port.domain.WcsPort;
|
import com.ruoyi.bas.port.domain.WcsPort;
|
||||||
import com.ruoyi.bas.port.service.IWcsPortService;
|
import com.ruoyi.bas.port.service.IWcsPortService;
|
||||||
import com.ruoyi.common.domain.SendData;
|
import com.ruoyi.common.domain.SendData;
|
||||||
|
import com.ruoyi.device.srgv.domain.DeviceSrgv;
|
||||||
import com.ruoyi.device.tsj.domain.DeviceTsj;
|
import com.ruoyi.device.tsj.domain.DeviceTsj;
|
||||||
import com.ruoyi.device.tsj.service.IDeviceTsjService;
|
import com.ruoyi.device.tsj.service.IDeviceTsjService;
|
||||||
import com.ruoyi.job.domain.MydoJob;
|
import com.ruoyi.job.domain.MydoJob;
|
||||||
import com.ruoyi.job.service.IMydoJobService;
|
import com.ruoyi.job.service.IMydoJobService;
|
||||||
|
import com.ruoyi.queue.srgv.domain.WcsSrgvQueue;
|
||||||
|
import com.ruoyi.queue.srgv.service.IWcsSrgvQueueService;
|
||||||
import com.ruoyi.queue.tsj.domain.TsjDeviceExecutionQueue;
|
import com.ruoyi.queue.tsj.domain.TsjDeviceExecutionQueue;
|
||||||
import com.ruoyi.queue.tsj.domain.TsjDeviceExecutionQueueFinish;
|
import com.ruoyi.queue.tsj.domain.TsjDeviceExecutionQueueFinish;
|
||||||
import com.ruoyi.queue.tsj.service.ITsjDeviceExecutionQueueFinishService;
|
import com.ruoyi.queue.tsj.service.ITsjDeviceExecutionQueueFinishService;
|
||||||
import com.ruoyi.queue.tsj.service.ITsjDeviceExecutionQueueService;
|
import com.ruoyi.queue.tsj.service.ITsjDeviceExecutionQueueService;
|
||||||
|
import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead;
|
||||||
import com.ruoyi.schedule.plcRead.tsj.PlcTsjRead;
|
import com.ruoyi.schedule.plcRead.tsj.PlcTsjRead;
|
||||||
import com.ruoyi.schedule.plcRead.util.Tools;
|
import com.ruoyi.schedule.plcRead.util.Tools;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -41,6 +45,8 @@ public class TsjThread implements Runnable {
|
|||||||
private IWcsPortService wcsPortService;
|
private IWcsPortService wcsPortService;
|
||||||
private IBasCargoSpaceService basCargoSpaceService;
|
private IBasCargoSpaceService basCargoSpaceService;
|
||||||
|
|
||||||
|
private IWcsSrgvQueueService wcsSrgvQueueService;
|
||||||
|
|
||||||
|
|
||||||
public void init() {
|
public void init() {
|
||||||
}
|
}
|
||||||
@@ -106,60 +112,37 @@ public class TsjThread implements Runnable {
|
|||||||
* 创建卸车队列
|
* 创建卸车队列
|
||||||
*/
|
*/
|
||||||
private void createQueue(DeviceTsj tsj) {
|
private void createQueue(DeviceTsj tsj) {
|
||||||
//todo 根据当前楼层和执行阶段查询任务 获取目标队列 生成提升机队列 当小车出去后 解锁提升机
|
for (String sRgv : PlcSrgvRead.deviceSrgvMap.keySet()) {
|
||||||
List<TsjDeviceExecutionQueue> tsjDeviceExecutionQueues = tsjDeviceExecutionQueueService.selectTsjDeviceExecutionQueueList(new TsjDeviceExecutionQueue());
|
DeviceSrgv deviceSrgv = PlcSrgvRead.deviceSrgvMap.get(sRgv);
|
||||||
if (CollUtil.isNotEmpty(tsjDeviceExecutionQueues)) {
|
if (deviceSrgv.getSsjRequest()==1 && deviceSrgv.getTaskNo()>0){
|
||||||
// 提升机存在任务
|
//请求进入输送机
|
||||||
return;
|
WcsSrgvQueue sRgvQueueParam = new WcsSrgvQueue();
|
||||||
}
|
sRgvQueueParam.setAgvId(Convert.toStr(deviceSrgv.getDeviceId()));
|
||||||
|
sRgvQueueParam.setTaskNo(Convert.toStr(deviceSrgv.getTaskNo()));
|
||||||
DeviceTsj deviceTsj = PlcTsjRead.deviceTsjMap.get("1");
|
List<WcsSrgvQueue> wcsSrgvQueues = wcsSrgvQueueService.selectWcsSrgvQueueList(sRgvQueueParam);
|
||||||
//判断提升机锁定 并且 小车已进入提升机
|
if (CollUtil.isNotEmpty(wcsSrgvQueues)) {
|
||||||
if (deviceTsj.getSpare1() == 1 && tsj.getSbzt() == 3 && tsj.getYxxf() == 1) {
|
TsjDeviceExecutionQueue tsjDeviceExecutionQueueByRwh = tsjDeviceExecutionQueueService.selectTsjDeviceExecutionQueueByRwh(Convert.toLong(deviceSrgv.getTaskNo()));
|
||||||
WcsPort param = new WcsPort();
|
if (tsjDeviceExecutionQueueByRwh == null){
|
||||||
param.setStatus("1");
|
WcsSrgvQueue wcsSrgvQueue = wcsSrgvQueues.get(0);
|
||||||
List<WcsPort> wcsPorts = wcsPortService.selectWcsPortList(param);
|
String strFloor = wcsSrgvQueue.getTheFloor();
|
||||||
wcsPorts = wcsPorts.stream().filter(x-> "1".equals(x.getStatus()) &&("1".equals(x.getPortType()) || "2".equals(x.getPortType()))).collect(Collectors.toList());
|
String tarFloor = wcsSrgvQueue.getDefault07();
|
||||||
|
TsjDeviceExecutionQueue tsjDeviceExecutionQueue = new TsjDeviceExecutionQueue();
|
||||||
for (WcsPort wcsPort : wcsPorts) {
|
tsjDeviceExecutionQueue.setGuid(IdUtil.simpleUUID());
|
||||||
//生成提升机队列
|
tsjDeviceExecutionQueue.setDeviceId(tsj.getId());
|
||||||
TsjDeviceExecutionQueue tsjDeviceExecutionQueue = new TsjDeviceExecutionQueue();
|
tsjDeviceExecutionQueue.setDeviceName(tsj.getName());
|
||||||
|
tsjDeviceExecutionQueue.setTaskNo(Convert.toLong(deviceSrgv.getTaskNo()));
|
||||||
MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(wcsPort.getSpare1()));
|
|
||||||
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId());
|
|
||||||
if (ObjUtil.isNull(mydoJob)){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (ObjUtil.isNull(basCargoSpace)){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (Convert.toInt(mydoJob.getInOrOut())<20){
|
|
||||||
//入库
|
|
||||||
if (mydoJob.getRoadwayId().equals(wcsPort.getPortCode())){
|
|
||||||
//从1层到对应楼层
|
|
||||||
tsjDeviceExecutionQueue.setSrcRow("0");
|
tsjDeviceExecutionQueue.setSrcRow("0");
|
||||||
tsjDeviceExecutionQueue.setSrcLayer("0");
|
tsjDeviceExecutionQueue.setSrcLayer(strFloor);
|
||||||
tsjDeviceExecutionQueue.setTarRow(Convert.toStr(basCargoSpace.getThePlatoon()));
|
tsjDeviceExecutionQueue.setTarRow("0");
|
||||||
tsjDeviceExecutionQueue.setTarLayer(Convert.toStr(basCargoSpace.getTheFloor()));
|
tsjDeviceExecutionQueue.setTarLayer(tarFloor);
|
||||||
}
|
tsjDeviceExecutionQueue.setSendType("1");
|
||||||
}else {
|
tsjDeviceExecutionQueue.setCreateDate(DateUtil.formatDateTime(new Date()));
|
||||||
if (mydoJob.getRoadwayId().equals(wcsPort.getPortCode())){
|
tsjDeviceExecutionQueue.setSpare1(Convert.toStr(deviceSrgv.getDeviceId()));
|
||||||
//从对应楼层到指定楼层
|
tsjDeviceExecutionQueue.setTaskType("1");
|
||||||
tsjDeviceExecutionQueue.setSrcRow("0");
|
tsjDeviceExecutionQueue.setRwlx("1");
|
||||||
tsjDeviceExecutionQueue.setSrcLayer("0");
|
tsjDeviceExecutionQueueService.insertTsjDeviceExecutionQueue(tsjDeviceExecutionQueue);
|
||||||
tsjDeviceExecutionQueue.setTarRow(Convert.toStr(basCargoSpace.getThePlatoon()));
|
|
||||||
tsjDeviceExecutionQueue.setTarLayer(Convert.toStr(basCargoSpace.getTheFloor()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tsjDeviceExecutionQueue.setGuid(IdUtil.simpleUUID());
|
|
||||||
tsjDeviceExecutionQueue.setDeviceId(tsj.getId());
|
|
||||||
tsjDeviceExecutionQueue.setDeviceName(tsj.getName());
|
|
||||||
tsjDeviceExecutionQueue.setTaskNo(Convert.toLong(mydoJob.getTaskNo()));
|
|
||||||
tsjDeviceExecutionQueue.setSendFlag("0");
|
|
||||||
tsjDeviceExecutionQueue.setSendType("1");
|
|
||||||
tsjDeviceExecutionQueue.setRwlx("1");
|
|
||||||
tsjDeviceExecutionQueue.setCreateDate(DateUtil.formatDateTime(new Date()));
|
|
||||||
tsjDeviceExecutionQueueService.insertTsjDeviceExecutionQueue(tsjDeviceExecutionQueue);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -169,31 +152,29 @@ public class TsjThread implements Runnable {
|
|||||||
if (CollUtil.isNotEmpty(tsjDeviceExecutionQueues)) {
|
if (CollUtil.isNotEmpty(tsjDeviceExecutionQueues)) {
|
||||||
TsjDeviceExecutionQueue tsjDeviceExecutionQueue = tsjDeviceExecutionQueues.get(0);
|
TsjDeviceExecutionQueue tsjDeviceExecutionQueue = tsjDeviceExecutionQueues.get(0);
|
||||||
|
|
||||||
if ("1".equals(tsjDeviceExecutionQueue.getRwlx())) {
|
//提升机移动到小车楼层 需要判断目标楼层入库点位小车是否到位
|
||||||
//提升机移动到小车楼层 需要判断目标楼层入库点位小车是否到位
|
WcsPort param = new WcsPort();
|
||||||
WcsPort param = new WcsPort();
|
param.setPortType("1");
|
||||||
param.setPortType("1");
|
param.setPortRegion(tsjDeviceExecutionQueue.getTarLayer());
|
||||||
param.setPortRegion(tsjDeviceExecutionQueue.getTarLayer());
|
param.setStatus("1");
|
||||||
param.setStatus("1");
|
param.setSpare2("1");
|
||||||
param.setSpare2("1");
|
List<WcsPort> wcsInPorts = wcsPortService.selectWcsPortList(param);
|
||||||
List<WcsPort> wcsPorts = wcsPortService.selectWcsPortList(param);
|
if (CollUtil.isEmpty(wcsInPorts)) {
|
||||||
if (CollUtil.isEmpty(wcsPorts)) {
|
log.info("提升机任务[{}]下发 目标楼层[{}]入库点位空闲 无法下发提升机任务", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getTarLayer());
|
||||||
log.info("提升机任务[{}]下发 目标楼层[{}]入库点位空闲 无法下发提升机任务", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getTarLayer());
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else if ("2".equals(tsjDeviceExecutionQueue.getRwlx())) {
|
|
||||||
//提升机承载小车到目标楼层 需要判断目标楼层出库点位是否空闲
|
|
||||||
WcsPort param = new WcsPort();
|
|
||||||
param.setPortType("1");
|
|
||||||
param.setPortRegion(tsjDeviceExecutionQueue.getTarLayer());
|
|
||||||
param.setStatus("0");
|
|
||||||
param.setSpare2("1");
|
|
||||||
List<WcsPort> wcsPorts = wcsPortService.selectWcsPortList(param);
|
|
||||||
if (CollUtil.isEmpty(wcsPorts)) {
|
|
||||||
log.info("提升机任务[{}]下发 目标楼层[{}]出库点位占用 无法下发提升机任务", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getTarLayer());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
//提升机承载小车到目标楼层 需要判断目标楼层出库点位是否空闲
|
||||||
|
WcsPort param1 = new WcsPort();
|
||||||
|
param1.setPortType("1");
|
||||||
|
param1.setPortRegion(tsjDeviceExecutionQueue.getTarLayer());
|
||||||
|
param1.setStatus("0");
|
||||||
|
param1.setSpare2("1");
|
||||||
|
List<WcsPort> wcsOutPorts = wcsPortService.selectWcsPortList(param1);
|
||||||
|
if (CollUtil.isEmpty(wcsOutPorts)) {
|
||||||
|
log.info("提升机任务[{}]下发 目标楼层[{}]出库点位占用 无法下发提升机任务", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getTarLayer());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
writeToTsj(tsjDeviceExecutionQueues.get(0));
|
writeToTsj(tsjDeviceExecutionQueues.get(0));
|
||||||
log.info("提升机任务下发 taskNo{} 任务类型:{}", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getRwlx());
|
log.info("提升机任务下发 taskNo{} 任务类型:{}", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getRwlx());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user