From ad54981b1831bd6e31f45901bb2b08b8d7a3ff68 Mon Sep 17 00:00:00 2001 From: LSH Date: 星期三, 31 五月 2023 15:36:11 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 421 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 375 insertions(+), 46 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 2268ad4..3735667 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -35,6 +35,7 @@ import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.BarcodeThread; import com.zy.core.thread.LedThread; +import com.zy.core.thread.SiemensCrnThread; import com.zy.core.thread.SiemensDevpThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -109,6 +110,7 @@ continue; } String barcode = barcodeThread.getBarcode(); +// barcode="ILY0127 0001"; if(!Cools.isEmpty(barcode)) { log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); if("NG".endsWith(barcode) || "NoRead".equals(barcode)) { @@ -129,7 +131,7 @@ // // 鍏ュ嚭搴撴ā寮忓垽鏂� // if ( inSta.getStaNo()==180 && devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; } - + staProtocol.setPakMk(true); // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() @@ -163,14 +165,20 @@ // } try { - + String pack =null;//pack鐮� + if(barcode.length()>6){ + pack=barcode.substring(6); + } + //String pack="MJY0136 0400"; + barcode=barcode.substring(0,6);//鎵樼洏鐮� LocTypeDto locTypeDto = new LocTypeDto(staProtocol); - + locTypeDto.setLocType1((short)1); SearchLocParam param = new SearchLocParam(); param.setBarcode(barcode); param.setIoType(1); param.setSourceStaNo(inSta.getStaNo()); param.setLocType1(locTypeDto.getLocType1()); + param.setPackNo(pack); String response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath("/rpc/pakin/loc/v1") @@ -180,7 +188,6 @@ JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { StartupDto dto = jsonObject.getObject("data", StartupDto.class); - barcodeThread.setBarcode(""); staProtocol.setWorkNo(dto.getWorkNo().shortValue()); staProtocol.setStaNo(dto.getStaNo().shortValue()); @@ -189,7 +196,21 @@ if (!result) { throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); } - } else { + } else if (jsonObject.getInteger("code").equals(700) && (!barcodeThread.getBarcode().equals("NG"))){ + StartupDto dto = jsonObject.getObject("data", StartupDto.class); + barcodeThread.setBarcode(""); + staProtocol.setWorkNo((short)9998); + staProtocol.setStaNo((short)101); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + log.error("url锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl+"/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + }else { + StartupDto dto = jsonObject.getObject("data", StartupDto.class); + barcodeThread.setBarcode(""); + staProtocol.setWorkNo((short)9998); + staProtocol.setStaNo((short)101); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl+"/rpc/pakin/loc/v1", JSON.toJSONString(param), response); } @@ -470,7 +491,7 @@ } else { staProtocol = staProtocol.clone(); } - if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) { + if (staProtocol.isAutoing() && (staProtocol.isLoading()||staProtocol.getSiteId()==109) && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) { // 鏌ヨ宸ヤ綔妗� WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId()); if (wrkMast == null) { @@ -533,14 +554,16 @@ continue; } - //鍫嗗灈鏈哄洖鍘熺偣浠诲姟涓� - if(crnThread.isBackHpFlag()){ - continue; - } +// //鍫嗗灈鏈哄洖鍘熺偣浠诲姟涓� +// if(crnThread.isBackHpFlag()){ +// continue; +// } // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) { + // 搴撲綅绉昏浆 + this.stnToStn(crn, crnProtocol); // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡 if (crnProtocol.getLastIo().equals("I")) { if (basCrnp.getInEnable().equals("Y")) { @@ -729,7 +752,8 @@ crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 鐩爣搴撲綅鎺� crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� + crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞俓 + crnCommand.setBarcode(wrkMast.getBarcode());//鎵樼洏鐮� if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { @@ -872,6 +896,7 @@ crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺� crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒� crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞� + crnCommand.setBarcode(wrkMast.getBarcode()); if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { @@ -1060,6 +1085,7 @@ crnCommand.setDestinationPosX(sta.getRow1().shortValue()); // 鐩爣搴撲綅鎺� crnCommand.setDestinationPosY(sta.getBay1().shortValue()); // 鐩爣搴撲綅鍒� crnCommand.setDestinationPosZ(sta.getLev1().shortValue()); // 鐩爣搴撲綅灞� + crnCommand.setBarcode(wrkMast.getBarcode());//鎵樼洏鐮� if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { @@ -1412,7 +1438,7 @@ ledCommand.setStaNo(wrkMast.getStaNo()); if (wrkMast.getIoType() != 110) { List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo()); - wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatNo(), wrkDetl.getMatName(), wrkDetl.getQty()))); + wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme()))); } commands.add(ledCommand); } @@ -1557,7 +1583,7 @@ WrkDetl wrkDetl = new WrkDetl(); wrkDetl.setWrkNo(workNo); wrkDetl.setIoTime(now); - wrkDetl.setQty(locDetl.getQty()); + wrkDetl.setAnfme(locDetl.getAnfme()); VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗 wrkDetl.setAppeTime(now); wrkDetl.setModiTime(now); @@ -1674,7 +1700,7 @@ WrkDetl wrkDetl = new WrkDetl(); wrkDetl.setWrkNo(workNo); wrkDetl.setIoTime(new Date()); - wrkDetl.setQty(locDetl.getQty()); + wrkDetl.setAnfme(locDetl.getAnfme()); VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗 wrkDetl.setAppeTime(new Date()); wrkDetl.setModiTime(new Date()); @@ -1905,53 +1931,356 @@ } /** - * 鏍规嵁PLC鎸夐挳娴嬭瘯淇″彿锛屽彂閫佸惎鍔ㄧ敵璇峰埌娴嬭瘯绯荤粺 + * 绔欏埌绔� ===>> 鍫嗗灈鏈�109绔欏埌108绔� + * 109闃茬垎娌欑绔欑偣 鍑哄簱 鍒� 108绔欑偣 */ - public void startTest() { + public void stnToStn(CrnSlave slave, CrnProtocol crnProtocol){ + for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) { + if(crnStn.getStaNo()!=109){ continue; } + + boolean flag = false; + // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅 + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + // 鏌ヨ绔欑偣璇︾粏淇℃伅 + BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); + if (staDetl == null) { + log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); + continue; + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() + && staDetl.getCanining()!=null && staDetl.getCanining().equals("Y")) { + flag = true; + } + + StaProtocol staProtocol1 = devpThread.getStation().get(108); + if (staProtocol1 == null) { + continue; + } else { + staProtocol1 = staProtocol1.clone(); + } + if (!staProtocol1.isAutoing() || staProtocol1.isLoading() || staProtocol1.getWorkNo() != 0 || !staProtocol1.isOutEnable()) { + flag = false; + } + + if (!flag) { + continue; + } + + // 鍫嗗灈鏈烘帶鍒惰繃婊� + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { + continue; + } + + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (wrkMastMapper.selectWorking(slave.getId()) != null) { + continue; + } + + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo((short)9999); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX((short)2); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY((short)19); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ((short)1); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, 1, new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", 1, JSON.toJSON(crnCommand)); + } else { + } + } + } + + /** + * 鏍规嵁PLC鎸夐挳娴嬭瘯銆佸畬鎴愩�佹殏鍋滀俊鍙凤紝鏇存柊testMast琛ㄤ腑status鍊硷紝浜ょ敱WMS绯荤粺澶勭悊 + */ + @Transactional + public void packTest() { try { // 鏍规嵁杈撻�佺嚎plc閬嶅巻 for (DevpSlave devp : slaveProperties.getDevp()) { SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); if(null != devpThread){ - if (devpThread.startSignal1 == 1){ - TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>() - .eq("channel",1).eq("status",0)); - if(null != testMast){ - Date now = new Date(); - //http璇锋眰娴嬭瘯 - TestDto testDto = new TestDto(); - testDto.setLocNo(testMast.getLocNo()); - testDto.setBarcode(testMast.getBarcode()); - testDto.setUserId(testMast.getUserId()); - testDto.setRequestTime(DateUtils.convert(now)); - String response = new HttpHandler.Builder() - .setUri(testUrl) - .setPath("/testUrlPath") - .setJson(JSON.toJSONString(testDto)) - .build() - .doPost(); - JSONObject jsonObject = JSON.parseObject(response); - if (jsonObject.getInteger("code").equals(200)) { - //鏇存柊娴嬭瘯琛ㄧ姸鎬� - testMast.setStatus(1); - testMast.setModiTime(now); - testMastService.update(testMast,new EntityWrapper<TestMast>() - .eq("channel",1).eq("status",0)); - //澶嶄綅PLC淇″彿 - boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, 0)); - } else { - log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿},request锛歿},response锛歿}", testUrl+"/rpc/pakin/loc/v1", JSON.toJSONString(testDto), response); - } + for (int i = 0; i < 48; i++){ + int olsStatus = 0;//testMast琛ㄥ師鏉tatus鏁版嵁鐘舵�� + int newStatus = 0;//testMast琛ㄥ緟淇敼鐨剆tatus鏁版嵁鐘舵�� + short newSingle = 0; //PLC鍦板潃寰呬慨鏀圭殑鏂板�� + switch (devpThread.startSignal[i][0]){//鏍规嵁淇″彿鏌ユ壘testMast琛ㄤ腑瀵瑰簲鐘舵�佹潯浠�,olsStatus锛宯ewStatus鏍规嵁瀹為檯娴佺▼璋冩暣 + case 0://鍒濆鐘舵�侊紝鍏ュ簱 + olsStatus = 1;//寰呮祴 + newStatus = 1;//寰呮祴 + newSingle = 1;//搴撳瓨鏈夎祫鏂欙紝瀵勫瓨鍣ㄥ湴鍧�锛�0===>>1 + break; + case 2://鍚姩澶嶆牳淇″彿 + olsStatus = 1;//寰呮祴 + newStatus = 2;//澶嶆牳涓� + newSingle = 3;//娴嬭瘯澶嶆牳锛屽瘎瀛樺櫒鍦板潃锛�2===>>3 + break; + case 3://娴嬭瘯瀹屾垚 + olsStatus = 4;//娴嬭瘯瀹屾垚 + newStatus = 4;//娴嬭瘯瀹屾垚 + newSingle = 4;//娴嬭瘯瀹屾垚锛屽瘎瀛樺櫒鍦板潃锛�3===>>4 + break; + case 5://NG娴嬭瘯淇″彿 + case 6://瀹屾垚娴嬭瘯淇″彿 + case 22://瀹屾垚娴嬭瘯淇″彿 + olsStatus = 4;//娴嬭瘯瀹屾垚 + newStatus = 5;//宸茬Щ搴� + newSingle = 0;//鍚姩绉诲簱锛屽瘎瀛樺櫒鍦板潃娓呴浂锛�5/6===>>0 + break; + case 7://鏆傚仠淇″彿 + olsStatus = 99;//plc缁欏嚭鏆傚仠淇″彿 + newStatus = 0;//WCS鏀跺埌鏆傚仠淇″彿鍚庯紝鏇存柊testMast + newSingle = 8;//鏆傚仠娴嬭瘯锛屽瘎瀛樺櫒鍦板潃锛�7===>>8 + break; + case 9://绱ф�ュ嚭搴撶‘璁ゅ厖鐢电嚎宸茬粡鎷斿嚭 + olsStatus = 99;//plc缁欏嚭鏆傚仠淇″彿 + newStatus = 0;//WCS鏀跺埌鏆傚仠淇″彿鍚庯紝鏇存柊testMast + newSingle = 8;//鏆傚仠娴嬭瘯锛屽瘎瀛樺櫒鍦板潃锛�9===>>8 + break; + case 10://瑙i櫎鏆傚仠淇″彿 + olsStatus = 0;//plc缁欏嚭鏆傚仠淇″彿 + newStatus = 1;//WCS鏀跺埌鏆傚仠淇″彿鍚庯紝鏇存柊testMast + newSingle = 0;//鏆傚仠娴嬭瘯锛屽瘎瀛樺櫒鍦板潃锛�10===>>0/11 + break; + case 12://绱ф�ュ嚭搴撶‘璁ゅ厖鐢电嚎宸茬粡鎷斿嚭 + newSingle = 11;//鏆傚仠娴嬭瘯锛屽瘎瀛樺櫒鍦板潃锛�12===>>11 + break; + case 13://鍏ュ簱鍓嶅垽鏂厖鐢电嚎鏄惁鏀惧ソ + newSingle = 14;//绂佺敤搴撲綅锛屽瘎瀛樺櫒鍦板潃锛�13===>>14 + break; + case 15://鍏呯數绾挎斁濂� + newSingle = 0;//澶嶄綅锛屽瘎瀛樺櫒鍦板潃锛�12===>>0 + break; + default: + log.error("璇诲彇娴嬭瘯搴撲綅淇″彿鍑洪敊"); + break; + } + TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>() + .eq("channel",(i+1)).eq("status",olsStatus));//鏌ユ壘鍘熸潵鐨勭姸鎬� + LocMast locMast=null; + boolean sign=false; + switch (devpThread.startSignal[i][0]){ + case 0: + case 3: + if (!Cools.isEmpty(testMast)){ + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("channel",(i+1))); + if (!Cools.isEmpty(locMast) && locMast.getLocSts().equals("F")){ + sign=true; + } + } + break; + case 5: + case 6: + if (!Cools.isEmpty(testMast)){ + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("channel",(i+1))); + if (!Cools.isEmpty(locMast) && locMast.getLocSts().equals("F")){ + if (devpThread.startSignal[i][0]==5 && locMast.getPackStatus()==4){ + sign=true; + }else if (devpThread.startSignal[i][0]==6 && locMast.getPackStatus()==3){ + sign=true; + }else { + log.error("娴嬭瘯瀹屾垚绉诲簱鏃舵寜涓嬪畬鎴愭寜閽笌娴嬭瘯缁撴灉涓嶄竴鑷�===>>[channel:{}", i+1); + } + }else { + log.error("娴嬭瘯瀹屾垚绉诲簱鏃舵湭鏌ヨ鍒版祴璇曟。妗�===>>[channel:{}", i+1); + } + } + break; + case 2: + if (!Cools.isEmpty(testMast)){ + testMast.setStatus(newStatus); + testMast.setModiTime(new Date()); + if(!testMastService.update(testMast,new EntityWrapper<TestMast>().eq("channel",(i+1)).eq("barcode",testMast.getBarcode()))){ + throw new CoolException("鏇存柊浜у搧娴嬭瘯鐘舵�佸け璐�"); + }else { + sign=true; + } + }else { + log.error("鍚姩娴嬭瘯鏃舵湭鏌ヨ鍒版祴璇曟。妗�===>>[channel:{}", i+1); + } + break; + case 7: + SearchLocParam param = new SearchLocParam(); + param.setBarcode(i+1+""); + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/mobile/test/suspend/auth") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + testMast = testMastService.selectOne(new EntityWrapper<TestMast>().eq("channel",(i+1))); + testMast.setStatus(newStatus); + testMast.setModiTime(new Date()); + if(!testMastService.update(testMast,new EntityWrapper<TestMast>().eq("channel",(i+1)).eq("barcode",testMast.getBarcode()))){ + log.error("鏇存柊浜у搧娴嬭瘯鐘舵�佸け璐�"); + } + sign=true; + } else { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl+"/mobile/test/suspend/auth", JSON.toJSONString(param), response); + } + break; + case 9: + case 12: + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("channel",(i+1))); + if (!Cools.isEmpty(locMast) && locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")){ + locMast.setPackStatus(8); //8.绱ф�ュ嚭搴� + if (locMastService.update(locMast,new EntityWrapper<LocMast>().eq("channel",(i+1)))){ + log.info("搴撲綅锛歿}锛岀揣鎬ュ嚭搴擄紒",locMast.getLocNo()); + } + }else { + log.error("搴撲綅涓嶆槸鍦ㄥ簱鐘舵�侊紝鏃犻渶绱ф�ュ嚭搴擄紒"); + } + sign=true; + break; + case 10: + if (!Cools.isEmpty(testMast)){ + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("channel",(i+1))); + if (!Cools.isEmpty(locMast) && locMast.getLocSts().equals("F") ){ + if ( locMast.getFireStatus().equals(1)){ + newSingle=11; + }else { + testMast.setStatus(newStatus); + testMast.setModiTime(new Date()); + if(!testMastService.update(testMast,new EntityWrapper<TestMast>().eq("channel",(i+1)).eq("barcode",testMast.getBarcode()))){ + throw new CoolException("鏇存柊浜у搧娴嬭瘯鐘舵�佸け璐�"); + }else { + sign=true; + } + } + } + } + sign=true; + break; + case 13: + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("channel",(i+1))); + if (locMast.getLocSts().equals("O")){ + locMast.setLocSts("X"); + locMastService.update(locMast,new EntityWrapper<LocMast>().eq("channel",(i+1))); + } + sign=true; + break; + case 15: + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("channel",(i+1))); + if (locMast.getLocSts().equals("X")){ + locMast.setLocSts("O"); + locMastService.update(locMast,new EntityWrapper<LocMast>().eq("channel",(i+1))); + } + sign=true; + break; + default: + log.error("璇诲彇娴嬭瘯搴撲綅淇″彿鍑洪敊"); + continue; + } + if (sign){ + boolean result = messageQueueOffer(i,newSingle,SlaveType.Devp, devp.getId()); + if(!result){ + log.error("鏇存柊娴嬭瘯淇″彿澶辫触===>>[channel:{},locNo:{},barcode:{}]", i+1, testMast.getLocNo(), testMast.getBarcode()); + } else { + devpThread.startSignal[i][0] = newSingle; + } + } + try{ + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("channel",(i+1))); + messageQueueOffer2(i,(short)((int)locMast.getFireStatus()),SlaveType.Devp, devp.getId()); + }catch (Exception e){ + log.error("鐏 ===>> 缁欒緭閫佺嚎鍙戦�佽鎶ュけ璐�,閫氶亾鍙凤細", i+1); } } + } } - } catch (Exception e) { + log.error("鍚姩娴嬭瘯 ===>> 鍚姩娴嬭瘯澶辫触", e); e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } } + public boolean messageQueueOffer(int i ,short newSingle,SlaveType devp,Integer id){ + //澶嶄綅PLC淇″彿锛屽�熺敤杈撻�佺珯鐐瑰疄浣撶被 + StaProtocol staProtocol = new StaProtocol(); + staProtocol.setSiteId(i*2);//瀵勫瓨鍣ㄥ湴鍧� + staProtocol.setStaNo(newSingle);//淇敼PLC瀵勫瓨鍣ㄥ湴鍧�鍊�,8==>0 + return MessageQueue.offer(devp, id, new Task(3, staProtocol)); + } + + public boolean messageQueueOffer2(int i ,short newSingle,SlaveType devp,Integer id){ + //澶嶄綅PLC淇″彿锛屽�熺敤杈撻�佺珯鐐瑰疄浣撶被 + StaProtocol staProtocol = new StaProtocol(); + staProtocol.setSiteId(i*2);//瀵勫瓨鍣ㄥ湴鍧� + staProtocol.setStaNo(newSingle);//淇敼PLC瀵勫瓨鍣ㄥ湴鍧�鍊�,8==>0 + return MessageQueue.offer(devp, id, new Task(5, staProtocol)); + } + + /** + * 灏嗙伀璀︽姤璀︿俊鍙峰啓鍏ュ埌鍫嗗灈鏈篜LC涓� + */ + @Transactional + public void fierCrn() { + try { + for (CrnSlave crn :slaveProperties.getCrn()) { + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("fire_status", 1)); + if (!Cools.isEmpty(locMast)){ + //鎶ヨ淇″彿鍐欏叆1 + if (!MessageQueue.offer(SlaveType.Crn, 1, new Task(4, (short)1))) { + log.error("鐏 ===>> 缁欏爢鍨涙満鍙戦�佹姤璀︿俊鍙峰け璐�"); + } + } else { + //鎶ヨ淇″彿娌℃湁鍚庯紝澶嶄綅鍦板潃 + if (!MessageQueue.offer(SlaveType.Crn, 1, new Task(4, (short)0))) { + log.error("鐏 ===>> 缁欏爢鍨涙満娓呴浂澶嶄綅鎶ヨ淇″彿澶辫触"); + } + } + } + } catch (Exception e) { + log.error("鐏 ===>> 缁欏爢鍨涙満鍙戦�佽鎶ュけ璐�", e); + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + } + + /** + * 103绔欑偣鏈夌墿涓嬪彂pack鐮� + */ + @Transactional + public void packDevp() { + try { + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + for (DevpSlave devp : slaveProperties.getDevp()) { + BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("bas_devp",103)); + if (Cools.isEmpty(basDevp)){ + log.error("103绔欑偣鏌ヨ澶辫触-MainServiceImpl.java-2255琛�"); + } + if (basDevp.getAutoing().equals("Y") && basDevp.getWrkNo()>0 && basDevp.getLoading().equals("Y") ){ + WrkDetl wrkDetl = wrkDetlService.devpPackNo(basDevp.getWrkNo()); + if (Cools.isEmpty(wrkDetl)){ + log.error("103绔欑偣鏌ヨ澶辫触-MainServiceImpl.java-2255琛�"); + } + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4,wrkDetl.getMatnr())); + } + } + } catch (Exception e) { + log.error("103 ===>> 缁欒緭閫佺嚎鍙戦�丳ack鐮佸け璐�", e); + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + } } -- Gitblit v1.9.1