巷道口输送机下发校验优化

This commit is contained in:
FT577-Server
2026-10-29 10:51:13 +08:00
parent d854cb62bd
commit 18decbccb9
2 changed files with 71 additions and 52 deletions

View File

@@ -95,5 +95,14 @@ public class ConvType {
entry("L1008", "011100001")
));
/**
* 巷道对应堆垛机设备编号
*/
public static final Map<String,Integer> CONV_ROAD_STACKER = new HashMap<>(Map.ofEntries(
entry("1", 1),
entry("2", 2),
entry("3", 2)
));
}

View File

@@ -600,62 +600,72 @@ public class RoadConvThread implements Runnable {
* @param roadSsjDevice
*/
private void sendStackerIn(DeviceSsj roadSsjDevice){
//---------------------------出库任务---------------------------
//---------------------------入库任务---------------------------
//检查是否有入库任务
MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Long.valueOf(roadSsjDevice.getTaskNo()));
if (ObjUtil.isNotNull(mydoJob)) {
//可能是下位没有接收到任务号或wcs没有正常写入任务号
if (roadSsjDevice.getTaskNo() < 1000){
//获取已经更新过【任务状态】和【执行阶段】的任务
List<MydoJob> jobs = mydoJobService.selectMydoJobList(
new MydoJob().builder().status(TASK_STATUS_RUNNING).executionPhase(TASK_EP_ROADWAY_SSJ).entranceId(roadSsjDevice.getDeviceCode()) .build());
if (!jobs.isEmpty()){
//检查执行阶段
if (!mydoJob.getExecutionPhase().equals(TASK_EP_ROADWAY_SSJ)) return;
log.info("【巷道口入库】巷道口输送机:{}入库到位,输送机任务号:{},可能是没有正常写入任务或接收失败,尝试重新向输送机下发...", roadSsjDevice.getDeviceCode(), roadSsjDevice.getTaskNo());
//如果有入库任务 - 检查货位编码是否合法
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId());
int devId = 1;
if (!basCargoSpace.getRoadwayId().equals("1")){
devId = 2;
}
if (ObjUtil.isNull(basCargoSpace)) {
log.error("【任务异常】货位不存在 cargoSpaceId{}", mydoJob.getCargoSpaceId());
} else {
//生成队列
List<DdjDeviceExecutionQueue> list = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueList(
new DdjDeviceExecutionQueue().builder().devId(Convert.toInt(mydoJob.getRoadwayId())).build()
);
List<Integer> pclList = roadwayMap.get(roadSsjDevice.getDeviceCode());
if (CollUtil.isEmpty(list) && CollUtil.isNotEmpty(pclList)) {
DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue();
ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID());
ddjDeviceExecutionQueue.setRwh(Convert.toLong(mydoJob.getTaskNo()));
ddjDeviceExecutionQueue.setDevName("ddj" + devId);
ddjDeviceExecutionQueue.setDevId(devId);
ddjDeviceExecutionQueue.setRwzt(0);
ddjDeviceExecutionQueue.setYph(pclList.get(0));
ddjDeviceExecutionQueue.setYlh(pclList.get(1));
ddjDeviceExecutionQueue.setYch(pclList.get(2));
ddjDeviceExecutionQueue.setMbph(Convert.toInt(basCargoSpace.getThePlatoon()));
ddjDeviceExecutionQueue.setMblh(Convert.toInt(basCargoSpace.getTheColumn()));
ddjDeviceExecutionQueue.setMbch(Convert.toInt(basCargoSpace.getTheFloor()));
ddjDeviceExecutionQueue.setDdjxf("0");
ddjDeviceExecutionQueue.setMlfs(5);
// ddjDeviceExecutionQueue.setSpare1(mydoJob.getTraySize().toString());//货物高度
ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date()));
// ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_2);
ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue);
//修改作业状态
mydoJob.setStatus(TASK_STATUS_RUNNING);
mydoJob.setExecutionPhase(TASK_EP_DDJ);
mydoJob.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
mydoJobService.updateMydoJob(mydoJob);
log.info("【巷道口入库】输送机:{}入库到位,更新任务状态,等待堆垛机执行,任务号:{}", roadSsjDevice.getDeviceCode(), mydoJob.getTaskNo());
}
}
}else{
// log.info("【出库警告】当前出口"+ exitId +"存在入库任务,无法出库!");
jobs.get(0).setStatus(TASK_STATUS_CREATED);
mydoJobService.updateMydoJob(jobs.get(0));
}
}
//检查是否有入库任务
MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Long.valueOf(roadSsjDevice.getTaskNo()));
if (ObjUtil.isNotNull(mydoJob)) {
//检查执行阶段
if (!mydoJob.getExecutionPhase().equals(TASK_EP_ROADWAY_SSJ)) return;
//如果有入库任务 - 检查货位编码是否合法
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId());
// int devId = 1;
// if (!basCargoSpace.getRoadwayId().equals("1")){
// devId = 2;
// }
int devId = ConvType.CONV_ROAD_STACKER.get(basCargoSpace.getRoadwayId());
if (ObjUtil.isNull(basCargoSpace)) {
log.error("【任务异常】不存在该货位:{}", mydoJob.getCargoSpaceId());
} else {
//生成队列
List<DdjDeviceExecutionQueue> list = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueList(
new DdjDeviceExecutionQueue().builder().devId(Convert.toInt(mydoJob.getRoadwayId())).build()
);
List<Integer> pclList = roadwayMap.get(roadSsjDevice.getDeviceCode());
if (CollUtil.isEmpty(list) && CollUtil.isNotEmpty(pclList)) {
DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue();
ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID());
ddjDeviceExecutionQueue.setRwh(Convert.toLong(mydoJob.getTaskNo()));
ddjDeviceExecutionQueue.setDevName("ddj" + devId);
ddjDeviceExecutionQueue.setDevId(devId);
ddjDeviceExecutionQueue.setRwzt(0);
ddjDeviceExecutionQueue.setYph(pclList.get(0));
ddjDeviceExecutionQueue.setYlh(pclList.get(1));
ddjDeviceExecutionQueue.setYch(pclList.get(2));
ddjDeviceExecutionQueue.setMbph(Convert.toInt(basCargoSpace.getThePlatoon()));
ddjDeviceExecutionQueue.setMblh(Convert.toInt(basCargoSpace.getTheColumn()));
ddjDeviceExecutionQueue.setMbch(Convert.toInt(basCargoSpace.getTheFloor()));
ddjDeviceExecutionQueue.setDdjxf("0");
ddjDeviceExecutionQueue.setMlfs(5);
// ddjDeviceExecutionQueue.setSpare1(mydoJob.getTraySize().toString());//货物高度
ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date()));
// ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_2);
ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue);
//修改作业状态
mydoJob.setStatus(TASK_STATUS_RUNNING);
mydoJob.setExecutionPhase(TASK_EP_DDJ);
mydoJob.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
mydoJobService.updateMydoJob(mydoJob);
log.info("【巷道口入库】输送机:{}入库到位,任务状态更新为<执行中>,等待堆垛机取货,任务号:{}", roadSsjDevice.getDeviceCode(), mydoJob.getTaskNo());
}
}
}else{
// log.info("【出库警告】当前出口"+ exitId +"存在入库任务,无法出库!");
}
}