| | |
| | | @Autowired |
| | | private BasDevpService basDevpService; |
| | | @Autowired |
| | | private SnowflakeIdWorker snowflakeIdWorker; |
| | | @Autowired |
| | | private LocDetlService locDetlService; |
| | | @Autowired |
| | | private BasErrLogService basErrLogService; |
| | |
| | | */ |
| | | public synchronized void connectWrk(Integer mark) { |
| | | for (DevpSlave devp : slaveProperties.getDevp()) { |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); |
| | | StaProtocol staProtocolIn = devpThread.getStation().get(4001); |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); |
| | | SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2); |
| | | |
| | | StaProtocol staProtocolIn = devpThread2.getStation().get(4001); |
| | | if (staProtocolIn == null) { |
| | | continue; |
| | | } else { |
| | |
| | | } |
| | | int[] outStaNos = {1015, 2016}; //衔接入库点 |
| | | for (int outStaNo : outStaNos) { |
| | | StaProtocol staProtocolOut = devpThread.getStation().get(outStaNo);// 盘点出库衔接站点(可能是 1015,也可能是 2016) |
| | | StaProtocol staProtocolOut =null; |
| | | if(outStaNo == 2016){ |
| | | staProtocolOut = devpThread2.getStation().get(outStaNo); |
| | | }else{ |
| | | staProtocolOut = devpThread.getStation().get(outStaNo); |
| | | } |
| | | if (staProtocolOut == null) { |
| | | continue; |
| | | } else { |
| | |
| | | |
| | | public synchronized void autoEmptyOut() { |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); |
| | | SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2); |
| | | |
| | | List<Integer> list = new ArrayList<>(); |
| | | list.add(1108);list.add(2031); |
| | | for (Integer site:list){ |
| | |
| | | //如果站点可出禁用,则不生成空盘出库任务 |
| | | switch (site){ |
| | | case 1108:staProtocol = devpThread.getStation().get(site - 2);break; |
| | | case 2031:staProtocol = devpThread.getStation().get(site);break; |
| | | case 2031:staProtocol = devpThread2.getStation().get(site);break; |
| | | } |
| | | if (staProtocol == null) { |
| | | return; |
| | |
| | | } |
| | | String barcode = staProtocol.getBarcode(); |
| | | if(!Cools.isEmpty(barcode)) { |
| | | if("NG".endsWith(barcode) || "NoRead".equals(barcode)) { |
| | | if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "0".equals(barcode) || barcode.length()<5) { |
| | | armTaskAssignmentCallApiLogSave(staProtocol, "托盘条码为空", staProtocol.getSiteId()+"码垛位置,===》托盘条码为空", false); |
| | | continue; |
| | | } |
| | | } else { |
| | | armTaskAssignmentCallApiLogSave(staProtocol, "托盘条码为空", staProtocol.getSiteId()+"码垛位置,===》托盘条码为空", false); |
| | | continue; |
| | | } |
| | | String[] barcodeList = barcode.split(";"); |
| | | String[][] barcodeArr = new String[barcodeList.length / 2][2]; |
| | | int i = 0; |
| | | for (String[] barcodes : barcodeArr){ |
| | | barcodes[0]=barcodeList[i]; |
| | | i++; |
| | | barcodes[1]=barcodeList[i]; |
| | | i++; |
| | | } |
| | | ArmBarcodeTwoParam armBarcodeTwoParam = new ArmBarcodeTwoParam(barcodeArr); |
| | | if (!armBarcodeTwoParam.allBool()){ |
| | | continue; |
| | | } |
| | | |
| | | |
| | | List<BasArmMast> basArmMastList = basArmMastService.selectList( |
| | | new EntityWrapper<BasArmMast>() |
| | | .eq("arm_no", armSta.getArmNo()) |
| | | .lt("status", 2) |
| | | ); |
| | | if (!basArmMastList.isEmpty()){ |
| | | armTaskAssignmentCallApiLogSave(staProtocol, armSta.getArmNo()+"号机械臂存在未完成任务", staProtocol.getSiteId()+"机械臂,===》存在未完成任务", false); |
| | | continue; |
| | | } |
| | | List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>().eq("arm_no",armSta.getArmNo())); |
| | | boolean sign = true; |
| | | for (BasArm basArm : basArmList){ |
| | | if (basArm.getStaNo()==2){//NG |
| | | continue; |
| | | } |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", basArm.getStaNoSou())); |
| | | if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("D")){ |
| | | continue; |
| | | } |
| | | List<BasArmMast> basArmMastList2 = basArmMastService.selectList( |
| | | new EntityWrapper<BasArmMast>() |
| | | .eq("arm_no", basArm.getArmNo()) |
| | | .eq("sorting_line", basArm.getSortingLineSou()) |
| | | .eq("sta_no", basArm.getStaNoSou()) |
| | | .eq("status", 2) |
| | | ); |
| | | if (!basArmMastList2.isEmpty()){ |
| | | BasArmMast basArmMast2 = basArmMastList2.get(0); |
| | | if (!armBarcodeTwoParam.allBool(basArmMast2)){ |
| | | continue; |
| | | } |
| | | } |
| | | BasArmMast basArmMast = new BasArmMast(armBarcodeTwoParam); |
| | | basArmMast.setArmNo(basArm.getArmNo()); |
| | | basArmMast.setStaNo(basArm.getStaNoSou()); |
| | | basArmMast.setSortingLine(basArm.getSortingLineSou()); |
| | | basArmMastService.insert(basArmMast); |
| | | sign = false; |
| | | break; |
| | | } |
| | | if (sign){ |
| | | for (BasArm basArm : basArmList){ |
| | | if (basArm.getStaNo()==2){//NG |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", basArm.getStaNoSou())); |
| | | if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("D")){ |
| | | continue; |
| | | } |
| | | BasArmMast basArmMast = new BasArmMast(armBarcodeTwoParam); |
| | | basArmMast.setArmNo(basArm.getArmNo()); |
| | | basArmMast.setStaNo(basArm.getStaNoSou()); |
| | | basArmMast.setSortingLine(basArm.getSortingLineSou()); |
| | | basArmMastService.insert(basArmMast); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | (basAgvMast.getSourceStaNo().equals(2033))){ |
| | | |
| | | AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast); |
| | | if(basAgvMast.getFloorNo()==1 || basAgvMast.getStaNo().equals(2034)) { |
| | | if(basAgvMast.getFloorNo()==1) { |
| | | // WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo()); |
| | | // AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast); |
| | | // agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString()); |
| | |
| | | agvTaskAssignmentCallApiLogSave(basAgvMast, "AGV任务下发失败", "任务号:"+basAgvMast.getTaskNo()+"任务信息下发失败!!!", false); |
| | | } |
| | | }else{ |
| | | if (!Cools.isEmpty(basAgvMast.getSourceStaNo())){ |
| | | if (basAgvMast.getSourceStaNo().equals(4006)){ |
| | | |
| | | AgvBindCtnrAndBinTwoParam agvBindCtnrAndBinTwoParam = new AgvBindCtnrAndBinTwoParam(); |
| | | agvBindCtnrAndBinTwoParam.setReqCode(String.valueOf(snowflakeIdWorker.nextId())); |
| | | agvBindCtnrAndBinTwoParam.setPodcode(basAgvMast.getBarcode()); |
| | | agvBindCtnrAndBinTwoParam.setPositionCode(basAgvMast.getSourceStaNo().toString()); |
| | | agvBindCtnrAndBinTwoParam.setIndBind("1");; |
| | | ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器绑定解绑", |
| | | AgvConstant.AGV_URL+"/"+AgvConstant.AGV_hikRpcService,AgvConstant.getAGVADAPTOR(2), agvBindCtnrAndBinTwoParam); |
| | | if (resultBind.getCode()!=200){ |
| | | basAgvMast.setStatus(4); |
| | | basAgvMastService.updateById(basAgvMast); |
| | | } |
| | | } |
| | | } |
| | | //任务下发 |
| | | ReturnT<String> result = new PostMesDataUtils().postMesDataAgv("AGV任务下发", AgvConstant.AGV_URL, AgvConstant.AGV_ADAPTOR, agvTaskAssignmentParam); |
| | | if (result.getCode()==200){ |