From f24682c98c90aa275890e1f90623e42f314d0a6b Mon Sep 17 00:00:00 2001 From: 18516761980 <56479841@qq.com> Date: 星期四, 06 十月 2022 19:51:06 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 160 insertions(+), 17 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 a0587a3..65f809c 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -9,15 +9,13 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.mapper.BasCrnErrorMapper; +import com.zy.asrs.mapper.TestMastMapper; import com.zy.asrs.mapper.WaitPakinMapper; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.Utils; import com.zy.asrs.utils.VersionUtils; -import com.zy.common.model.LocTypeDto; -import com.zy.common.model.MatDto; -import com.zy.common.model.SearchLocParam; -import com.zy.common.model.StartupDto; +import com.zy.common.model.*; import com.zy.common.service.CommonService; import com.zy.common.utils.CollectionUtils; import com.zy.common.utils.HttpHandler; @@ -87,9 +85,14 @@ private BasErrLogService basErrLogService; @Autowired private BasCrnErrorMapper basCrnErrorMapper; + @Autowired + private TestMastService testMastService; @Value("${wms.url}") private String wmsUrl; + + @Value("${test.url}") + private String testUrl; /** * 缁勬墭 @@ -100,12 +103,14 @@ for (DevpSlave devp : slaveProperties.getDevp()) { // 閬嶅巻鍏ュ簱鍙� for (DevpSlave.Sta inSta : devp.getInSta()) { +// inSta.setStaNo(102); // 鑾峰彇鏉$爜鎵弿浠俊鎭� BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); if (barcodeThread == null) { continue; } String barcode = barcodeThread.getBarcode(); +// barcode="ILY0127 0001"; if(!Cools.isEmpty(barcode)) { log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); if("NG".endsWith(barcode) || "NoRead".equals(barcode)) { @@ -162,7 +167,7 @@ try { LocTypeDto locTypeDto = new LocTypeDto(staProtocol); - +// locTypeDto.setLocType1((short)1); SearchLocParam param = new SearchLocParam(); param.setBarcode(barcode); param.setIoType(1); @@ -530,14 +535,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")) { @@ -561,7 +568,7 @@ } // 搴撲綅绉昏浆 this.locToLoc(crn, crnProtocol); - this.crnRebackHp(crnProtocol, crnThread); +// this.crnRebackHp(crnProtocol, crnThread); } } @@ -601,6 +608,7 @@ if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) { return; } + log.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣"); // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- CrnCommand crnCommand = new CrnCommand(); @@ -673,7 +681,7 @@ // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� if (wrkMastMapper.selectWorking(slave.getId()) != null) { - return; + continue; } // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� @@ -1408,7 +1416,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); } @@ -1499,7 +1507,7 @@ } } // 鑾峰彇led绾跨▼ - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId()); + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId()); // led鏄剧ず榛樿鍐呭 if (reset && !ledThread.isLedMk()) { ledThread.setLedMk(true); @@ -1553,7 +1561,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); @@ -1670,7 +1678,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()); @@ -1885,8 +1893,6 @@ } catch (Exception e) { e.printStackTrace(); } - - } public void outOfDevp() { @@ -1902,5 +1908,142 @@ } } + /** + * 绔欏埌绔� ===>> 鍫嗗灈鏈�109绔欏埌108绔� + * 109闃茬垎娌欑绔欑偣 鍑哄簱 鍒� 108绔欑偣 + */ + 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){ + 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]){//鏍规嵁淇″彿鏌ユ壘testMast琛ㄤ腑瀵瑰簲鐘舵�佹潯浠�,olsStatus锛宯ewStatus鏍规嵁瀹為檯娴佺▼璋冩暣 + case 1://鍚姩澶嶆牳淇″彿 + olsStatus = 2; + newStatus = 3; + newSingle = 2;//娴嬭瘯澶嶆牳锛屽瘎瀛樺櫒鍦板潃锛�1===>>2 + break; + case 3://瀹屾垚娴嬭瘯淇″彿 + olsStatus = 3; + newStatus = 5; + newSingle = 0;//娴嬭瘯瀹屾垚锛屽瘎瀛樺櫒鍦板潃娓呴浂锛�3===>>0 + break; + case 5://鏆傚仠淇″彿 + olsStatus = 5;//plc缁欏嚭鏆傚仠淇″彿 + newStatus = 6;//WCS鏀跺埌鏆傚仠淇″彿鍚庯紝鏇存柊testMast + newSingle = 6;//鏆傚仠娴嬭瘯锛屽瘎瀛樺櫒鍦板潃锛�5===>>6 + break; + } + + TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>() + .eq("channel",(i+1)).eq("status",olsStatus));//鏌ユ壘鍘熸潵鐨勭姸鎬� + if(null != testMast && + (devpThread.startSignal[i] == 1 || devpThread.startSignal[i] == 3 || devpThread.startSignal[i] == 5)){ + testMast.setStatus(newStatus); + testMast.setModiTime(new Date()); + if(!testMastService.update(testMast,new EntityWrapper<TestMast>() + .eq("channel",(i+1)).eq("status",olsStatus))){ + throw new CoolException("鏇存柊浜у搧娴嬭瘯鐘舵�佸け璐�"); + } + //澶嶄綅PLC淇″彿锛屽�熺敤杈撻�佺珯鐐瑰疄浣撶被 + StaProtocol staProtocol = new StaProtocol(); + staProtocol.setSiteId(i*2);//瀵勫瓨鍣ㄥ湴鍧� + staProtocol.setStaNo(newSingle);//淇敼PLC瀵勫瓨鍣ㄥ湴鍧�鍊�,1==>2鎴�3==>0,5==>6 + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol)); + if(!result){ + log.error("鏇存柊娴嬭瘯淇″彿澶辫触===>>[channel:{},locNo:{},barcode:{}]", i, testMast.getLocNo(), testMast.getBarcode()); +// throw new CoolException("鏇存柊娴嬭瘯淇″彿澶辫触===>>" + i); + } else { + devpThread.startSignal[i] = newSingle; + } + } + + } + + } + + } + } catch (Exception e) { + log.error("鍚姩娴嬭瘯 ===>> 鍚姩娴嬭瘯澶辫触", e); + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + } } -- Gitblit v1.9.1