From dd91c85493463db1968e6e7a61c841d20f948cf6 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 14 十一月 2023 16:37:48 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 169 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 132 insertions(+), 37 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 f8b2e5d..0859375 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -634,7 +634,7 @@ */ public synchronized void initRealtimeBasMap() { for (int i = 1; i <= 10; i++) {//鎬诲叡鍥涘眰妤� - Object data = redisUtil.get("realtimeBasMap_" + i); + Object data = redisUtil.get(RedisKeyType.MAP.key + i); if (data == null) {//redis鍦板浘鏁版嵁涓虹┖锛屼粠鏁版嵁搴撲腑鑾峰彇 BasMap basMap = basMapService.selectLatestMap(i); if (basMap == null) { @@ -656,7 +656,7 @@ } //灏嗘暟鎹簱鍦板浘鏁版嵁瀛樺叆redis - redisUtil.set("realtimeBasMap_" + i, JSON.toJSONString(basMap)); + redisUtil.set(RedisKeyType.MAP.key + i, JSON.toJSONString(basMap)); } } } @@ -667,7 +667,7 @@ public synchronized void restartTaskFromRedis() { HashMap<Object, Object> map = redisUtil.getRedis(); for (Object key : map.keySet()) { - if (key.toString().contains("lift_wrk_no_")) {//鎻愬崌鏈轰换鍔� + if (key.toString().contains(RedisKeyType.LIFT.key)) {//鎻愬崌鏈轰换鍔� LiftRedisCommand redisCommand = JSON.parseObject(map.get(key).toString(), LiftRedisCommand.class); if (redisCommand == null) { continue; @@ -690,7 +690,7 @@ liftProtocol.setTaskNo(redisCommand.getWrkNo());//灏嗘彁鍗囨満绾跨▼鍒嗛厤浠诲姟鍙� liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//宸ヤ綔鐘舵�� - }else if(key.toString().contains("shuttle_wrk_no_")){//鍥涘悜绌挎杞︿换鍔� + }else if(key.toString().contains(RedisKeyType.SHUTTLE.key)){//鍥涘悜绌挎杞︿换鍔� ShuttleRedisCommand redisCommand = JSON.parseObject(map.get(key).toString(), ShuttleRedisCommand.class); if (redisCommand == null) { continue; @@ -1213,7 +1213,7 @@ //鑾峰彇鎻愬崌鏈哄懡浠� NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); - if (wrkMast.getIoType() == 53) { + if (wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) { //鎷f枡鍐嶅洖搴擄紝閲嶆柊鍒嗛厤璁惧宸ヤ綔鍙� Random random = new Random(); int deviceWrk = Math.abs((liftCommand.getTaskNo().intValue() + random.nextInt(9999)));//鑾峰彇璁惧宸ヤ綔鍙� @@ -2287,6 +2287,40 @@ return false; } + /** + * AGV琛ヨ揣(鎮寕绾块�氱煡AGV鍙栬揣) + */ + public void agvRestockIntoByHangingWire() { + //妫�娴�350鍜�351鎵爜鍣� + int[] barcodeStaNo = {11, 12};//11 => 350绔欐壂鐮佸櫒,12 => 351绔欐壂鐮佸櫒 + for (int staNo : barcodeStaNo) { + // 鑾峰彇鏉$爜鎵弿浠俊鎭� + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, staNo); + if (barcodeThread == null) { + continue; + } + String barcode = barcodeThread.getBarcode(); + if(!Cools.isEmpty(barcode)) { + if (barcode.contains("NoRead")) { + continue; + } + + String agvStaNo = null; + if (staNo == 11) { + agvStaNo = "303-1"; + }else { + agvStaNo = "304-1"; + } + //閫氱煡AGV鍙栬揣 + boolean result = agvRestockCall(agvStaNo, barcode); + if (result) { + barcodeThread.setBarcode(""); + } + log.info(barcodeThread.getSlave().getId() + "鍙锋壂鐮佸櫒锛岄�氱煡AGV鍙栬揣锛屾潯鐮佸彿锛�" + barcode); + } + } + } + // 300绔欐嫞鏂� public void pick300() { //妫�娴�300绔欐槸鍚﹁嚜鍔ㄣ�佹湁鐗┿�佸伐浣滃彿 @@ -2384,8 +2418,64 @@ ledCommand.setLocNo(wrkMast.getLocNo()); ledCommand.setStaNo(wrkMast.getStaNo()); if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) { - List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo()); - wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getSpecs()))); + //for (WrkDetl wrkDetl : wrkDetls) { + // LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr())); + // + // locDetls.forEach(locDetl1 -> { + // //宸ヤ綔妗d腑瀛樺湪璇ョ墿鏂欏垯璺宠繃 + // String suppCode = ""; + // + // if (wrkDetl.getMatnr().equals(locDetl1.getMatnr())) { + // Double anfme = 0D; + // if (locDetl != null) { + // anfme = locDetl.getAnfme(); + // } + // if (wrkDetl.getSuppCode() != null) { + // suppCode = wrkDetl.getSuppCode(); + // } + // ledCommand.getMatDtos() + // .add(new MatDto(wrkDetl.getMatnr() + // , wrkDetl.getMaktx() + // , wrkDetl.getAnfme() + // , (wrkDetl.getAnfme()-anfme) + // , wrkDetl.getSpecs() + // , suppCode)); + // } else { + // if (locDetl1.getSuppCode() != null) { + // suppCode = locDetl1.getSuppCode(); + // } + // ledCommand.getMatDtos() + // .add(new MatDto(locDetl1.getMatnr() + // , locDetl1.getMaktx() + // , 0D + // , locDetl1.getAnfme() + // , locDetl1.getSpecs() + // , suppCode)); + // } + // }); + // //LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr())); + //} + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo())); + locDetls.forEach(locDetl -> { + Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no",wrkMast.getWrkNo()); + Utils.wapperSetCondition(wrapper,"batch",locDetl.getBatch()); + Utils.wapperSetCondition(wrapper,"three_code",locDetl.getThreeCode()); + Utils.wapperSetCondition(wrapper,"dead_time",locDetl.getDeadTime()); + WrkDetl detl = wrkDetlService.selectOne(wrapper); + if (Cools.isEmpty(detl)) { + String suppCode = ""; + if (locDetl.getSuppCode() != null) { + suppCode = locDetl.getSuppCode(); + } + ledCommand.getMatDtos().add(new MatDto(locDetl.getMatnr(), locDetl.getMaktx(), 0D, locDetl.getAnfme(), locDetl.getSpecs(), suppCode)); + } else { + String suppCode = ""; + if (detl.getSuppCode() != null) { + suppCode = detl.getSuppCode(); + } + ledCommand.getMatDtos().add(new MatDto(detl.getMatnr(), detl.getMaktx(), detl.getAnfme(), (locDetl.getAnfme() - detl.getAnfme()), detl.getSpecs(), suppCode)); + } + }); } commands.add(ledCommand); } @@ -2431,35 +2521,36 @@ * 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅 */ public void ledReset() { - for (LedSlave led : slaveProperties.getLed()) { - - // 鑾峰彇杈撻�佺嚎plc绾跨▼ - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId()); - // 鍛戒护闆嗗悎 - boolean reset = true; - for (Integer staNo : led.getStaArr()) { - // 鑾峰彇鍙夎溅绔欑偣 - StaProtocol staProtocol = devpThread.getStation().get(staNo); - if (staProtocol == null) { - continue; - } - if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) { - reset = false; - break; - } - } - // 鑾峰彇led绾跨▼ - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId()); - // led鏄剧ず榛樿鍐呭 - if (reset && !ledThread.isLedMk()) { - ledThread.setLedMk(true); - if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) { - News.error(" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort()); - } else { - - } - } - } +// for (LedSlave led : slaveProperties.getLed()) { +// +// // 鑾峰彇杈撻�佺嚎plc绾跨▼ +// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId()); +// // 鍛戒护闆嗗悎 +// boolean reset = true; +// for (Integer staNo : led.getStaArr()) { +// // 鑾峰彇鍙夎溅绔欑偣 +// StaProtocol staProtocol = devpThread.getStation().get(staNo); +// if (staProtocol == null) { +// continue; +// } +// if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) { +// reset = false; +// break; +// } +// } +// // 鑾峰彇led绾跨▼ +// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId()); +// // led鏄剧ず榛樿鍐呭 +// if (reset && !ledThread.isLedMk()) { +// ledThread.setLedMk(true); +// if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) { +// News.error(" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort()); +// } else { +// News.error("{}鍙稬ED鍛戒护涓嬪彂鎴愬姛锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort()); +// ledThread.setLedMk(false); +// } +// } +// } for (LedSlave led : slaveProperties.getLed()) { // 鑾峰彇杈撻�佺嚎plc绾跨▼ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId()); @@ -2478,9 +2569,13 @@ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId()); // led鏄剧ず榛樿鍐呭 if (reset && !ledThread.isLedMk()) { - ledThread.setLedMk(true); + ledThread.setLedMk(false); if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) { News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort()); + }else { +// News.error("{}鍙稬ED鍛戒护涓嬪彂鎴愬姛锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort()); + MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>())); + ledThread.setLedMk(false); } } } -- Gitblit v1.9.1