| | |
| | | // 如果最近一次是入库模式 |
| | | if (crnProtocol.getLastIo().equals("I")) { |
| | | if (basCrnp.getInEnable().equals("Y")) { |
| | | this.crnExecuteIn(basCrnp, crnThread); // 入库 |
| | | boolean result = this.crnExecuteIn(basCrnp, crnThread);// 入库 |
| | | crnProtocol.setLastIo("O"); |
| | | if (result) { |
| | | break; |
| | | } |
| | | } else if (basCrnp.getOutEnable().equals("Y")) { |
| | | this.crnExecuteOut(basCrnp, crnThread); // 出库 |
| | | boolean result = this.crnExecuteOut(basCrnp, crnThread);// 出库 |
| | | crnProtocol.setLastIo("I"); |
| | | if (result) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | // 如果最近一次是出库模式 |
| | | else if (crnProtocol.getLastIo().equals("O")) { |
| | | if (basCrnp.getOutEnable().equals("Y")) { |
| | | this.crnExecuteOut(basCrnp, crnThread); // 出库 |
| | | boolean result = this.crnExecuteOut(basCrnp, crnThread);// 出库 |
| | | crnProtocol.setLastIo("I"); |
| | | if (result) { |
| | | break; |
| | | } |
| | | } else if (basCrnp.getInEnable().equals("Y")) { |
| | | this.crnExecuteIn(basCrnp, crnThread); // 入库 |
| | | boolean result = this.crnExecuteIn(basCrnp, crnThread);// 入库 |
| | | crnProtocol.setLastIo("O"); |
| | | if (result) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | //库位移转 |
| | | this.crnExecuteLocTransfer(basCrnp, crnThread); |
| | | boolean transfer = this.crnExecuteLocTransfer(basCrnp, crnThread); |
| | | if (transfer) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private synchronized void crnExecuteIn(BasCrnp basCrnp, CrnThread crnThread) { |
| | | private synchronized boolean crnExecuteIn(BasCrnp basCrnp, CrnThread crnThread) { |
| | | CrnProtocol crnProtocol = crnThread.getStatus(); |
| | | if(crnProtocol == null){ |
| | | return; |
| | | return false; |
| | | } |
| | | |
| | | if(!basCrnp.getInEnable().equals("Y")){ |
| | | News.info("堆垛机:{} 可入信号不满足", basCrnp.getCrnNo()); |
| | | return; |
| | | return false; |
| | | } |
| | | |
| | | List<StationObjModel> inStationList = basCrnp.getInStationList$(); |
| | | if(inStationList.isEmpty()){ |
| | | News.info("堆垛机:{} 入库站点未设置", basCrnp.getCrnNo()); |
| | | return; |
| | | return false; |
| | | } |
| | | |
| | | Integer crnNo = basCrnp.getCrnNo(); |
| | |
| | | MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command)); |
| | | notifyUtils.notify(String.valueOf(SlaveType.Crn), crnNo, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_IN_TASK_RUN, null); |
| | | News.info("堆垛机命令下发成功,堆垛机号={},任务数据={}", crnNo, JSON.toJSON(command)); |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | private synchronized void crnExecuteOut(BasCrnp basCrnp, CrnThread crnThread) { |
| | | private synchronized boolean crnExecuteOut(BasCrnp basCrnp, CrnThread crnThread) { |
| | | CrnProtocol crnProtocol = crnThread.getStatus(); |
| | | if(crnProtocol == null){ |
| | | return; |
| | | return false; |
| | | } |
| | | |
| | | if(!basCrnp.getOutEnable().equals("Y")){ |
| | | News.info("堆垛机:{} 可出信号不满足", basCrnp.getCrnNo()); |
| | | return; |
| | | return false; |
| | | } |
| | | |
| | | List<StationObjModel> outStationList = basCrnp.getOutStationList$(); |
| | | if(outStationList.isEmpty()){ |
| | | News.info("堆垛机:{} 出库站点未设置", basCrnp.getCrnNo()); |
| | | return; |
| | | return false; |
| | | } |
| | | |
| | | Integer crnNo = basCrnp.getCrnNo(); |
| | |
| | | MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command)); |
| | | notifyUtils.notify(String.valueOf(SlaveType.Crn), crnNo, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_OUT_TASK_RUN, null); |
| | | News.info("堆垛机命令下发成功,堆垛机号={},任务数据={}", crnNo, JSON.toJSON(command)); |
| | | return; |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | private synchronized boolean crnExecuteInPlanner(BasCrnp basCrnp, CrnThread crnThread, WrkMast wrkMast) { |
| | |
| | | return false; |
| | | } |
| | | |
| | | private synchronized void crnExecuteLocTransfer(BasCrnp basCrnp, CrnThread crnThread) { |
| | | private synchronized boolean crnExecuteLocTransfer(BasCrnp basCrnp, CrnThread crnThread) { |
| | | CrnProtocol crnProtocol = crnThread.getStatus(); |
| | | if(crnProtocol == null){ |
| | | return; |
| | | return false; |
| | | } |
| | | |
| | | Integer crnNo = basCrnp.getCrnNo(); |
| | |
| | | MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command)); |
| | | notifyUtils.notify(String.valueOf(SlaveType.Crn), crnNo, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.CRN_TRANSFER_TASK_RUN, null); |
| | | News.info("堆垛机命令下发成功,堆垛机号={},任务数据={}", crnNo, JSON.toJSON(command)); |
| | | return; |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | //堆垛机任务执行完成 |