1
zhang
2025-09-29 0d81063735b221b81413784db00aff62e77f637b
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -974,6 +974,8 @@
                        } else {
                            this.inPut(crn, crnProtocol, mark);
                        }
                    } else {
                        log.error("" + mark + " - 1" + " - 有物料无工作档  ===》异常");
                    }
                } else if (crnProtocol.getLoaded() == 1 && crnProtocol.getLoadedTwo() == 0) {
                    // 堆垛机工位1有物料
@@ -996,6 +998,8 @@
                                this.inPut(crn, crnProtocol, mark);
                            }
                        }
                    } else {
                        log.error("" + mark + " - 1" + " - 有物料无工作档  ===》异常");
                    }
                } else if (crnProtocol.getLoaded() == 0 && crnProtocol.getLoadedTwo() == 1) {
                    // 堆垛机工位2有物料
@@ -1018,6 +1022,8 @@
                                this.inPut(crn, crnProtocol, mark);
                            }
                        }
                    } else {
                        log.error("" + mark + " - 1" + " - 有物料无工作档  ===》异常");
                    }
                }
            }
@@ -1169,8 +1175,8 @@
        for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
            boolean flag = false;
            // 获取工作状态为103(设备上走)的入库工作档
            WrkMast wrkMast = wrkMastMapper.selectPakInStep103(slave.getId());
            // 获取工作状态为104(设备上走)的入库工作档
            WrkMast wrkMast = wrkMastMapper.selectPakInStep104(slave.getId());
            if (null == wrkMast) {
                News.infoNoLog("" + mark + " - 1" + " - 4" + " - 查询无待入库数据--wrk_sts=2, 工作号={}");
//                log.error("查询无待入库数据--wrk_sts=2, 工作号={}", staProtocol.getWorkNo());
@@ -1231,9 +1237,9 @@
                News.error("" + mark + " - 1" + " - 16" + " - 堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
            } else {
                // 修改工作档状态 2.设备上走 => 104.吊车入库取货中
                // 修改工作档状态 2.设备上走 => 105.吊车入库取货中
                Date now = new Date();
                wrkMast.setWrkSts(104L);
                wrkMast.setWrkSts(105L);
                wrkMast.setCrnStrTime(now);
                wrkMast.setModiTime(now);
                if (wrkMastMapper.updateById(wrkMast) == 0) {
@@ -1366,7 +1372,7 @@
                    crnCommand.setPltType(crnStation);
                    crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号
//                    crnCommand.setAckFinish((short) 0);  // 任务完成确认位
                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式:  库位移转
                    crnCommand.setTaskMode(CrnTaskModeType.TAKE); // 任务模式:  库位移转
                    crnCommand.setSourcePosX((short) (sourceSta.getRow1() + slave.getOffset()));     // 源库位排
                    crnCommand.setSourcePosY((short) (sourceSta.getBay1() + slave.getOffset()));     // 源库位列
                    crnCommand.setSourcePosZ((short) (sourceSta.getLev1() + slave.getOffset()));     // 源库位层
@@ -1379,7 +1385,7 @@
                    } else {
                        // 修改工作档状态 11.生成出库ID => 12.吊车出库中
                        Date now = new Date();
                        wrkMast.setWrkSts(105L);
                        wrkMast.setWrkSts(106L);
                        wrkMast.setCrnStrTime(now);
                        wrkMast.setModiTime(now);
                        if (wrkMastMapper.updateById(wrkMast) == 0) {
@@ -1394,13 +1400,13 @@
    }
    /**
     * 出库取货
     * 出库放货
     */
    public synchronized void outPut(CrnSlave slave, CrnProtocol crnProtocol, Integer mark) {
        News.warnNoLog("" + mark + " - 2" + " - 0" + " - 堆垛机入出库作业下发:执行出库");
        for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
            // 获取工作状态为11(生成出库ID)的出库工作档
            List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep105(slave.getId(), crnStn.getStaNo());
            List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep107(slave.getId(), crnStn.getStaNo());
            for (WrkMast wrkMast : wrkMasts) {
                if (wrkMast == null) {
                    continue;
@@ -1494,6 +1500,11 @@
                        }
                    }
                    if (wrkMastMapper.selectByPltType(slave.getId(), wrkMast.getPltType()) == null) {
                        News.error("" + mark + " - 1" + " - 9" + " - 堆垛机改工位存在工作档,工位={}", wrkMast.getPltType());
                    }
                    // 已经存在吊车执行任务时,则过滤
                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
                        break;
@@ -1510,7 +1521,7 @@
                    crnCommand.setCrnNo(slave.getId()); // 堆垛机编号
                    crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号
//                    crnCommand.setAckFinish((short) 0);  // 任务完成确认位
                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式:  库位移转
                    crnCommand.setTaskMode(CrnTaskModeType.PUT); // 任务模式:  库位移转
//                    crnCommand.setSourcePosX((short) (sourceSta.getRow1() + slave.getOffset()));     // 源库位排
//                    crnCommand.setSourcePosY((short) (sourceSta.getBay1() + slave.getOffset()));     // 源库位列
//                    crnCommand.setSourcePosZ((short) (sourceSta.getLev1() + slave.getOffset()));     // 源库位层
@@ -1523,7 +1534,7 @@
                    } else {
                        // 修改工作档状态 11.生成出库ID => 12.吊车出库中
                        Date now = new Date();
                        wrkMast.setWrkSts(106L);
                        wrkMast.setWrkSts(108L);
                        wrkMast.setCrnStrTime(now);
                        wrkMast.setModiTime(now);
                        if (wrkMastMapper.updateById(wrkMast) == 0) {
@@ -2088,6 +2099,7 @@
        // 命令下发区 --------------------------------------------------------------------------
        CrnCommand crnCommand = new CrnCommand();
        crnCommand.setPltType(getCrnStation(wrkMast.getSourceLocNo()));
        crnCommand.setCrnNo(slave.getId()); // 堆垛机编号
        crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号
        crnCommand.setAckFinish((short) 0);  // 任务完成确认位
@@ -2660,7 +2672,14 @@
            LocMast loc = null;
            for (Integer row : rows) {
                if (Utils.isDeepLoc(slaveProperties, row)) {
                    loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
                    if (shallowLoc.getBay1() == 1) {
                        loc = locMastService.queryFreeLocMast2(row, shallowLoc.getLocType1(), 1);
                    } else if (shallowLoc.getRow1() == 29) {
                        loc = locMastService.queryFreeLocMast2(row, shallowLoc.getLocType1(), 29);
                    } else {
                        loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
                    }
                    if (loc != null) {
                        if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())) {
@@ -2679,7 +2698,14 @@
            if (null == loc) {
                for (Integer row : rows) {
                    if (Utils.isShallowLoc(slaveProperties, row)) {
                        loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
                        if (shallowLoc.getBay1() == 1) {
                            loc = locMastService.queryFreeLocMast2(row, shallowLoc.getLocType1(), 1);
                        } else if (shallowLoc.getRow1() == 29) {
                            loc = locMastService.queryFreeLocMast2(row, shallowLoc.getLocType1(), 29);
                        } else {
                            loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
                        }
                        if (null != loc) {//对应深库位非在库状态,不能移库
                            String deepLoc = Utils.getDeepLoc(slaveProperties, loc.getLocNo());