From c13fe87d70e81d7dcb604f8f1227de8f313cbefc Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期三, 10 七月 2024 09:26:51 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java | 127 +++++++++++++++++++++++++++++++++--------- 1 files changed, 99 insertions(+), 28 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java index 465703b..38df235 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java @@ -15,10 +15,7 @@ import com.zy.asrs.wcs.core.entity.*; import com.zy.asrs.wcs.core.kernel.AnalyzeService; import com.zy.asrs.wcs.core.model.MapNode; -import com.zy.asrs.wcs.core.model.enums.DeviceCtgType; -import com.zy.asrs.wcs.core.model.enums.MotionStsType; -import com.zy.asrs.wcs.core.model.enums.TaskCtgType; -import com.zy.asrs.wcs.core.model.enums.TaskStsType; +import com.zy.asrs.wcs.core.model.enums.*; import com.zy.asrs.wcs.core.service.*; import com.zy.asrs.wcs.core.utils.RedisUtil; import com.zy.asrs.wcs.core.utils.ShuttleDispatcher; @@ -85,6 +82,8 @@ private BasConveyorPathService basConveyorPathService; @Autowired private BasLedService basLedService; + @Autowired + private DeviceBarcodeService deviceBarcodeService; /** * 缁勬墭 @@ -421,6 +420,40 @@ // 瑙f瀽鍏ュ簱宸ヤ綔妗� public synchronized void analyzeInBoundTask() { for (Task task : taskService.selectWaitAnalyzeInBoundTask()) { + BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>().eq(BasConveyorSta::getSiteNo, task.getDestSite())); + if (basConveyorSta == null) { + continue; + } + BasConveyor basConveyor = basConveyorService.getById(basConveyorSta.getConveyorId()); + if (basConveyor == null) { + continue; + } + DeviceBarcode deviceBarcode = deviceBarcodeService.getById(basConveyorSta.getBarcodeId()); + if (deviceBarcode == null) { + continue; + } + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, Integer.parseInt(deviceBarcode.getDeviceId())); + if (barcodeThread == null) { + continue; + } + if (!barcodeThread.getBarcode().equals(task.getZpallet())) { + continue; + } + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue()); + if (devpThread == null) { + continue; + } + StaProtocol staProtocol = devpThread.getStation().get(basConveyorSta.getSiteNo()); + if (staProtocol == null) { + continue; + } + if (!(staProtocol.isAutoing() + && staProtocol.isLoading() + && staProtocol.isInEnable())) { + continue; + } + + if (Cools.isEmpty(task.getShuttleNo())) { //鍒嗛厤灏忚溅 //鎼滅储绌洪棽杞� @@ -443,7 +476,7 @@ if (motionList.isEmpty()) { continue; } - motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo())); + motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId()); // 鏇存柊宸ヤ綔涓绘。 task.setTaskSts(TaskStsType.ANALYZE_INBOUND.sts); // 宸ヤ綔鐘舵�� @@ -469,21 +502,26 @@ continue; } - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, originStaObj.getConveyorId().intValue()); + BasConveyor basConveyor = basConveyorService.getById(originStaObj.getConveyorId()); + if(basConveyor == null) { + continue; + } + + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue()); StaProtocol staProtocol = devpThread.getStation().get(Integer.parseInt(task.getOriginSite()));//婧愮珯 - StaProtocol staProtocol1 = devpThread.getStation().get(Integer.parseInt(task.getDestSite()));//鐩爣绔� - if (staProtocol == null || staProtocol1 == null) { +// StaProtocol staProtocol1 = devpThread.getStation().get(Integer.parseInt(task.getDestSite()));//鐩爣绔� + if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); - staProtocol1 = staProtocol1.clone(); +// staProtocol1 = staProtocol1.clone(); } // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { - if (!(staProtocol1.isAutoing() && !staProtocol1.isLoading() && staProtocol1.getWorkNo() == 0 && staProtocol1.isOutEnable())) { - continue; - } +// if (!(staProtocol1.isAutoing() && !staProtocol1.isLoading() && staProtocol1.getWorkNo() == 0 && staProtocol1.isOutEnable())) { +// continue; +// } // //鍚屽簱浣嶇粍鏍¢獙 // List<String> outerLoc = Utils.getGroupOuterLoc(wrkMast.getSourceLocNo()); @@ -516,7 +554,7 @@ log.error("鍑哄簱 ===>> 鏆傛椂娌℃湁绌洪棽灏忚溅, 浠诲姟鍙�={}", task.getTaskNo()); continue; } - motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo())); + motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId()); // 鏇存柊宸ヤ綔涓绘。 task.setTaskSts(TaskStsType.ANALYZE_OUTBOUND.sts); // 宸ヤ綔鐘舵�� @@ -550,14 +588,50 @@ } // generate motion list - List<Motion> motionList = analyzeService.generateMotion(task); + List<Motion> motionList = analyzeService.generateShuttleMoveMotion(task); if (motionList.isEmpty()) { continue; } - motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo())); + motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId()); // 鏇存柊宸ヤ綔涓绘。 task.setTaskSts(TaskStsType.ANALYZE_MOVE.sts); // 宸ヤ綔鐘舵�� + task.setUpdateTime(new Date()); + if (!taskService.updateById(task)) { + News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo()); + } + } + } + + // 瑙f瀽灏忚溅杞借揣绉诲姩宸ヤ綔妗� + public synchronized void analyzeLadenMoveTask() { + for (Task task : taskService.selectWaitAnalyzeLadenMoveTask()) { + if (Cools.isEmpty(task.getShuttleNo())) { + //鍒嗛厤灏忚溅 + //鎼滅储绌洪棽杞� + ShuttleThread shuttleThread = shuttleDispatcher.searchIdleShuttle(task); + if (shuttleThread == null) { + News.info("{}浠诲姟鏈壘鍒扮┖闂茬┛姊溅", task.getTaskNo()); + continue; + } + + task.setShuttleNo(Integer.valueOf(shuttleThread.getDevice().getDeviceNo()));//淇濆瓨绌挎杞﹀彿 + task.setUpdateTime(new Date()); + if (!taskService.updateById(task)) { + News.info("{}浠诲姟鏇存柊绌挎杞﹀彿澶辫触", task.getTaskNo()); + } + continue; + } + + // generate motion list + List<Motion> motionList = analyzeService.generateShuttleLadenMoveMotion(task); + if (motionList.isEmpty()) { + continue; + } + motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId()); + + // 鏇存柊宸ヤ綔涓绘。 + task.setTaskSts(TaskStsType.ANALYZE_LADEN_MOVE.sts); // 宸ヤ綔鐘舵�� task.setUpdateTime(new Date()); if (!taskService.updateById(task)) { News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo()); @@ -569,14 +643,6 @@ * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數 */ public synchronized void loopShuttleCharge() { - // 鑾峰彇鍏呯數妗╁簱浣嶇被鍨� - LocCtg locCtg = locCtgService.getOne(new LambdaQueryWrapper<LocCtg>() - .eq(LocCtg::getFlag, "CHARGE") - .eq(LocCtg::getStatus, 1)); - if (locCtg == null) { - return; - } - //鑾峰彇鍏呯數浠诲姟绫诲瀷 TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>() .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.CHARGE)) @@ -613,7 +679,7 @@ //鎼滅储灏忚溅褰撳墠妤煎眰鍏呯數妗� ArrayList<Loc> allChargeLoc = new ArrayList<>(); List<Loc> list1 = locService.list(new LambdaQueryWrapper<Loc>() - .eq(Loc::getLocCtg, locCtg.getId()) + .eq(Loc::getLocSts, LocStsType.C.val()) .eq(Loc::getStatus, 1) .eq(Loc::getLev, lev)); if (!list1.isEmpty()) { @@ -622,7 +688,7 @@ //鎼滅储鍏朵粬妤煎眰鍏呯數妗� List<Loc> list2 = locService.list(new LambdaQueryWrapper<Loc>() - .eq(Loc::getLocCtg, locCtg.getId()) + .eq(Loc::getLocSts, LocStsType.C.val()) .eq(Loc::getStatus, 1) .notIn(Loc::getLev, lev)); if (!list2.isEmpty()) { @@ -697,7 +763,7 @@ News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", device.getDeviceNo()); continue; } - motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo())); + motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId()); task.setTaskSts(TaskStsType.ANALYZE_CHARGE.sts); if (!taskService.save(task)) { @@ -792,7 +858,7 @@ News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅杩佺Щ浠诲姟澶辫触!!!", device.getDeviceNo()); continue; } - motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo())); + motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId()); task.setTaskSts(TaskStsType.ANALYZE_MOVE.sts); @@ -942,8 +1008,13 @@ .eq(BasLed::getDeviceId, ledDevice.getId())); List<Integer> staArr = JSON.parseArray(led.getSta(), Integer.class); + BasConveyor basConveyor = basConveyorService.getById(led.getConveyorId()); + if (basConveyor == null) { + continue; + } + // 鑾峰彇杈撻�佺嚎plc绾跨▼ - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, led.getConveyorId().intValue()); + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue()); // 鍛戒护闆嗗悎 boolean reset = true; for (Integer staNo : staArr) { -- Gitblit v1.9.1