pang.jiabao
2024-08-18 e31d11ff9f7ca2fd32e06494ad1c325a46624983
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2020,6 +2020,9 @@
                    // 入库 + 库位转移  ==> 4.入库完成
                    if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
                        wrkMast.setWrkSts(4L);
                        if (wrkMast.getIoType() == 3) {
                            wrkMast.setWrkSts(13L);
                        }
                    } else {
                        continue;
                    }
@@ -4613,4 +4616,65 @@
        }
    }
    /**
     * 二楼空托回流到一楼,3.站到站任务
     */
    public synchronized void emptyTrayReflux() {
        for (CrnSlave crn : slaveProperties.getCrn()) {
            List<WrkMast> wrkMastList = wrkMastMapper.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 2)
                    .eq("crn_no",crn.getId()).eq("io_type", 3));
            for (WrkMast wrkMast : wrkMastList) {
                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                if (crnProtocol == null) {
                    continue;
                }
                if (crnProtocol.getStatusType() == CrnStatusType.IDLE
                        && crnProtocol.getTaskNo() == 0
                        && crnProtocol.getModeType() == CrnModeType.AUTO
                        && crnProtocol.getLoaded() == 0
                        && crnProtocol.getForkPos() == 0) {
                    CrnSlave.CrnStn crnStn = null;
                    for (CrnSlave.CrnStn crnStn1 : crn.getCrnInStn()){
                        if(crnStn1.getStaNo().equals(wrkMast.getStaNo())){
                            crnStn = crnStn1;
                            break;
                        }
                    }
                    if(Cools.isEmpty(crnStn)){
                        continue;
                    }
                    // 入库命令下发区 --------------------------------------------------------------------------
                    CrnCommand crnCommand = new CrnCommand();
                    crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 堆垛机编号
                    crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号
                    crnCommand.setAckFinish((short) 0);  // 任务完成确认位
                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式:  库位移转
                    //crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 源库位排
                    //crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 源库位列
                    //crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 源库位层
                    crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 目标库位排
                    crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 目标库位列
                    crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 目标库位层
                    crnCommand.setSourceStaNo(crnStn.getPlatNo().shortValue());     // 源库位排
                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                        log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                    } else {
                        // 修改工作档状态 2.设备上走 => 3.吊车入库中
                        Date now = new Date();
                        wrkMast.setWrkSts(3L);
                        wrkMast.setCrnStrTime(now);
                        wrkMast.setModiTime(now);
                        if (wrkMastMapper.updateById(wrkMast) == 0) {
                            log.error("修改工作档状态 2.设备上走 => 3.吊车入库中 失败!!,工作号={}", wrkMast.getWrkNo());
                        }
                    }
                    break;
                }
            }
        }
    }
}