| | |
| | | @Value("${wcs-slave.isToOrigin}") |
| | | private boolean isToOrigin; |
| | | |
| | | public Integer wrkNo = 10000; |
| | | public Integer wrkNo = 9998; |
| | | public Integer emptyWrkNo = 9999; |
| | | |
| | | /** |
| | | * 组托 |
| | |
| | | errMsg = "右超限"; |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.getWeight() > 15000) { |
| | | if (!back && staProtocol.isWeightErr()) { |
| | | errMsg = "超重或未读取"; |
| | | back = true; |
| | | } |
| | |
| | | errMsg = "扫码失败"; |
| | | back = true; |
| | | } |
| | | // if (!back && staProtocol.getWeight() == 0.0) { |
| | | // errMsg = "重量获取失败"; |
| | | // back = true; |
| | | // } |
| | | |
| | | // News.info("{}重量", staProtocol.getWeight()); |
| | | |
| | | // 退回 |
| | | if (back) { |
| | | if (back && !staProtocol.isEmptyMk()) { |
| | | log.info("errmsg: " + errMsg); |
| | | // News.warn("扫码入库失败,{}入库站因{}异常,托盘已被退回", inSta.getStaNo(), errMsg); |
| | | MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg)); |
| | | |
| | | if (!staProtocol.isLoading()) { |
| | |
| | | if (!staProtocol.isPakMk()) { |
| | | continue; |
| | | } |
| | | staProtocol.setWorkNo(wrkNo);//退回 工作号:10000 |
| | | if (!staProtocol.isInEnable()){ |
| | | continue; |
| | | } |
| | | staProtocol.setWorkNo(wrkNo);//退回 工作号:9998 |
| | | News.info("{}PLC入库回退:{},任务号:{}", inSta.getStaNo(), errMsg, wrkNo); |
| | | // wrkNo++; |
| | | staProtocol.setStaNo(inSta.getBackSta().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发1:" + wrkNo + "," + inSta.getBackSta()); |
| | | log.error("输送线下发(入库):" + wrkNo + "," + inSta.getBackSta()); |
| | | break;//超限托盘退回不生成工作档 |
| | | } |
| | | |
| | | // 判断是否满足入库条件 |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && staProtocol.isPakMk() && staProtocol.getWorkNo() == 9999) { |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && staProtocol.isPakMk() && staProtocol.getWorkNo() > 9990) { |
| | | if (Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) { |
| | | News.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcode(), barcode); |
| | | |
| | | staProtocol.setWorkNo(wrkNo); |
| | | News.info("{}barcode入库回退:{},任务号:{}", inSta.getStaNo(), errMsg, wrkNo); |
| | | // wrkNo++; |
| | | staProtocol.setStaNo(inSta.getBackSta().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发1:" + wrkNo + "," + inSta.getBackSta()); |
| | | log.error("输送线下发(入库):" + wrkNo + "," + inSta.getBackSta()); |
| | | continue; |
| | | } |
| | | // 判断重复工作档 |
| | | WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); |
| | | if (wrkMast != null) { |
| | | // int wrkNo1 = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())); |
| | | // if (wrkNo1 != 0){ |
| | | // if (ledThread != null) { |
| | | // News.error(methodName + ":扫码失败,请重试"); |
| | | // } |
| | | // |
| | | // } |
| | | News.error(barcode + "条码已存在状态为( 2.设备上走 )的数据,请查看WCS输送线界面,工作号={}", wrkMast.getWrkNo()); |
| | | MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "条码已存在状态为( 2.设备上走 )的任务,工作号=" + wrkMast.getWrkNo())); |
| | | staProtocol.setWorkNo(wrkMast.getWrkNo()); |
| | |
| | | throw new CoolException("更新plc站点信息失败"); |
| | | } |
| | | continue; |
| | | // barcodeThread.setBarcode(""); |
| | | // staProtocol.setWorkNo(wrkMast.getWrkNo()); |
| | | // staProtocol.setStaNo(RouteUtils.SouStaEnd(null,wrkMast.getSourceStaNo())); |
| | | // devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | // boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | // log.info("输送线下发(存在设备上走的工作档,直接下发!)):"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); |
| | | // |
| | | // ledThread.errorReset(); |
| | | // log.info("组托请求后LED错误清除"); |
| | | // |
| | | // if (!result) { |
| | | // News.error(methodName + ":更新plc站点信息失败"); |
| | | // log.error("输送线下发(存在设备上走的工作档,直接下发!)==>更新plc站点信息失败"); |
| | | // |
| | | //// throw new CoolException("更新plc站点信息失败"); |
| | | // continue; |
| | | // } |
| | | |
| | | } |
| | | WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode).in("io_type", 107, 103, 57)); |
| | | if (!Cools.isEmpty(checkPick)) { |
| | |
| | | LocTypeDto locTypeDto = new LocTypeDto(staProtocol); |
| | | |
| | | SearchLocParam param = new SearchLocParam(); |
| | | locTypeDto.setLocType1((short) 1); |
| | | if (staProtocol.isHigh()){ |
| | | locTypeDto.setLocType1((short) 6); |
| | | }else if (staProtocol.isLow()){ |
| | | locTypeDto.setLocType1((short) 5); |
| | | }else if (staProtocol.isMid()){ |
| | | locTypeDto.setLocType1((short) 2); |
| | | }else if (staProtocol.isLower()){ |
| | | locTypeDto.setLocType1((short) 1); |
| | | }else{ |
| | | throw new CoolException("库位类型错误"); |
| | | } |
| | | // locTypeDto.setLocType1((short) 1); |
| | | param.setBarcode(barcode); |
| | | param.setIoType(1); |
| | | param.setSourceStaNo(inSta.getStaNo()); |
| | |
| | | StartupDto dto = jsonObject.getObject("data", StartupDto.class); |
| | | barcodeThread.setBarcode(""); |
| | | staProtocol.setWorkNo(dto.getWorkNo()); |
| | | //staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo())); |
| | | // staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo())); |
| | | staProtocol.setStaNo(dto.getStaNo().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发2:" + dto.getWorkNo() + "," + dto.getStaNo()); |
| | | log.error("输送线下发(入库):" + dto.getWorkNo() + "," + dto.getStaNo()); |
| | | |
| | | ledThread.errorReset(); |
| | | log.error("组托请求后LED错误清除"); |
| | |
| | | } |
| | | } else { |
| | | if (jsonObject.getString("msg").equals("工作档已存在")) { |
| | | |
| | | //工作档已存在 再次进去 |
| | | // wrkMast = wrkMastMapper.selectPakInStepBarcode(barcode); |
| | | // if (wrkMast != null) { |
| | | // barcodeThread.setBarcode(""); |
| | | // staProtocol.setWorkNo(9999); |
| | | // //staProtocol.setWorkNo(wrkMast.getWrkNo()); |
| | | // //staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo())); |
| | | // staProtocol.setStaNo(inSta.getBackSta().shortValue()); |
| | | // devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | // boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | // log.error("输送线下发2:" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo()); |
| | | // ledThread.errorReset(); |
| | | // log.error("组托请求后LED错误清除"); |
| | | // if (!result) { |
| | | // News.error(methodName + ":更新plc站点信息失败"); |
| | | // |
| | | // throw new CoolException("更新plc站点信息失败"); |
| | | // } |
| | | // } |
| | | |
| | | continue; |
| | | } |
| | | staProtocol.setWorkNo(wrkNo); |
| | | // wrkNo++; |
| | | staProtocol.setStaNo(inSta.getBackSta().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发2:" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo()); |
| | | |
| | | // if (ledThread != null) { |
| | | log.error("输送线下发(入库):" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo()); |
| | | String errorMsg = jsonObject.getString("msg"); |
| | | if (!Cools.isEmpty(errorMsg)) { |
| | | MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); |
| | | } |
| | | // } |
| | | News.error(methodName + ":请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); |
| | | } |
| | | |
| | |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | |
| | | // // 入出库模式判断 |
| | | // 入出库模式判断 |
| | | if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { |
| | | continue; |
| | | } |
| | |
| | | // 遍历拣料入库口 |
| | | for (DevpSlave.Sta pickSta : devp.getPickSta()) { |
| | | // 获取条码扫描仪信息 |
| | | // BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); |
| | | // if (barcodeThread == null) { |
| | | // continue; |
| | | // } |
| | | // String barcode = barcodeThread.getBarcode(); |
| | | BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); |
| | | if (barcodeThread == null) { |
| | | continue; |
| | | } |
| | | String barcode = barcodeThread.getBarcode(); |
| | | // 获取拣料入库站信息 |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); |
| | | |
| | |
| | | continue; |
| | | } |
| | | // 尺寸检测异常 |
| | | // boolean back = false; |
| | | // String errMsg = ""; |
| | | // if (!back && staProtocol.isFrontErr()) { |
| | | // errMsg = "前超限"; |
| | | // back = true; |
| | | // } |
| | | // if (!back && staProtocol.isBackErr()) { |
| | | // errMsg = "后超限"; |
| | | // back = true; |
| | | // } |
| | | // if (!back && staProtocol.isHighErr()) { |
| | | // errMsg = "高超限"; |
| | | // back = true; |
| | | // } |
| | | // if (!back && staProtocol.isLeftErr()) { |
| | | // errMsg = "左超限"; |
| | | // back = true; |
| | | // } |
| | | // if (!back && staProtocol.isRightErr()) { |
| | | // errMsg = "右超限"; |
| | | // back = true; |
| | | // } |
| | | // if (!back && staProtocol.isWeightErr()) { |
| | | // errMsg = "超重"; |
| | | // back = true; |
| | | // } |
| | | // if (!back && staProtocol.isBarcodeErr()) { |
| | | // errMsg = "扫码失败"; |
| | | // back = true; |
| | | // } |
| | | // if(staProtocol.getSiteId() > 400){ |
| | | // back = false; |
| | | // } |
| | | |
| | | // 退回 |
| | | // if (back) { |
| | | // log.info("errmsg: " + errMsg); |
| | | // News.warn("扫码入库失败,{}入库站因{}异常,托盘已被退回", inSta.getStaNo(), errMsg); |
| | | // MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errMsg)); |
| | | // if (!staProtocol.isLoading()) { |
| | | // continue; |
| | | // } |
| | | // if (!staProtocol.isPakMk()) { |
| | | // continue; |
| | | // } |
| | | // staProtocol.setWorkNo(wrkNo); |
| | | // News.info("{}入库回退:{},任务号:{}", pickSta.getStaNo(), errMsg, wrkNo); |
| | | // wrkNo++; |
| | | // staProtocol.setStaNo(pickSta.getBackSta().shortValue()); |
| | | // devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | // MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | // log.error("输送线下发1:" + 9999 + "," + pickSta.getBackSta()); |
| | | // LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); |
| | | // |
| | | // // led 异常显示 |
| | | // if (ledThread != null) { |
| | | // MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errMsg)); |
| | | // } |
| | | // continue; |
| | | // } |
| | | // if(staProtocol.getSiteId() < 400){ |
| | | // if (!Cools.isEmpty(barcode)) { |
| | | // News.infoNoLog("" + mark + " - 1" + " - {}号条码扫描器检测条码信息:{}", pickSta.getBarcode(), barcode); |
| | | // if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) { |
| | | // continue; |
| | | // } |
| | | // } else { |
| | | // continue; |
| | | // } |
| | | // |
| | | // |
| | | // if (!Cools.isEmpty(barcode)) { |
| | | // News.info(""+mark+" - 1"+" - {}号条码扫描器检测条码信息:{}", pickSta.getBarcode(), barcode); |
| | | // if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) { |
| | | // continue; |
| | | // } |
| | | // } else { |
| | | // continue; |
| | | // } |
| | | // |
| | | // } |
| | | |
| | | |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | boolean back = false; |
| | | String errMsg = ""; |
| | | if (staProtocol.isFrontErr()) { |
| | | errMsg = "前超限"; |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isBackErr()) { |
| | | errMsg = "后超限"; |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isHighErr()) { |
| | | errMsg = "高超限"; |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isLeftErr()) { |
| | | errMsg = "左超限"; |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isRightErr()) { |
| | | errMsg = "右超限"; |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isWeightErr()) { |
| | | errMsg = "超重"; |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isBarcodeErr()) { |
| | | errMsg = "扫码失败"; |
| | | back = true; |
| | | } |
| | | |
| | | // 入出库模式判断 |
| | | // if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; } |
| | | |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) { |
| | | News.warnNoLog("" + mark + " - 0" + " - 开始执行"); |
| | | // WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode); |
| | | WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue()); |
| | | // if(staProtocol.getSiteId() > 400){ |
| | | // wrkMast = wrkMastMapper.selectPickStep3(staProtocol.getWorkNo()); |
| | | // } |
| | | // WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue()); |
| | | // 退回 |
| | | if (back & !staProtocol.isEmptyMk()) { |
| | | log.info("errmsg: " + errMsg); |
| | | MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errMsg)); |
| | | if (!staProtocol.isLoading()) { |
| | | continue; |
| | | } |
| | | if (!staProtocol.isPakMk()) { |
| | | continue; |
| | | } |
| | | if (!staProtocol.isInEnable()) { |
| | | continue; |
| | | } |
| | | staProtocol.setWorkNo(wrkNo); |
| | | News.info("{}盘点/拣料入库回退:{},任务号:{}", pickSta.getStaNo(), errMsg, wrkNo); |
| | | staProtocol.setStaNo(pickSta.getBackSta().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发(盘点/拣料):" + wrkNo + "," + pickSta.getBackSta()); |
| | | LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); |
| | | |
| | | // led 异常显示 |
| | | if (ledThread != null) { |
| | | MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errMsg)); |
| | | } |
| | | continue; |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && !staProtocol.isEmptyMk()) { |
| | | if (Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) { |
| | | News.info("{}号条码扫描器检测条码信息:{}", pickSta.getBarcode(), barcode); |
| | | |
| | | staProtocol.setWorkNo(wrkNo); |
| | | News.info("{}barcode盘点/拣料回退:{},任务号:{}", pickSta.getStaNo(), errMsg, wrkNo); |
| | | staProtocol.setStaNo(pickSta.getBackSta().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发(盘点/拣料):" + wrkNo + "," + pickSta.getBackSta()); |
| | | continue; |
| | | } |
| | | News.warnNoLog("" + mark + " - 0" + " - 盘点/拣料开始执行"); |
| | | WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode); |
| | | if (wrkMast == null) { |
| | | // 无拣料数据 |
| | | continue; |
| | |
| | | if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) { |
| | | continue; |
| | | } |
| | | |
| | | // 拣、盘、并 作业站转换 |
| | | // int stnNo = 0; |
| | | // if (wrkMast.getStaNo() == 109) { |
| | | // stnNo = 127; |
| | | // } else if (wrkMast.getStaNo() == 113) { |
| | | // stnNo = 128; |
| | | // } else { |
| | | // log.error("{}号任务数据异常!", wrkMast.getWrkNo()); |
| | | // } |
| | | // 获取目标站 |
| | | Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>().eq("type_no", wrkMast.getIoType() - 50).eq("stn_no", pickSta.getStaNo()) // 作业站点 = 拣料出库的目标站 |
| | | .eq("crn_no", wrkMast.getCrnNo()); // 堆垛机号 |
| | | StaDesc staDesc = staDescService.selectOne(wrapper); |
| | | if (Cools.isEmpty(staDesc)) { |
| | | // News.error("" + mark + " - 2" + " - 入库路径不存在!type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo()); |
| | | // staProtocol.setWorkNo(wrkNo++); |
| | | // staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue() - (short) 1)); |
| | | // devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | // MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | // log.error("输送线下发4:" + 9989 + "," + (pickSta.getStaNo().shortValue() - (short) 1)); |
| | | News.error("" + mark + " - 2" + " - 盘点/拣料入库路径不存在!type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo()); |
| | | staProtocol.setWorkNo(wrkNo); |
| | | staProtocol.setStaNo((pickSta.getStaNo().shortValue())); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发(盘点/拣料):" + wrkNo + "," + (pickSta.getStaNo())); |
| | | //LED |
| | | LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); |
| | | // led 异常显示 |
| | |
| | | |
| | | // 更新站点信息 且 下发plc命令 |
| | | staProtocol.setWorkNo(wrkMast.getWrkNo()); |
| | | // if(staProtocol.getSiteId() < 400){ |
| | | |
| | | staProtocol.setStaNo(Short.valueOf(wrkMast.getStaNo().toString())); |
| | | // } |
| | | |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发5:" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo()); |
| | | log.error("输送线下发(盘点/拣料):" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo()); |
| | | if (!result) { |
| | | News.error("" + mark + " - 3" + " - 发布命令至输送线队列失败!!! [plc编号:{}]", devp.getId()); |
| | | } |
| | |
| | | for (DevpSlave devp : slaveProperties.getDevp()) { |
| | | // 遍历空板入库口 |
| | | for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) { |
| | | //获取条码扫描仪信息 |
| | | BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, emptyInSta.getBarcode()); |
| | | String barcode = barcodeThread.getBarcode(); |
| | | // 获取空板入库站信息 |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo()); |
| | |
| | | if (!staProtocol.isLoading()) { |
| | | continue; |
| | | } |
| | | boolean back = false; |
| | | String errMsg = ""; |
| | | if (staProtocol.isBarcodeErr()) { |
| | | errMsg = "扫码失败"; |
| | | back = true; |
| | | } |
| | | if (back && staProtocol.isEmptyMk()) { |
| | | log.info("errmsg: " + errMsg); |
| | | MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errMsg)); |
| | | |
| | | if (!staProtocol.isLoading()) { |
| | | continue; |
| | | } |
| | | if (!staProtocol.isPakMk()) { |
| | | continue; |
| | | } |
| | | if (!staProtocol.isInEnable()){ |
| | | continue; |
| | | } |
| | | staProtocol.setWorkNo(emptyWrkNo);//退回 工作号:9999 |
| | | News.info("{}PLC空板入库回退:{},任务号:{}", emptyInSta.getStaNo(), errMsg, emptyWrkNo); |
| | | staProtocol.setStaNo(emptyInSta.getBackSta().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发(空板):" + emptyWrkNo + "," + emptyInSta.getBackSta()); |
| | | break;//超限托盘退回不生成工作档 |
| | | } |
| | | // 站点条件判断 |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isEmptyMk() && staProtocol.isPakMk() && (staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() > 9700)) { |
| | | News.warnNoLog("" + mark + " - 0" + " - 开始执行:空栈板初始化入库,叉车入库站放货"); |
| | | if (Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) { |
| | | News.info("{}号条码扫描器检测条码信息:{}", emptyInSta.getBarcode(), barcode); |
| | | |
| | | staProtocol.setWorkNo(wrkNo); |
| | | News.info("{}barcode入库回退:{},任务号:{}", emptyInSta.getStaNo(), emptyInSta, wrkNo); |
| | | staProtocol.setStaNo(emptyInSta.getBackSta().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发(空板):" + wrkNo + "," + emptyInSta.getBackSta()); |
| | | continue; |
| | | } |
| | | try { |
| | | LocTypeDto locTypeDto = new LocTypeDto(staProtocol); |
| | | SearchLocParam param = new SearchLocParam(); |
| | |
| | | param.setIoType(10); |
| | | param.setSourceStaNo(emptyInSta.getStaNo()); |
| | | param.setLocType1(locTypeDto.getLocType1()); |
| | | param.setBarcode(barcode); |
| | | String response = new HttpHandler.Builder().setUri(wmsUrl).setPath("/rpc/pakin/loc/v1").setJson(JSON.toJSONString(param)).build().doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | |
| | | //staProtocol.setStaNo(staProtocol.getSiteId().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发6:" + dto.getWorkNo() + "," + staProtocol.getSiteId()); |
| | | log.error("输送线下发(空板):" + dto.getWorkNo() + "," + staProtocol.getSiteId()); |
| | | if (!result) { |
| | | News.errorNoLog("" + mark + " - 1" + " - 更新plc站点信息失败"); |
| | | throw new CoolException("更新plc站点信息失败"); |
| | |
| | | // ledThread.errorReset(); |
| | | } |
| | | } else { |
| | | // staProtocol.setWorkNo(wrkNo++); |
| | | // staProtocol.setStaNo(emptyInSta.getBackSta().shortValue()); |
| | | // devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | // boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | // if (!result) { |
| | | // News.errorNoLog(""+mark+" - 2"+" - 更新plc站点信息失败"); |
| | | // throw new CoolException("更新plc站点信息失败"); |
| | | // } |
| | | // |
| | | if (ledThread != null) { |
| | | String errorMsg = jsonObject.getString("msg"); |
| | | if (!Cools.isEmpty(errorMsg)) { |
| | | MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errorMsg)); |
| | | } |
| | | } |
| | | // News.error(""+mark+" - 3"+" - 请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | |
| | | } |
| | | |
| | | // 只有当堆垛机空闲 并且 无任务时才继续执行 |
| | | if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { |
| | | if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO && crnProtocol.getTaskNoTwo() == 0) { |
| | | // 获取移库工作档信息 |
| | | WrkMast wrkMast = wrkMastMapper.selectLocMove(crn.getId()); |
| | | if (null != wrkMast) { |
| | |
| | | } |
| | | |
| | | LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getId()); |
| | | LocMast loc = locMastService.queryDemoLoc(crn.getId()); |
| | | if (null == sourceLoc || null == loc) { |
| | | if (sourceLoc == null){ |
| | | continue; |
| | | } |
| | | |
| | | LocMast loc = locMastService.queryDemoLoc(crn.getId(),sourceLoc.getLocType1()); |
| | | if (null == loc) { |
| | | continue; |
| | | } |
| | | String sourceLocNo = sourceLoc.getLocNo(); |
| | | String locNo = loc.getLocNo(); |
| | | |
| | |
| | | wrkMast.setLinkMis("N"); |
| | | wrkMast.setAppeTime(new Date()); |
| | | wrkMast.setModiTime(new Date()); |
| | | wrkMast.setPltType(2);//固定2号工位移库 |
| | | int res = wrkMastMapper.insert(wrkMast); |
| | | if (res == 0) { |
| | | throw new CoolException("保存工作档失败"); |
| | |
| | | crnCommand.setTaskNo((short) 9999); // 工作号 |
| | | crnCommand.setAckFinish((short) 0); // 任务完成确认位 |
| | | // crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 任务模式: 堆垛机移动 |
| | | crnCommand.setTaskMode(CrnTaskModeType.X_MOVE);//余姚锐麒回原点任务模式: 站位转移 |
| | | crnCommand.setTaskMode(CrnTaskModeType.XY_MOVE);//余姚锐麒回原点任务模式: 站位转移 |
| | | crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 源库位排 |
| | | crnCommand.setSourcePosY((short) 1); // 源库位列 |
| | | crnCommand.setSourcePosZ((short) 1); // 源库位层 |