From c4b2cfbdc4b31a6e37a9b51c5f69620bd5e7841f Mon Sep 17 00:00:00 2001 From: pjb <pjb123456> Date: 星期六, 23 八月 2025 08:38:58 +0800 Subject: [PATCH] wcs功能完善 --- src/main/java/com/zy/service/impl/MainServiceImpl.java | 520 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 468 insertions(+), 52 deletions(-) diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java index 3be9879..3c045b6 100644 --- a/src/main/java/com/zy/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java @@ -41,6 +41,7 @@ import javax.annotation.Resource; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -77,6 +78,7 @@ // 鎴愬搧搴撳爢鍨涙満鍑哄簱绔欑偣鍒皉gv鎺ラ┏鐐� public static final Map<Integer,Short> crnOutSiteToRgvSite = new HashMap<>(); + public static final Map<Integer,Short> crnOutSiteToRgvSite2 = new HashMap<>(); static { emptyPalletSiteMap.put(1001,"M"); // emptyPalletSiteMap.put(1002,"M"); @@ -104,6 +106,9 @@ outGzxSiteList.add(1081);outGzxSiteList.add(1084);outGzxSiteList.add(1087); crnOutSiteToRgvSite.put(1093, (short) 1091);crnOutSiteToRgvSite.put(1099, (short) 1097);crnOutSiteToRgvSite.put(1107, (short) 1105); + + crnOutSiteToRgvSite2.put(1087, (short) 1089);crnOutSiteToRgvSite2.put(1084, (short) 1086);crnOutSiteToRgvSite2.put(1081, (short) 1083); + crnOutSiteToRgvSite2.put(1043, (short) 1041);crnOutSiteToRgvSite2.put(1016, (short) 1018);crnOutSiteToRgvSite2.put(1008, (short) 1006); } @Autowired @@ -146,6 +151,9 @@ @Resource private ConfigService configService; + + @Resource + private BasDevpErrLogService basDevpErrLogService; @Value("${wms.url}") private String wmsUrl; @@ -613,15 +621,23 @@ crnProtocol.setLastIo("O"); } else if (basCrnp.getOutEnable().equals("Y")) { //mark - 2 - .... - this.locToCrnStn(crn, crnProtocol,mark); // 鍑哄簱 + AtomicInteger atomicInteger = new AtomicInteger(mark); + this.locToCrnStn(crn, crnProtocol,atomicInteger); // 鍑哄簱 crnProtocol.setLastIo("I"); + if(atomicInteger.get() == 99) { // 涓嬩竴娆¤繕鏄嚭搴� + crnProtocol.setLastIo("O"); + } } } // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡 else if (crnProtocol.getLastIo().equals("O")) { if (basCrnp.getOutEnable().equals("Y")) { - this.locToCrnStn(crn, crnProtocol,mark); // 鍑哄簱 + AtomicInteger atomicInteger = new AtomicInteger(mark); + this.locToCrnStn(crn, crnProtocol,atomicInteger); // 鍑哄簱 crnProtocol.setLastIo("I"); + if(atomicInteger.get() == 99) { // 涓嬩竴娆¤繕鏄嚭搴� + crnProtocol.setLastIo("O"); + } } else if (basCrnp.getInEnable().equals("Y")) { this.crnStnToLoc(crn, crnProtocol,mark); // 鍏ュ簱 crnProtocol.setLastIo("O"); @@ -680,7 +696,12 @@ // 鍒ゆ柇1050鏄惁鏈夎揣 StaProtocol staProtocol1 = devpThread.getStation().get(1050); if(staProtocol1.isAutoing() && staProtocol1.isLoading() && staProtocol1.isInEnable() && staProtocol1.getWorkNo() != 0) { - + // 鍒嗛厤搴撲綅 + boolean isContinue =getLocNoNew(staProtocol1.getWorkNo(),wrkMast); + // 鏄惁涓嶇户缁線涓嬫墽琛� + if (isContinue) { + continue; + } } else { continue; } @@ -742,7 +763,7 @@ wrkMast.setIoPri(14D); wrkMastMapper.updateById(wrkMast); // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑 - moveLocForDeepLoc(slave, shallowLoc,mark); + moveLocForDeepLoc(slave, shallowLoc,new AtomicInteger(mark)); // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�) // moveLocForDeepLocPakin(slave, shallowLoc, wrkMast); } @@ -773,8 +794,8 @@ if(crnStn.getStaNo() == 1050 && locMast.getRow1() == 10) { crnCommand.setDestinationPosX((short) 9); } - if(crnStn.getStaNo() == 1049 && locMast.getRow1() == 11) { - crnCommand.setDestinationPosX((short) 12); + if(crnStn.getStaNo() == 1049 && locMast.getRow1() == 10) { + crnCommand.setDestinationPosX((short) 9); } crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� @@ -816,16 +837,132 @@ News.infoNoLog(""+mark+" - 1"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍏ュ簱鎵ц瀹屾瘯"); } + private boolean getLocNoNew(Integer workNo1050, WrkMast wrkMast1049) { + if(!wrkMast1049.getLocNo().isEmpty()) { + return false; + } + WrkMast wrkMast1050 = wrkMastMapper.selectPakInStep2(4, workNo1050); + // 鍒ゆ柇1050娌℃湁琚爢鍨涙満鍙栵紝骞朵笖娌℃湁灏炬嫋淇″彿 + if(wrkMast1050 != null && wrkMast1050.getCtnType() != 1) { + // 鍒ゆ柇杩欎袱涓揣鏄笉鏄竴绉嶇被鍨嬶紝涓嶆槸缁�1050鍒嗛厤搴撲綅锛岀粰灏炬嫋鏍囪瘑锛屾槸鍒欑粰涓や釜璐у垎閰嶅簱浣� + if(wrkMast1050.getPdcType().equals(wrkMast1049.getPdcType())) { + // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣� + List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O")); + List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList()); + List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); + if (collect.size() <= 0 && collect1.size() <= 0) { + News.error("绔欑偣:{},浠诲姟鍙穥}锛氬叆搴撶┖妗跺簱鏃犵┖搴撲綅",1050,workNo1050); + return true; + } + // 鍙敤搴撲綅缁� + List<LocMast> locMastList = new ArrayList<>(); + for(LocMast locMast1:collect) { + Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1()) + && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst(); + first.ifPresent(locMastList::add); + } + + if (locMastList.size() == 0) { + News.error("绔欑偣:{},浠诲姟鍙穥}锛氬叆搴撶┖妗跺簱鏃犲搴旂┖绌烘《缁�",1050,workNo1050); + return true; + } + WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo1050)); + if (wrkDetl.getModel().equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀� + locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList()); + } else { + locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList()); + } + // 1049瀵瑰簲搴撲綅 + LocMast locMast = locMastList.get(0); + + wrkMast1049.setLocNo(locMast.getLocNo()); + wrkMastService.updateById(wrkMast1049); + if (locMast.getLocSts().equals("O")){ + locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 + locMast.setModiTime(new Date()); + if (!locMastService.updateById(locMast)){ + News.error("绔欑偣:{},浠诲姟鍙穥}锛氭敼鍙樺簱浣峽}鐘舵�亄}澶辫触",1049,wrkMast1049.getWrkNo(),locMast.getLocNo(),locMast.getLocSts()); + } else { + // 缁�1050鍒嗛厤瀵瑰簲搴撲綅 + Optional<LocMast> first = collect.stream().filter(locMast1 -> locMast1.getLocNo().equals((locMast.getRow1() == 10 ? "09" : "11") + locMast.getLocNo().substring(2))).findFirst(); + if(first.isPresent()) { + LocMast locMast1 = first.get(); + wrkMast1050.setLocNo(locMast1.getLocNo()); + + locMast1.setLocSts("S"); // S.鍏ュ簱棰勭害 + locMast1.setModiTime(new Date()); + wrkMastService.updateById(wrkMast1050); // 鏇存柊鍒嗛厤鐨勫簱浣� + locMastService.updateById(locMast1); // 鏇存柊搴撲綅鐘舵�� + return false; + } else { + News.error("绔欑偣:{},浠诲姟鍙穥}锛氱┖搴撲綅缁剓}鏃犲搴旂┖搴撲綅",1050,workNo1050,locMast.getLocNo()); + } + } + } else { + News.error("绔欑偣:{},浠诲姟鍙穥}锛氱洰鏍囧簱浣嶏細{}宸茶鍗犵敤",1049,wrkMast1049.getWrkNo(),locMast.getLocNo()); + } + } else { + // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣� + List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O")); + List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList()); + List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓 + if (collect.size() <= 0 && collect1.size() <= 0) { + News.error("绔欑偣:{},浠诲姟鍙穥}锛氬叆搴撶┖妗跺簱鏃犵┖搴撲綅",1050,workNo1050); + return true; + } + // 鍙敤搴撲綅缁� + List<LocMast> locMastList = new ArrayList<>(); + for(LocMast locMast1:collect) { + Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1()) + && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst(); + first.ifPresent(locMastList::add); + } + + if (locMastList.size() == 0) { + News.error("绔欑偣:{},浠诲姟鍙穥}锛氬叆搴撶┖妗跺簱鏃犲搴旂┖绌烘《缁�",1050,workNo1050); + return true; + } + WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo1050)); + if (wrkDetl.getModel().equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀� + locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList()); + } else { + locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList()); + } + LocMast locMast = locMastList.get(0); + wrkMast1050.setLocNo(locMast.getLocNo()); + wrkMast1050.setCtnType(1); // 灏炬墭鏍囪瘑 + wrkMastService.updateById(wrkMast1050); + if (locMast.getLocSts().equals("O")){ + locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 + locMast.setModiTime(new Date()); + if (!locMastService.updateById(locMast)){ + News.error("绔欑偣:{},浠诲姟鍙穥}锛氭敼鍙樺簱浣峽}鐘舵�亄}澶辫触",1050,workNo1050,locMast.getLocNo(),locMast.getLocSts()); + } + } else { + News.error("绔欑偣:{},浠诲姟鍙穥}锛氱洰鏍囧簱浣嶏細{}宸茶鍗犵敤",1050,workNo1050,locMast.getLocNo()); + } + } + } + return true; + } + /** * 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔� * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴� */ - public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) { + public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,AtomicInteger mark) { News.warnNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽嚭搴�"); boolean crnAvailableOut = false; Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","removeCrnAvailableOut")); - if (config != null && config.getStatus() == 1) { - crnAvailableOut = true; + if (config != null && config.getStatus() == 1 && !Cools.isEmpty(config.getValue())) { + // 闇�瑕佽嚜鍔ㄨˉ绌烘《鐨勭珯鐐� + String[] split = config.getValue().split("="); + for (String item : split) { + if (slave.getId() == Integer.parseInt(item)) { + crnAvailableOut = true; + break; + } + } } // 闄愬埗鍘绘崋缁戞満鍣ㄤ换鍔℃暟 int kbWrks = wrkMastMapper.selectCountByKb(); @@ -836,8 +973,25 @@ if (wrkMast == null) { continue; } - if (wrkMast.getStaNo() == 1031 && kbWrks > 1) { - continue; + // 鍒ゆ柇浠诲姟鐩爣绔欑偣鏄惁鏄嚭搴撴ā寮� + if(wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043) { + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); + StaProtocol staProtocol = devpThread.getStation().get(wrkMast.getStaNo()); + if(staProtocol.getInOrOutMode() != 2) { + News.error("{}浠诲姟鐩爣绔欑偣锛歿}锛屽綋鍓嶆ā寮忥細{}涓嶆槸鍑哄簱妯″紡锛屾棤娉曞嚭搴�",wrkMast.getWrkNo(),wrkMast.getStaNo(),staProtocol.getInOrOutMode()); + continue; + } + } + if (wrkMast.getStaNo() == 1031) { + // 鑾峰彇1033鏃犵姸鎬佹椂浠诲姟鏁�+1 + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); + StaProtocol staProtocol = devpThread.getStation().get(1033); + if (staProtocol.isLoading() && staProtocol.getWorkNo() == 0) { + kbWrks ++; + } + if (kbWrks > 2) { + continue; + } } // 宸ヤ綔妗g姸鎬佸垽鏂� if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) { @@ -977,6 +1131,7 @@ wrkMast1.setSourceStaNo(1056); wrkMastService.updateById(wrkMast1); } + mark.set(99); break; } } @@ -1161,16 +1316,16 @@ if(wrkMast.getWorkNoOther() != 0 ){ WrkMast wrkMast1 = wrkMastService.selectByWrkNo(wrkMast.getWorkNoOther()); if (wrkMast1 != null) { - // 浜ゆ崲搴撲綅鍙� +// // 浜ゆ崲搴撲綅鍙� String locNo = wrkMast.getLocNo(); - wrkMast.setLocNo(wrkMast1.getLocNo()); +// wrkMast.setLocNo(wrkMast1.getLocNo()); // 浜ゆ崲鍏ュ簱鏃堕棿锛屾彁鍙栧簱瀛樻椂鎸夐『搴忓厛娴呭悗娣� Date ioTime = wrkMast.getIoTime(); if(locNo.startsWith("10")) { wrkMast.setIoTime(wrkMast1.getIoTime()); wrkMast1.setIoTime(ioTime); } - wrkMast1.setLocNo(locNo); +// wrkMast1.setLocNo(locNo); wrkMast1.setCrnEndTime(now); wrkMast1.setModiTime(now); wrkMast1.setWrkSts(4L); @@ -1268,15 +1423,15 @@ if (crnProtocol == null) { continue; } - if (true) { -// if (crnProtocol.getModeType() != CrnModeType.STOP) { +// if (true) { + if (crnProtocol.getModeType() != CrnModeType.STOP) { // 鏈変换鍔� if (crnProtocol.getTaskNo() != 0) { BasErrLog latest = basErrLogService.findLatestByTaskNo(crn.getId(), crnProtocol.getTaskNo().intValue()); // 鏈夊紓甯� if (latest == null) { - News.warnNoLog(""+mark+" - 1"+" - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏈変换鍔★紝鏈夊紓甯�"); +// News.warnNoLog(""+mark+" - 1"+" - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏈変换鍔★紝鏈夊紓甯�"); if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) { WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo()); if (wrkMast == null) { @@ -1379,6 +1534,174 @@ } /** + * 杈撻�佺嚎寮傚父 + */ + public synchronized void recDevpErr() { + Date now = new Date(); + for (DevpSlave devp : slaveProperties.getDevp()) { + Integer devpId = devp.getId(); + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpId); + Map<Integer, StaProtocol> station = devpThread.getStation(); + for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) { + Integer siteNo = entry.getKey(); + StaProtocol staProtocol = entry.getValue(); + Integer workNo = staProtocol.getWorkNo(); + // 杈撻�佺嚎鎶ヨ + String plcErr = staPlcErr(staProtocol); + if (staProtocol.isAutoing()) { + // 鏈変换鍔� + if (staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() <= 9000) { + + // 鑾峰彇杈撻�佺嚎鎶ヨ淇℃伅 + BasDevpErrLog latestByTaskNo = basDevpErrLogService.findLatestByTaskNo(siteNo, workNo); + + // 鏈夊紓甯� + if (latestByTaskNo == null) { + if (!plcErr.equals("")) { + WrkMast wrkMast = wrkMastMapper.selectById(workNo); + if (wrkMast == null) { + continue; + } + + BasDevpErrLog basErrLog = new BasDevpErrLog( + null, // 缂栧彿 + wrkMast.getWrkNo(), // 宸ヤ綔鍙� + now, // 鍙戠敓鏃堕棿 + null, // 缁撴潫鏃堕棿 + wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� + wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� + wrkMast.getCrnNo(), // 鍫嗗灈鏈� + devpId, // plc + wrkMast.getLocNo(), // 鐩爣搴撲綅 + wrkMast.getStaNo(), // 鐩爣绔� + siteNo, // 婧愮珯 + wrkMast.getSourceLocNo(), // 婧愬簱浣� + wrkMast.getBarcode(), // 鏉$爜 + 0, // 寮傚父鐮� + plcErr, // 寮傚父 + 1, // 寮傚父鎯呭喌 + now, // 娣诲姞鏃堕棿 + null, // 娣诲姞浜哄憳 + now, // 淇敼鏃堕棿 + null, // 淇敼浜哄憳 + "浠诲姟涓紓甯�" // 澶囨敞 + ); + if (!basDevpErrLogService.insert(basErrLog)) { + log.error("杈撻�佺嚎寮傚父淇℃伅鎻掑叆琛╝sr_bas_devp_err_log寮傚父锛歿}", basErrLog); + } + } + } else { + // 寮傚父淇 + if (plcErr.equals("")) { + latestByTaskNo.setEndTime(now); + latestByTaskNo.setUpdateTime(now); + latestByTaskNo.setStatus(2); + if (!basDevpErrLogService.updateById(latestByTaskNo)) { + log.error("杈撻�佺嚎寮傚父璁板綍淇澶辫触asr_bas_devp_err_log寮傚父锛歿}", latestByTaskNo); + } + } + } + // 鏃犱换鍔� + } else { + BasDevpErrLog latest = basDevpErrLogService.findLatest(siteNo); + // 鏈夊紓甯� + if (!plcErr.equals("")) { + // 璁板綍鏂板紓甯� + if (latest == null || !latest.getError().equals(plcErr) || latest.getStatus() == 2 ) { + BasDevpErrLog basErrLog = new BasDevpErrLog( + null, // 缂栧彿 + null, // 宸ヤ綔鍙� + now, // 鍙戠敓鏃堕棿 + null, // 缁撴潫鏃堕棿 + null, // 宸ヤ綔鐘舵�� + null, // 鍏ュ嚭搴撶被鍨� + 0, // 鍫嗗灈鏈� + devpId, // plc + null, // 鐩爣搴撲綅 + null, // 鐩爣绔� + siteNo, // 婧愮珯 + null, // 婧愬簱浣� + null, // 鏉$爜 + 0, // 寮傚父鐮� + plcErr, // 寮傚父 + 1, // 寮傚父鎯呭喌 + now, // 娣诲姞鏃堕棿 + null, // 娣诲姞浜哄憳 + now, // 淇敼鏃堕棿 + null, // 淇敼浜哄憳 + "鏃犱换鍔″紓甯�" // 澶囨敞 + ); + if (!basDevpErrLogService.insert(basErrLog)) { + log.error("杈撻�佺嚎寮傚父璁板綍asr_bas_devp_err_log寮傚父锛歿}", basErrLog); + } + } + // 鏃犲紓甯� + } else { + // 寮傚父淇 + if (latest != null && latest.getStatus() == 1) { + latest.setEndTime(now); + latest.setUpdateTime(now); + latest.setStatus(2); + if (!basDevpErrLogService.updateById(latest)) { + log.error("杈撻�佺嚎寮傚父璁板綍淇澶辫触asr_bas_devp_err_log寮傚父锛歿}", latest); + } + } + } + } + } + } + } + } + + // 鑾峰彇杈撻�佺嚎鎶ヨ + public String staPlcErr(StaProtocol staProtocol){ + Integer siteId = staProtocol.getSiteId(); + if (staProtocol.getBreakerErr()){ + return "鏂矾鍣ㄦ晠闅�"; + } + if (staProtocol.getInfraredErr()){ + return "鍏夌數寮傚父"; + } + if (staProtocol.getOutTimeErr()){ + return "杩愯瓒呮椂"; + } + if (staProtocol.getSeizeSeatErr()){ + return "鍗犱綅瓒呮椂"; + } + if (staProtocol.getWrkYgoodsN()){ + return "鏈変换鍔℃棤璐ф晠闅�"; + } + if (staProtocol.getInverterErr()){ + return "鍙橀鍣ㄦ晠闅�"; + } + if (staProtocol.getContactErr()){ + return "鐢垫満鎺ヨЕ鍣ㄦ晠闅�"; + } + if (staProtocol.getUpcontactErr()){ + return "椤跺崌鐢垫満鎺ヨЕ鍣ㄦ晠闅�"; + } + if (staProtocol.isFrontErr()){ + return "鍓嶈秴闄�"; + } + if (staProtocol.isBackErr()){ + return "鍚庤秴闄�"; + } + if (staProtocol.isHighErr()){ + return "楂樿秴闄�"; + } + if (staProtocol.isLeftErr()){ + return "宸﹁秴闄�"; + } + if (staProtocol.isRightErr()){ + return "鍙宠秴闄�"; + } + if (staProtocol.isBarcodeErr() && siteId != 1083 && siteId != 1086 && siteId != 1089 ){ + return "鎵爜澶辫触"; + } + return ""; + } + + /** * 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣� */ public synchronized void ledExecute(Integer mark) { @@ -1432,6 +1755,9 @@ ledCommand.setTitle("绌烘澘鍑哄簱"); ledCommand.setEmptyMk(true); break; + case 120: + ledCommand.setTitle("鎵嬪姩杞Щ"); + break; default: News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType()); break; @@ -1445,6 +1771,13 @@ // 鏄庣粏 WrkDetl wrkDetl1 = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); if (wrkDetl1 != null) { + // 鍑哄簱浠诲姟鐨勫洓涓嚭搴撶珯鐐癸紝鍒ゆ柇褰撳墠鐗╂枡涓�鎵瑰嚭搴撶殑鏃堕棿 鑾峰彇褰撳墠宸插畬鎴� / 鎬绘暟 + if(wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 1024 ||wrkMast.getStaNo() == 1040 ||wrkMast.getStaNo() == 1043 ||wrkMast.getStaNo() == 1016) ) { + int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 101).eq("io_time", wrkMast.getIoTime())); + int countHis = wrkMastMapper.selectCountHisByIoTypeAndIoTime(101, wrkMast.getIoTime()); + matDto.setOutTotal(count+countHis); + matDto.setIsOutCount(countHis + 1); + } ledCommand.setOrderNo(wrkDetl1.getOrderNo()); matDto.setMaknx(wrkDetl1.getMaktx()); matDto.setMatnr(wrkDetl1.getMatnr()); @@ -1513,6 +1846,14 @@ if (staProtocol.getWorkNo() != 0) { reset = false; break; + } else { + // 鍏ュ簱鍦ㄦ棤鐗╃殑鏃跺�欐墠娓呴櫎寮傚父 + if(staNo == 1006 || staNo == 1012 || staNo == 1018 || staNo == 1041) { + if(staProtocol.isLoading()) { + reset = false; + break; + } + } } } // 鑾峰彇led绾跨▼ @@ -1534,7 +1875,7 @@ * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増) * tip锛氬悓姝� */ - private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,Integer mark) { + private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,AtomicInteger mark) { // 鍙湁208L鑳芥斁11灞� String model = null; @@ -1758,7 +2099,7 @@ } else { staProtocol = staProtocol.clone(); } - if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.isInEnable() || staProtocol.isOutEnable() && site == 1090) && staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() < 9000) { + if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.isInEnable() || staProtocol.isOutEnable() && site == 1090) && staProtocol.getWorkNo() != 0 && (staProtocol.getWorkNo() <= 9000 || staProtocol.getWorkNo()>=30000)) { if (staProtocol.getSiteId() == 1034 && !staProtocol.isHigh()) { // 1034绌烘瘝鎷栧洖娴佷换鍔¢渶瑕侀珮淇″彿 continue; } @@ -1769,49 +2110,49 @@ continue; } // 1083,1086,1089 澶栧舰妫�娴嬪け璐ワ紝涓嶆槸鍘诲紓甯稿彛鐨� 鍋滃湪鍘熷 -// if (staProtocol.getSiteId() == 1083 || staProtocol.getSiteId() == 1086 || staProtocol.getSiteId() == 1089 && wrkMast.getStaNo() != 1090) { -// boolean back = false; -// String errMsg = ""; -// if (staProtocol.isFrontErr()) { -// errMsg = "鍓嶈秴闄�"; -// back = true; -// } -// if (!back && staProtocol.isBackErr()) { -// errMsg = "鍚庤秴闄�"; -// back = true; -// } -// if (!back && staProtocol.isHighErr()) { -// errMsg = "楂樿秴闄�"; -// back = true; -// } -// if (!back && staProtocol.isLeftErr()) { -// errMsg = "宸﹁秴闄�"; -// back = true; -// } -// if (!back && staProtocol.isRightErr()) { -// errMsg = "鍙宠秴闄�"; -// back = true; -// } -// if (back) { -// log.error("{}绔欑偣锛屽褰㈡娴嬪け璐ワ細{}",site,errMsg); -// continue; -// } -// } + if (staProtocol.getSiteId() == 1083 || staProtocol.getSiteId() == 1086 || staProtocol.getSiteId() == 1089 && wrkMast.getStaNo() != 1090) { + boolean back = false; + String errMsg = ""; + if (staProtocol.isFrontErr()) { + errMsg = "鍓嶈秴闄�"; + back = true; + } + if (!back && staProtocol.isBackErr()) { + errMsg = "鍚庤秴闄�"; + back = true; + } + if (!back && staProtocol.isHighErr()) { + errMsg = "楂樿秴闄�"; + back = true; + } + if (!back && staProtocol.isLeftErr()) { + errMsg = "宸﹁秴闄�"; + back = true; + } + if (!back && staProtocol.isRightErr()) { + errMsg = "鍙宠秴闄�"; + back = true; + } + if (back) { + log.error("{}绔欑偣锛屽褰㈡娴嬪け璐ワ細{}",site,errMsg); + continue; + } + } if (staProtocol.getSiteId() == 1090 && wrkMast.getStaNo() == 1090) { continue; } - if ((wrkMast.getWrkSts() == 2 || wrkMast.getWrkSts() == 15) && (wrkMast.getRgvNo() == null || wrkMast.getRgvDstaNo() == 1090)) { + if ((wrkMast.getWrkSts() == 2 || wrkMast.getWrkSts() == 15 || (wrkMast.getIoType() == 120 && wrkMast.getWrkSts() == 52)) && (wrkMast.getRgvNo() == null || wrkMast.getRgvDstaNo() == 1090)) { // 鏈�1090鐨勪换鍔¤烦杩噐gv鍒嗛厤 if(wrkMast.getStaNo() == 1090) { DevpThread devpThread2 = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2); StaProtocol staProtocol2 = devpThread2.getStation().get(1090); if(!staProtocol2.isAutoing() || staProtocol2.isLoading() || staProtocol2.getWorkNo() != 0) { - log.info("鍘诲紓甯稿彛鐩爣绔欑偣锛岄潪鑷姩锛屾湁鐗╋紝宸ヤ綔鍙蜂负锛歿}",staProtocol2.getWorkNo()); + log.info("{}鍘诲紓甯稿彛鐩爣绔欑偣锛岃嚜鍔�:{}锛屾湁鐗�:{}锛屽伐浣滃彿涓猴細{}",wrkMast.getWrkNo(),staProtocol2.isAutoing(),staProtocol2.isLoading(),staProtocol2.getWorkNo()); continue; } - int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().where("sta_no = 1090 and wrk_sts in (9,10)")); + int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().where("sta_no = 1090 AND (wrk_sts IN (9,10) OR (wrk_sts = 2 AND rgv_finish_time IS NOT NULL))")); if (count > 0) { - log.info("鍘诲紓甯稿彛锛屼絾鏄墠闈㈡湁鍘诲紓甯稿彛浠诲姟鏁帮細{}",count); + log.info("{}鍘诲紓甯稿彛锛屼絾鏄墠闈㈡湁鍘诲紓甯稿彛浠诲姟鏁帮細{}",wrkMast.getWrkNo(),count); continue; } } @@ -1874,6 +2215,20 @@ continue; } wrkMast.setWrkSts(15L); + wrkMast.setModiTime(new Date()); + wrkMastService.updateById(wrkMast); + // 1020鍒囨崲鍑哄簱妯″紡锛屽鏋滄湁鎵樼洏鍏ユ媶鐩樻満锛屼笉缁欒緭閫佺嚎涓嬪彂鍛戒护 + if(wrkMast.getStaNo() == 1020) { + if(staProtocol.getInOrOutMode() != 1) { + continue; + } + } + } else if(wrkMast.getIoType() == 120) { + if(wrkMast.getWrkSts() != 53 ){ + log.warn("rgv鏀捐揣瀹屾垚120锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts()); + continue; + } + wrkMast.setWrkSts(54L); wrkMast.setModiTime(new Date()); wrkMastService.updateById(wrkMast); } @@ -2150,6 +2505,11 @@ } } else if (wantBucket.getSite() == 1071 && count <= 2 || wantBucket.getSite() == 1064 && count == 0 || wantBucket.getSite() == 1078 && count <= 2) { // 鍙互鍑轰袱涓� + // 鑷姩鍑虹┖妗讹紝鍧囧寑鍑哄埌姣忓彴缃愯绾� + Integer count1 = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", 4).eq("sta_no",wantBucket.getSite()).in("wrk_sts", 11,12)); + if(count1 > 0) { + return; + } log.info("{}鑷姩琛ョ┖妗讹紝缃愯绾胯妗跺瀷淇℃伅锛歿},姝e湪鎵ц浠诲姟鏁帮細{}", wantBucket.getSite(), wantBucket.getBucketType(), count); // 鍒ゆ柇搴撻噷鏈夋棤绌烘《缁� List<LocDetl> locDetlList = locDetlService.selectListByMatnr(wantBucket.getBucketType()); @@ -2380,7 +2740,7 @@ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.getWorkNo() != 0) { // 鏌ヨ宸ヤ綔妗� WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo()); - if (wrkMast != null && wrkMast.getWhsType() == null) { + if (wrkMast != null && wrkMast.getWhsType() == null && wrkMast.getIoType() != 120) { WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); staProtocol.setBucketType(wrkDetl.getMatnr()); staProtocol.setBucketCount(wrkDetl.getAnfme().intValue()); @@ -2419,4 +2779,60 @@ } } } + + /** + * 鎵嬪姩绔欎綅杞Щ + */ + public synchronized void manualStationTransfer() { + WrkMast wrkMast = wrkMastMapper.selectByIoTypeAndWrkSts(120, 51L); + + if (Cools.isEmpty(wrkMast)) { + return; + } + int devpId; + if (wrkMast.getSourceStaNo() < 1044) { + devpId = 1; + } else if (wrkMast.getSourceStaNo() < 1091) { + devpId = 2; + } else { + devpId = 3; + } + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devpId); + try { + StaProtocol staProtocol = devpThread.getStation().get(wrkMast.getSourceStaNo()); + + if (staProtocol == null) { + wrkMast.setIoTime(new Date()); + wrkMastService.updateById(wrkMast); + return; + } else { + staProtocol = staProtocol.clone(); + } + + // 绔欑偣鏉′欢鍒ゆ柇 + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() == 0 && staProtocol.isPakMk()) { + // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 + StaProtocol staProtocolNew = new StaProtocol(); + staProtocolNew.setSiteId(staProtocol.getSiteId()); + staProtocolNew.setWorkNo(wrkMast.getWrkNo()); + staProtocolNew.setStaNo(crnOutSiteToRgvSite2.get(wrkMast.getSourceStaNo()) != null ? crnOutSiteToRgvSite2.get(wrkMast.getSourceStaNo()) :wrkMast.getSourceStaNo().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devpId, new Task(2, staProtocolNew)); + log.info("鎵嬪姩绔欎綅杞Щ杈撻�佺嚎涓嬪彂锛�" + staProtocolNew.getWorkNo() + "," + staProtocolNew.getSiteId() + "->" + staProtocolNew.getStaNo()); + if (!result) { + News.errorNoLog("" + " - 1" + " - 鏇存柊plc绔欑偣淇℃伅澶辫触"); + throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); + } + + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(52L); + wrkMastService.updateById(wrkMast); + } else { + wrkMast.setIoTime(new Date()); + wrkMastService.updateById(wrkMast); + } + } catch (Exception e) { + e.printStackTrace(); + } + } } -- Gitblit v1.9.1