This commit is contained in:
张怡蓉
2025-12-01 14:37:51 +08:00
parent b832cf2214
commit 7e1fee7d81
3 changed files with 131 additions and 9 deletions

View File

@@ -27,6 +27,9 @@ public interface IWcsSrgvQueueService
/**
* 查询四向小车任务队列列表
*

View File

@@ -50,6 +50,8 @@ public class WcsSrgvQueueServiceImpl implements IWcsSrgvQueueService
return wcsSrgvQueueMapper.selectWcsSrgvQueueByAgvId(agvId);
}
/**
* 查询四向小车任务队列列表
*

View File

@@ -236,7 +236,56 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
//终点是提升机
endSite = "tsj";
}
//生成小车取货队列
WcsSrgvMap wcsSrgvMap1 = new WcsSrgvMap();
wcsSrgvMap1.setRemark(mydoJob1.getExitId());
List<WcsSrgvMap> wcsSrgvMaps1 = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap1);
String cargoPlaceSite = wcsSrgvMaps1.get(0).getSiteId();
List<DeviceSrgv> sameSiteDevices = deviceSrgvMap.values().stream()
.filter(d -> d.getWorkMode() == 4
&& d.getStatus() == 1
&& d.getCurrSite().equals(cargoPlaceSite))
.collect(Collectors.toList());
if(!sameSiteDevices.isEmpty() &&!Objects.equals(sameSiteDevices.get(0).getDeviceId(), deviceSrgv.getDeviceId())){
WcsSrgvMap wcsSrgvMap3 = new WcsSrgvMap();
wcsSrgvMap3.setRemark("cache");
List<WcsSrgvMap> wcsSrgvMaps3 = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap3);
for(WcsSrgvMap wcsSrgvMap4 : wcsSrgvMaps3){
//deviceSrgvMap中所有对象的currSite都不等于wcsSrgvMap4的siteId的对象
if(deviceSrgvMap.values().stream().noneMatch(d -> d.getCurrSite().equals(wcsSrgvMap4.getSiteId()))) {
//生成小车到缓存点队列
WcsSrgvQueue wcsSrgvQueue5 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(sameSiteDevices.get(0).getDeviceId().toString());
WcsSrgvQueue wcsSrgvQueue=new WcsSrgvQueue();
wcsSrgvQueue.setCargoPlaceSite(wcsSrgvMap4.getSiteId());
List<WcsSrgvQueue> wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueue);
if (wcsSrgvQueue5 == null && wcsSrgvQueues.isEmpty()) {
WcsSrgvQueue wcsSrgvQueue3 = new WcsSrgvQueue();
wcsSrgvQueue3.setGuid(UUID.randomUUID().toString());
wcsSrgvQueue3.setTaskNo("9999");
wcsSrgvQueue3.setTaskType("1");
wcsSrgvQueue3.setPriority(Long.parseLong("2"));
wcsSrgvQueue3.setCargo("1");
wcsSrgvQueue3.setIssued(issued);
wcsSrgvQueue3.setExecutionStatus(executionStatus);
wcsSrgvQueue3.setCargoPickSite(cargoPickSite);
wcsSrgvQueue3.setCargoPlaceSite(wcsSrgvMap4.getSiteId());
wcsSrgvQueue3.setStartSite(sameSiteDevices.get(0).getCurrSite());
wcsSrgvQueue3.setEndSite(wcsSrgvMap4.getSiteId());
wcsSrgvQueue3.setTheFloor(sameSiteDevices.get(0).getCurrFloor().toString());
wcsSrgvQueue3.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
wcsSrgvQueue3.setAgvId(sameSiteDevices.get(0).getDeviceId().toString());
wcsSrgvQueue3.setDefault02("4");
wcsSrgvQueue3.setDefault07(sameSiteDevices.get(0).getCurrFloor().toString());
wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSrgvQueue3);
}
}
}
}
//生成小车取货队列
WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue();
wcsSrgvQueue.setGuid(UUID.randomUUID().toString());
wcsSrgvQueue.setTaskNo(mydoJob1.getTaskNo());
@@ -246,10 +295,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
wcsSrgvQueue.setIssued(issued);
wcsSrgvQueue.setExecutionStatus(executionStatus);
wcsSrgvQueue.setCargoPickSite(cargoPickSite);
WcsSrgvMap wcsSrgvMap1 = new WcsSrgvMap();
wcsSrgvMap1.setRemark(mydoJob1.getExitId());
List<WcsSrgvMap> wcsSrgvMaps1 = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap1);
wcsSrgvQueue.setCargoPlaceSite(wcsSrgvMaps1.get(0).getSiteId());
wcsSrgvQueue.setCargoPlaceSite(cargoPlaceSite);
wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite());
wcsSrgvQueue.setEndSite(endSite);
wcsSrgvQueue.setTheFloor(deviceSrgv.getCurrFloor().toString());
@@ -330,6 +377,53 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
// 小车不在1楼
endSite = "tsj";
}
//筛选出deviceSrgvMap中deviceSrgv.getWorkMode() == 4并且deviceSrgv.getStatus() == 1并且deviceSrgv.getCurrSite() == cargoPickSite得对象,并排除掉其中deviceId与deviceSrgv.getDeviceId()相同的对象
List<DeviceSrgv> sameSiteDevices = deviceSrgvMap.values().stream()
.filter(d -> d.getWorkMode() == 4
&& d.getStatus() == 1
&& d.getCurrSite().equals(cargoPickSite))
.collect(Collectors.toList());
if(!sameSiteDevices.isEmpty() && !Objects.equals(sameSiteDevices.get(0).getDeviceId(), deviceSrgv.getDeviceId())){
WcsSrgvMap wcsSrgvMap3 = new WcsSrgvMap();
wcsSrgvMap3.setRemark("cache");
List<WcsSrgvMap> wcsSrgvMaps3 = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap3);
for(WcsSrgvMap wcsSrgvMap4 : wcsSrgvMaps3){
//deviceSrgvMap中所有对象的currSite都不等于wcsSrgvMap4的siteId的对象
if(deviceSrgvMap.values().stream().noneMatch(d -> d.getCurrSite().equals(wcsSrgvMap4.getSiteId()))) {
WcsSrgvQueue wcsSrgvQueue5 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(sameSiteDevices.get(0).getDeviceId().toString());
WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue();
wcsSrgvQueue.setCargoPlaceSite(wcsSrgvMap4.getSiteId());
List<WcsSrgvQueue> wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueue);
if (wcsSrgvQueue5 == null && wcsSrgvQueues.isEmpty()) {
//生成占位小车到缓存点队列
WcsSrgvQueue wcsSrgvQueue3 = new WcsSrgvQueue();
wcsSrgvQueue3.setGuid(UUID.randomUUID().toString());
wcsSrgvQueue3.setTaskNo(mydoJob1.getTaskNo());
wcsSrgvQueue3.setTaskType("1");
wcsSrgvQueue3.setPriority(Long.parseLong("2"));
wcsSrgvQueue3.setCargo("1");
wcsSrgvQueue3.setIssued(issued);
wcsSrgvQueue3.setExecutionStatus(executionStatus);
wcsSrgvQueue3.setCargoPickSite(cargoPickSite);
wcsSrgvQueue3.setCargoPlaceSite(wcsSrgvMap4.getSiteId());
wcsSrgvQueue3.setStartSite(sameSiteDevices.get(0).getCurrSite());
wcsSrgvQueue3.setEndSite(wcsSrgvMap4.getSiteId());
wcsSrgvQueue3.setTheFloor(sameSiteDevices.get(0).getCurrFloor().toString());
wcsSrgvQueue3.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
wcsSrgvQueue3.setAgvId(sameSiteDevices.get(0).getDeviceId().toString());
wcsSrgvQueue3.setDefault02("4");
wcsSrgvQueue3.setDefault07(sameSiteDevices.get(0).getCurrFloor().toString());
wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSrgvQueue3);
}
}
}
}
//生成小车取货队列
WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue();
@@ -679,14 +773,37 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
* @param wcsSrgvQueue
* @return
*/
private boolean finishTaskByQueue(String currSite, WcsSrgvQueue wcsSrgvQueue) {
private void finishTaskByQueue(String currSite, WcsSrgvQueue wcsSrgvQueue) {
//当前在放货站点
//当前在终点
if (Objects.equals(currSite, wcsSrgvQueue.getEndSite())) {
String taskType = wcsSrgvQueue.getTaskType();
String cargoPickSite = wcsSrgvQueue.getCargoPickSite();
String cargoPlaceSite = wcsSrgvQueue.getCargoPlaceSite();
WcsSrgvMap wcsSrgvMap = new WcsSrgvMap();
wcsSrgvMap.setRemark("outCache");
List<WcsSrgvMap> wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap);
if(wcsSrgvMaps.stream().anyMatch(wcsSrgvMap1 -> wcsSrgvMap1.getSiteId().equals(currSite))){
//生成小车从避让点到放货/取货位置,如果是空车就到取货位置,如果是满车就到放货位置
wcsSrgvQueue.setExecutionStatus("4");
wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo());
wcsSrgvQueue.setIssued("0");
wcsSrgvQueue.setExecutionStatus("1");
wcsSrgvQueue.setStartSite(currSite);
if("1".equals(taskType)){
wcsSrgvQueue.setEndSite(cargoPickSite);
}else if("2".equals(taskType)){
wcsSrgvQueue.setEndSite(cargoPlaceSite);
}
wcsSrgvQueue.setTheFloor("1");
wcsSrgvQueue.setDefault07("1");
wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue);
return;
}
//空车现在位置是取货位置(移库取货,入库取货,出库取货),满车现在是放货位置
if ("1".equals(taskType) && cargoPickSite.equals(currSite)) {
@@ -749,13 +866,13 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid());
} else {
//充电之类得 不知道用不用
//充电之类的,不知道用不用
}
}
return false;
}
/**