From f30a3efc28ee4d3f67ddf76bc360b676595e4b80 Mon Sep 17 00:00:00 2001 From: TQS <56479841@qq.com> Date: 星期三, 01 三月 2023 12:38:30 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 257 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 232 insertions(+), 25 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 678debb..f20f679 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -7,6 +7,7 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.mapper.BasCrnErrorMapper; +import com.zy.asrs.mapper.BasDevpMapper; import com.zy.asrs.mapper.WrkChargeMapper; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.*; @@ -91,6 +92,8 @@ private CommonService commonService; @Autowired private WrkChargeMapper wrkChargeMapper; + @Autowired + private BasDevpMapper basDevpMapper; /** * 缁勬墭 @@ -102,7 +105,7 @@ // 閬嶅巻鍏ュ簱鍙� for (DevpSlave.Sta inSta : devp.getInSta()) { // 鑾峰彇鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); if (staProtocol == null) { continue; @@ -110,6 +113,29 @@ staProtocol = staProtocol.clone(); } Short workNo = staProtocol.getWorkNo(); + + //20230201. 2鍙峰爢鍨涙満鏈夊嚭搴撲换鍔℃椂锛岀姝㈡柊鏉垮叆搴� + if (staProtocol.isLoading() && staProtocol.getWorkNo() == 9995) { + if ( inSta.getStaNo()==103 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) { + //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙� + staProtocol.setWorkNo((short) 9999); + staProtocol.setStaNo((short)100); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + News.error("MainServiceImpl generateStoreWrkFile"+"103涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒"); + continue; + } + if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { + //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙� + staProtocol.setWorkNo((short) 9999); + staProtocol.setStaNo((short)200); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + News.error("MainServiceImpl generateStoreWrkFile"+"203涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒"); + continue; + } + } + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() @@ -304,10 +330,46 @@ case 104: case 108: staNo = 103; + List<BasDevp> basDevps1 = basDevpMapper.getLoading(103); + if (basDevps1.size()!=0){ + continue; + } + List<WrkMast> wrkMasts1 = wrkMastMapper.selectWrkStsAndIoType(103); + if (wrkMasts1.size()!=0){ + boolean flag = false; + for (WrkMast wrkMast1:wrkMasts1){ + if (!wrkMast1.getWrkNo().equals(wrkMast.getWrkNo())){ + flag = true; + break; + } + } + if (flag) { + News.error("MainServiceImpl 324琛�"+"104绔欑偣瀛樺湪璐х墿锛屾崱鏂欑洏鐐硅揣鐗╂殏鏃朵笉閲嶆柊鍏ュ簱锛侊紒锛�"); + continue; + } + } break; case 204: case 208: staNo = 203; + List<BasDevp> basDevps2 = basDevpMapper.getLoading(203); + if (basDevps2.size()!=0){ + continue; + } + List<WrkMast> wrkMasts2 = wrkMastMapper.selectWrkStsAndIoType(203); + if (wrkMasts2.size()!=0){ + boolean flag = false; + for (WrkMast wrkMast1:wrkMasts2){ + if (!wrkMast1.getWrkNo().equals(wrkMast.getWrkNo())){ + flag = true; + break; + } + } + if (flag) { + News.error("MainServiceImpl 346琛�"+"204绔欑偣瀛樺湪璐х墿锛屾崱鏂欑洏鐐硅揣鐗╂殏鏃朵笉閲嶆柊鍏ュ簱锛侊紒锛�"); + continue; + } + } break; default: News.error("{}浠诲姟鍐嶅叆搴撳け璐ワ紝绯荤粺鏁版嵁寮傚父锛�", wrkMast.getWrkNo()); @@ -459,6 +521,7 @@ // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 + wrkMast.setIoPri(13D); wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯 wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔� wrkMast.setCrnNo(dto.getCrnNo()); @@ -489,6 +552,7 @@ LocMast sourceLocMast = locMastService.selectById(sourceLocNo); if (sourceLocMast.getLocSts().equals("P")) { sourceLocMast.setLocSts("O"); + sourceLocMast.setBarcode(""); sourceLocMast.setModiTime(new Date()); if (!locMastService.updateById(sourceLocMast)) { throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�"); @@ -681,6 +745,7 @@ // 鏇存柊宸ヤ綔妗g姸鎬佷负 17.鍑哄簱瀹屾垚 wrkMast.setWrkSts(17L); wrkMast.setSteNo(0); + wrkMast.setIoPri(15D); wrkMast.setCrnEndTime(new Date()); if (wrkMastMapper.updateById(wrkMast) != 0) { // 澶嶄綅鍫嗗灈鏈� @@ -771,18 +836,18 @@ continue; } - //鍔犲己鍒ゆ柇锛屽彧瑕佸瓨鍦ㄧЩ搴撲换鍔★紝璇存槑鍑哄簱浠诲姟鏈畬鍏ㄧ粨鏉燂紝涓嶆墽琛屽叆搴撲换鍔� - WrkMast one = wrkMastMapper.selectLocMoveData(slave.getId()); - if(!Cools.isEmpty(one)){ - News.error("鍏ュ簱 ===>> 瀛樺湪绉诲簱鏈畬鎴愪换鍔★紝涓嶈兘鍏ュ簱銆傜Щ搴撲换鍔″彿={},鍫嗗灈鏈哄彿={}", one.getWrkNo(), slave.getId()); - continue; - } - // 鑾峰彇宸ヤ綔鐘舵�佷负 2,3,4,5,6 鐨勫叆搴撳伐浣滄。 WrkMast wrkMast = wrkMastMapper.selectPakInStep23456(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo()); if(null == wrkMast) { // News.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo()); continue; + } + + //鍔犲己鍒ゆ柇锛屽彧瑕佸瓨鍦ㄧЩ搴撲换鍔★紝璇存槑鍑哄簱浠诲姟鏈畬鍏ㄧ粨鏉燂紝涓嶆墽琛屽叆搴撲换鍔� + WrkMast one = wrkMastMapper.selectLocMoveData(slave.getId()); + if(!Cools.isEmpty(one)){ + News.error("鍏ュ簱 ===>> 瀛樺湪绉诲簱鏈畬鎴愪换鍔★紝涓嶈兘鍏ュ簱銆傜Щ搴撲换鍔″彿={},鍫嗗灈鏈哄彿={}", one.getWrkNo(), slave.getId()); +// continue; } // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔� @@ -986,6 +1051,44 @@ continue; } + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + + if (wrkMast.getCrnNo().equals(2)){ + if (wrkMast.getStaNo() == 103 && devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) { + News.error("MainServiceImpl locToCrnStn"+"103闈炲嚭搴撴ā寮忥紝绂佹鍑哄簱銆備换鍔″彿:{}锛侊紒锛�",wrkMast.getWrkNo()); + continue; + } + if (wrkMast.getStaNo() == 203 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) { + News.error("MainServiceImpl locToCrnStn"+"203闈炲嚭搴撴ā寮忥紝绂佹鍑哄簱銆備换鍔″彿:{}锛侊紒锛�",wrkMast.getWrkNo()); + continue; + } + + if (wrkMast.getWrkSts() == 11 && (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107)){ + Integer sour = wrkMast.getSourceStaNo(); + List<WrkMast> wrkMasts = wrkMastMapper.selectWrkStsAndIoType0(sour); + if (wrkMasts.size() > 0){ + News.error("MainServiceImpl 1028琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�"); + continue; + } + } + + if (wrkMast.getWrkSts() == 11 && wrkMast.getIoType() == 101){ + Integer sour = wrkMast.getSourceStaNo(); + List<WrkMast> wrkMasts = wrkMastMapper.selectWrkStsAndIoType1(sour); + if (wrkMasts.size() > 0){ + News.error("MainServiceImpl 1028琛�"+"204瀛樺湪鍏ㄦ澘鍑哄簱涓揣鐗╋紝2鍙峰爢鍨涙満鏆傛椂绂佹鍏ㄦ澘鍑哄簱锛侊紒锛�"); + continue; + } + } + } + // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔� BasSte basSte = basSteService.findByCrnNo(wrkMast.getCrnNo()); if(basSte == null) continue; @@ -1038,7 +1141,9 @@ if (wrkMastMapper.updateById(waitWrkMast) == 0) { News.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo()); } - flag = true; + if (waitWrkMast.getWrkSts() != 17) { + flag = true; + } break; } } @@ -1083,17 +1188,10 @@ // 鑾峰彇婧愬簱浣嶄俊鎭� LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo()); if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) { - News.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts()); + News.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getSourceLocNo(), sourceSta.getLocSts()); continue; } - // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 - 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) { @@ -1494,8 +1592,11 @@ if(!Cools.isEmpty(deeplocs)){ for(String deepLocNo : deeplocs) { LocMast deepLoc = locMastService.selectById(deepLocNo); -// WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(deepLocNo); - if(deepLoc != null && !deepLoc.getLocSts().equals("F") && !deepLoc.getLocSts().equals("D") && !deepLoc.getLocSts().equals("O")){ + WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(deepLocNo); + if(deepLoc != null && !deepLoc.getLocSts().equals("F") + && !deepLoc.getLocSts().equals("D") + && !deepLoc.getLocSts().equals("O") + && (waitWrkMast!=null && waitWrkMast.getWrkSts()<18)){ News.error("绉诲簱鍐嶅洖搴撴椂锛屾繁搴撲綅缁勬繁搴撲綅鐘舵�佷负浣滀笟涓� ===>> deepLoc={},loc_sts={}", deepLoc.getLocNo(), deepLoc.getLocSts()); flag = true; break; @@ -1521,7 +1622,7 @@ } } LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); - if(sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D")){ + if(sourceLoc.getLocSts().equals("R") || sourceLoc.getLocSts().equals("D")){ sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害 sourceLoc.setModiTime(new Date()); if (!locMastService.updateById(sourceLoc)) { @@ -2195,6 +2296,10 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { return; } + if(steProtocol.getLoad() == 1){ + News.error("灏忚溅涓婃柟鏈夎揣锛屾棤娉曚笅鍙戜换鍔�===>>{}", steNo); + return; + } if (steProtocol.isIdle() && steProtocol.getLoad() == 0) { // 鍫嗗灈鏈虹┖闂� if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) { @@ -2614,7 +2719,7 @@ String locSts = ""; // 搴撲綅绉昏浆鍒ゆ柇鏄惁涓虹┖鏉跨Щ杞� if (wrkMast.getEmptyMk().equals("N")) { - locSts = "F"; + locSts = "R"; // 杞Щ搴撳瓨鏄庣粏鏁版嵁: 搴撳瓨鍙� 鐢卞伐浣滄。婧愬簱浣嶅彉涓虹洰鏍囧簱浣� if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) { News.error("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触锛沎婧愬簱浣�={}],[鐩爣搴撲綅={}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); @@ -3149,13 +3254,36 @@ // 閬嶅巻绌烘澘鍏ュ簱鍙� for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) { // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo()); if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); } + + //20230201. 2鍙峰爢鍨涙満鏈夊嚭搴撲换鍔℃椂锛岀姝㈡柊鏉垮叆搴� + if (staProtocol.isLoading() && staProtocol.getWorkNo() == 9995) { + if ( emptyInSta.getStaNo()==103 && devpThread.ioModeOf1F == IoModeType.PAKOUT_MODE) { + //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙� + staProtocol.setWorkNo((short) 9999); + staProtocol.setStaNo((short)100); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + News.error("MainServiceImpl storeEmptyPlt"+"103涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒"); + continue; + } + if ( emptyInSta.getStaNo()==203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { + //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙� + staProtocol.setWorkNo((short) 9999); + staProtocol.setStaNo((short)200); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + News.error("MainServiceImpl storeEmptyPlt"+"203涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒"); + continue; + } + } + // 绔欑偣鏉′欢鍒ゆ柇 if (staProtocol.isAutoing() && staProtocol.isLoading() @@ -3282,6 +3410,7 @@ } ledCommand.setSourceLocNo(wrkMast.getSourceLocNo()); ledCommand.setStaNo(wrkMast.getStaNo()); + ledCommand.setBarcode(wrkMast.getBarcode()); if (wrkMast.getIoType() != 110) { List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo()); wrkDetls.forEach(wrkDetl -> { @@ -3731,8 +3860,27 @@ if(Utils.getGroupRow(one.getLocNo()) != Utils.getGroupRow(shallowLoc.getLocNo()) || Utils.getBay(one.getLocNo()) != Utils.getBay(shallowLoc.getLocNo()) || Utils.getLev(one.getLocNo()) != Utils.getLev(shallowLoc.getLocNo())){ - loc = one; - break; + + boolean success = true; + List<String> insideLoc = Utils.getGroupInsideLoc(one.getLocNo()); + for (String inside : insideLoc) { + if (locMastService.selectById(inside).getLocSts().equals("P") + || locMastService.selectById(inside).getLocSts().equals("R") + || locMastService.selectById(inside).getLocSts().equals("S") + || locMastService.selectById(inside).getLocSts().equals("Q")) { + success = false; break; + } + } + + Integer steNo = this.hasCar(one.getLocNo()); + if (steNo != null) { + continue; + } + + if (success) { + loc = one; + break; + } } } @@ -3809,4 +3957,63 @@ } } + /** + * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁� + */ + public synchronized void ioConvert() { + try { + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + for (DevpSlave devp : slaveProperties.getDevp()) { + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + + for (DevpSlave.Sta inSta : devp.getInSta()) { + Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : 204; + WrkMast pakout = wrkMastMapper.selectWorkingPakout(sourceStaNo); + switch (inSta.getStaNo()) { + case 103://1F + if (pakout != null) { + if (devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) { + // 鍑哄簱鍒囨崲涓� +// devpThread.ioModeOf1F = IoModeType.PAKOUT_BOOTING; +// WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); +// if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() +// && !devpThread.getStation().get(inSta.getStaNo()+1).isLoading() +// && devpThread.getStation().get(inSta.getStaNo()+1).getWorkNo()==0) { +// // 鍑哄簱妯″紡 + devpThread.ioModeOf1F = IoModeType.PAKOUT_MODE; +// } + } + } else { + // 鍏ュ簱妯″紡 + devpThread.ioModeOf1F = IoModeType.PAKIN_MODE; + } + break; + case 203://2F + if (pakout != null) { + if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) { + // 鍑哄簱鍒囨崲涓� +// devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING; +// WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); +// if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() +// && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading() +// && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) { +// // 鍑哄簱妯″紡 + devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE; +// } + } + } else { + // 鍏ュ簱妯″紡 + devpThread.ioModeOf2F = IoModeType.PAKIN_MODE; + } + break; + } + } + + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + } -- Gitblit v1.9.1