| | |
| | | if (crnProtocol.getLastIo().equals("I")) { |
| | | if (basCrnp.getInEnable().equals("Y")) { |
| | | log.info("进入入库程序,crn:"+crn.getId()); |
| | | this.crnStnToLoc(crn, crnProtocol); // 入库 |
| | | if (this.crnStnToLoc(crn, crnProtocol)){ |
| | | crnProtocol.setLastIo("O"); |
| | | |
| | | } |
| | | } else if (basCrnp.getOutEnable().equals("Y")) { |
| | | log.info("进入出库程序,crn:"+crn.getId()); |
| | | this.locToCrnStn(crn, crnProtocol); // 出库 |
| | | if (this.locToCrnStn(crn, crnProtocol)){ |
| | | crnProtocol.setLastIo("I"); |
| | | } |
| | | |
| | | } |
| | | } |
| | | // 如果最近一次是出库模式 |
| | | else if (crnProtocol.getLastIo().equals("O")) { |
| | | if (basCrnp.getOutEnable().equals("Y")) { |
| | | log.info("进入出库程序,crn:"+crn.getId()); |
| | | this.locToCrnStn(crn, crnProtocol); // 出库 |
| | | if (this.locToCrnStn(crn, crnProtocol)){ |
| | | crnProtocol.setLastIo("I"); |
| | | } |
| | | } else if (basCrnp.getInEnable().equals("Y")) { |
| | | log.info("进入入库程序,crn:"+crn.getId()); |
| | | this.crnStnToLoc(crn, crnProtocol); // 入库 |
| | | if (this.crnStnToLoc(crn, crnProtocol)){ |
| | | crnProtocol.setLastIo("O"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | /** |
| | | * 入库 ===>> 堆垛机站到库位 |
| | | */ |
| | | public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) { |
| | | public synchronized boolean crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) { |
| | | for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) { |
| | | boolean flag = false; |
| | | // 获取堆垛机入库站信息 |
| | |
| | | |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | continue; |
| | | return false; |
| | | } |
| | | |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (wrkMastMapper.selectWorking(slave.getId()) != null) { |
| | | continue; |
| | | return false; |
| | | } |
| | | |
| | | // 双深库位且浅库位有货,则需先对浅库位进行库位移转 |
| | |
| | | } |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * 出库 ===>> 库位到堆垛机站 |
| | | * 2022-06-09 TQS修改,查询工作档LIST,遍历下发,防止第一个任务堵塞出库 |
| | | */ |
| | | public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) { |
| | | public synchronized boolean locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) { |
| | | for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { |
| | | // 获取工作状态为11(生成出库ID)的出库工作档 |
| | | // WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo()); |
| | |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | // continue; |
| | | break; |
| | | return false; |
| | | } |
| | | |
| | | // 双深库位且浅库位有货,则需先对浅库位进行库位移转 |
| | |
| | | |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (wrkMastMapper.selectWorking(slave.getId()) != null) { |
| | | break; |
| | | return false; |
| | | // return; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | // /** |