|  |  | 
 |  |  | import com.zy.core.model.command.CrnCommand; | 
 |  |  | import com.zy.core.model.protocol.CrnProtocol; | 
 |  |  | import com.zy.core.model.protocol.StaProtocol; | 
 |  |  | import com.zy.core.properties.SlaveProductProperties; | 
 |  |  | import com.zy.core.properties.SlaveProperties; | 
 |  |  | import com.zy.core.thread.BarcodeThread; | 
 |  |  | import com.zy.core.thread.SiemensDevpThread; | 
 |  |  | import com.zy.system.entity.Config; | 
 |  |  | 
 |  |  |     public static final long COMMAND_TIMEOUT = 5 * 1000; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private SlaveProductProperties slaveProductProperties; | 
 |  |  |     private SlaveProperties slaveProperties; | 
 |  |  |     @Autowired | 
 |  |  |     private WrkMastMapper wrkMastMapper; | 
 |  |  |     @Autowired | 
 |  |  | 
 |  |  |     public void generateStoreWrkFile1() throws IOException, InterruptedException { | 
 |  |  |         try { | 
 |  |  |             // 根据输送线plc遍历 | 
 |  |  |             for (DevpSlave devp : slaveProductProperties.getDevp()) { | 
 |  |  |             for (DevpSlave devp : slaveProperties.getDevp()) { | 
 |  |  |                 // 遍历入库口 | 
 |  |  |                 for (DevpSlave.Sta inSta : devp.getInSta()) { | 
 |  |  |                     StorageEscalationParam storageEscalationParam = new StorageEscalationParam(); | 
 |  |  | 
 |  |  |     public void generateStoreWrkFile() throws IOException, InterruptedException { | 
 |  |  |         try { | 
 |  |  |             // 根据输送线plc遍历 | 
 |  |  |             for (DevpSlave devp : slaveProductProperties.getDevp()) { | 
 |  |  |             for (DevpSlave devp : slaveProperties.getDevp()) { | 
 |  |  |                 // 遍历入库口 | 
 |  |  |                 for (DevpSlave.Sta inSta : devp.getInSta()) { | 
 |  |  |                     // 获取入库站信息 | 
 |  |  | 
 |  |  |      * 堆垛机站出库到出库站 | 
 |  |  |      */ | 
 |  |  |     public void crnStnToOutStn() { | 
 |  |  |         for (CrnSlave crnSlave : slaveProductProperties.getCrn()) { | 
 |  |  |         for (CrnSlave crnSlave : slaveProperties.getCrn()) { | 
 |  |  |             // 遍历堆垛机出库站 | 
 |  |  |             for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) { | 
 |  |  |                 List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", crnSlave.getId()).eq("crn_stn", crnStn.getStaNo())); | 
 |  |  | 
 |  |  |      * 入出库  ===>>  堆垛机入出库作业下发 | 
 |  |  |      */ | 
 |  |  |     public synchronized void crnIoExecute() throws IOException { | 
 |  |  |         for (CrnSlave crn : slaveProductProperties.getCrn()) { | 
 |  |  |         for (CrnSlave crn : slaveProperties.getCrn()) { | 
 |  |  |             // 获取堆垛机信息 | 
 |  |  |             CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); | 
 |  |  |             CrnProtocol crnProtocol = crnThread.getCrnProtocol(); | 
 |  |  | 
 |  |  |             for (TaskWrk taskWrk : taskWrks) { | 
 |  |  |  | 
 |  |  |                 // 双深库位且浅库位有货,则需先对浅库位进行库位移转 | 
 |  |  | //                if (Utils.isDeepLoc(slaveProductProperties, taskWrk.getStartPoint())) { | 
 |  |  | //                    String shallowLocNo = Utils.getShallowLoc(slaveProductProperties, taskWrk.getStartPoint()); | 
 |  |  | //                if (Utils.isDeepLoc(slaveProperties, taskWrk.getStartPoint())) { | 
 |  |  | //                    String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint()); | 
 |  |  | //                    TaskWrk hallowLocNoTask = taskWrkMapper.selectByStartPoint(shallowLocNo); | 
 |  |  | //                    if (!Cools.isEmpty(hallowLocNoTask)){ | 
 |  |  | //                        continue; | 
 |  |  | 
 |  |  |      * 执行对工作档的完成操作 | 
 |  |  |      */ | 
 |  |  | //    public void storeFinished() { | 
 |  |  | //        for (CrnSlave crn : slaveProductProperties.getCrn()) { | 
 |  |  | //        for (CrnSlave crn : slaveProperties.getCrn()) { | 
 |  |  | //            // 获取堆垛机信息 | 
 |  |  | //            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); | 
 |  |  | //            CrnProtocol crnProtocol = crnThread.getCrnProtocol(); | 
 |  |  | 
 |  |  |      * 执行对工作档的完成操作 | 
 |  |  |      */ | 
 |  |  |     public void storeFinished() throws InterruptedException { | 
 |  |  |         for (CrnSlave crn : slaveProductProperties.getCrn()) { | 
 |  |  |         for (CrnSlave crn : slaveProperties.getCrn()) { | 
 |  |  |             // 获取堆垛机信息 | 
 |  |  |             CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); | 
 |  |  |             CrnProtocol crnProtocol = crnThread.getCrnProtocol(); | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     public void recCrnErr() { | 
 |  |  |         Date now = new Date(); | 
 |  |  |         for (CrnSlave crn : slaveProductProperties.getCrn()) { | 
 |  |  |         for (CrnSlave crn : slaveProperties.getCrn()) { | 
 |  |  |             // 获取堆垛机信息 | 
 |  |  |             CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); | 
 |  |  |             CrnProtocol crnProtocol = crnThread.getCrnProtocol(); | 
 |  |  | 
 |  |  |         return taskWrk; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 入出库模式切换函数 | 
 |  |  |      */ | 
 |  |  |     public synchronized void ioConvert() { | 
 |  |  |         try { | 
 |  |  |             // 根据输送线plc遍历 | 
 |  |  |             for (DevpSlave devp : slaveProperties.getDevp()) { | 
 |  |  |                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); | 
 |  |  |  | 
 |  |  |                 for (DevpSlave.Sta inSta : devp.getInSta()) { | 
 |  |  |                     if (inSta.getStaNo() == 2) { | 
 |  |  |                         continue; | 
 |  |  |                     } | 
 |  |  |                     WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getStaNo()); | 
 |  |  |                     switch (inSta.getStaNo()) { | 
 |  |  |                         case 203://1F | 
 |  |  |                             if (pakout != null) { | 
 |  |  |                                 if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) { | 
 |  |  |                                     // 出库切换中 | 
 |  |  |                                     devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING; | 
 |  |  |                                     WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); | 
 |  |  |                                     if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() | 
 |  |  |                                             && !devpThread.getStation().get(inSta.getStaNo() + 1).isLoading() | 
 |  |  |                                             && devpThread.getStation().get(inSta.getStaNo() + 1).getWorkNo() == 0) { | 
 |  |  |                                         // 出库模式 | 
 |  |  |                                         devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE; | 
 |  |  |                                     } | 
 |  |  |                                 } | 
 |  |  |                             } else { | 
 |  |  |                                 // 入库模式 | 
 |  |  |                                 devpThread.ioModeOf2F = IoModeType.PAKIN_MODE; | 
 |  |  |                             } | 
 |  |  |                             break; | 
 |  |  |                         case 401://1F | 
 |  |  |                             if (pakout != null) { | 
 |  |  |                                 if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) { | 
 |  |  |                                     // 出库切换中 | 
 |  |  |                                     devpThread.ioModeOf4F = IoModeType.PAKOUT_BOOTING; | 
 |  |  |                                     WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); | 
 |  |  |                                     if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() | 
 |  |  |                                             && !devpThread.getStation().get(inSta.getStaNo() + 1).isLoading() | 
 |  |  |                                             && devpThread.getStation().get(inSta.getStaNo() + 1).getWorkNo() == 0) { | 
 |  |  |                                         // 出库模式 | 
 |  |  |                                         devpThread.ioModeOf4F = IoModeType.PAKOUT_MODE; | 
 |  |  |                                     } | 
 |  |  |                                 } | 
 |  |  |                             } else { | 
 |  |  |                                 // 入库模式 | 
 |  |  |                                 devpThread.ioModeOf4F = IoModeType.PAKIN_MODE; | 
 |  |  |                             } | 
 |  |  |                             break; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |