|  |  | 
 |  |  |                     staProtocol.setStaNo(inSta.getBackSta().shortValue()); | 
 |  |  |                     devpThread.setPakMk(staProtocol.getSiteId(), false); | 
 |  |  |                     MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
 |  |  |                     log.error("输送线下发1:"+wrkNo+","+inSta.getBackSta()); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 // 判断是否满足入库条件 | 
 |  |  | 
 |  |  |                             staProtocol.setStaNo(dto.getStaNo().shortValue()); | 
 |  |  |                             devpThread.setPakMk(staProtocol.getSiteId(), false); | 
 |  |  |                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
 |  |  |                             log.error("输送线下发2:"+dto.getWorkNo()+","+dto.getStaNo()); | 
 |  |  |                             if (!result) { | 
 |  |  |                                 News.error(methodName + ":更新plc站点信息失败"); | 
 |  |  |  | 
 |  |  | 
 |  |  |                     staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); | 
 |  |  |                     devpThread.setPakMk(staProtocol.getSiteId(), false); | 
 |  |  |                     boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
 |  |  |                     log.error("输送线下发3:"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); | 
 |  |  |                     if (result) { | 
 |  |  |                         // 更新工作主档 | 
 |  |  |                         wrkMast.setWrkSts(2L); // 工作状态:2.设备上走 | 
 |  |  | 
 |  |  |                         staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()-(short)1)); | 
 |  |  |                         devpThread.setPakMk(staProtocol.getSiteId(), false); | 
 |  |  |                         MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
 |  |  |                         log.error("输送线下发4:"+9989+","+(pickSta.getStaNo().shortValue()-(short)1)); | 
 |  |  |                         //LED | 
 |  |  |                         LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); | 
 |  |  |                         // led 异常显示 | 
 |  |  | 
 |  |  |                     staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); | 
 |  |  |                     devpThread.setPakMk(staProtocol.getSiteId(), false); | 
 |  |  |                     boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
 |  |  |                     log.error("输送线下发5:"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); | 
 |  |  |                     if (!result) { | 
 |  |  |                         News.error(""+mark+" - 3"+" - 发布命令至输送线队列失败!!! [plc编号:{}]", devp.getId()); | 
 |  |  |                     } | 
 |  |  | 
 |  |  |                         && staProtocol.isInEnable() | 
 |  |  |                         && staProtocol.isEmptyMk() | 
 |  |  |                         && staProtocol.isPakMk() | 
 |  |  |                         && (staProtocol.getWorkNo() !=0 && staProtocol.getWorkNo() > 9700) | 
 |  |  |                         ) { | 
 |  |  |                     News.warnNoLog(""+mark+" - 0"+" - 开始执行:空栈板初始化入库,叉车入库站放货"); | 
 |  |  |  | 
 |  |  | 
 |  |  |                             staProtocol.setStaNo(staProtocol.getSiteId().shortValue()); | 
 |  |  |                             devpThread.setPakMk(staProtocol.getSiteId(), false); | 
 |  |  |                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
 |  |  |                             log.error("输送线下发6:"+dto.getWorkNo()+","+staProtocol.getSiteId()); | 
 |  |  |                             if (!result) { | 
 |  |  |                                 News.errorNoLog(""+mark+" - 1"+" - 更新plc站点信息失败"); | 
 |  |  |                                 throw new CoolException("更新plc站点信息失败"); | 
 |  |  | 
 |  |  |  | 
 |  |  |     public synchronized void autoEmptyOut() { | 
 |  |  |         DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); | 
 |  |  |         Integer autoOutSite = 12; | 
 |  |  |         //如果站点可出禁用,则不生成空盘出库任务 | 
 |  |  |         StaProtocol staProtocol = devpThread.getStation().get(autoOutSite); | 
 |  |  |         if (staProtocol == null) { | 
 |  |  |             return; | 
 |  |  |         } else { | 
 |  |  |             staProtocol = staProtocol.clone(); | 
 |  |  |         } | 
 |  |  |         if (staProtocol.isAutoing()  //自动 | 
 |  |  |                 && !staProtocol.isLoading()  //无物 | 
 |  |  |                 && staProtocol.isOutEnable()  //可出信号 | 
 |  |  |                 && staProtocol.getWorkNo() == 0 | 
 |  |  |         ) { | 
 |  |  |             WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(autoOutSite); | 
 |  |  |             if (null != pakoutEmpty) { | 
 |  |  |         List<Integer> list = new ArrayList<>(); | 
 |  |  |         list.add(102);list.add(111); | 
 |  |  |         for (Integer site:list){ | 
 |  |  |             //如果站点可出禁用,则不生成空盘出库任务 | 
 |  |  |             StaProtocol staProtocol = devpThread.getStation().get(site); | 
 |  |  |             if (staProtocol == null) { | 
 |  |  |                 return; | 
 |  |  |             } else { | 
 |  |  |                 staProtocol = staProtocol.clone(); | 
 |  |  |             } | 
 |  |  |             try { | 
 |  |  |                 String response = new HttpHandler.Builder() | 
 |  |  |                         .setUri(wmsUrl) | 
 |  |  |                         .setPath("/rpc/auto/emptyOut/v1") | 
 |  |  |                         .build() | 
 |  |  |                         .doPost(); | 
 |  |  |                 JSONObject jsonObject = JSON.parseObject(response); | 
 |  |  |                 if (jsonObject.getInteger("code").equals(200)) { | 
 |  |  |                     JSONObject data = (JSONObject) jsonObject.get("data"); | 
 |  |  |                     News.info((String) data.get("msg")); | 
 |  |  |                 } else { | 
 |  |  |                     News.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/auto/emptyOut/v1","", response); | 
 |  |  |             if (staProtocol.isAutoing()  //自动 | 
 |  |  |                     && !staProtocol.isLoading()  //无物 | 
 |  |  |                     && staProtocol.isOutEnable()  //可出信号 | 
 |  |  |                     && staProtocol.getWorkNo() == 0 | 
 |  |  |             ) { | 
 |  |  |                 WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(site); | 
 |  |  |                 if (null != pakoutEmpty) { | 
 |  |  |                     return; | 
 |  |  |                 } | 
 |  |  |             } catch (Exception e) { | 
 |  |  |                 e.printStackTrace(); | 
 |  |  |                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                 Short loctype1 = 1; | 
 |  |  |                 if (site == 102){ | 
 |  |  |                     loctype1 = 2; | 
 |  |  |                 } | 
 |  |  |                 LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1); | 
 |  |  |                 locTypeDto.setSiteId(site); | 
 |  |  |                 try { | 
 |  |  |                     String response = new HttpHandler.Builder() | 
 |  |  |                             .setUri(wmsUrl) | 
 |  |  |                             .setPath("/rpc/auto/emptyOut/v1") | 
 |  |  |                             .setJson(JSON.toJSONString(locTypeDto)) | 
 |  |  |                             .build() | 
 |  |  |                             .doPost(); | 
 |  |  |                     JSONObject jsonObject = JSON.parseObject(response); | 
 |  |  |                     if (jsonObject.getInteger("code").equals(200)) { | 
 |  |  |                         JSONObject data = (JSONObject) jsonObject.get("data"); | 
 |  |  |                         News.info((String) data.get("msg")); | 
 |  |  |                     } else { | 
 |  |  |                         News.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/auto/emptyOut/v1","", response); | 
 |  |  |                     } | 
 |  |  |                 } catch (Exception e) { | 
 |  |  |                     e.printStackTrace(); | 
 |  |  |                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public synchronized void autoEmptyIn() { | 
 |  |  |         DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); | 
 |  |  |         Integer autoInSite = 12; | 
 |  |  |         StaProtocol staProtocol = devpThread.getStation().get(autoInSite); | 
 |  |  |         if (staProtocol == null) { | 
 |  |  |             return; | 
 |  |  |         } else { | 
 |  |  |             staProtocol = staProtocol.clone(); | 
 |  |  |         } | 
 |  |  |         if (staProtocol.isAutoing()  //自动 | 
 |  |  |                 && staProtocol.isLoading()  //有物 | 
 |  |  |                 && staProtocol.isInEnable()  //可入信号 | 
 |  |  |                 && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990) //工作号为0或者工作号是9991~9999(输送机留用) | 
 |  |  |         ) { | 
 |  |  |  | 
 |  |  |             try { | 
 |  |  |                 LocTypeDto locTypeDto = new LocTypeDto((short) 1, (short) 1, (short) 1); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |                 String response = new HttpHandler.Builder() | 
 |  |  |                         .setUri(wmsUrl) | 
 |  |  |                         .setPath("/rpc/auto/emptyIn/v1") | 
 |  |  |                         .setJson(JSON.toJSONString(locTypeDto)) | 
 |  |  |                         .build() | 
 |  |  |                         .doPost(); | 
 |  |  |                 JSONObject jsonObject = JSON.parseObject(response); | 
 |  |  |                 if (jsonObject.getInteger("code").equals(200)) { | 
 |  |  |                     News.info((String) jsonObject.get("msg")); | 
 |  |  |                 } else { | 
 |  |  |                     News.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/auto/emptyIn/v1", JSON.toJSONString(locTypeDto), response); | 
 |  |  |                 } | 
 |  |  |             } catch (Exception e) { | 
 |  |  |                 e.printStackTrace(); | 
 |  |  |                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |         List<Integer> list = new ArrayList<>(); | 
 |  |  |         list.add(153);list.add(157); | 
 |  |  |         for (Integer site:list){ | 
 |  |  |             StaProtocol staProtocol = devpThread.getStation().get(site); | 
 |  |  |             if (staProtocol == null) { | 
 |  |  |                 return; | 
 |  |  |             } else { | 
 |  |  |                 staProtocol = staProtocol.clone(); | 
 |  |  |             } | 
 |  |  |             if (staProtocol.isAutoing()  //自动 | 
 |  |  |                     && staProtocol.isLoading()  //有物 | 
 |  |  |                     && staProtocol.isInEnable()  //可入信号 | 
 |  |  |                     && staProtocol.isPakMk() | 
 |  |  |                     && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990) //工作号为0或者工作号是9991~9999(输送机留用) | 
 |  |  |             ) { | 
 |  |  |  | 
 |  |  |                 try { | 
 |  |  |                     Short loctype1 = 1; | 
 |  |  |                     if (site == 153){ | 
 |  |  |                         loctype1 = 2; | 
 |  |  |                     } | 
 |  |  |                     LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1); | 
 |  |  |                     locTypeDto.setSiteId(site); | 
 |  |  |  | 
 |  |  |                     String response = new HttpHandler.Builder() | 
 |  |  |                             .setUri(wmsUrl) | 
 |  |  |                             .setPath("/rpc/auto/emptyIn/v1") | 
 |  |  |                             .setJson(JSON.toJSONString(locTypeDto)) | 
 |  |  |                             .build() | 
 |  |  |                             .doPost(); | 
 |  |  |                     JSONObject jsonObject = JSON.parseObject(response); | 
 |  |  |                     if (jsonObject.getInteger("code").equals(200)) { | 
 |  |  |                         News.info((String) jsonObject.get("msg")); | 
 |  |  |                         staProtocol.setWorkNo(jsonObject.get("data").hashCode()); | 
 |  |  |                         staProtocol.setStaNo(site.shortValue()); | 
 |  |  |                         devpThread.setPakMk(site,false); | 
 |  |  |                         MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); | 
 |  |  |                     } else { | 
 |  |  |                         News.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/auto/emptyIn/v1", JSON.toJSONString(locTypeDto), response); | 
 |  |  |                     } | 
 |  |  |                 } catch (Exception e) { | 
 |  |  |                     e.printStackTrace(); | 
 |  |  |                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  | 
 |  |  |                 ){ | 
 |  |  |                     log.info("{}号小车等待wcs确认,状态{},参数{}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); | 
 |  |  |                     if (rgvProtocol.getTaskNo1()!=0){ | 
 |  |  |                         if (rgvProtocol.getTaskNo1()==9999){ | 
 |  |  |                         if (rgvProtocol.getTaskNo1()==32222){ | 
 |  |  |                             boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); | 
 |  |  |                             if (!rgvComplete){ | 
 |  |  |                                 log.error("小车复位失败,小车号{}!",rgvProtocol.getRgvNo()); | 
 |  |  | 
 |  |  |                             staProtocol.setWorkNo(wrkMast.getWrkNo()); | 
 |  |  |                             staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); | 
 |  |  |                             devpThread.setPakMk(staProtocol.getSiteId(), false); | 
 |  |  |                             log.error("rgv任务完成给输送线下发命令:"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); | 
 |  |  |                             if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) { | 
 |  |  |                                 continue; | 
 |  |  |                             } | 
 |  |  | 
 |  |  |      * 执行小车搬运任务 | 
 |  |  |      */ | 
 |  |  |     public synchronized void rgvRunWrkMastFullSta() { | 
 |  |  |         boolean wrkEnable = false; | 
 |  |  |         try{ | 
 |  |  |             for (RgvSlave rgvSlave:slaveProperties.getRgv()) { | 
 |  |  |                 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); | 
 |  |  | 
 |  |  |                             continue; | 
 |  |  |                         } | 
 |  |  |                         boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //命令下发 | 
 |  |  |                         wrkEnable = true; | 
 |  |  |                         if (sign){ | 
 |  |  |                             boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd()); | 
 |  |  |                             if (signMap){ | 
 |  |  | 
 |  |  |                                 }catch (Exception e){ | 
 |  |  |                                     log.error("更新小车任务失败"); | 
 |  |  |                                 } | 
 |  |  |                                 return; | 
 |  |  |                                 break; | 
 |  |  |                             }else { | 
 |  |  |                                 log.error("3864行,货物搬运任务:工作号{}所属任务下发后地图同步失败",wrkMastSta.getWrkNo()); | 
 |  |  |                             } | 
 |  |  | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |             if (!wrkEnable){ | 
 |  |  |                 rgvRunWrkMastEmptyStaAvoidance(); | 
 |  |  |             } | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             log.error("3875行执行小车搬运任务下发失败"); | 
 |  |  | 
 |  |  |                     if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){ | 
 |  |  |                         continue; | 
 |  |  |                     } | 
 |  |  |                     if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){ | 
 |  |  |                         continue; | 
 |  |  |                     } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157)  ){ | 
 |  |  |                         continue; | 
 |  |  |                     } | 
 |  |  |                     rgvAvoidanceXY(rgvProtocol.getRgvNo()); | 
 |  |  |                     rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); | 
 |  |  |                 } | 
 |  |  | 
 |  |  |                 rgvCommand.setTaskNo1((short)32222); // 工位1工作号 | 
 |  |  |                 rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 工位1任务模式:  回原点 | 
 |  |  |                 //basRgvMap.getLockStartRoute().shortValue() | 
 |  |  |                 rgvCommand.setSourceStaNo1( (short)161); | 
 |  |  |                 rgvCommand.setSourceStaNo1( (short)157); | 
 |  |  |                 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写任务   step=9,回原点 9999任务号 |