|  |  | 
 |  |  |             BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther); | 
 |  |  |             List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute()); | 
 |  |  |             Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//另一台小车可活动最远位置 | 
 |  |  |             basRgvMapOther.setStartRoute(lockEndRoute); | 
 |  |  |             basRgvMapOther.setEndRoute(lockEndRoute); | 
 |  |  |             basRgvMapMapper.updateById(basRgvMapOther); | 
 |  |  |             return true; | 
 |  |  |         }catch (Exception e){ | 
 |  |  | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 // 只有当RGV等待WCS确认、自动 | 
 |  |  |                 if (rgvProtocol.getStatusType() == RgvStatusType.WAITING | 
 |  |  |                 if ((rgvProtocol.getStatusType1() == RgvStatusType.WAITING || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING) | 
 |  |  |                         && rgvProtocol.getModeType() == RgvModeType.AUTO | 
 |  |  |                 ) { | 
 |  |  |                         && (rgvProtocol.getStatusType() == RgvStatusType.WORKING) | 
 |  |  |                 ){ | 
 |  |  |                     log.info("{}号小车等待wcs确认,状态{},参数{}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); | 
 |  |  |                     if (rgvProtocol.getTaskNo1()!=0){ | 
 |  |  |                         if (rgvProtocol.getTaskNo1()==9999){ | 
 |  |  | 
 |  |  |                             break; | 
 |  |  |                         } | 
 |  |  |                         WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue()); | 
 |  |  |                         if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=1 || wrkMastSta.getWrkSts()!=1){ | 
 |  |  |                         if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){ | 
 |  |  |                             log.error("未查到小车执行任务或者执行任务状态不符合!"+wrkMastSta); | 
 |  |  |                             continue; | 
 |  |  |                         } | 
 |  |  | 
 |  |  |     /** | 
 |  |  |      * 执行小车搬运任务 | 
 |  |  |      */ | 
 |  |  |     public synchronized void rgvRunWrkMastEmptyStaPut() {//放 | 
 |  |  |         try{ | 
 |  |  |             for (RgvSlave rgvSlave:slaveProperties.getRgv()) { | 
 |  |  |                 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); | 
 |  |  |                 RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); | 
 |  |  |                 if (rgvProtocol == null) { | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); | 
 |  |  |                 if (basRgv == null) { | 
 |  |  |                     log.error("{}号RGV尚未在数据库进行维护!5", rgvSlave.getId()); | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  | //    public synchronized void rgvRunWrkMastEmptyStaPut() {//放 | 
 |  |  | //        try{ | 
 |  |  | //            for (RgvSlave rgvSlave:slaveProperties.getRgv()) { | 
 |  |  | //                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); | 
 |  |  | //                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); | 
 |  |  | //                if (rgvProtocol == null) { | 
 |  |  | //                    continue; | 
 |  |  | //                } | 
 |  |  | //                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); | 
 |  |  | //                if (basRgv == null) { | 
 |  |  | //                    log.error("{}号RGV尚未在数据库进行维护!5", rgvSlave.getId()); | 
 |  |  | //                    continue; | 
 |  |  | //                } | 
 |  |  | // | 
 |  |  | //                // 只有当RGV空闲、自动,工位二有物//rgv可用 | 
 |  |  | //                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE | 
 |  |  | //                        && rgvProtocol.getModeType() == RgvModeType.AUTO | 
 |  |  | //                        && rgvProtocol.getLoaded1()==1  //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 | 
 |  |  | //                ) { | 
 |  |  | //                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); | 
 |  |  | //                    if (basRgvMap == null) { | 
 |  |  | //                        log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); | 
 |  |  | //                        continue; | 
 |  |  | //                    } | 
 |  |  | //                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号 | 
 |  |  | //                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//获取活动范围 | 
 |  |  | //                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//查询可执行任务 | 
 |  |  | //                    for (WrkMastSta wrkMastSta : wrkMastStaList){ | 
 |  |  | //                        if (wrkMastSta.getType()!=2 || (wrkMastSta.getWrkType()!=2 && wrkMastSta.getWrkType()!=4)){// 2:空板  2:放 4:拆盘 | 
 |  |  | //                            continue; | 
 |  |  | //                        } | 
 |  |  | //                        boolean sign = false; | 
 |  |  | //                        if (wrkMastSta.getStaStart()==0 && wrkMastSta.getStaEnd()!=0){//放 | 
 |  |  | //                            sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta); | 
 |  |  | //                        }else { | 
 |  |  | //                            continue; | 
 |  |  | //                        } | 
 |  |  | //                        if (sign){ | 
 |  |  | //                            boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd()); | 
 |  |  | //                            if (signMap){ | 
 |  |  | //                                wrkMastSta.setWrkSts(2); | 
 |  |  | //                                try{ | 
 |  |  | //                                    wrkMastStaMapper.updateById(wrkMastSta); | 
 |  |  | //                                }catch (Exception e){ | 
 |  |  | //                                    log.error("更新小车任务失败"); | 
 |  |  | //                                } | 
 |  |  | //                                return; | 
 |  |  | //                            }else { | 
 |  |  | //                                log.error("3857行,货物搬运任务:工作号{}所属任务下发后地图同步失败",wrkMastSta.getWrkNo()); | 
 |  |  | //                            } | 
 |  |  | //                        }else { | 
 |  |  | //                            log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); | 
 |  |  | //                        } | 
 |  |  | //                        break; | 
 |  |  | //                    } | 
 |  |  | //                } | 
 |  |  | //            } | 
 |  |  | //        }catch (Exception e){ | 
 |  |  | //            log.error("3933行执行小车放空板任务下发失败"); | 
 |  |  | //            log.error("3933行"+e); | 
 |  |  | //        } | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  |                 // 只有当RGV空闲、自动,工位二有物//rgv可用 | 
 |  |  |                 if (rgvProtocol.getStatusType() == RgvStatusType.IDLE | 
 |  |  |                         && rgvProtocol.getModeType() == RgvModeType.AUTO | 
 |  |  |                         && rgvProtocol.getLoaded1()==1  //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 | 
 |  |  |                 ) { | 
 |  |  |                     BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); | 
 |  |  |                     if (basRgvMap == null) { | 
 |  |  |                         log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); | 
 |  |  |                         continue; | 
 |  |  |                     } | 
 |  |  |                     basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号 | 
 |  |  |                     List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//获取活动范围 | 
 |  |  |                     List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//查询可执行任务 | 
 |  |  |                     for (WrkMastSta wrkMastSta : wrkMastStaList){ | 
 |  |  |                         if (wrkMastSta.getType()!=2 || (wrkMastSta.getWrkType()!=2 && wrkMastSta.getWrkType()!=4)){// 2:空板  2:放 4:拆盘 | 
 |  |  |                             continue; | 
 |  |  |                         } | 
 |  |  |                         boolean sign = false; | 
 |  |  |                         if (wrkMastSta.getStaStart()==0 && wrkMastSta.getStaEnd()!=0){//放 | 
 |  |  |                             sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta); | 
 |  |  |                         }else { | 
 |  |  |                             continue; | 
 |  |  |                         } | 
 |  |  |                         if (sign){ | 
 |  |  |                             boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd()); | 
 |  |  |                             if (signMap){ | 
 |  |  |                                 wrkMastSta.setWrkSts(2); | 
 |  |  |                                 try{ | 
 |  |  |                                     wrkMastStaMapper.updateById(wrkMastSta); | 
 |  |  |                                 }catch (Exception e){ | 
 |  |  |                                     log.error("更新小车任务失败"); | 
 |  |  |                                 } | 
 |  |  |                                 return; | 
 |  |  |                             }else { | 
 |  |  |                                 log.error("3857行,货物搬运任务:工作号{}所属任务下发后地图同步失败",wrkMastSta.getWrkNo()); | 
 |  |  |                             } | 
 |  |  |                         }else { | 
 |  |  |                             log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); | 
 |  |  |                         } | 
 |  |  |                         break; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             log.error("3933行执行小车放空板任务下发失败"); | 
 |  |  |             log.error("3933行"+e); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public synchronized void rgvRunWrkMastEmptyStaTake() {//取 | 
 |  |  |         try{ | 
 |  |  |             for (RgvSlave rgvSlave:slaveProperties.getRgv()) { | 
 |  |  |                 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); | 
 |  |  |                 RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); | 
 |  |  |                 if (rgvProtocol == null) { | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); | 
 |  |  |                 if (basRgv == null) { | 
 |  |  |                     log.error("{}号RGV尚未在数据库进行维护!6", rgvSlave.getId()); | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 // 只有当RGV空闲、自动,工位二无物//rgv可用 | 
 |  |  |                 if (rgvProtocol.getStatusType() == RgvStatusType.IDLE | 
 |  |  |                         && rgvProtocol.getModeType() == RgvModeType.AUTO | 
 |  |  |                         && rgvProtocol.getLoaded1()==0  //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 | 
 |  |  |                 ) { | 
 |  |  |                     BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); | 
 |  |  |                     if (basRgvMap == null) { | 
 |  |  |                         log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); | 
 |  |  |                         continue; | 
 |  |  |                     } | 
 |  |  |                     List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); | 
 |  |  |                     basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号 | 
 |  |  |                     List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route); | 
 |  |  |                     for (WrkMastSta wrkMastSta : wrkMastStaList){ | 
 |  |  |                         if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=1){// 2:空板  1:取 | 
 |  |  |                             continue; | 
 |  |  |                         } | 
 |  |  |                         boolean sign = false; | 
 |  |  |                         if (wrkMastSta.getStaEnd()==0 && wrkMastSta.getStaStart()!=0){//取 | 
 |  |  |                             sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta); | 
 |  |  |                         } else { | 
 |  |  |                             continue; | 
 |  |  |                         } | 
 |  |  |                         if (sign){ | 
 |  |  |                             boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute()); | 
 |  |  |                             if (signMap){ | 
 |  |  |                                 wrkMastSta.setWrkSts(1); | 
 |  |  |                                 try{ | 
 |  |  |                                     wrkMastStaMapper.updateById(wrkMastSta); | 
 |  |  |                                 }catch (Exception e){ | 
 |  |  |                                     log.error("更新小车任务失败"); | 
 |  |  |                                 } | 
 |  |  |                                 return; | 
 |  |  |                             }else { | 
 |  |  |                                 log.error("3879行,货物搬运任务:工作号{}所属任务下发后地图同步失败",wrkMastSta.getWrkNo()); | 
 |  |  |                             } | 
 |  |  |                         }else { | 
 |  |  |                             log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); | 
 |  |  |                         } | 
 |  |  |                         break; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             log.error("3989行执行小车取空板任务下发失败"); | 
 |  |  |             log.error("3989行"+e); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | //    public synchronized void rgvRunWrkMastEmptyStaTake() {//取 | 
 |  |  | //        try{ | 
 |  |  | //            for (RgvSlave rgvSlave:slaveProperties.getRgv()) { | 
 |  |  | //                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); | 
 |  |  | //                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); | 
 |  |  | //                if (rgvProtocol == null) { | 
 |  |  | //                    continue; | 
 |  |  | //                } | 
 |  |  | //                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); | 
 |  |  | //                if (basRgv == null) { | 
 |  |  | //                    log.error("{}号RGV尚未在数据库进行维护!6", rgvSlave.getId()); | 
 |  |  | //                    continue; | 
 |  |  | //                } | 
 |  |  | // | 
 |  |  | //                // 只有当RGV空闲、自动,工位二无物//rgv可用 | 
 |  |  | //                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE | 
 |  |  | //                        && rgvProtocol.getModeType() == RgvModeType.AUTO | 
 |  |  | //                        && rgvProtocol.getLoaded1()==0  //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 | 
 |  |  | //                ) { | 
 |  |  | //                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); | 
 |  |  | //                    if (basRgvMap == null) { | 
 |  |  | //                        log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); | 
 |  |  | //                        continue; | 
 |  |  | //                    } | 
 |  |  | //                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); | 
 |  |  | //                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号 | 
 |  |  | //                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route); | 
 |  |  | //                    for (WrkMastSta wrkMastSta : wrkMastStaList){ | 
 |  |  | //                        if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=1){// 2:空板  1:取 | 
 |  |  | //                            continue; | 
 |  |  | //                        } | 
 |  |  | //                        boolean sign = false; | 
 |  |  | //                        if (wrkMastSta.getStaEnd()==0 && wrkMastSta.getStaStart()!=0){//取 | 
 |  |  | //                            sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta); | 
 |  |  | //                        } else { | 
 |  |  | //                            continue; | 
 |  |  | //                        } | 
 |  |  | //                        if (sign){ | 
 |  |  | //                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute()); | 
 |  |  | //                            if (signMap){ | 
 |  |  | //                                wrkMastSta.setWrkSts(1); | 
 |  |  | //                                try{ | 
 |  |  | //                                    wrkMastStaMapper.updateById(wrkMastSta); | 
 |  |  | //                                }catch (Exception e){ | 
 |  |  | //                                    log.error("更新小车任务失败"); | 
 |  |  | //                                } | 
 |  |  | //                                return; | 
 |  |  | //                            }else { | 
 |  |  | //                                log.error("3879行,货物搬运任务:工作号{}所属任务下发后地图同步失败",wrkMastSta.getWrkNo()); | 
 |  |  | //                            } | 
 |  |  | //                        }else { | 
 |  |  | //                            log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); | 
 |  |  | //                        } | 
 |  |  | //                        break; | 
 |  |  | //                    } | 
 |  |  | //                } | 
 |  |  | //            } | 
 |  |  | //        }catch (Exception e){ | 
 |  |  | //            log.error("3989行执行小车取空板任务下发失败"); | 
 |  |  | //            log.error("3989行"+e); | 
 |  |  | //        } | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  |      * 有任务但未执行  此时需要调整小车位置 | 
 |  |  | 
 |  |  |     /* | 
 |  |  |      * 小车取货至工位任务 | 
 |  |  |      * */ | 
 |  |  |     public synchronized boolean rgvTakeFull(Integer rgvId,WrkMastSta wrkMastSta){ | 
 |  |  |         try{ | 
 |  |  |             //  命令下发区 -------------------------------------------------------------------------- | 
 |  |  |             RgvCommand rgvCommand = new RgvCommand(); | 
 |  |  |             rgvCommand.setRgvNo(rgvId); // RGV编号 | 
 |  |  |             rgvCommand.setAckFinish1((short) 0);  // 工位1任务完成确认位 | 
 |  |  |             rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 工位1工作号 | 
 |  |  |             rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 工位1任务模式:  取货 | 
 |  |  |             rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //工位1起点 | 
 |  |  |             rgvCommand.setCommand((short) 1);   //工位1任务确认 | 
 |  |  |             if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { | 
 |  |  |                 //step=2,工位1、2写任务;   step=4,工位1写任务;     step=5,工位2写任务 | 
 |  |  |                 log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand)); | 
 |  |  |                 return false; | 
 |  |  |             } else { | 
 |  |  |                 return true; | 
 |  |  |             } | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             return false; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | //    public synchronized boolean rgvTakeFull(Integer rgvId,WrkMastSta wrkMastSta){ | 
 |  |  | //        try{ | 
 |  |  | //            //  命令下发区 -------------------------------------------------------------------------- | 
 |  |  | //            RgvCommand rgvCommand = new RgvCommand(); | 
 |  |  | //            rgvCommand.setRgvNo(rgvId); // RGV编号 | 
 |  |  | //            rgvCommand.setAckFinish1((short) 0);  // 工位1任务完成确认位 | 
 |  |  | //            rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 工位1工作号 | 
 |  |  | //            rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 工位1任务模式:  取货 | 
 |  |  | //            rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //工位1起点 | 
 |  |  | //            rgvCommand.setCommand((short) 1);   //工位1任务确认 | 
 |  |  | //            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { | 
 |  |  | //                //step=2,工位1、2写任务;   step=4,工位1写任务;     step=5,工位2写任务 | 
 |  |  | //                log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand)); | 
 |  |  | //                return false; | 
 |  |  | //            } else { | 
 |  |  | //                return true; | 
 |  |  | //            } | 
 |  |  | //        }catch (Exception e){ | 
 |  |  | //            return false; | 
 |  |  | //        } | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  |      * 小车放货至输送线任务 | 
 |  |  |      * */ | 
 |  |  |     public synchronized boolean rgvPutFull(Integer rgvId,WrkMastSta wrkMastSta){ | 
 |  |  |         try{ | 
 |  |  |             //  命令下发区 -------------------------------------------------------------------------- | 
 |  |  |             RgvCommand rgvCommand = new RgvCommand(); | 
 |  |  |             rgvCommand.setRgvNo(rgvId); // RGV编号 | 
 |  |  |             rgvCommand.setAckFinish1((short) 0);  // 工位1任务完成确认位 | 
 |  |  |             rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 工位1工作号 | 
 |  |  |             rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 工位1任务模式:  放货 | 
 |  |  |             rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //工位1目标站点 | 
 |  |  |             rgvCommand.setCommand((short) 1);   //工位1任务确认 | 
 |  |  |             if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { | 
 |  |  |                 //step=2,工位1、2写任务;   step=4,工位1写任务;     step=5,工位2写任务 | 
 |  |  |                 log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand)); | 
 |  |  |                 return false; | 
 |  |  |             } else { | 
 |  |  |                 return true; | 
 |  |  |             } | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             return false; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | //    public synchronized boolean rgvPutFull(Integer rgvId,WrkMastSta wrkMastSta){ | 
 |  |  | //        try{ | 
 |  |  | //            //  命令下发区 -------------------------------------------------------------------------- | 
 |  |  | //            RgvCommand rgvCommand = new RgvCommand(); | 
 |  |  | //            rgvCommand.setRgvNo(rgvId); // RGV编号 | 
 |  |  | //            rgvCommand.setAckFinish1((short) 0);  // 工位1任务完成确认位 | 
 |  |  | //            rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 工位1工作号 | 
 |  |  | //            rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 工位1任务模式:  放货 | 
 |  |  | //            rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //工位1目标站点 | 
 |  |  | //            rgvCommand.setCommand((short) 1);   //工位1任务确认 | 
 |  |  | //            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { | 
 |  |  | //                //step=2,工位1、2写任务;   step=4,工位1写任务;     step=5,工位2写任务 | 
 |  |  | //                log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand)); | 
 |  |  | //                return false; | 
 |  |  | //            } else { | 
 |  |  | //                return true; | 
 |  |  | //            } | 
 |  |  | //        }catch (Exception e){ | 
 |  |  | //            return false; | 
 |  |  | //        } | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  |      * 小车取空板至工位任务 | 
 |  |  |      * */ | 
 |  |  |     public synchronized boolean rgvTakeEmpty(Integer rgvId,WrkMastSta wrkMastSta){ | 
 |  |  |         try{ | 
 |  |  |             //  命令下发区 -------------------------------------------------------------------------- | 
 |  |  |             RgvCommand rgvCommand = new RgvCommand(); | 
 |  |  |             rgvCommand.setRgvNo(rgvId); // RGV编号 | 
 |  |  |             rgvCommand.setAckFinish2((short) 0);  // 工位2任务完成确认位 | 
 |  |  |             rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 工位2工作号 | 
 |  |  |             rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 工位2任务模式:  取货 | 
 |  |  |             rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue());   //工位2起点 | 
 |  |  |             rgvCommand.setCommand((short) 2);   //工位2任务确认 | 
 |  |  |             if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(5, rgvCommand))) { | 
 |  |  |                 //step=2,工位1、2写任务;   step=4,工位1写任务;     step=5,工位2写任务 | 
 |  |  |                 log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand)); | 
 |  |  |                 return false; | 
 |  |  |             } else { | 
 |  |  |                 return true; | 
 |  |  |             } | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             return false; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | //    public synchronized boolean rgvTakeEmpty(Integer rgvId,WrkMastSta wrkMastSta){ | 
 |  |  | //        try{ | 
 |  |  | //            //  命令下发区 -------------------------------------------------------------------------- | 
 |  |  | //            RgvCommand rgvCommand = new RgvCommand(); | 
 |  |  | //            rgvCommand.setRgvNo(rgvId); // RGV编号 | 
 |  |  | //            rgvCommand.setAckFinish2((short) 0);  // 工位2任务完成确认位 | 
 |  |  | //            rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 工位2工作号 | 
 |  |  | //            rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 工位2任务模式:  取货 | 
 |  |  | //            rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue());   //工位2起点 | 
 |  |  | //            rgvCommand.setCommand((short) 2);   //工位2任务确认 | 
 |  |  | //            if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(5, rgvCommand))) { | 
 |  |  | //                //step=2,工位1、2写任务;   step=4,工位1写任务;     step=5,工位2写任务 | 
 |  |  | //                log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand)); | 
 |  |  | //                return false; | 
 |  |  | //            } else { | 
 |  |  | //                return true; | 
 |  |  | //            } | 
 |  |  | //        }catch (Exception e){ | 
 |  |  | //            return false; | 
 |  |  | //        } | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  |      * 小车放空板至输送线任务 | 
 |  |  |      * */ | 
 |  |  |     public synchronized boolean rgvPutEmpty(Integer rgvId,WrkMastSta wrkMastSta){ | 
 |  |  |         try{ | 
 |  |  |             //  命令下发区 -------------------------------------------------------------------------- | 
 |  |  |             RgvCommand rgvCommand = new RgvCommand(); | 
 |  |  |             rgvCommand.setRgvNo(rgvId); // RGV编号 | 
 |  |  |             rgvCommand.setAckFinish2((short) 0);  // 工位2任务完成确认位 | 
 |  |  |             rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 工位2工作号 | 
 |  |  |             rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 工位2任务模式:  放货 | 
 |  |  |             rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue());   //工位2目标站点 | 
 |  |  |             rgvCommand.setCommand((short) 2);   //工位2任务确认 | 
 |  |  |             if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(5, rgvCommand))) { | 
 |  |  |                 //step=2,工位1、2写任务;   step=4,工位1写任务;     step=5,工位2写任务 | 
 |  |  |                 log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand)); | 
 |  |  |                 return false; | 
 |  |  |             } else { | 
 |  |  |                 return true; | 
 |  |  |             } | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             return false; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | //    public synchronized boolean rgvPutEmpty(Integer rgvId,WrkMastSta wrkMastSta){ | 
 |  |  | //        try{ | 
 |  |  | //            //  命令下发区 -------------------------------------------------------------------------- | 
 |  |  | //            RgvCommand rgvCommand = new RgvCommand(); | 
 |  |  | //            rgvCommand.setRgvNo(rgvId); // RGV编号 | 
 |  |  | //            rgvCommand.setAckFinish2((short) 0);  // 工位2任务完成确认位 | 
 |  |  | //            rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 工位2工作号 | 
 |  |  | //            rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 工位2任务模式:  放货 | 
 |  |  | //            rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue());   //工位2目标站点 | 
 |  |  | //            rgvCommand.setCommand((short) 2);   //工位2任务确认 | 
 |  |  | //            if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(5, rgvCommand))) { | 
 |  |  | //                //step=2,工位1、2写任务;   step=4,工位1写任务;     step=5,工位2写任务 | 
 |  |  | //                log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand)); | 
 |  |  | //                return false; | 
 |  |  | //            } else { | 
 |  |  | //                return true; | 
 |  |  | //            } | 
 |  |  | //        }catch (Exception e){ | 
 |  |  | //            return false; | 
 |  |  | //        } | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  |      * 小车复位 |