|  |  | 
 |  |  |     /** | 
 |  |  |      * 出库  ===>>  库位到堆垛机站 | 
 |  |  |      */ | 
 |  |  |     public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){ | 
 |  |  |     public boolean locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){ | 
 |  |  |         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { | 
 |  |  |             // 获取工作状态为11(生成出库ID)的出库工作档 | 
 |  |  |             WrkMast wrkMast = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo()); | 
 |  |  | 
 |  |  |  | 
 |  |  |                 // 已经存在吊车执行任务时,则过滤 | 
 |  |  |                 if (wrkMastMapper.selectWorking(slave.getId()) != null) { | 
 |  |  |                     return; | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |                         if (wrkMastMapper.updateById(wrkMast) == 0) { | 
 |  |  |                             log.error("修改工作档状态 11.生成出库ID => 15.吊车出库中 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  |                         } | 
 |  |  |                         return true; | 
 |  |  |                     } | 
 |  |  |                 // 不是最外层库位,需要使用穿梭车搬运后,再堆垛机出库 | 
 |  |  |                 } else { | 
 |  |  | 
 |  |  |                                 if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) { | 
 |  |  |                                     log.error("穿梭车命令下发失败,穿梭车号={},任务数据={}", steNo, JSON.toJSON(steCommand)); | 
 |  |  |                                 } else { | 
 |  |  |                                     // 修改工作档状态 11.生成出库ID => 14.小车待出 | 
 |  |  |                                     // 修改工作档状态 11.生成出库ID => 14.小车搬出库 | 
 |  |  |                                     Date now = new Date(); | 
 |  |  |                                     wrkMast.setWrkSts(14L); | 
 |  |  |                                     wrkMast.setSteNo(steNo); | 
 |  |  |                                     wrkMast.setCrnStrTime(now); | 
 |  |  |                                     wrkMast.setModiTime(now); | 
 |  |  |                                     if (wrkMastMapper.updateById(wrkMast) > 0) { | 
 |  |  |                                     } else { | 
 |  |  |                                         log.error("修改工作档状态 11.生成出库ID => 14.小车待出 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  |                                     if (wrkMastMapper.updateById(wrkMast) == 0) { | 
 |  |  |                                         log.error("修改工作档状态 11.生成出库ID => 14.小车搬出库 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  |                                     } | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                         if (wrkMast.getWrkSts() == 15L) { | 
 |  |  |                             // 1.堆垛机开始移动 | 
 |  |  |                             CrnCommand crnCommand = new CrnCommand(); | 
 |  |  |                             crnCommand.setCrnNo(slave.getId()); // 堆垛机编号 | 
 |  |  |                             crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号 | 
 |  |  |                             crnCommand.setAckFinish((short) 0);  // 任务完成确认位 | 
 |  |  |                             crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式:  库位移转 | 
 |  |  |                             crnCommand.setSourcePosX(sourceSta.getRow1().shortValue());     // 源库位排 | 
 |  |  |                             crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 源库位列 | 
 |  |  |                             crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue());     // 源库位层 | 
 |  |  |                             crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 目标库位排 | 
 |  |  |                             crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 目标库位列 | 
 |  |  |                             crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 目标库位层 | 
 |  |  |                             if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { | 
 |  |  |                                 log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); | 
 |  |  |                             } else { | 
 |  |  |                                 // 修改工作档状态 11.生成出库ID => 15.吊车出库中 | 
 |  |  |                                 Date now = new Date(); | 
 |  |  |                                 wrkMast.setWrkSts(15L); | 
 |  |  |                                 wrkMast.setCrnStrTime(now); | 
 |  |  |                                 wrkMast.setModiTime(now); | 
 |  |  |                                 if (wrkMastMapper.updateById(wrkMast) == 0) { | 
 |  |  |                                     log.error("修改工作档状态 11.生成出库ID => 15.吊车出库中 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  |                                 } | 
 |  |  |                                 return true; | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                     // 没有小车 | 
 |  |  |                     } else { | 
 |  |  | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return false; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |                     case 2: | 
 |  |  |                         // 修改工作档状态 2.设备上走 => 3.小车待搬 | 
 |  |  |                         wrkMast.setWrkSts(3L); | 
 |  |  |                         wrkMast.setCrnStrTime(now); | 
 |  |  |                         wrkMast.setModiTime(now); | 
 |  |  |                         if (wrkMastMapper.updateById(wrkMast) == 0) { | 
 |  |  |                             log.error("修改工作档状态 2.设备上走 => 3.小车待搬 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  | 
 |  |  |                     case 8: | 
 |  |  |                         // 修改工作档状态 8.小车搬入库 => 9.入库完成 | 
 |  |  |                         wrkMast.setWrkSts(9L); | 
 |  |  |                         wrkMast.setCrnStrTime(now); | 
 |  |  |                         wrkMast.setModiTime(now); | 
 |  |  |                         if (wrkMastMapper.updateById(wrkMast) == 0) { | 
 |  |  |                             log.error("修改工作档状态 8.小车搬入库 => 9.入库完成 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  | 
 |  |  |                             steThread.setResetFlag(true); | 
 |  |  |                         } | 
 |  |  |                         break; | 
 |  |  |                     case 14: | 
 |  |  |                         // 修改工作档状态 14.小车搬出库 => 15.等待吊车 | 
 |  |  |                         wrkMast.setWrkSts(15L); | 
 |  |  |                         wrkMast.setModiTime(now); | 
 |  |  |                         if (wrkMastMapper.updateById(wrkMast) == 0) { | 
 |  |  |                             log.error("修改工作档状态 14.小车搬出库 => 15.等待吊车 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  |                         } else { | 
 |  |  |                             steThread.setResetFlag(true); | 
 |  |  |                         } | 
 |  |  |                         break; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |  |