| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | crnProtocol.setLastIo("O"); |
| | | } else if (basCrnp.getOutEnable().equals("Y")) { |
| | | //mark - 2 - .... |
| | | this.locToCrnStn(crn, crnProtocol,mark); // 出库 |
| | | AtomicInteger atomicInteger = new AtomicInteger(mark); |
| | | this.locToCrnStn(crn, crnProtocol,atomicInteger); // 出库 |
| | | crnProtocol.setLastIo("I"); |
| | | if(atomicInteger.get() == 99) { // 下一次还是出库 |
| | | crnProtocol.setLastIo("O"); |
| | | } |
| | | } |
| | | } |
| | | // 如果最近一次是出库模式 |
| | | else if (crnProtocol.getLastIo().equals("O")) { |
| | | if (basCrnp.getOutEnable().equals("Y")) { |
| | | this.locToCrnStn(crn, crnProtocol,mark); // 出库 |
| | | AtomicInteger atomicInteger = new AtomicInteger(mark); |
| | | this.locToCrnStn(crn, crnProtocol,atomicInteger); // 出库 |
| | | crnProtocol.setLastIo("I"); |
| | | if(atomicInteger.get() == 99) { // 下一次还是出库 |
| | | crnProtocol.setLastIo("O"); |
| | | } |
| | | } else if (basCrnp.getInEnable().equals("Y")) { |
| | | this.crnStnToLoc(crn, crnProtocol,mark); // 入库 |
| | | crnProtocol.setLastIo("O"); |
| | |
| | | wrkMast.setIoPri(14D); |
| | | wrkMastMapper.updateById(wrkMast); |
| | | // 生成工作档,将浅库位移转到新的库位中 |
| | | moveLocForDeepLoc(slave, shallowLoc,mark); |
| | | moveLocForDeepLoc(slave, shallowLoc,new AtomicInteger(mark)); |
| | | // 生成工作档、改变浅库位的源库/目标库 库位状态、下发堆垛机命令(立马执行) |
| | | // moveLocForDeepLocPakin(slave, shallowLoc, wrkMast); |
| | | } |
| | |
| | | * 出库 ===>> 库位到堆垛机站 |
| | | * 2022-06-09 TQS修改,查询工作档LIST,遍历下发,防止第一个任务堵塞出库 |
| | | */ |
| | | public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) { |
| | | public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,AtomicInteger mark) { |
| | | News.warnNoLog(""+mark+" - 2"+" - 0"+" - 堆垛机入出库作业下发:执行出库"); |
| | | boolean crnAvailableOut = false; |
| | | Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","removeCrnAvailableOut")); |
| | | if (config != null && config.getStatus() == 1) { |
| | | crnAvailableOut = true; |
| | | if (config != null && config.getStatus() == 1 && !Cools.isEmpty(config.getValue())) { |
| | | // 需要自动补空桶的站点 |
| | | String[] split = config.getValue().split("="); |
| | | for (String item : split) { |
| | | if (slave.getId() == Integer.parseInt(item)) { |
| | | crnAvailableOut = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | // 限制去捆绑机器任务数 |
| | | int kbWrks = wrkMastMapper.selectCountByKb(); |
| | |
| | | wrkMast1.setSourceStaNo(1056); |
| | | wrkMastService.updateById(wrkMast1); |
| | | } |
| | | mark.set(99); |
| | | break; |
| | | } |
| | | } |
| | |
| | | * 因双深库位阻塞,对浅库位进行移转(立即执行版) |
| | | * tip:同步 |
| | | */ |
| | | private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,Integer mark) { |
| | | private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,AtomicInteger mark) { |
| | | |
| | | // 只有208L能放11层 |
| | | String model = null; |
| | |
| | | |
| | | } |
| | | } else if (wantBucket.getSite() == 1071 && count <= 2 || wantBucket.getSite() == 1064 && count == 0 || wantBucket.getSite() == 1078 && count <= 2) { // 可以出两个 |
| | | // 自动出空桶判断4号堆垛机有无出库任务,有则不生成,让入库口直供罐装线 |
| | | Integer count1 = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", 4).eq("wrk_sts", 11)); |
| | | // 自动出空桶,均匀出到每台罐装线 |
| | | Integer count1 = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", 4).eq("sta_no",wantBucket.getSite()).in("wrk_sts", 11,12)); |
| | | if(count1 > 0) { |
| | | return; |
| | | } |