| | |
| | | |
| | | // 尺寸检测异常 |
| | | boolean back = false; |
| | | String errMsg = ""; |
| | | String errMsg = "-"; |
| | | if (staProtocol.getGrossWt()>=600){ |
| | | errMsg = "超重"; |
| | | back = true; |
| | |
| | | staProtocol.setWorkNo(9999); |
| | | staProtocol.setStaNo(inSta.getBackSta()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), errMsg); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo)); |
| | | if (taskWrk != null) { |
| | |
| | | staProtocol.setWorkNo(taskWrk1.getWrkNo()); |
| | | staProtocol.setStaNo(staProtocol.getSiteId()); |
| | | devpThread.setPakMkWalk(staProtocol.getSiteId(), false); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), errMsg); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | } |
| | | } |
| | |
| | | staProtocol.setStaNo(inSta.getBackSta()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | devpThread.setPakMkWalk(staProtocol.getSiteId(), false); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), e.getMessage()); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | continue; |
| | | } |
| | |
| | | if (!Cools.isEmpty(jsonObject.getInteger("code")) && jsonObject.getInteger("code").equals(200)) { |
| | | try { |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), "上报成功等待任务"); |
| | | |
| | | } catch (Exception e) { |
| | | // 退回 |
| | | log.error("扫码检测程序异常" + inSta.getStaNo() + errMsg); |
| | |
| | | staProtocol.setWorkNo(9999); |
| | | staProtocol.setStaNo(inSta.getBackSta()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), "上报成功锁定失败"); |
| | | |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | } |
| | | |
| | | } else { |
| | | // 退回 |
| | | staProtocol.setWorkNo(9999); |
| | | staProtocol.setStaNo(inSta.getBackSta()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), jsonObject.getString("msg")); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | } |
| | | } else { |
| | | // 退回 |
| | |
| | | staProtocol.setWorkNo(9999); |
| | | staProtocol.setStaNo(inSta.getBackSta()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), "扫码入库扫码失败!!!扫码值:"+barcode); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo)); |
| | | if (taskWrk != null) { |
| | |
| | | staProtocol.setWorkNo(taskWrk1.getWrkNo()); |
| | | staProtocol.setStaNo(BarcodeUtils.getStaNo(staProtocol.getSiteId())); |
| | | devpThread.setPakMkWalk(staProtocol.getSiteId(), false); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), "-"); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | |
| | | Date now = new Date(); |
| | |
| | | crnProtocol.setLastIo("O"); |
| | | } |
| | | } |
| | | } else { |
| | | if (crnProtocol.getModeType() == CrnModeType.AUTO && crnProtocol.getStatusType() == CrnStatusType.IDLE){ |
| | | if (crnProtocol.getTaskNo() != 0){ |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "工作号不为0"); |
| | | } |
| | | if (crnProtocol.getLoaded() != 0){ |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "载货台有物"); |
| | | } |
| | | if (crnProtocol.getForkPos() != 0){ |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "货叉位置不在中位"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | log.error("入库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo()); |
| | | continue; |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 |
| | | // && staProtocol.isInEnable() |
| | | && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { |
| | | flag = true; |
| | | } |
| | |
| | | } |
| | | |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE)) { |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), "堆垛机非空闲"); |
| | | continue; |
| | | } |
| | | if (crnProtocol.getTaskNo() != 0) { |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"巷道堆垛机工作号不为0"); |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "工作号不为0"); |
| | | continue; |
| | | } |
| | | |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) { |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"巷道堆垛机存在吊车任务"); |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "堆垛机存在执行中吊车任务"); |
| | | continue; |
| | | } |
| | | |
| | |
| | | // crnCommand.setCommand((short) 1); |
| | | if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) { |
| | | log.error("堆垛机命令生成失败,堆垛机号={},任务数据={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"巷道堆垛机命令生成失败"); |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "运行命令下发失败"); |
| | | |
| | | throw new CoolException("堆垛机命令生成失败"); |
| | | } else { |
| | | try { |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), "-"); |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "-"); |
| | | |
| | | taskWrkService.updateById(taskWrk); |
| | | } catch (Exception e) { |
| | | log.error("修改工作档状态 2.设备上走 => 3.吊车入库中 失败!!,工作号={}", taskWrk.getWrkNo()); |
| | |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | break; |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE)) { |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), "堆垛机非空闲"); |
| | | continue; |
| | | } |
| | | if (crnProtocol.getTaskNo() != 0) { |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"巷道堆垛机工作号不为0"); |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "工作号不为0"); |
| | | |
| | | continue; |
| | | } |
| | | |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) { |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"巷道堆垛机存在吊车任务"); |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "堆垛机存在执行中吊车任务"); |
| | | break; |
| | | } |
| | | |
| | |
| | | command.setCommand((short) 1); |
| | | if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command))) { |
| | | log.error("堆垛机命令生成失败,堆垛机号={},巷道={},任务数据={}", slave.getId(), taskWrk.getCrnNo(), JSON.toJSON(command)); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"巷道堆垛机命令生成失败"); |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "运行命令下发失败"); |
| | | throw new CoolException("堆垛机命令生成失败"); |
| | | } else { |
| | | try { |
| | |
| | | taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id); |
| | | taskWrk.setModiTime(now); |
| | | taskWrk.setExecuteTime(now); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), "-"); |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "-"); |
| | | |
| | | if (taskWrkMapper.updateById(taskWrk) == 0) { |
| | | log.error("修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,工作号={}", taskWrk.getWrkNo()); |
| | | } |
| | |
| | | } catch (Exception e) { |
| | | log.error("wcs派发出库任务上报wms失败", JSON.toJSONString(taskWrk)); |
| | | // throw new CoolException("wcs派发入库任务上报wms失败"); |
| | | } |
| | | } |
| | | } else { |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "-"); |
| | | if (staProtocol.isAutoing()){ |
| | | if (staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")){ |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "能出:未打开"); |
| | | } |
| | | if (staProtocol.getWorkNo() == 0){ |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "工作号不为0"); |
| | | } |
| | | if (staProtocol.isOutEnable()){ |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "没有可出"); |
| | | } |
| | | } |
| | | } |
| | |
| | | return false; |
| | | } |
| | | if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1 |
| | | || (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { |
| | | || ((!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { |
| | | return false; |
| | | } |
| | | if (rgvProtocol.getLoaded()==1){ |
| | | return false; |
| | | } |
| | | RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); |
| | |
| | | return false; |
| | | } |
| | | if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1 |
| | | || (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { |
| | | || ((!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { |
| | | return false; |
| | | } |
| | | |
| | |
| | | return false; |
| | | } |
| | | if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1 |
| | | || (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { |
| | | || ((!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) || (Math.abs(rgvProtocol.getRgvPos() - rgvProtocol.getRgvPosDestination())>100)) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { |
| | | return false; |
| | | } |
| | | RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); |
| | |
| | | // 判断是否满足取货条件 |
| | | if (staProtocol.isAutoing() |
| | | // && staProtocol.isLoading() |
| | | && staProtocol.isStaOk() |
| | | // && staProtocol.isStaOk() |
| | | && staProtocol.getWorkNo() != 0) { |
| | | TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo()); |
| | | if (taskWrk != null) { |
| | |
| | | } |
| | | } |
| | | } |
| | | if (!sign) { |
| | | if (!sign && staList.size()>1) { |
| | | // 半边区域内取货任务 |
| | | for (Integer staNoNow : rangeList) { |
| | | for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) { |
| | |
| | | } |
| | | } |
| | | } |
| | | if (!sign) { |
| | | // 半边区域内放货任务 |
| | | for (Integer staNoNow : rangeListOther) { |
| | | for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) { |
| | | if (rgvStn.getStaNo().equals(staNoNow)) { |
| | | TaskWrk taskWrk = deviceDetection(rgvStn); |
| | | if (taskWrk != null) { |
| | | BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint()))); |
| | | if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) { |
| | | sign = taskGenerate(rgvSlave, rgvStn, 0); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | if (sign) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | // if (!sign) { |
| | | // // 半边区域内放货任务 |
| | | // for (Integer staNoNow : rangeListOther) { |
| | | // for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) { |
| | | // if (rgvStn.getStaNo().equals(staNoNow)) { |
| | | // TaskWrk taskWrk = deviceDetection(rgvStn); |
| | | // if (taskWrk != null) { |
| | | // BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint()))); |
| | | // if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) { |
| | | // sign = taskGenerate(rgvSlave, rgvStn, 0); |
| | | // } |
| | | // } |
| | | // break; |
| | | // } |
| | | // } |
| | | // if (sign) { |
| | | // break; |
| | | // } |
| | | // } |
| | | // } |
| | | } else { |
| | | //可用区域就近取货 |
| | | //就近排序 |