|  |  | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             // todo:小车迁入出 | 
 |  |  |             // 目标库位 ===>> 最外层库位 | 
 |  |  |             if (locMastService.isOutMost(wrkMast.getLocNo())) { | 
 |  |  |                 // 判断小车是否在最外层库位,如果是则搬走,如果不是,则直接堆垛机入库 | 
 |  |  | 
 |  |  |                     } | 
 |  |  |                 // 没有小车 | 
 |  |  |                 } else { | 
 |  |  |                     // 1.寻找最近的小车 | 
 |  |  |  | 
 |  |  |                     // 2.让小车等待搬运待续 | 
 |  |  |  | 
 |  |  |                     if (wrkMast.getWrkSts() == 2L) { | 
 |  |  |                         // 1.寻找最近的小车 | 
 |  |  |                         SteThread steThread = queryIdleCar(wrkMast); | 
 |  |  |                         if (steThread != null) { | 
 |  |  |                             // 2.让小车等待搬运待续 | 
 |  |  |                             this.letCarBeReady(wrkMast, steThread.getSlave().getId()); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     // 3.堆垛机搬运小车 | 
 |  |  |  | 
 |  |  |                     if (wrkMast.getWrkSts() == 3L) { | 
 |  |  |                         this.carMoveIn(wrkMast, wrkMast.getSteNo()); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |  | 
 |  |  | 
 |  |  |                 log.error("穿梭车命令下发失败,穿梭车号={},任务数据={}", steNo, JSON.toJSON(steCommand)); | 
 |  |  |             } else { | 
 |  |  |                 // 修改工作档状态 2.设备上走 => 3.小车待搬 | 
 |  |  |                 Date now = new Date(); | 
 |  |  |                 wrkMast.setWrkSts(3L); | 
 |  |  |                 wrkMast.setSteNo(steNo); | 
 |  |  |                 wrkMast.setCrnStrTime(now); | 
 |  |  |                 wrkMast.setModiTime(now); | 
 |  |  |                 wrkMast.setModiTime(new Date()); | 
 |  |  |                 if (wrkMastMapper.updateById(wrkMast) == 0) { | 
 |  |  |                     log.error("修改工作档状态 2.设备上走 => 3.小车待搬 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  |                     log.error("修改工作档状态 绑定穿梭车 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  | 
 |  |  |                 log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); | 
 |  |  |             } else { | 
 |  |  |  | 
 |  |  |                 // 修改工作档状态 2.设备上走 => 4.迁入小车 | 
 |  |  |                 // 修改工作档状态 3.小车待搬 => 4.迁入小车 | 
 |  |  |                 Date now = new Date(); | 
 |  |  |                 wrkMast.setWrkSts(4L); | 
 |  |  |                 wrkMast.setCrnStrTime(now); | 
 |  |  |                 wrkMast.setModiTime(now); | 
 |  |  |                 if (wrkMastMapper.updateById(wrkMast) == 0) { | 
 |  |  |                     log.error("修改工作档状态 2.设备上走 => 3.吊车入库中 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  |                     log.error("修改工作档状态 3.小车待搬 => 4.迁入小车 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  | 
 |  |  |      * 执行对工作档的完成操作 | 
 |  |  |      */ | 
 |  |  |     public void carGenerateStore() { | 
 |  |  |         Date now = new Date(); | 
 |  |  |         for (SteSlave ste : slaveProperties.getSte()) { | 
 |  |  |             // 获取堆垛机信息 | 
 |  |  |             // 获取穿梭车信息 | 
 |  |  |             SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); | 
 |  |  |             SteProtocol steProtocol = steThread.getSteProtocol(); | 
 |  |  |             if (steProtocol == null) { continue; } | 
 |  |  | 
 |  |  |                 WrkMast wrkMast = wrkMastMapper.selectPakInStep8(steProtocol.getSteNo().intValue()); | 
 |  |  |                 if (wrkMast == null) { continue; } | 
 |  |  |  | 
 |  |  |                 // 修改工作档状态 8.小车搬入库 => 9.入库完成 | 
 |  |  |                 Date now = new Date(); | 
 |  |  |                 wrkMast.setWrkSts(9L); | 
 |  |  |                 wrkMast.setCrnStrTime(now); | 
 |  |  |                 wrkMast.setModiTime(now); | 
 |  |  |                 if (wrkMastMapper.updateById(wrkMast) == 0) { | 
 |  |  |                     log.error("修改工作档状态 8.小车搬入库 => 9.入库完成 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  |                 } else { | 
 |  |  |                     steThread.setResetFlag(true); | 
 |  |  |                 switch (wrkMast.getWrkSts().intValue()) { | 
 |  |  |                     case 2: | 
 |  |  |                         // 修改工作档状态 2.设备上走 => 3.小车待搬 | 
 |  |  |                         wrkMast.setWrkSts(3L); | 
 |  |  |                         wrkMast.setCrnStrTime(now); | 
 |  |  |                         wrkMast.setModiTime(now); | 
 |  |  |                         if (wrkMastMapper.updateById(wrkMast) == 0) { | 
 |  |  |                             log.error("修改工作档状态 2.设备上走 => 3.小车待搬 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  |                         } else { | 
 |  |  |                             steThread.setResetFlag(true); | 
 |  |  |                         } | 
 |  |  |                         break; | 
 |  |  |                     case 8: | 
 |  |  |                         // 修改工作档状态 8.小车搬入库 => 9.入库完成 | 
 |  |  |                         wrkMast.setWrkSts(9L); | 
 |  |  |                         wrkMast.setCrnStrTime(now); | 
 |  |  |                         wrkMast.setModiTime(now); | 
 |  |  |                         if (wrkMastMapper.updateById(wrkMast) == 0) { | 
 |  |  |                             log.error("修改工作档状态 8.小车搬入库 => 9.入库完成 失败!!,工作号={}", wrkMast.getWrkNo()); | 
 |  |  |                         } else { | 
 |  |  |                             steThread.setResetFlag(true); | 
 |  |  |                         } | 
 |  |  |                         break; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 查找当前库位最适合的穿梭车来作业 | 
 |  |  |      */ | 
 |  |  |     public SteThread queryIdleCar(WrkMast wrkMast) { | 
 |  |  |         Integer crnNo = wrkMast.getCrnNo(); | 
 |  |  |         BasSte basSte = basSteService.findByCrnNo(crnNo); | 
 |  |  |         // 获取穿梭车信息 | 
 |  |  |         SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, basSte.getSteNo()); | 
 |  |  |         SteProtocol steProtocol = steThread.getSteProtocol(); | 
 |  |  |         if (steProtocol != null) { | 
 |  |  |             if (steProtocol.getStatusType().equals(SteStatusType.IDLE)) { | 
 |  |  |                 return steThread; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 堆垛机异常信息记录 | 
 |  |  |      */ | 
 |  |  |     @Async |