| | |
| | | private MainProcessTaskSubmitter mainProcessTaskSubmitter; |
| | | |
| | | //入出库 ===>> 双工位堆垛机入出库作业下发 |
| | | public synchronized void dualCrnIoExecute() { |
| | | public void dualCrnIoExecute() { |
| | | List<BasDualCrnp> basDualCrnps = basDualCrnpService.selectList(new EntityWrapper<>()); |
| | | for (BasDualCrnp basDualCrnp : basDualCrnps) { |
| | | dualCrnIoExecute(basDualCrnp); |
| | |
| | | .eq("dual_crn_no", basDualCrnp.getCrnNo()) |
| | | .in("wrk_sts", WrkStsType.INBOUND_RUN.sts, WrkStsType.OUTBOUND_RUN.sts) |
| | | ); |
| | | if(wrkMasts.size() >= 2){ |
| | | if(wrkMasts == null || wrkMasts.size() >= 2){ |
| | | return; |
| | | } |
| | | |
| | | if(dualCrnProtocol.getMode() != DualCrnModeType.AUTO.id) { |
| | | if(!DualCrnModeType.AUTO.id.equals(dualCrnProtocol.getMode())) { |
| | | return; |
| | | } |
| | | |
| | | if(dualCrnProtocol.getAlarm() != 0) { |
| | | if(dualCrnProtocol.getAlarm() == null || dualCrnProtocol.getAlarm() != 0) { |
| | | return; |
| | | } |
| | | |
| | | if(dualCrnProtocol.getTaskSend() != 0 || dualCrnProtocol.getTaskSendTwo() != 0) { |
| | | if((dualCrnProtocol.getTaskSend() != null && dualCrnProtocol.getTaskSend() != 0) |
| | | || (dualCrnProtocol.getTaskSendTwo() != null && dualCrnProtocol.getTaskSendTwo() != 0)) { |
| | | return; |
| | | } |
| | | |
| | | this.crnExecute(basDualCrnp, dualCrnThread); |
| | | } |
| | | |
| | | private synchronized void crnExecute(BasDualCrnp basDualCrnp, DualCrnThread dualCrnThread) { |
| | | private void crnExecute(BasDualCrnp basDualCrnp, DualCrnThread dualCrnThread) { |
| | | DualCrnProtocol dualCrnProtocol = dualCrnThread.getStatus(); |
| | | if(dualCrnProtocol == null){ |
| | | return; |
| | | } |
| | | |
| | | if (!(dualCrnProtocol.getStatusType().equals(DualCrnStatusType.IDLE) && dualCrnProtocol.getStatusTypeTwo().equals(DualCrnStatusType.IDLE))) { |
| | | if (!(DualCrnStatusType.IDLE.equals(dualCrnProtocol.getStatusType()) |
| | | && DualCrnStatusType.IDLE.equals(dualCrnProtocol.getStatusTypeTwo()))) { |
| | | return; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | // 如果最近一次是出库模式 |
| | | if (dualCrnProtocol.getLastIo().equals("O")) { |
| | | if ("O".equals(dualCrnProtocol.getLastIo())) { |
| | | boolean executeResult1 = processLoveMove(basDualCrnp, dualCrnThread); |
| | | if (executeResult1) { |
| | | return; |
| | |
| | | } |
| | | } |
| | | // 如果最近一次是入库模式 |
| | | else if (dualCrnProtocol.getLastIo().equals("I")) { |
| | | else if ("I".equals(dualCrnProtocol.getLastIo())) { |
| | | boolean executeResult1 = processLoveMove(basDualCrnp, dualCrnThread); |
| | | if (executeResult1) { |
| | | return; |
| | |
| | | return list; |
| | | } |
| | | |
| | | private synchronized SendDualCrnCommandParam crnExecuteIn(BasDualCrnp basDualCrnp, DualCrnThread dualCrnThread, WrkMast wrkMast) { |
| | | private SendDualCrnCommandParam crnExecuteIn(BasDualCrnp basDualCrnp, DualCrnThread dualCrnThread, WrkMast wrkMast) { |
| | | DualCrnProtocol dualCrnProtocol = dualCrnThread.getStatus(); |
| | | if (dualCrnProtocol == null) { |
| | | return null; |
| | |
| | | return null; |
| | | } |
| | | |
| | | private synchronized SendDualCrnCommandParam crnExecuteOut(BasDualCrnp basDualCrnp, DualCrnThread dualCrnThread, WrkMast wrkMast, int station) { |
| | | private SendDualCrnCommandParam crnExecuteOut(BasDualCrnp basDualCrnp, DualCrnThread dualCrnThread, WrkMast wrkMast, int station) { |
| | | DualCrnProtocol dualCrnProtocol = dualCrnThread.getStatus(); |
| | | if (dualCrnProtocol == null) { |
| | | return null; |
| | |
| | | return null; |
| | | } |
| | | |
| | | private synchronized SendDualCrnCommandParam crnExecuteLocMove(BasDualCrnp basDualCrnp, DualCrnThread dualCrnThread, WrkMast wrkMast, int station) { |
| | | private SendDualCrnCommandParam crnExecuteLocMove(BasDualCrnp basDualCrnp, DualCrnThread dualCrnThread, WrkMast wrkMast, int station) { |
| | | DualCrnProtocol dualCrnProtocol = dualCrnThread.getStatus(); |
| | | if (dualCrnProtocol == null) { |
| | | return null; |
| | |
| | | } |
| | | |
| | | //双工位堆垛机任务执行完成 |
| | | public synchronized void dualCrnIoExecuteFinish() { |
| | | public void dualCrnIoExecuteFinish() { |
| | | List<BasDualCrnp> basDualCrnps = basDualCrnpService.selectList(new EntityWrapper<>()); |
| | | for (BasDualCrnp basDualCrnp : basDualCrnps) { |
| | | dualCrnIoExecuteFinish(basDualCrnp); |
| | |
| | | return; |
| | | } |
| | | |
| | | if(dualCrnProtocol.getMode() != DualCrnModeType.AUTO.id) { |
| | | if(!DualCrnModeType.AUTO.id.equals(dualCrnProtocol.getMode())) { |
| | | return; |
| | | } |
| | | |
| | | if(dualCrnProtocol.getAlarm() != 0) { |
| | | if(dualCrnProtocol.getAlarm() == null || dualCrnProtocol.getAlarm() != 0) { |
| | | return; |
| | | } |
| | | |
| | | if((dualCrnProtocol.getTaskNo() > 0 && dualCrnProtocol.getDeviceTaskNo() > 0) && dualCrnProtocol.getTaskSend() == 0 && dualCrnProtocol.getStatus().equals(DualCrnStatusType.WAITING.id)) { |
| | | if((dualCrnProtocol.getTaskNo() != null && dualCrnProtocol.getTaskNo() > 0 |
| | | && dualCrnProtocol.getDeviceTaskNo() != null && dualCrnProtocol.getDeviceTaskNo() > 0) |
| | | && (dualCrnProtocol.getTaskSend() == null || dualCrnProtocol.getTaskSend() == 0) |
| | | && DualCrnStatusType.WAITING.id.equals(dualCrnProtocol.getStatus())) { |
| | | executeFinish(basDualCrnp, dualCrnThread, dualCrnProtocol, dualCrnProtocol.getTaskNo(), 1); |
| | | return; |
| | | } |
| | | |
| | | if((dualCrnProtocol.getTaskNoTwo() > 0 && dualCrnProtocol.getDeviceTaskNoTwo() > 0) && dualCrnProtocol.getTaskSendTwo() == 0 && dualCrnProtocol.getStatusTwo().equals(DualCrnStatusType.WAITING.id)) { |
| | | if((dualCrnProtocol.getTaskNoTwo() != null && dualCrnProtocol.getTaskNoTwo() > 0 |
| | | && dualCrnProtocol.getDeviceTaskNoTwo() != null && dualCrnProtocol.getDeviceTaskNoTwo() > 0) |
| | | && (dualCrnProtocol.getTaskSendTwo() == null || dualCrnProtocol.getTaskSendTwo() == 0) |
| | | && DualCrnStatusType.WAITING.id.equals(dualCrnProtocol.getStatusTwo())) { |
| | | executeFinish(basDualCrnp, dualCrnThread, dualCrnProtocol, dualCrnProtocol.getTaskNoTwo(), 2); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | //检测浅库位状态 |
| | | public synchronized boolean checkShallowLocStatus(String locNo, Integer taskNo) { |
| | | public boolean checkShallowLocStatus(String locNo, Integer taskNo) { |
| | | String checkDeepLocOutTaskBlockReport = "Y"; |
| | | Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key); |
| | | if (systemConfigMapObj != null) { |