| | |
| | | |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2); |
| | | StaProtocol staProtocol = devpThread.getStation().get(siteNew); |
| | | if(staProtocol == null) { |
| | | return; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | |
| | | int count = staProtocol.getWantBucketCount(); |
| | | |
| | |
| | | log.error("自动出空桶减少罐装线要桶数异常,站点:{},减少前:{},减少数:{},剩余要桶数:{}", site, count, decrease, remaining); |
| | | return; |
| | | } |
| | | |
| | | staProtocol.setWantBucketCount(remaining); |
| | | |
| | | boolean offer = MessageQueue.offer(SlaveType.Devp, inGzxSiteList.indexOf(site) + 4, new Task(6, staProtocol)); |
| | | if (offer) { |
| | |
| | | } |
| | | |
| | | public synchronized void autoOutEmptyBucket() { |
| | | Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","autoOutEmptyBucket").eq("status",1)); |
| | | Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "autoOutEmptyBucket").eq("status", 1)); |
| | | if (config == null || Cools.isEmpty(config.getValue())) { |
| | | return; |
| | | } |
| | |
| | | String[] split = config.getValue().split("="); |
| | | |
| | | for (SearchLocParam.WantBucket wantBucket : getWantBucketFlag()) { |
| | | if (wantBucket.getBucketType() != 0 && wantBucket.getWantBucketCount() >= 2) { // 罐装线有要桶信号 |
| | | if (wantBucket.getBucketType() != 0 && wantBucket.getWantBucketCount() > 0) { // 罐装线有要桶信号+要托数不为0 |
| | | boolean flag = true; // 是否需要自动补,true不需要,false需要 |
| | | for(String item: split) { |
| | | if(String.valueOf(wantBucket.getSite()).equals(item)) { |
| | | for (String item : split) { |
| | | if (String.valueOf(wantBucket.getSite()).equals(item)) { |
| | | flag = false; |
| | | break; |
| | | } |
| | | } |
| | | if(flag) { |
| | | if (flag) { |
| | | return; |
| | | } |
| | | // <4 < 2 < 4 |
| | | int count = wrkMastMapper.selectInGzxCount(wantBucket.getSite()); |
| | | if (wantBucket.getSite() == 1071 && count <= 2 || wantBucket.getSite() == 1064 && count == 0 || wantBucket.getSite() == 1078 && count <= 2) { |
| | | log.info("{}自动补空桶,罐装线要桶型信息:{},正在执行任务数:{}",wantBucket.getSite(), wantBucket.getBucketType(),count); |
| | | log.info("{}自动补空桶,罐装线要桶型信息:{},正在执行任务数:{}", wantBucket.getSite(), wantBucket.getBucketType(), count); |
| | | if (wantBucket.getWantBucketCount() == 1) { // 最后剩一拖的时候 |
| | | if (wantBucket.getSite() == 1071 && count <= 3 || wantBucket.getSite() == 1064 && count == 1 || wantBucket.getSite() == 1078 && count <= 3) { // 可以出一个 |
| | | List<LocDetl> locDetlList = locDetlService.selectListByMatnr(wantBucket.getBucketType()); |
| | | if (locDetlList.size() == 0) { |
| | | log.warn("自动出空桶最后一个,库存无数据"); |
| | | break; |
| | | } |
| | | Map<String, LocDetl> locDetlMap = locDetlList.stream().collect(Collectors.toMap(LocDetl::getLocNo, locDetl -> locDetl)); |
| | | LocDetl locDetlSta = null; |
| | | for (LocDetl locDetl : locDetlList) { |
| | | String loc1 = locDetl.getLocNo(); // 当前库位 |
| | | String row = loc1.substring(0, 2); |
| | | String rowNew = ""; // 对应库位 |
| | | switch (row) { |
| | | case "09": |
| | | rowNew = "10"; |
| | | break; |
| | | case "10": |
| | | rowNew = "09"; |
| | | break; |
| | | case "11": |
| | | rowNew = "12"; |
| | | break; |
| | | case "12": |
| | | rowNew = "11"; |
| | | break; |
| | | default: |
| | | } |
| | | String locNoNew = rowNew + loc1.substring(2); |
| | | LocDetl locDetl1 = locDetlMap.get(locNoNew); |
| | | if (locDetl1 == null) { |
| | | locDetlSta = locDetl; |
| | | break; |
| | | } |
| | | } |
| | | // 没有单的,深浅库位都有,先取浅库位 |
| | | if (locDetlSta == null) { |
| | | Optional<LocDetl> first = locDetlList.stream().filter(locDetl -> locDetl.getLocNo().startsWith("10") || locDetl.getLocNo().startsWith("11")).findFirst(); |
| | | if (first.isPresent()) { |
| | | locDetlSta = first.get(); |
| | | } |
| | | } |
| | | if (locDetlSta != null) { |
| | | try { |
| | | StockOutParam param = new StockOutParam(); |
| | | param.setOutSite(wantBucket.getSite()); |
| | | List<StockOutParam.LocDetl> locDetls = new ArrayList<>(); |
| | | StockOutParam.LocDetl locDetl2 = new StockOutParam.LocDetl(); |
| | | locDetl2.setLocNo(locDetlSta.getLocNo()); |
| | | locDetl2.setMatnr(locDetlSta.getMatnr()); |
| | | locDetl2.setBatch(locDetlSta.getBatch()); |
| | | locDetl2.setBrand(locDetlSta.getBrand()); |
| | | locDetl2.setCount(locDetlSta.getAnfme()); |
| | | locDetl2.setBoxType1(locDetlSta.getBoxType1()); |
| | | locDetl2.setBoxType2(locDetlSta.getBoxType2()); |
| | | locDetl2.setBoxType3(locDetlSta.getBoxType3()); |
| | | locDetl2.setStandby1(locDetlSta.getStandby1()); |
| | | locDetl2.setStandby2(locDetlSta.getStandby2()); |
| | | locDetl2.setStandby3(locDetlSta.getStandby3()); |
| | | locDetls.add(locDetl2); |
| | | param.setLocDetls(locDetls); |
| | | String response = new HttpHandler.Builder() |
| | | .setUri(wmsUrl) |
| | | .setPath("/rpc/autoOutEmptyBucket") |
| | | .setJson(JSON.toJSONString(param)) |
| | | .build() |
| | | .doPost(); |
| | | log.info("最后一个自动出空桶请求wms原始返回:" + response); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | | decreaseWantBucketCount(wantBucket.getSite(), 1); |
| | | log.info("最后一个自动出空桶成功:{}", wantBucket.getSite()); |
| | | return; |
| | | } else { |
| | | News.error("最后一个自动空桶出库" + ":请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/autoOutEmptyBucket", JSON.toJSONString(param), response); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } else if (wantBucket.getSite() == 1071 && count <= 2 || wantBucket.getSite() == 1064 && count == 0 || wantBucket.getSite() == 1078 && count <= 2) { // 可以出两个 |
| | | // 判断库里有无空桶组 |
| | | List<LocDetl> locDetlList = locDetlService.selectListByMatnr(wantBucket.getBucketType()); |
| | | for (int i = 0; i < locDetlList.size(); i++) { |
| | |
| | | log.info("自动出空桶请求wms原始返回:" + response); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | | decreaseWantBucketCount(wantBucket.getSite(),2); |
| | | log.info("自动出空桶成功:{}",wantBucket.getSite()); |
| | | decreaseWantBucketCount(wantBucket.getSite(), 2); |
| | | log.info("自动出空桶成功:{}", wantBucket.getSite()); |
| | | return; |
| | | } else { |
| | | News.error("自动空桶出库" + ":请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/autoOutEmptyBucket", JSON.toJSONString(param), response); |
| | |
| | | } |
| | | } |
| | | } |
| | | log.info("没有成对的空桶组,只能一个一个出"); |
| | | if (locDetlList.size() > 0) { |
| | | try { |
| | | LocDetl locDetl = locDetlList.get(0); |
| | | StockOutParam param = new StockOutParam(); |
| | | param.setOutSite(wantBucket.getSite()); |
| | | List<StockOutParam.LocDetl> locDetls = new ArrayList<>(); |
| | | StockOutParam.LocDetl locDetl2 = new StockOutParam.LocDetl(); |
| | | locDetl2.setLocNo(locDetl.getLocNo()); |
| | | locDetl2.setMatnr(locDetl.getMatnr()); |
| | | locDetl2.setBatch(locDetl.getBatch()); |
| | | locDetl2.setBrand(locDetl.getBrand()); |
| | | locDetl2.setCount(locDetl.getAnfme()); |
| | | locDetl2.setBoxType1(locDetl.getBoxType1()); |
| | | locDetl2.setBoxType2(locDetl.getBoxType2()); |
| | | locDetl2.setBoxType3(locDetl.getBoxType3()); |
| | | locDetl2.setStandby1(locDetl.getStandby1()); |
| | | locDetl2.setStandby2(locDetl.getStandby2()); |
| | | locDetl2.setStandby3(locDetl.getStandby3()); |
| | | locDetls.add(locDetl2); |
| | | param.setLocDetls(locDetls); |
| | | String response = new HttpHandler.Builder() |
| | | .setUri(wmsUrl) |
| | | .setPath("/rpc/autoOutEmptyBucket") |
| | | .setJson(JSON.toJSONString(param)) |
| | | .build() |
| | | .doPost(); |
| | | log.info("自动出空桶请求wms原始返回:" + response); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | | decreaseWantBucketCount(wantBucket.getSite(), 1); |
| | | log.info("自动出空桶成功:{}", wantBucket.getSite()); |
| | | return; |
| | | } else { |
| | | News.error("自动空桶出库" + ":请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/autoOutEmptyBucket", JSON.toJSONString(param), response); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |