| | |
| | | @Autowired |
| | | private WrkDetlService wrkDetlService; |
| | | @Autowired |
| | | private WaitPakinMapper waitPakinMapper; |
| | | private WaitPakinService waitPakinService; |
| | | @Autowired |
| | | private LocMastService locMastService; |
| | | @Autowired |
| | |
| | | |
| | | @Value("${wms.url}") |
| | | private String wmsUrl; |
| | | @Autowired |
| | | private WrkMastServiceImpl wrkMastService; |
| | | |
| | | /** |
| | | * 组托 |
| | |
| | | String errorMsg = errMsg; |
| | | MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg)); |
| | | } |
| | | log.error("输送线异常组托退回={}",errMsg); |
| | | staProtocol.setWorkNo((short) 9999); |
| | | staProtocol.setStaNo((short)(inSta.getStaNo()-1)); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | |
| | | // staProtocol.setPakMk(true); |
| | | // // 入出库模式判断 |
| | | // if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){ |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()&&staProtocol.getWorkNo()>=9990){ |
| | | WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue()); |
| | | // WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode); |
| | | if(wrkMast == null){ |
| | |
| | | crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 目标库位排 |
| | | crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 目标库位列 |
| | | crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 目标库位层 |
| | | crnCommand.setCommand((short) 1); |
| | | crnCommand.setCommand((short) 0); |
| | | if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { |
| | | log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | } else { |
| | |
| | | break; |
| | | } |
| | | |
| | | //有AGV搬运入库时,禁止派发堆垛机出库任务 |
| | | String staNo = ""; |
| | | if(crnProtocol.getCrnNo()==1){ |
| | | staNo = "105"; |
| | | }else if(crnProtocol.getCrnNo()==2){ |
| | | staNo = "103"; |
| | | }else if(crnProtocol.getCrnNo()==3){ |
| | | staNo = "101"; |
| | | } |
| | | WaitPakin sku = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("sku", staNo)); |
| | | if (!Cools.isEmpty(sku)) { |
| | | return; |
| | | } |
| | | |
| | | //有拣料回库AGV搬运任务时,禁止派发堆垛机出库任务 |
| | | List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("inv_wh", 0, 1, 2, 3).eq("sta_no", staNo)); |
| | | if (!Cools.isEmpty(wrkMasts1)) { |
| | | return; |
| | | } |
| | | |
| | | // 双深库位且浅库位有货,则需先对浅库位进行库位移转 |
| | | if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) { |
| | | String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo()); |
| | |
| | | crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 目标库位排 |
| | | crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 目标库位列 |
| | | crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 目标库位层 |
| | | crnCommand.setCommand((short) 1); |
| | | crnCommand.setCommand((short) 0); |
| | | if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { |
| | | log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | } else { |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * agv完成入库任务,给输送线下发入库任务 |
| | | * agv状态 |
| | | * be_batch |
| | | * 0:无需调用AGV |
| | | * 1:等待调用AGV |
| | | * 2:AGV任务下发成功 |
| | | * 3:AGV任务完成 |
| | | * 4:给输送线下发入库指令完成 |
| | | */ |
| | | public synchronized void overAGVTaskIn() { |
| | | int[] inStaNos= {101,103,105}; |
| | | for (int inStaNo : inStaNos) { |
| | | // 获取入库站信息 |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inStaNo); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | |
| | | // 判断是否满足入库条件 |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() |
| | | && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0){// && !Cools.isEmpty(barcode)) { |
| | | //获取AGV搬运完成的入库通知档 |
| | | WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>() |
| | | .eq("sku", staProtocol.getSiteId()+"") |
| | | .eq("be_batch", 3)); |
| | | if(Cools.isEmpty(waitPakin)){ |
| | | continue; |
| | | } |
| | | short staNo = 0; |
| | | if(staProtocol.getSiteId()==101){ |
| | | staNo=102; |
| | | }else if(staProtocol.getSiteId()==103){ |
| | | staNo=104; |
| | | }else if(staProtocol.getSiteId()==105){ |
| | | staNo=106; |
| | | } |
| | | staProtocol.setWorkNo((short) 9991); |
| | | staProtocol.setStaNo(staNo); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); |
| | | if (!result) { |
| | | throw new CoolException("更新plc站点信息失败"); |
| | | }else { |
| | | waitPakin.setBeBatch(4);//4:给输送线下发入库指令完成 |
| | | waitPakin.setModiTime(new Date()); |
| | | waitPakinService.update(waitPakin,new EntityWrapper<WaitPakin>().eq("supp_code",waitPakin.getSuppCode())); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * agv出库搬离,清除站点工作号 |
| | | * wrk_sts |
| | | * 30.等待给AGV下发出库任务 |
| | | * 31.AGV出库任务下发成功 |
| | | * 32.AGV已搬离 |
| | | * 33.等待下架 |
| | | */ |
| | | public synchronized void outStaNo() { |
| | | int[] inStaNos= {101,103,105}; |
| | | for (int inStaNo : inStaNos) { |
| | | // 获取入库站信息 |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inStaNo); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | |
| | | // 判断是否满足agv搬运出库任务,搬离状态 |
| | | if (staProtocol.isAutoing() && !staProtocol.isLoading() |
| | | && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9990){// && !Cools.isEmpty(barcode)) { |
| | | //获取AGV搬离的任务 |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>() |
| | | .eq("wrk_no", staProtocol.getWorkNo()) |
| | | .eq("wrk_sts",32L)); |
| | | if(Cools.isEmpty(wrkMast)){ |
| | | continue; |
| | | } |
| | | |
| | | staProtocol.setWorkNo((short) 0); |
| | | staProtocol.setStaNo((short)0); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); |
| | | if (!result) { |
| | | throw new CoolException("更新plc站点信息失败"); |
| | | }else { |
| | | wrkMast.setWrkSts(33L); |
| | | wrkMast.setModiTime(new Date()); |
| | | wrkMastService.updateById(wrkMast); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * agv完成入库任务,给输送线下发入库任务 |
| | | * agv状态 |
| | | * be_batch |
| | | * 0:无需调用AGV |
| | | * 1:等待调用AGV |
| | | * 2:AGV任务下发成功 |
| | | * 3:AGV任务完成 |
| | | * 4:给输送线下发入库指令完成 |
| | | */ |
| | | public synchronized void overAGVTaskInReturn() { |
| | | int[] inStaNos= {101,103,105}; |
| | | for (int inStaNo : inStaNos) { |
| | | // 获取入库站信息 |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inStaNo); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | |
| | | // 判断是否满足入库条件 |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() |
| | | && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0){// && !Cools.isEmpty(barcode)) { |
| | | //获取AGV搬运完成的入库通知档 |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>() |
| | | .eq("sta_no", staProtocol.getSiteId()) |
| | | .eq("inv_wh", "1")); |
| | | if(Cools.isEmpty(wrkMast)){ |
| | | continue; |
| | | } |
| | | short staNo = 0; |
| | | if(staProtocol.getSiteId()==101){ |
| | | staNo=102; |
| | | }else if(staProtocol.getSiteId()==103){ |
| | | staNo=104; |
| | | }else if(staProtocol.getSiteId()==105){ |
| | | staNo=106; |
| | | } |
| | | staProtocol.setWorkNo((short) 9991); |
| | | staProtocol.setStaNo(staNo); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); |
| | | if (!result) { |
| | | throw new CoolException("更新plc站点信息失败"); |
| | | }else { |
| | | /** |
| | | * inv_wh |
| | | * 拣料回库输送线出发 |
| | | * 0等待agv放货完成 |
| | | * 1等待输送线入库 |
| | | * 2输送线入库任务下发成功 |
| | | */ |
| | | wrkMast.setInvWh("2");//2输送线入库任务下发成功 |
| | | wrkMast.setModiTime(new Date()); |
| | | wrkMastService.updateById(wrkMast); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |