#
LSH
2023-06-28 1f62eee8e144988e42f3d0ba2e926d056c01f929
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -188,7 +188,13 @@
                            barcodeThread.setBarcode("");
                            staProtocol.setWorkNo(dto.getWorkNo().shortValue());
                            staProtocol.setStaNo(dto.getStaNo().shortValue());
                            if(Cools.isEmpty(dto.getRgvNo()) || dto.getRgvNo() <= 0) {
                                staProtocol.setStaNo(dto.getStaNo().shortValue());
                            } else {//如果存在RGV编号,说明需要RGV接驳,先下发任务到RGV源站
                                staProtocol.setStaNo(dto.getRgvSstaNo().shortValue());
                            }
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            if (!result) {
@@ -506,6 +512,95 @@
        }
    }
    /**
     * 绑定小车方法
     */
    public synchronized void rgvBindSte() {
        for (RgvSlave rgv : slaveProperties.getRgv()) {
            // 获取RGV信息
            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
            if (rgvProtocol == null) {
                continue;
            }
            BasRgv basRgv = basRgvService.selectById(rgv.getId());
            if (basRgv == null) {
                log.error("{}号RGV尚未在数据库进行维护!", rgv.getId());
                continue;
            }
            // 只有当RGV空闲、自动, 并且无任务、无物时才继续执行
            if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
                    && rgvProtocol.getModeType() == RgvModeType.AUTO
                    && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
                    && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
            ) {
                // 如果最近一次是入库模式
                if (rgvProtocol.getLastIo().equals("I")) {
                    if (basRgv.getInEnable().equals("Y")) {
                        this.rgvBindSteIn(rgv, rgvProtocol); //  入库
                        rgvProtocol.setLastIo("O");
                    } else if (basRgv.getOutEnable().equals("Y")) {
                        this.rgvBindSteOut(rgv, rgvProtocol); //  出库
                        rgvProtocol.setLastIo("I");
                    }
                }
                // 如果最近一次是出库模式
                else if (rgvProtocol.getLastIo().equals("O")) {
                    if (basRgv.getOutEnable().equals("Y")) {
                        this.rgvBindSteOut(rgv, rgvProtocol); //  出库
                        rgvProtocol.setLastIo("I");
                    } else if (basRgv.getInEnable().equals("Y")) {
                        this.rgvBindSteIn(rgv, rgvProtocol); //  入库
                        rgvProtocol.setLastIo("O");
                    }
                }
            }
        }
    }
    /**
     * 绑定小车入库方法
     */
    public synchronized void rgvBindSteIn(RgvSlave slave, RgvProtocol rgvProtocol) {
        for (RgvSlave.RgvStn rgvStn: slave.getRgvInSStn()){
            Integer staNo = rgvStn.getStaNo();
            BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId());
            if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){
                continue;
            }else {
                WrkMast wrkMast = wrkMastMapper.selectRgvInSteWrkNo(basDevp.getWrkNo());
                if (!Cools.isEmpty(wrkMast)){
                    wrkMast.setRgvNo(wrkMast.getCrnNo()>3 ? 2 : 1);
                    wrkMast.setAppeTime(new Date());
                    if (wrkMastMapper.updateById(wrkMast)==0){
                        log.error("绑定小车更新工作档失败!!! [工作号:{}]", wrkMast.getWrkNo());
                    }
                }
            }
        }
    }
    /**
     * 绑定小车出库方法
     */
    public synchronized void rgvBindSteOut(RgvSlave slave, RgvProtocol rgvProtocol) {
        for (RgvSlave.RgvStn rgvStn: slave.getRgvOutSStn()){
            BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId());
            if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){
                continue;
            }else {
                WrkMast wrkMast = wrkMastMapper.selectRgvOutSteWrkNo(basDevp.getWrkNo());
                if (!Cools.isEmpty(wrkMast)){
                    wrkMast.setRgvNo(rgvStn.getStaNo());
                    wrkMast.setAppeTime(new Date());
                    if (wrkMastMapper.updateById(wrkMast)==0){
                        log.error("绑定小车更新工作档失败!!! [工作号:{}]", wrkMast.getWrkNo());
                    }
                }
            }
        }
    }
    /**
     * 入出库  ===>>  RGV入出库作业下发
     */
@@ -1237,6 +1332,9 @@
     * 入库  ===>>  RGV入库站到站
     */
    public synchronized void rgvInStn(RgvSlave slave, RgvProtocol rgvProtocol) {
        WrkMast wrkMast = wrkMastMapper.selectRgvInSteNo(slave.getId());
        //查找工作状态为2(设备上走),且RGV入库接驳站符合的的入库工作档,提取出最多2笔
        List<WrkMast> wrkMastTask = getRgvInTask(slave);
        if(wrkMastTask.size() <= 0){