| | |
| | | // 查询工作档 |
| | | WrkMast wrkMast = wrkMastMapper.selectPakOutStep16(staProtocol.getSiteId()); |
| | | if (wrkMast == null) { |
| | | try{ |
| | | if (crnSlave.getId()!=2){ |
| | | // 判断吊车是否实际已完成,且电脑状态在move中,以备电脑进行更新工作档 |
| | | CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId()); |
| | | CrnProtocol crnProtocol = crnThread.getCrnProtocol(); |
| | | if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) { |
| | | // 移动中 |
| | | continue; |
| | | } |
| | | WrkMast onlyWrkNo = wrkMastMapper.selectByOnlyWrkNo(crnProtocol.getTaskNo().intValue()); |
| | | if (Cools.isEmpty(onlyWrkNo) || |
| | | (onlyWrkNo.getStaNo()!=114 && onlyWrkNo.getStaNo()!=214 && |
| | | onlyWrkNo.getSourceStaNo()!=114 && onlyWrkNo.getSourceStaNo()!=214)){ |
| | | continue; |
| | | } |
| | | // 判断堆垛机状态等待确认 |
| | | if (crnProtocol.modeType == CrnModeType.AUTO |
| | | && crnProtocol.statusType == CrnStatusType.WAITING |
| | | && crnProtocol.forkPosType == CrnForkPosType.HOME |
| | | && crnProtocol.getBay().equals(crnStn.getBay().shortValue()) && crnProtocol.getLevel().equals(crnStn.getLev().shortValue())) { |
| | | News.info("堆垛机接驳任务完成,工作号:"+crnProtocol.getTaskNo()+";执行堆垛机号:"+crnSlave.getId()+";接驳放货位:"+crnStn.getStaNo()+";接驳行走目标站:"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo())); |
| | | // 下发站点信息 |
| | | News.error("new867===>"+crnProtocol.getTaskNo()); |
| | | News.error("new867===>"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).toString()); |
| | | staProtocol.setWorkNo(crnProtocol.getTaskNo()); |
| | | staProtocol.setStaNo(Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).shortValue()); |
| | | if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { |
| | | continue; |
| | | } |
| | | // 复位堆垛机 |
| | | crnThread.setResetFlag(true); |
| | | continue; |
| | | } |
| | | } |
| | | } catch (Exception e){ |
| | | News.info("堆垛机接驳任务完成,异常:"+e.getMessage()); |
| | | } |
| | | continue; |
| | | } |
| | | // 判断工作档条件 |
| | |
| | | |
| | | // 下发站点信息 |
| | | staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); |
| | | staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); |
| | | News.error("new902===>"+crnProtocol.getCrnNo().toString()); |
| | | News.error("new902===>"+wrkMast.getStaNoConvert(crnProtocol.getCrnNo()).toString()); |
| | | staProtocol.setStaNo(wrkMast.getStaNoConvert(crnProtocol.getCrnNo()).shortValue()); |
| | | if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { |
| | | continue; |
| | | } |
| | |
| | | |
| | | // 获取工作状态为 2,3,4,5,6 的入库工作档 |
| | | WrkMast wrkMast = wrkMastMapper.selectPakInStep23456(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo()); |
| | | if(null == wrkMast) { |
| | | // News.error("{}站点查询无待入库数据 工作号={}", crnStn.getStaNo(), staProtocol.getWorkNo()); |
| | | if(null == wrkMast){ |
| | | try{ |
| | | WrkMast onlyWrkNo = wrkMastMapper.selectByOnlyWrkNo(staProtocol.getWorkNo().intValue()); |
| | | if (!Cools.isEmpty(onlyWrkNo) && onlyWrkNo.getCrnNo()==2 && onlyWrkNo.getWrkSts()==2 && crnProtocol.getCrnNo()!=2 && (onlyWrkNo.getIoType()==1 || onlyWrkNo.getIoType()==10)){ |
| | | // News.error("{}站点查询无待入库数据 工作号={}", crnStn.getStaNo(), staProtocol.getWorkNo()); |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (wrkMastMapper.selectWorking(slave.getId()) != null) { |
| | | continue; |
| | | } |
| | | if (Cools.isEmpty(staProtocol.getWorkNo()) || !staProtocol.isLoading()){ |
| | | continue; |
| | | } |
| | | // 判断堆垛机状态等待确认 |
| | | if (crnProtocol.modeType == CrnModeType.AUTO |
| | | && crnProtocol.statusType == CrnStatusType.IDLE |
| | | && crnProtocol.forkPosType == CrnForkPosType.HOME) { |
| | | News.info("堆垛机接驳任务执行,工作号:"+staProtocol.getWorkNo()+";执行堆垛机号:"+slave.getId()+";接驳取货位:"+crnStn.getStaNo()+";接驳放货位:"+staProtocol.getSiteId()); |
| | | // 堆垛机接驳任务命令下发区 -------------------------------------------------------------------------- |
| | | CrnCommand crnCommand = new CrnCommand(); |
| | | crnCommand.setCrnNo(slave.getId()); // 堆垛机编号 |
| | | crnCommand.setTaskNo(onlyWrkNo.getWrkNo().shortValue()); // 工作号 |
| | | crnCommand.setAckFinish((short) 0); // 任务完成确认位 |
| | | crnCommand.setCommand((short) 0); |
| | | crnCommand.setTaskMode(CrnTaskModeType.XY_MOVE); // 任务模式: 站位转移 |
| | | crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 源库位排 |
| | | crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 源库位列 |
| | | crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 源库位层 |
| | | crnCommand.setDestinationPosX(Utils.getRow(staProtocol.getSiteId())); // 目标库位排 |
| | | crnCommand.setDestinationPosY(Utils.getBay(staProtocol.getSiteId())); // 目标库位列 |
| | | crnCommand.setDestinationPosZ(Utils.getLev(staProtocol.getSiteId())); // 目标库位层 |
| | | if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) { |
| | | News.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", slave.getId(), JSON.toJSONString(crnCommand)); |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | | continue; |
| | | } catch (Exception e){ |
| | | News.info("堆垛机接驳任务执行,异常:"+e.getMessage()); |
| | | } |
| | | continue; |
| | | } |
| | | |
| | |
| | | SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); |
| | | SteProtocol steProtocol = steThread.getSteProtocol(); |
| | | if (steProtocol == null) { continue; } |
| | | if (steProtocol.loca==0) continue; |
| | | if (steProtocol.isIdle()) { |
| | | |
| | | // 已经存在吊车执行任务时,则过滤 |
| | |
| | | public synchronized boolean locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){ |
| | | Collections.shuffle(slave.getCrnOutStn()); |
| | | for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { |
| | | // 获取工作状态为11(生成出库ID)的出库工作档 |
| | | // 获取工作状态为11,12,13,14,15, 16(生成出库ID)的出库工作档 |
| | | WrkMast wrkMast = wrkMastMapper.selectPakOutStep111215(slave.getId(), crnStn.getStaNo()); |
| | | if (wrkMast == null) { |
| | | continue; |
| | | } |
| | | |
| | | /* |
| | | * 100、200存在进行中的盘点任务,则不执行盘点任务 |
| | | * */ |
| | | if (wrkMast.getIoType().equals(107)){ |
| | | Integer countPan = wrkMastMapper.selectWrkStsAndIoType107Count(wrkMast.getSourceStaNo(),wrkMast.getWrkNo()); |
| | | if (countPan > 0){ |
| | | News.error("MainServiceImpl locToCrnStn 1271行"+"盘点出库跳过,存在进行中可能堵塞任务数{}个",countPan); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | // 获取堆垛机出库站信息 |
| | |
| | | Integer sour = wrkMast.getSourceStaNo(); |
| | | List<WrkMast> wrkMasts = wrkMastMapper.selectWrkStsAndIoType0(sour); |
| | | if (wrkMasts.size() > 0){ |
| | | News.error("MainServiceImpl 1028行"+"存在捡料、盘点未入库货物,2号堆垛机暂时禁止出库!!!"); |
| | | News.error("MainServiceImpl 1300行"+"存在捡料、盘点未入库货物,2号堆垛机暂时禁止出库!!!"); |
| | | return false; |
| | | } |
| | | |
| | |
| | | .eq("sta_no",300) |
| | | .last(" and wrk_sts>11 and io_type in (103,107) ")); |
| | | if(!Cools.isEmpty(one)){ |
| | | News.error("MainServiceImpl 1099行"+"存在捡料、盘点未入库货物,2号堆垛机暂时禁止出库!!!"); |
| | | News.error("MainServiceImpl 1309行"+"存在捡料、盘点未入库货物,2号堆垛机暂时禁止出库!!!"); |
| | | continue; |
| | | } |
| | | } |
| | |
| | | SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); |
| | | SteProtocol steProtocol = steThread.getSteProtocol(); |
| | | if (steProtocol == null) { continue; } |
| | | if (steProtocol.loca==0) continue; |
| | | if (steProtocol.isIdle()) { |
| | | |
| | | //小车只能绑定一笔作业中任务 |
| | |
| | | SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); |
| | | SteProtocol steProtocol = steThread.getSteProtocol(); |
| | | if (steProtocol == null) { continue; } |
| | | if (steProtocol.loca==0) continue; |
| | | if (Utils.getGroupRow(locNo).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(locNo) && steProtocol.getLev() == Utils.getLev(locNo)) { |
| | | return steProtocol.getSteNo().intValue(); |
| | | } |
| | |
| | | SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); |
| | | SteProtocol steProtocol = steThread.getSteProtocol(); |
| | | if (steProtocol == null) { continue; } |
| | | if (steProtocol.loca==0) continue; |
| | | if (steProtocol.isIdle()) { |
| | | if (Utils.getGroupRow(locNo).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(locNo) && steProtocol.getLev() == Utils.getLev(locNo)) { |
| | | return steProtocol.getSteNo().intValue(); |
| | |
| | | SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); |
| | | SteProtocol steProtocol = steThread.getSteProtocol(); |
| | | if (steProtocol == null) { continue; } |
| | | // if (steProtocol.loca==0) continue; |
| | | if (steProtocol.isIdle()) { |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | SteCommand steCommand = new SteCommand(); |
| | |
| | | SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); |
| | | SteProtocol steProtocol = steThread.getSteProtocol(); |
| | | if (steProtocol == null) { continue; } |
| | | // if (steProtocol.loca==0) continue; |
| | | // 穿梭车重新定位排列层 |
| | | if (!steThread.confirmPos()) { |
| | | News.error("{}号穿梭车重新定位失败!作业工作档任务号:{}", wrkMast.getSteNo(), wrkMast.getWrkNo()); |
| | |
| | | SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); |
| | | SteProtocol steProtocol = steThread.getSteProtocol(); |
| | | if (steProtocol == null) { continue; } |
| | | // if (steProtocol.loca==0) continue; |
| | | if (steProtocol.isIdle()) { |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | SteCommand steCommand = new SteCommand(); |
| | |
| | | SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); |
| | | SteProtocol steProtocol = steThread.getSteProtocol(); |
| | | if (steProtocol == null) { continue; } |
| | | if (steProtocol.loca==0) continue; |
| | | if (steProtocol.isIdle()) { |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | SteCommand steCommand = new SteCommand(); |
| | |
| | | SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); |
| | | SteProtocol steProtocol = steThread.getSteProtocol(); |
| | | if (steProtocol == null) { continue; } |
| | | if (steProtocol.loca==0) continue; |
| | | // 穿梭车重新定位排列层 |
| | | if (!steThread.confirmPos()) { |
| | | News.error("{}号穿梭车重新定位失败!作业工作档任务号:{}", wrkMast.getSteNo(), wrkMast.getWrkNo()); |
| | |
| | | SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); |
| | | SteProtocol steProtocol = steThread.getSteProtocol(); |
| | | if (steProtocol == null) { continue; } |
| | | if (steProtocol.loca==0) continue; |
| | | if (steProtocol.getWaiting() && steProtocol.getTaskNo() == 0){ |
| | | News.info("ste[id={}] 收到等待WCS确认信号,但是任务号(地址V824)为0", steProtocol.getSteNo()); |
| | | } |
| | |
| | | */ |
| | | public synchronized void ledReset() { |
| | | for (LedSlave led : slaveProperties.getLed()) { |
| | | if (led.getId()>3){ |
| | | continue; |
| | | } |
| | | // 获取输送线plc线程 |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId()); |
| | | // 命令集合 |