Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -25,6 +25,8 @@ public interface IWcsSrgvQueueService
|
|||||||
public WcsSrgvQueue selectWcsSrgvQueueByAgvId(String agvId);
|
public WcsSrgvQueue selectWcsSrgvQueueByAgvId(String agvId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询四向小车任务队列列表
|
* 查询四向小车任务队列列表
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -127,13 +127,13 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
param.setJobType("1");
|
param.setJobType("1");
|
||||||
param.setAgvId(deviceSrgv.getDeviceId().toString());
|
param.setAgvId(deviceSrgv.getDeviceId().toString());
|
||||||
List<SrgvChargingJob> srgvChargingJobs = srgvChargingJobMapper.selectSrgvChargingJobList(param);
|
List<SrgvChargingJob> srgvChargingJobs = srgvChargingJobMapper.selectSrgvChargingJobList(param);
|
||||||
if (CollUtil.isNotEmpty(srgvChargingJobs)){
|
if (CollUtil.isNotEmpty(srgvChargingJobs)) {
|
||||||
SrgvChargingJob srgvChargingJob = srgvChargingJobs.get(0);
|
SrgvChargingJob srgvChargingJob = srgvChargingJobs.get(0);
|
||||||
String chargingSite = srgvChargingJob.getChargingSite();//充电桩站点
|
String chargingSite = srgvChargingJob.getChargingSite();//充电桩站点
|
||||||
WcsSrgvQueue wcsSrgvQueueParam = new WcsSrgvQueue();
|
WcsSrgvQueue wcsSrgvQueueParam = new WcsSrgvQueue();
|
||||||
wcsSrgvQueueParam.setAgvId(deviceSrgv.getDeviceId().toString());
|
wcsSrgvQueueParam.setAgvId(deviceSrgv.getDeviceId().toString());
|
||||||
List<WcsSrgvQueue> wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueParam);
|
List<WcsSrgvQueue> wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueParam);
|
||||||
if (CollUtil.isEmpty(wcsSrgvQueues)){
|
if (CollUtil.isEmpty(wcsSrgvQueues)) {
|
||||||
//生成队列
|
//生成队列
|
||||||
WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue();
|
WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue();
|
||||||
wcsSrgvQueue.setGuid(UUID.randomUUID().toString());
|
wcsSrgvQueue.setGuid(UUID.randomUUID().toString());
|
||||||
@@ -148,9 +148,9 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite());
|
wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite());
|
||||||
|
|
||||||
WcsSrgvMap wcsSrgvMap = wcsSrgvMapService.selectWcsSrgvMapBySiteId(chargingSite);
|
WcsSrgvMap wcsSrgvMap = wcsSrgvMapService.selectWcsSrgvMapBySiteId(chargingSite);
|
||||||
if (wcsSrgvMap.getZ().equals(deviceSrgv.getCurrFloor())){
|
if (wcsSrgvMap.getZ().equals(deviceSrgv.getCurrFloor())) {
|
||||||
wcsSrgvQueue.setEndSite(chargingSite);
|
wcsSrgvQueue.setEndSite(chargingSite);
|
||||||
}else {
|
} else {
|
||||||
wcsSrgvQueue.setEndSite("tsj");
|
wcsSrgvQueue.setEndSite("tsj");
|
||||||
}
|
}
|
||||||
wcsSrgvQueue.setTheFloor(deviceSrgv.getCurrFloor().toString());
|
wcsSrgvQueue.setTheFloor(deviceSrgv.getCurrFloor().toString());
|
||||||
@@ -182,9 +182,92 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
* 生成出库小车队列
|
* 生成出库小车队列
|
||||||
*/
|
*/
|
||||||
private void createCarOutQueue() {
|
private void createCarOutQueue() {
|
||||||
|
MydoJob mydoJob = new MydoJob();
|
||||||
|
mydoJob.setInOut("2");
|
||||||
|
mydoJob.setExecutionPhase("0");
|
||||||
|
mydoJob.setStatus("1");
|
||||||
|
List<MydoJob> mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob);
|
||||||
|
if (!mydoJobs.isEmpty()) {
|
||||||
|
MydoJob mydoJob1 = mydoJobs.get(0);
|
||||||
|
// 查询是否有已下发的该任务号队列
|
||||||
|
WcsSrgvQueue wcsSrgvQueue1 = wcsSagvQueueMapper.selectWcsSrgvQueueByTaskNo(mydoJob1.getTaskNo());
|
||||||
|
if (wcsSrgvQueue1 == null) {
|
||||||
|
ConcurrentHashMap<String, DeviceSrgv> deviceSrgvMap = PlcSrgvRead.deviceSrgvMap;
|
||||||
|
List<DeviceSrgv> deviceSrgvList = deviceSrgvMap.values().stream()
|
||||||
|
.filter(deviceSrgv -> deviceSrgv.getWorkMode() == 4)
|
||||||
|
.sorted((d1, d2) -> Math.abs(Integer.parseInt(mydoJob1.getTheFloor()) - d2.getCurrFloor())
|
||||||
|
- Math.abs(Integer.parseInt(mydoJob1.getTheFloor()) - d1.getCurrFloor()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
if (!deviceSrgvList.isEmpty()) {
|
||||||
|
DeviceSrgv deviceSrgv = null;
|
||||||
|
for (DeviceSrgv deviceSrgv1 : deviceSrgvList) {
|
||||||
|
//优先出库层,如果没有优先邻近层
|
||||||
|
if (deviceSrgv1.getCurrFloor().toString().equals(mydoJob1.getTheFloor())) {
|
||||||
|
deviceSrgv = deviceSrgv1;
|
||||||
|
break;
|
||||||
|
} else if (deviceSrgv == null || (Math.abs(Integer.parseInt(mydoJob1.getTheFloor()) - deviceSrgv1.getCurrFloor())) < (Math.abs(Integer.parseInt(mydoJob1.getTheFloor()) - deviceSrgv.getCurrFloor()))) {
|
||||||
|
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv1.getDeviceId().toString());
|
||||||
|
if (deviceSrgv1.getStatus() == 1 && wcsSrgvQueue2 == null) {
|
||||||
|
deviceSrgv = deviceSrgv1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (deviceSrgv != null) {
|
||||||
|
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv.getDeviceId().toString());
|
||||||
|
if (wcsSrgvQueue2 == null && deviceSrgv.getStatus() == 1) {
|
||||||
|
//查询小车是否为取货楼层
|
||||||
|
String endSite = "";
|
||||||
|
String issued = "0";
|
||||||
|
String executionStatus = "1";
|
||||||
|
WcsSrgvMap wcsSrgvMap = new WcsSrgvMap();
|
||||||
|
wcsSrgvMap.setCargoSpaceId(mydoJob1.getCargoSpaceId());
|
||||||
|
List<WcsSrgvMap> wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap);
|
||||||
|
//取货地址
|
||||||
|
String cargoPickSite = wcsSrgvMaps.get(0).getSiteId();
|
||||||
|
|
||||||
|
if (deviceSrgv.getCurrFloor().equals(wcsSrgvMaps.get(0).getTheLayer())) {
|
||||||
|
//终点是巷道口到位输送线
|
||||||
|
endSite = cargoPickSite;
|
||||||
|
if(cargoPickSite.equals(deviceSrgv.getCurrSite())){
|
||||||
|
issued="1";
|
||||||
|
executionStatus="3";
|
||||||
|
}
|
||||||
|
} else{
|
||||||
|
//终点是提升机
|
||||||
|
endSite = "tsj";
|
||||||
|
}
|
||||||
|
//生成小车取货队列
|
||||||
|
WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue();
|
||||||
|
wcsSrgvQueue.setGuid(UUID.randomUUID().toString());
|
||||||
|
wcsSrgvQueue.setTaskNo(mydoJob1.getTaskNo());
|
||||||
|
wcsSrgvQueue.setTaskType("1");
|
||||||
|
wcsSrgvQueue.setPriority(Long.parseLong("2"));
|
||||||
|
wcsSrgvQueue.setCargo("1");
|
||||||
|
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.setStartSite(deviceSrgv.getCurrSite());
|
||||||
|
wcsSrgvQueue.setEndSite(endSite);
|
||||||
|
wcsSrgvQueue.setTheFloor(deviceSrgv.getCurrFloor().toString());
|
||||||
|
wcsSrgvQueue.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
||||||
|
wcsSrgvQueue.setAgvId(deviceSrgv.getDeviceId().toString());
|
||||||
|
wcsSrgvQueue.setDefault02("4");
|
||||||
|
wcsSrgvQueue.setDefault07("1");
|
||||||
|
wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSrgvQueue);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -199,45 +282,53 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
MydoJob mydoJob1 = mydoJobs.get(0);
|
MydoJob mydoJob1 = mydoJobs.get(0);
|
||||||
// 查询是否有已下发的该任务号队列
|
// 查询是否有已下发的该任务号队列
|
||||||
WcsSrgvQueue wcsSrgvQueue1 = wcsSagvQueueMapper.selectWcsSrgvQueueByTaskNo(mydoJob1.getTaskNo());
|
WcsSrgvQueue wcsSrgvQueue1 = wcsSagvQueueMapper.selectWcsSrgvQueueByTaskNo(mydoJob1.getTaskNo());
|
||||||
|
|
||||||
if (wcsSrgvQueue1 == null) {
|
if (wcsSrgvQueue1 == null) {
|
||||||
ConcurrentHashMap<String, DeviceSrgv> deviceSrgvMap = PlcSrgvRead.deviceSrgvMap;
|
ConcurrentHashMap<String, DeviceSrgv> deviceSrgvMap = PlcSrgvRead.deviceSrgvMap;
|
||||||
List<DeviceSrgv> deviceSrgvList = deviceSrgvMap.values().stream().filter(deviceSrgv -> deviceSrgv.getStatus() == 1 && deviceSrgv.getWorkMode() == 4).collect(Collectors.toList());
|
|
||||||
|
List<DeviceSrgv> deviceSrgvList = deviceSrgvMap.values().stream()
|
||||||
|
.filter(deviceSrgv -> deviceSrgv.getWorkMode() == 4)
|
||||||
|
.sorted((d1, d2) -> d2.getCurrFloor().compareTo(d1.getCurrFloor()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
if (!deviceSrgvList.isEmpty()) {
|
if (!deviceSrgvList.isEmpty()) {
|
||||||
DeviceSrgv deviceSrgv =null;
|
DeviceSrgv deviceSrgv = null;
|
||||||
for (DeviceSrgv deviceSrgv1 : deviceSrgvList) {
|
for (DeviceSrgv deviceSrgv1 : deviceSrgvList) {
|
||||||
WcsSrgvQueue wcsSrgvQueue = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv1.getDeviceId().toString());
|
|
||||||
if (wcsSrgvQueue == null) {
|
|
||||||
//如果有currFloor等于mydoJob1的theFloor的就选择,如果没有选择deviceSrgvList中currFloor最小的
|
|
||||||
if (deviceSrgv1.getCurrFloor().toString().equals(mydoJob1.getTheFloor())) {
|
if (deviceSrgv1.getCurrFloor().toString().equals(mydoJob1.getTheFloor())) {
|
||||||
deviceSrgv = deviceSrgv1;
|
deviceSrgv = deviceSrgv1;
|
||||||
break; // 找到了相同楼层的直接选它
|
break; // 找到了相同楼层的直接选它
|
||||||
} else if (deviceSrgv == null || deviceSrgv1.getCurrFloor() < deviceSrgv.getCurrFloor()) {
|
} else if (deviceSrgv == null || deviceSrgv1.getCurrFloor() < deviceSrgv.getCurrFloor()) {
|
||||||
|
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv1.getDeviceId().toString());
|
||||||
|
if (deviceSrgv1.getStatus() == 1 && wcsSrgvQueue2 == null) {
|
||||||
deviceSrgv = deviceSrgv1; // 更新为更小楼层的小车
|
deviceSrgv = deviceSrgv1; // 更新为更小楼层的小车
|
||||||
}
|
}
|
||||||
|
|
||||||
}else{
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (deviceSrgv != null) {
|
||||||
|
|
||||||
//查询1楼是否有空闲联机自动的小车,且1楼小车不在入库站点
|
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv.getDeviceId().toString());
|
||||||
|
if (wcsSrgvQueue2 == null && deviceSrgv.getStatus() == 1) {
|
||||||
|
|
||||||
|
//查询小车是否为1楼,且1楼小车不在入库站点
|
||||||
String endSite = "";
|
String endSite = "";
|
||||||
|
String issued = "0";
|
||||||
|
String executionStatus = "1";
|
||||||
WcsSrgvMap wcsSrgvMap = new WcsSrgvMap();
|
WcsSrgvMap wcsSrgvMap = new WcsSrgvMap();
|
||||||
wcsSrgvMap.setRemark(mydoJob1.getEntranceId());
|
wcsSrgvMap.setRemark(mydoJob1.getEntranceId());
|
||||||
List<WcsSrgvMap> wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap);
|
List<WcsSrgvMap> wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap);
|
||||||
//取货地址
|
//取货地址
|
||||||
String cargoPickSite = wcsSrgvMaps.get(0).getSiteId();
|
String cargoPickSite = wcsSrgvMaps.get(0).getSiteId();
|
||||||
|
|
||||||
if (deviceSrgv.getCurrFloor() == 1 && !cargoPickSite.equals(deviceSrgv.getCurrSite())) {
|
if (deviceSrgv.getCurrFloor() == 1) {
|
||||||
//终点是巷道口到位输送线
|
|
||||||
endSite = cargoPickSite;
|
endSite = cargoPickSite;
|
||||||
|
if (cargoPickSite.equals(deviceSrgv.getCurrSite())) {
|
||||||
} else if (deviceSrgv.getCurrFloor() != 1 ) {
|
// 小车已在取货点
|
||||||
//终点是提升机
|
issued = "1";
|
||||||
endSite = "tsj";
|
executionStatus = "3";
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return;
|
// 小车不在1楼
|
||||||
|
endSite = "tsj";
|
||||||
}
|
}
|
||||||
|
|
||||||
//生成小车取货队列
|
//生成小车取货队列
|
||||||
@@ -247,8 +338,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
wcsSrgvQueue.setTaskType("1");
|
wcsSrgvQueue.setTaskType("1");
|
||||||
wcsSrgvQueue.setPriority(Long.parseLong("2"));
|
wcsSrgvQueue.setPriority(Long.parseLong("2"));
|
||||||
wcsSrgvQueue.setCargo("1");
|
wcsSrgvQueue.setCargo("1");
|
||||||
wcsSrgvQueue.setIssued("0");
|
wcsSrgvQueue.setIssued(issued);
|
||||||
wcsSrgvQueue.setExecutionStatus("1");
|
wcsSrgvQueue.setExecutionStatus(executionStatus);
|
||||||
wcsSrgvQueue.setCargoPickSite(cargoPickSite);
|
wcsSrgvQueue.setCargoPickSite(cargoPickSite);
|
||||||
WcsSrgvMap wcsSrgvMap1 = new WcsSrgvMap();
|
WcsSrgvMap wcsSrgvMap1 = new WcsSrgvMap();
|
||||||
wcsSrgvMap1.setCargoSpaceId(mydoJob1.getCargoSpaceId());
|
wcsSrgvMap1.setCargoSpaceId(mydoJob1.getCargoSpaceId());
|
||||||
@@ -266,6 +357,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -516,22 +609,9 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
* 1、不处理终点是提升机站点的四向车
|
* 1、不处理终点是提升机站点的四向车
|
||||||
* 2、处理终点不是提升机站点的
|
* 2、处理终点不是提升机站点的
|
||||||
* */
|
* */
|
||||||
boolean taskFinishFlag = finishTaskByQueue(deviceSrgv.getCurrSite(), wcsSrgvQueue);
|
|
||||||
|
|
||||||
if (taskFinishFlag) {
|
finishTaskByQueue(deviceSrgv.getCurrSite(), wcsSrgvQueue);
|
||||||
String spare2 = deviceSrgv.getSpare2();
|
|
||||||
if ("-".equals(spare2)) {
|
|
||||||
//换层 不删除队列
|
|
||||||
wcsSrgvQueue.setExecutionStatus("2");
|
|
||||||
wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue);
|
|
||||||
} else {
|
|
||||||
WcsSrgvQueueFinish wcsSrgvQueueFinish = new WcsSrgvQueueFinish();
|
|
||||||
BeanUtil.copyProperties(wcsSrgvQueue, wcsSrgvQueueFinish);
|
|
||||||
wcsSrgvQueueFinish.setFinishDate(DateUtil.now());
|
|
||||||
wcsSagvQueueFinishMapper.insertWcsSrgvQueueFinish(wcsSrgvQueueFinish);
|
|
||||||
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -602,16 +682,19 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
//请求wms生成库存
|
//请求wms生成库存
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "7"://移库,变动库存,删除队列,插入历史表
|
case "7"://移库,变动库存
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
//删除队列,插入历史表
|
||||||
|
wcsSrgvQueue.setExecutionStatus("4");
|
||||||
|
wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo());
|
||||||
|
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid());
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
//充电之类得 不知道用不用
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -137,14 +137,16 @@ public class SsjThread implements Runnable {
|
|||||||
mydoJob.setExecutionPhase("1");
|
mydoJob.setExecutionPhase("1");
|
||||||
mydoJob.setCreateTime(new Date());
|
mydoJob.setCreateTime(new Date());
|
||||||
if("GS1002".equals(deviceSsj.getDeviceCode())) {
|
if("GS1002".equals(deviceSsj.getDeviceCode())) {
|
||||||
mydoJob.setEntranceId("GS1002");
|
mydoJob.setEntranceId("L1004");
|
||||||
}else{
|
}else{
|
||||||
mydoJob.setEntranceId("GS1007");
|
mydoJob.setEntranceId("L1005");
|
||||||
}
|
}
|
||||||
|
|
||||||
mydoJobService.insertMydoJob(mydoJob);
|
mydoJobService.insertMydoJob(mydoJob);
|
||||||
int i = writeToSsj(deviceSsj.getPlcDbWriteAddress(), mydoJob.getTaskNo(), 1, 1);
|
int i = writeToSsj(deviceSsj.getPlcDbWriteAddress(), mydoJob.getTaskNo(), 1, 1);
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
|
mydoJob.setStatus("3");
|
||||||
|
mydoJobService.updateMydoJob(mydoJob);
|
||||||
log.info(deviceSsj.getDeviceCode()+"输送机下发任务号成功:{}", mydoJob.getTaskNo());
|
log.info(deviceSsj.getDeviceCode()+"输送机下发任务号成功:{}", mydoJob.getTaskNo());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user