From 599d236a9e81bfc65566ea3553d8c59d4e6a3136 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期二, 19 十二月 2023 14:50:20 +0800 Subject: [PATCH] #map latest test --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 102 ++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 76 insertions(+), 26 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 6b15116..6d0eab8 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -1,7 +1,6 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; @@ -37,8 +36,6 @@ import java.util.*; import java.util.stream.Collectors; - -import static com.zy.asrs.utils.Utils.isJson; /** * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔� @@ -106,7 +103,7 @@ @Autowired private RedisUtil redisUtil; @Autowired - private WrkMastLocMapper wrkMastLocMapper; + private WrkMastLogMapper wrkMastLogMapper; @Autowired private BasLiftOptService basLiftOptService; @Autowired @@ -1390,7 +1387,7 @@ if (wrkMastMapper.updateById(wrkMast) > 0) { if (wrkMast.getWrkSts() == 111) { // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) { + if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); } // 鍒犻櫎宸ヤ綔涓绘。 @@ -1680,6 +1677,16 @@ News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀湪杈撻�佺珯鐐硅皟搴﹀皬杞﹂伩璁╁け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; } + } + + if (!basDevp.getAutoing().equals("Y")) { + News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夎嚜鍔ㄤ俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); + return false;//鍑哄簱绔欑偣涓嶅彲鍑� + } + + if (basDevp.getLoading().equals("Y")) { + News.info("{}浠诲姟锛寋}绔欑偣锛屽瓨鍦ㄦ湁鐗╀俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); + return false;//鍑哄簱绔欑偣涓嶅彲鍑� } if (!basDevp.getOutEnable().equals("Y")) { @@ -2817,6 +2824,7 @@ List<LedCommand> commands = new ArrayList<>(); // 宸ヤ綔妗i泦鍚� List<WrkMast> wrkMasts = new ArrayList<>(); + List<WrkMastLog> wrkMastLogs = new ArrayList<>(); for (Integer staNo : led.getStaArr()) { // 鑾峰彇鍙夎溅绔欑偣 StaProtocol staProtocol = devpThread.getStation().get(staNo); @@ -2827,16 +2835,41 @@ } // 鑾峰彇宸ヤ綔妗f暟鎹� WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo()); - if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { - continue; + Integer wrkNo = staProtocol.getWorkNo().intValue(); + Integer ioType = null; + String sourceLocNo = null; + String locNo = null; + Integer wrkStaNo = null; + String barcode = null; + if (wrkMast == null) { + //鏌ヨ鍘嗗彶妗� + WrkMastLog wrkMastLog = wrkMastLogMapper.selectLatestByWorkNo(staProtocol.getWorkNo().intValue()); + if (wrkMastLog == null) { + continue; + } + ioType = wrkMastLog.getIoType(); + sourceLocNo = wrkMastLog.getSourceLocNo(); + locNo = wrkMastLog.getLocNo(); + wrkStaNo = wrkMastLog.getStaNo(); + barcode = wrkMastLog.getBarcode(); + wrkMastLogs.add(wrkMastLog); + }else { + if (wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { + continue; + } + ioType = wrkMast.getIoType(); + sourceLocNo = wrkMast.getSourceLocNo(); + locNo = wrkMast.getLocNo(); + wrkStaNo = wrkMast.getStaNo(); + barcode = wrkMast.getBarcode(); + wrkMasts.add(wrkMast); } - wrkMasts.add(wrkMast); // 缁勮鍛戒护 LedCommand ledCommand = new LedCommand(); - ledCommand.setWorkNo(wrkMast.getWrkNo()); - ledCommand.setIoType(wrkMast.getIoType()); + ledCommand.setWorkNo(wrkNo); + ledCommand.setIoType(ioType); // 鍑哄簱妯″紡 - switch (wrkMast.getIoType()) { + switch (ioType) { case 101: ledCommand.setTitle("鍏ㄦ澘鍑哄簱"); break; @@ -2854,17 +2887,17 @@ ledCommand.setEmptyMk(true); break; default: - News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType()); + News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkNo, ioType); break; } - ledCommand.setSourceLocNo(wrkMast.getSourceLocNo()); - ledCommand.setLocNo(wrkMast.getLocNo()); - ledCommand.setStaNo(wrkMast.getStaNo()); - ledCommand.setBarcode(wrkMast.getBarcode()); - if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) { - List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo())); + ledCommand.setSourceLocNo(sourceLocNo); + ledCommand.setLocNo(locNo); + ledCommand.setStaNo(wrkStaNo); + ledCommand.setBarcode(barcode); + if (ioType != 110 && ioType != 10) { + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); locDetls.forEach(locDetl -> { - Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkMast.getWrkNo()); + Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkNo); Utils.wapperSetCondition(wrapper, "batch", locDetl.getBatch()); Utils.wapperSetCondition(wrapper, "three_code", locDetl.getThreeCode()); Utils.wapperSetCondition(wrapper, "dead_time", locDetl.getDeadTime()); @@ -2895,23 +2928,29 @@ }); if (locDetls.isEmpty()) { - List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); + List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo)); wrkDetls.forEach(wrkDetl -> { ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getAnfme(), wrkDetl.getSpecs(), wrkDetl.getSuppCode())); }); if (wrkDetls.isEmpty()) {//浠庡巻鍙叉。鏌ヨ - List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectLatestByWorkNo(wrkMast.getWrkNo()); - wrkDetlLogs.forEach(wrkDetl -> { - ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getAnfme(), wrkDetl.getSpecs(), wrkDetl.getSuppCode())); - }); + List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectLatestByWorkNo(wrkNo, barcode); + for (WrkDetlLog wrkDetlLog : wrkDetlLogs) { + ledCommand.getMatDtos().add(new MatDto(wrkDetlLog.getMatnr(), wrkDetlLog.getMaktx(), wrkDetlLog.getAnfme(), wrkDetlLog.getAnfme(), wrkDetlLog.getSpecs(), wrkDetlLog.getSuppCode())); + } + } } } commands.add(ledCommand); } - Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet()); + Set<Integer> workNos = null; + if (!wrkMasts.isEmpty()) { + workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet()); + }else { + workNos = wrkMastLogs.stream().map(WrkMastLog::getWrkNo).collect(Collectors.toSet()); + } // 鑾峰彇LED绾跨▼ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId()); // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护 @@ -3350,6 +3389,17 @@ //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠� NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.NORMAL.id); + if (result == null) { + //璺緞鑾峰彇澶辫触锛岄渶瑕佽В閿佷笂闈㈤攣瀹氱殑璺緞 + //灏濊瘯瑙i攣鐩爣绔欒矾寰� + boolean result3 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), targetNodes, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿� + if (!result3) { + News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮В閿佸け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + return false;//璺緞瑙i攣澶辫触 + } + News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + return false;//璺緞瑙i攣澶辫触 + } List<NyShuttleHttpCommand> commands = result.getCommands(); ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); @@ -3828,7 +3878,7 @@ if (wrkMast.getWrkSts() == 111) { // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) { + if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); } // 鍒犻櫎宸ヤ綔涓绘。 -- Gitblit v1.9.1