From 3752991d9feb22b65204d602c03a6e4c547445ee Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期五, 14 三月 2025 10:10:09 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 133 ++++++++++++++++++++++++++++++++++++-------- 1 files changed, 109 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index 5336a5f..79cae81 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -112,6 +112,7 @@ for (DevpSlave.Sta inSta : devp.getInSta()) { // 鑾峰彇鏉$爜鎵弿浠俊鎭� BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); + BarcodeThread barcodeThreadMat = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcodeMat()); LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); @@ -124,7 +125,14 @@ if (barcodeThread == null) { continue; } + + if (barcodeThreadMat == null) { + continue; + } + String barcode = barcodeThread.getBarcode(); + + String barcodeMat = barcodeThreadMat.getBarcode(); // 灏哄妫�娴嬪紓甯� boolean back = false; String errMsg = ""; @@ -154,6 +162,7 @@ } if (!back && staProtocol.isBarcodeErr()) { errMsg = "鎵爜澶辫触"; + log.error("鐗╂枡鐮佹壂鐮佸け璐�"); back = true; } // 閫�鍥� @@ -166,6 +175,10 @@ } if (!staProtocol.isPakMk()) { continue; + } + // led 寮傚父鏄剧ず + if (ledThread != null) { + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg)); } staProtocol.setWorkNo(wrkNo); News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo); @@ -184,7 +197,11 @@ && staProtocol.isPakMk()) { if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) { News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); - + // led 寮傚父鏄剧ず + if (ledThread != null) { + String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); + } staProtocol.setWorkNo(wrkNo); News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo); wrkNo++; @@ -193,6 +210,20 @@ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); log.error("杈撻�佺嚎涓嬪彂1锛�"+wrkNo+","+inSta.getBackSta()); continue; + } + if (staProtocol.getSiteId()!= 159){ + if( Cools.isEmpty(barcodeMat) || "NG".endsWith(barcodeMat) || "NoRead".equals(barcodeMat) || "00000000".equals(barcodeMat)) { + News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcodeMat(), barcodeMat); + + staProtocol.setWorkNo(wrkNo); + News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", 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()); + continue; + } } // 鍒ゆ柇閲嶅宸ヤ綔妗� WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); @@ -262,6 +293,31 @@ News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触"); throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); + } + } else if (jsonObject.getInteger("code").equals(700)) { + SearchLocParam param2 = new SearchLocParam(); + param2.setBarcode(barcode); + param2.setBarcodeMat(barcodeMat); + param2.setSourceStaNo(inSta.getStaNo()); + param2.setLocType1(locTypeDto.getLocType1()); + String response2 = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/pakin/yk/loc/v33") + .setJson(JSON.toJSONString(param2)) + .build() + .doPost(); + JSONObject jsonObject2 = JSON.parseObject(response2); + if (jsonObject2.getInteger("code").equals(200)) { + log.info("鑷姩缁勬墭鎴愬姛锛侊紒"); + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "鑷姩缁勬墭鎴愬姛")); + } else { + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "鑷姩缁勬墭澶辫触锛侊紒锛乥arcodeMat==>"+barcodeMat)); + News.error(methodName + "==>缁勬墭澶辫触:璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/yk/loc/v33", JSON.toJSONString(param), response2); + } + try{ + Thread.sleep(500); + } catch (Exception e){ + } } else { staProtocol.setWorkNo(wrkNo); @@ -530,7 +586,7 @@ String barcode = barcodeThread.getBarcode(); if(!Cools.isEmpty(barcode)) { // log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode); - if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { + if("00000000".equals(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { staProtocol.setWorkNo(wrkNo++); staProtocol.setStaNo(pickSta.getBackSta().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); @@ -620,7 +676,7 @@ log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶆垚鍔�===>>" + jsonObject.toJSONString()); try { // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 - staProtocol.setWorkNo(wrkMast.getWrkNo()); + staProtocol.setWorkNo(dto.getWorkNo()); staProtocol.setStaNo((short)161); devpThread.setPakMk(staProtocol.getSiteId(), false); @@ -1057,8 +1113,16 @@ // continue; } // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� - if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") - && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { +// if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") +// && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { + + if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") + ) { + if (slave.getId() == 1 || slave.getId() == 2){ + if (staProtocol.isLoading() || staProtocol.getWorkNo() != 0 || !staProtocol.isOutEnable()){ + continue; + } + } // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- // 鍫嗗灈鏈烘帶鍒惰繃婊� @@ -2332,15 +2396,15 @@ * 灏忚溅鍦板浘鏇存柊 鏇存柊閿� * */ public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,String sign){ - log.info("灏忚溅鍦板浘鏇存柊锛乕鏍囪锛歿}];[BasRgvMap锛歿}];[staStart锛歿}];[staEnd锛歿}];",sign,JSON.toJSONString(basRgvMapCurrent),staStart,staEnd); +// log.info("灏忚溅鍦板浘鏇存柊锛乕鏍囪锛歿}];[BasRgvMap锛歿}];[staStart锛歿}];[staEnd锛歿}];",sign,JSON.toJSONString(basRgvMapCurrent),staStart,staEnd); // List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute()); //鏇存柊褰撳墠灏忚溅閿� try{ Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐� - log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栨渶杩滅珯鐐�;[farCurrentStaNo锛歿}]",farCurrentStaNo); +// log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栨渶杩滅珯鐐�;[farCurrentStaNo锛歿}]",farCurrentStaNo); Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤� - log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栧悎骞跺共娑夐」;[fallMerge锛歿}]",fallMerge); +// log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栧悎骞跺共娑夐」;[fallMerge锛歿}]",fallMerge); basRgvMapCurrent.setLockEndRoute(fallMerge); Integer i = basRgvMapMapper.updateById(basRgvMapCurrent); // if (i>0){ @@ -2349,14 +2413,14 @@ //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥� Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(basRgvMapCurrent.getRgvNo()); - log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彿;[rgvNoOther锛歿}]",rgvNoOther); +// log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彿;[rgvNoOther锛歿}]",rgvNoOther); BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther); - log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞�;[basRgvMapOther锛歿}]",JSON.toJSONString(basRgvMapOther)); +// log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞�;[basRgvMapOther锛歿}]",JSON.toJSONString(basRgvMapOther)); List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute()); Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃� - log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�;[lockEndRoute锛歿}]",lockEndRoute); +// log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�;[lockEndRoute锛歿}]",lockEndRoute); basRgvMapOther.setEndRoute(lockEndRoute); Integer i1 = basRgvMapMapper.updateById(basRgvMapOther); // if (i1>0){ @@ -2548,7 +2612,7 @@ /** * 鎵ц灏忚溅鎼繍浠诲姟 */ - public synchronized void rgvRunWrkMastFullSta() { + public synchronized boolean rgvRunWrkMastFullSta() { boolean wrkEnable = false; try{ List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); @@ -2585,27 +2649,47 @@ if (wrkMastSta.getType()!=0 || wrkMastSta.getWrkType()!=3 || wrkMastSta.getWrkSts()!=0){//1:婊$増 3锛氬彇鏀� continue; } + //鍒ゆ柇宸ヤ綔缁撴潫浣嶇疆鐘舵�� + boolean signDev = false; BasDevp devNo = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", wrkMastSta.getStaEnd())); + if (devNo.getDevNo()==113){ + BasDevp devNo114 = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 114)); + if (!Cools.isEmpty(devNo114)){ + if (devNo114.getOutEnable().equals("Y")){ + signDev = true; + } + } + } if (!Cools.isEmpty(devNo)){ if (devNo.getAutoing().equals("Y") && !devNo.getWrkNo().equals(0) && !devNo.getLoading().equals("N")){ continue; + } + if (!signDev && devNo.getDevNo()==113){ + if (!devNo.getAutoing().equals("Y") || !devNo.getWrkNo().equals(0) || !devNo.getLoading().equals("N")){ + wrkEnable = true; + continue; + } + if (!devNo.getOutEnable().equals("Y")){ + wrkEnable = true; + continue; + } } } boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 wrkEnable = true; if (sign){ + wrkMastSta.setWrkSts(1); + try{ + wrkMastStaMapper.updateById(wrkMastSta); + log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); + }catch (Exception e){ + log.error("鏇存柊灏忚溅浠诲姟澶辫触"); + } rgvThread.setPakMk(false); boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); if (signMap){ - Thread.sleep(300); - wrkMastSta.setWrkSts(1); - try{ - wrkMastStaMapper.updateById(wrkMastSta); - return; - }catch (Exception e){ - log.error("鏇存柊灏忚溅浠诲姟澶辫触"); - } - break; + return wrkEnable; +// break; }else { log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); Thread.sleep(500); @@ -2619,13 +2703,14 @@ } } - if (!wrkEnable){ - rgvRunWrkMastEmptyStaAvoidance(); - } +// if (!wrkEnable){ +// rgvRunWrkMastEmptyStaAvoidance(); +// } }catch (Exception e){ log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�"); log.error("3875琛�"+e); } + return wrkEnable; } /** * 鎵ц灏忚溅鎼繍浠诲姟 -- Gitblit v1.9.1