| | |
| | | if(!staProtocol.isLoading()){ |
| | | continue; |
| | | } |
| | | |
| | | if (barcodeThread == null) { |
| | | continue; |
| | | } |
| | |
| | | && !staProtocol.isEmptyMk() |
| | | && staProtocol.isPakMk() |
| | | && staProtocol.getWorkNo() == 0 |
| | | && !barcode.equals("0") |
| | | && !Cools.isEmpty(barcode) |
| | | ) { |
| | | |
| | | if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) { |
| | | // News.error(JSON.toJSONString(staProtocol)); |
| | | News.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcode(), barcode); |
| | | // led 异常显示 |
| | | if (ledThread != null) { |
| | | String errorMsg = "扫码失败,请重试"; |
| | | MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); |
| | | } |
| | | staProtocol.setWorkNo(wrkNo); |
| | | staProtocol.setErrCode(errMsg); |
| | | News.info("条码判断{}入库回退:{},任务号:{}", inSta.getStaNo(), errMsg,wrkNo); |
| | | wrkNo++; |
| | | staProtocol.setStaNo(inSta.getBackSta().shortValue()); |
| | | staProtocol.setBarcode(barcode); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发1:"+wrkNo+","+inSta.getBackSta()); |
| | | continue; |
| | | } |
| | | if(barcode.equals("0")){ |
| | | continue; |
| | | } |
| | | // if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) { |
| | | //// News.error(JSON.toJSONString(staProtocol)); |
| | | // News.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcode(), barcode); |
| | | // // led 异常显示 |
| | | // if (ledThread != null) { |
| | | // String errorMsg = "扫码失败,请重试"; |
| | | // MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); |
| | | // } |
| | | // staProtocol.setWorkNo(wrkNo); |
| | | // staProtocol.setErrCode(errMsg); |
| | | // News.info("条码判断{}入库回退:{},任务号:{}", inSta.getStaNo(), errMsg,wrkNo); |
| | | // wrkNo++; |
| | | // staProtocol.setStaNo(inSta.getBackSta().shortValue()); |
| | | // staProtocol.setBarcode(barcode); |
| | | // devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | // MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | // log.error("输送线下发1:"+wrkNo+","+inSta.getBackSta()); |
| | | // continue; |
| | | // } |
| | | // if (staProtocol.getSiteId()!= 159){ |
| | | // if( Cools.isEmpty(barcodeMat) || "NG".endsWith(barcodeMat) || "NoRead".equals(barcodeMat) || "00000000".equals(barcodeMat)) { |
| | | // News.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcodeMat(), barcodeMat); |
| | |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发2:"+dto.getWorkNo()+","+dto.getStaNo()); |
| | | if(staProtocol.getSiteId() == 1036){ //1036 |
| | | BasAgvMast basAgvMast = basAgvMastService.selectOne(new EntityWrapper<BasAgvMast>().eq("sta_no", 1037)); |
| | | AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast); |
| | | agvBindCtnrAndBinParam.setCtnrCode(barcode); |
| | | ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV容器绑定解绑", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam); |
| | | if (resultBind.getCode()!=200){ |
| | | agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV容器绑定解绑", "任务号:"+basAgvMast.getTaskNo()+"任务信息下发失败!!!", false); |
| | | } |
| | | } |
| | | ledThread.errorReset(); |
| | | log.error("组托请求后LED错误清除"); |
| | | |
| | |
| | | try{ |
| | | wrkMastSta.setWrkSts(1); |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | | log.error("更新小车任务成功"); |
| | | log.error("更新小车任务成功{}",wrkMastSta); |
| | | }catch (Exception e){ |
| | | log.error("更新小车任务失败"); |
| | | } |
| | |
| | | |
| | | continue; |
| | | } |
| | | if(wrkMastSta != null &&LEFT_POSITION.contains(wrkMastSta.getStaEnd())){ |
| | | if( LEFT_POSITION.contains(wrkMastSta.getStaEnd())){ |
| | | StaProtocol staProtocolSta = devpThread.getStation().get(wrkMastSta.getStaEnd()); |
| | | if (staProtocolSta == null) { |
| | | News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv入库站信息(staProtocol!=null继续执行):staProtocol=" + staProtocol); |
| | |
| | | try{ |
| | | wrkMastSta.setWrkSts(1); |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | | log.error("更新小车任务成功"); |
| | | log.error("更新小车任务成功{}",wrkMastSta); |
| | | }catch (Exception e){ |
| | | log.error("更新小车任务失败"); |
| | | } |
| | |
| | | /* |
| | | * arm任务完成自动组托 |
| | | * */ |
| | | public synchronized void armMissionAccomplished1() { |
| | | try{ |
| | | for (DevpSlave devp : slaveProperties.getDevp()) { |
| | | // 遍历拣料入库口 |
| | | for (DevpSlave.Sta armSta : devp.getArmStaTwo()) { |
| | | |
| | | // 获取站点信息 |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(armSta.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | String barcode = staProtocol.getBarcode(); |
| | | if(!Cools.isEmpty(barcode)) { |
| | | if("NG".endsWith(barcode) || "NoRead".equals(barcode)) { |
| | | armTaskAssignmentCallApiLogSave(staProtocol, "托盘条码为空", staProtocol.getSiteId()+"码垛位置,===》托盘条码为空", false); |
| | | continue; |
| | | } |
| | | } else { |
| | | armTaskAssignmentCallApiLogSave(staProtocol, "托盘条码为空", staProtocol.getSiteId()+"码垛位置,===》托盘条码为空", false); |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e){ |
| | | log.error("机械臂抓取任务完成组托失败"+e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /* |
| | | * arm任务完成自动组托 |
| | | * */ |
| | | public synchronized void armMissionAccomplished2() { |
| | | try{ |
| | | List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>().gt("arm_no",4)); |
| | |
| | | new EntityWrapper<BasArmMast>() |
| | | .eq("arm_no", basArm.getArmNo()) |
| | | .eq("sorting_line", basArm.getSortingLineSou()) |
| | | .eq("sta_no", basArm.getStaNoSou()) |
| | | .eq("status", 3) |
| | | ); |
| | | if (basArmMastList.isEmpty()){ |
| | |
| | | |
| | | } |
| | | } |
| | | OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getMatnr()); |
| | | |
| | | if (Cools.isEmpty(orderDetlValueResultUtil)){ |
| | | continue; |
| | | } |
| | | // OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getMatnr()); |
| | | // if (Cools.isEmpty(orderDetlValueResultUtil)){ |
| | | // continue; |
| | | // } |
| | | OrderDetlValueResultUtil orderDetlValueResultUtil = new OrderDetlValueResultUtil(); |
| | | Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", basArmMast.getMatnr())); |
| | | orderDetlValueResultUtil.setHeight(mat.getHeight()); |
| | | orderDetlValueResultUtil.setWeight(mat.getWeight()); |
| | | orderDetlValueResultUtil.setLength(mat.getManLength()); |
| | | orderDetlValueResultUtil.setWidth(mat.getWidth()); |
| | | Double anfmeSign = basArmMastService.selectBasArmMastSignValue(basArmMast.getOrderNo(), basArmMast.getMatnr(),basArmMast.getBindingTags()); |
| | | orderDetlValueResultUtil.setAnfme(anfmeSign); |
| | | //订单下发 |
| | | try{ |
| | | ArmOrderAssignmentParam armOrderAssignmentParam = new ArmOrderAssignmentParam(basArmMast,orderDetlValueResultUtil); |
| | | ArmOrderAssignmentParam armOrderAssignmentParam = new ArmOrderAssignmentParam(basArm,basArmMast,orderDetlValueResultUtil); |
| | | // 订单下发(SKU+订单) |
| | | ReturnT<String> result = new PostMesDataUtils().postMesData("机械臂抓取订单(SKU)下发:",ArmConstant.getArmUrl(basArmMast.getArmNo()), ArmConstant.ARM_ADAPTOR, armOrderAssignmentParam); |
| | | if (result.getCode()!=200){ |
| | |
| | | orderDetlValueResultUtil.setWidth(mat.getWidth()); |
| | | //订单下发 |
| | | try{ |
| | | ArmOrderAssignmentParam armOrderAssignmentParam = new ArmOrderAssignmentParam(basArmMast,orderDetlValueResultUtil); |
| | | ArmOrderAssignmentParam armOrderAssignmentParam = new ArmOrderAssignmentParam(basArm,basArmMast,orderDetlValueResultUtil); |
| | | // 订单下发(SKU+订单) |
| | | ReturnT<String> result = new PostMesDataUtils().postMesData("机械臂抓取订单(SKU)下发:",ArmConstant.getArmUrl(basArmMast.getArmNo()), ArmConstant.ARM_ADAPTOR, armOrderAssignmentParam); |
| | | if (result.getCode()!=200){ |
| | |
| | | basAgvMast.setTaskNo(wrkMast.getWrkNo()); |
| | | basAgvMast.setSourceStaNo(outStaAgv.getStaNo()); |
| | | basAgvMast.setLocNo(dto.getLocNo()); |
| | | basAgvMast.setBarcode(wrkMast.getBarcode()); |
| | | basAgvMast.setSourceLocNo(wrkMast.getSourceLocNo()); |
| | | basAgvMast.setDevpId(devp.getId()); |
| | | basAgvMast.setIoType(2); |
| | |
| | | basAgvMast.setSourceStaNo(outStaAgv.getStaNo()); |
| | | basAgvMast.setLocNo(dto.getLocNo()); |
| | | basAgvMast.setDevpId(devp.getId()); |
| | | basAgvMast.setBarcode(barcode); |
| | | basAgvMast.setIoType(2); |
| | | basAgvMast.setFloorNo(2); |
| | | |
| | |
| | | // 判断重复工作档 |
| | | List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("sta_no", inStaAgv.getStaNo())); |
| | | if (!basAgvMastList.isEmpty()) { |
| | | News.info("{}号站点存在任务执行中,等待任务执行完毕!!!", inStaAgv.getStaNo()); |
| | | // News.info("{}号站点存在任务执行中,等待任务执行完毕!!!", inStaAgv.getStaNo()); |
| | | continue; |
| | | } |
| | | // 任务生成区 -------------------------------------------------------------------------- |
| | |
| | | basAgvMast.setStaNo(inStaAgv.getStaNo()); |
| | | basAgvMast.setDevpId(devp.getId()); |
| | | basAgvMast.setFloorNo(floorNo); |
| | | basAgvMast.setBarcode(locMast.getBarcode()); |
| | | basAgvMast.setIoType(0);//AGV库位==》输送线站点 0 |
| | | basAgvMastService.insert(basAgvMast); |
| | | break; |
| | |
| | | } |
| | | |
| | | if (staProtocol.isAutoing()){ |
| | | AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast); |
| | | agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString()); |
| | | ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV容器绑定", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam); |
| | | if (resultBind.getCode()!=200){ |
| | | agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV容器绑定", "任务号:"+basAgvMast.getTaskNo()+"任务信息下发失败!!!", false); |
| | | } |
| | | // |
| | | |
| | | AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast); |
| | | //任务下发 |
| | |
| | | |
| | | AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast); |
| | | if(basAgvMast.getFloorNo()==1 || basAgvMast.getStaNo().equals(2034)) { |
| | | WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo()); |
| | | AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast); |
| | | agvBindCtnrAndBinParam.setCtnrCode(wrkMast.getBarcode()); |
| | | agvBindCtnrAndBinParam.setCtnrTyp("1"); |
| | | ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV容器绑定解绑", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam); |
| | | if (resultBind.getCode()==200){ |
| | | //任务下发 |
| | | ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV任务下发", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam); |
| | | if (result.getCode()==200){ |
| | | basAgvMast.setStatus(1); |
| | | basAgvMastService.updateById(basAgvMast); |
| | | } else { |
| | | agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV任务下发失败", "任务号:"+basAgvMast.getTaskNo()+"任务信息下发失败!!!", false); |
| | | } |
| | | // WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo()); |
| | | // AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast); |
| | | // agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString()); |
| | | // agvBindCtnrAndBinParam.setCtnrTyp("1"); |
| | | // ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV容器绑定解绑", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam); |
| | | // if (resultBind.getCode()==200){ |
| | | // //任务下发 |
| | | // ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV任务下发", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam); |
| | | // if (result.getCode()==200){ |
| | | // basAgvMast.setStatus(1); |
| | | // basAgvMastService.updateById(basAgvMast); |
| | | // } else { |
| | | // agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV任务下发失败", "任务号:"+basAgvMast.getTaskNo()+"任务信息下发失败!!!", false); |
| | | // } |
| | | // } else { |
| | | // agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV容器绑定解绑", "任务号:"+basAgvMast.getTaskNo()+"任务信息下发失败!!!", false); |
| | | // } |
| | | //任务下发 |
| | | ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV任务下发", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam); |
| | | if (result.getCode()==200){ |
| | | basAgvMast.setStatus(1); |
| | | basAgvMastService.updateById(basAgvMast); |
| | | } else { |
| | | agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV容器绑定解绑", "任务号:"+basAgvMast.getTaskNo()+"任务信息下发失败!!!", false); |
| | | agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV任务下发失败", "任务号:"+basAgvMast.getTaskNo()+"任务信息下发失败!!!", false); |
| | | } |
| | | }else{ |
| | | //任务下发 |