#
1
13 小时以前 f0429051895816ebadc50bbc409021e23e4d1a3a
#
3个文件已修改
223 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/CrnSlave.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1153,7 +1153,7 @@
            //mark - 3 - ....
            this.locToLoc(crn, crnProtocol,mark);
            //预调度
            this.crnRebackHp(crnProtocol, crnThread);
            this.crnRebackHp(crn, crnProtocol, crnThread);
        }
//        News.infoNoLog(""+mark+" - 0"+" - 堆垛机入出库作业下发执行完成");
@@ -1162,7 +1162,7 @@
    /**
     * 回原点,堆垛机没有执行中任务,设备存在入库任务时叫回原点
     */
    public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread) {
    public synchronized void crnRebackHp(CrnSlave slave, CrnProtocol crnProtocol, CrnThread crnThread) {
        if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
            if (crnProtocol.getBay() == 52) {
                return;
@@ -1170,15 +1170,22 @@
            BasCrnp basCrnp = basCrnpService.selectOne(
                    new EntityWrapper<BasCrnp>().eq("crn_no", crnProtocol.getCrnNo())
            );
            Date modiTime = basCrnp.getModiTime();
            Date now = new Date();
            // 当前时间 - 修改时间 > 1分钟(60000毫秒)
            if (now.getTime() - modiTime.getTime() < 60 * 1000) {
                return;
            }
            boolean result = true;
            if(crnProtocol.getCrnNo() != 5){
                return;
            }
            for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
                StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo2());
                if (staProtocol == null) {
                    News.infoNoLog(" - 堆垛机入库站信息(staProtocol!=null继续执行):staProtocol="+staProtocol);
                    return;
                } else {
                    staProtocol = staProtocol.clone();
                }
                if(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 ){
                    result =false;
                }
            }
            int x=1;
            switch (crnProtocol.getCrnNo()){
@@ -1188,10 +1195,18 @@
                case 4: x =14; break;
                case 5: x =18; break;
            }
            Date modiTime = basCrnp.getModiTime();
            Date now = new Date();
            // 当前时间 - 修改时间 > 1分钟(60000毫秒)
            if(result){
                if (now.getTime() - modiTime.getTime() < 60 * 1000) {
                    return;
                }
            }
            if(crnProtocol.getCrnNo() != 5){
                return;
            }
            // 已经存在吊车执行任务时,则过滤3,12
            if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
                return;
@@ -3708,11 +3723,37 @@
                    && rgvThread.isPaking() && basRgv.getPakAll().equals("1")){
                if(basRgv.getPakOut().equals("1") && basRgv.getPakIn().equals("1")){
                    rgvPreSchedulingIn(rgv, rgvProtocol);//若暂无下发任务预调度提前到取货点
                    if (rgvProtocol.getLastIo().equals("I")) {
                        if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) {
                            //mark - 1 - ....
                            if (rgvProtocol.getTaskNo1()==0){
                                rgvPreSchedulingIn(rgv, rgvProtocol);//若暂无下发任务预调度提前到取货点
                            }
                            rgvProtocol.setLastIo("O");
                        } else if (basRgv.getOutEnable().equals("1") && basRgv.getPakOut().equals("1")) {
                            //mark - 2 - ....
                            if (rgvProtocol.getTaskNo2()==0){
                                this.rgvPreSchedulingOut(rgv, rgvProtocol); //  出库
                            }
                            rgvProtocol.setLastIo("I");
                        }
                    }
                    // 如果最近一次是出库模式
                    else if (rgvProtocol.getLastIo().equals("O")) {
                        if (basRgv.getOutEnable().equals("1")  && basRgv.getPakOut().equals("1")) {
                            if (rgvProtocol.getTaskNo2()==0){
                                this.rgvPreSchedulingOut(rgv, rgvProtocol); //  出库
                            }
                            rgvProtocol.setLastIo("I");
                        } else if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) {
                            if (rgvProtocol.getTaskNo1()==0){
                                rgvPreSchedulingIn(rgv, rgvProtocol);//若暂无下发任务预调度提前到取货点
                            }
                            rgvProtocol.setLastIo("O");
                        }
                    }
                }
            }
        }
    }
    /**
@@ -3978,6 +4019,148 @@
                basRgv.setPakIn("0");
                basRgvService.updateById(basRgv);
                rgvThread.setPaking(false);
                try{
                    wrkMastSta.setWrkSts(1);
                    wrkMastStaMapper.updateById(wrkMastSta);
                    log.error("更新小车任务成功{}",wrkMastSta);
                }catch (Exception e){
                    log.error("更新小车任务失败");
                }
            } else {
                log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo());
            }
        }
    }
    /**
     * 小车出库任务取货下发
     */
    public synchronized void rgvPreSchedulingOut(RgvSlave slave, RgvProtocol rgvProtocol){
        for (RgvSlave.RgvStn rgvStn : slave.getRgvOutTStn()) {//rgv出库取货站点
            boolean flag = false;
            //遍历rgv入库取货站点
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
            StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo2());
            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
            BasRgv basRgv = basRgvService.selectById(slave.getId());
            if (basRgv == null) {
                log.error("{}号RGV尚未在数据库进行维护!4", slave.getId());
                continue;
            }
            if(staProtocol.getWorkNo() == 0){
                continue;
            }
            StaProtocol staProtocol2 = null;
            WrkMastSta wrkMastSta3 = null;
//            if(rgvStn.getStaNo2()!= null ){
//                staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2());
//                if (staProtocol2 == null) {
//                    News.infoNoLog(" - Rgv出库站信息(staProtocol!=null继续执行):staProtocol=" + staProtocol);
//                    continue;
//                } else {
//                    staProtocol2 = staProtocol2.clone();
//                }
//                BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2());
//                if (staDetl2 == null) {
//                    News.error( " - 出库 ===>>Rgv站点在数据库不存在, 站点编号={}", rgvStn.getStaNo());
//                    continue;
//                }
//                wrkMastSta3 = wrkMastStaMapper.selectByWrkNo(staProtocol2.getWorkNo());
//
//            }
            if (staProtocol == null) {
                News.infoNoLog(" - Rgv出库站信息(staProtocol!=null继续执行):staProtocol=" + staProtocol);
                continue;
            } else {
                staProtocol = staProtocol.clone();
            }
            // 查询站点详细信息
            BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
            if (staDetl == null) {
                News.error(" - 出库 ===>>Rgv站点在数据库不存在, 站点编号={}", rgvStn.getStaNo());
                continue;
            }
            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0
                    && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
                flag = true;
            }
            if (!flag) {
                News.errorNoLog(" - Rgv出库取货站信息(以下需要全true):"
                        + "自动信号" + staProtocol.isAutoing() + "有物信号" + staProtocol.isLoading()
                        + "工作号>0" + staProtocol.getWorkNo() + "可入信号" + staProtocol.isOutEnable()
                        + "能入信号(wms设置).equals(\"Y\")" + staDetl.getCanouting());
                continue;
            }
            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
            List<Integer> route = new ArrayList<>();
            switch (rgvProtocol.getRgvNo()){
                case 1: route = RouteUtils.getRouteOne();break;
                case 2: route = RouteUtils.getRouteTwo();break;
            }
            basRgvMap.setNowRoute(rgvProtocol.getRgvNo() == 1?rgvProtocol.getRgvPosI1():rgvProtocol.getRgvPosI2()); //更新小车当前位置站点号
            basRgvMapService.updateById(basRgvMap);
            WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//根据站点工作号和小车工作范围检索任务档
            WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1());
            if(basRgv.getPakToCrn().equals("0")){
                wrkMastSta = wrkMastStaMapper.selectNoInterfereCrn(route, route, Long.valueOf(staProtocol2.getWorkNo()));//处理接驳任务时,连续只取接驳任务
            }
            if( null == wrkMastSta ) {
                News.infoNoLog(" - 查询无待出库数据--wrk_sts0, 工作号={}", staProtocol2.getWorkNo());
                continue;
            }
            boolean result = false;
            if( LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
                StaProtocol staProtocolSta = devpThread.getStation().get(wrkMastSta.getStaEnd());
                if (staProtocolSta == null) {
                    News.infoNoLog(" - Rgv出库站信息(staProtocol!=null继续执行):staProtocol=" + staProtocol);
                    continue;
                } else {
                    staProtocolSta = staProtocolSta.clone();
                }
                if(staProtocolSta.isLoading()){
                    continue;
                }
            }
            wrkMastSta.setWorkSta(1);//若1号工位有任务给2号工位
            wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
            boolean sign = false;
            sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //命令下发
            if (sign){
                if(wrkMastSta.getMk() == 1){//若已执行
                    basRgv.setPakAll("1");
                    basRgvService.updateById(basRgv);
                }
                if(LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
                    basRgv.setPakToCrn("0");
                    basRgvService.updateById(basRgv);
                    if(wrkMastSta3 != null){
                        if(!LEFT_POSITION.contains(wrkMastSta3.getStaEnd())){
                            wrkMastSta3 = null;//若接驳第二位不接驳时取消连续取货
                        }
                    }
                }
                if(wrkMastSta3 != null ){
                    List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
                    if(wrkMastStaPaking.size() < 1){
                        wrkMastSta3.setMk(1);
                        basRgv.setPakAll("0");
                        basRgvService.updateById(basRgv);
                        try{
                            wrkMastStaMapper.updateById(wrkMastSta3);
                            log.error("锁定相隔站点任务");
                        }catch (Exception e){
                            log.error("锁定相隔站点任务失败");
                        }
                    }
                }
                basRgv.setPakIn("0");
                basRgvService.updateById(basRgv);
                rgvThread.setPaking(false);
                try{
                    wrkMastSta.setWrkSts(1);
@@ -5141,6 +5324,7 @@
                    continue;
                }
                if (staProtocol.isAutoing() ) {
                    //staProtocol.getWorkNo()>10000
                    if(staProtocol.getWorkNo()>10000){
                        BasAgvMast basAgvMast = new BasAgvMast();
                        List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("task_no", staProtocol.getWorkNo()));
@@ -5296,7 +5480,6 @@
                            agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getBarcode());
                            agvBindCtnrAndBinParam.setCtnrTyp("1");
                            ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV容器绑定", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
                            wrkMast.setTakeNone("2");
                            wrkMastMapper.updateById(wrkMast);
                        } else {
src/main/java/com/zy/core/model/CrnSlave.java
@@ -37,6 +37,8 @@
        // 堆垛机站点编号
        private Integer staNo;
        // 堆垛机站点编号
        private Integer staNo2;
        // 排
        private Integer row;
src/main/resources/application.yml
@@ -65,12 +65,14 @@
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1001
      staNo2: 1002
      row: 2
      bay: 52
      lev: 1
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2004
      staNo2: 2006
      row: 3
      bay: 52
      lev: 2
@@ -101,12 +103,14 @@
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1011
      staNo2: 1012
      row: 7
      bay: 52
      lev: 1
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2010
      staNo2: 2012
      row: 7
      bay: 52
      lev: 2
@@ -137,12 +141,14 @@
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1015
      staNo2: 1016
      row: 9
      bay: 52
      lev: 1
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2016
      staNo2: 2018
      row: 11
      bay: 52
      lev: 2
@@ -186,12 +192,14 @@
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1025
      staNo2: 1026
      row: 15
      bay: 52
      lev: 1
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2022
      staNo2: 2024
      row: 15
      bay: 52
      lev: 2
@@ -222,12 +230,14 @@
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 1032
      staNo2: 1033
      row: 19
      bay: 52
      lev: 1
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 2028
      staNo2: 2030
      row: 19
      bay: 52
      lev: 2