From a41372ed5327e3fcd5f8ed02e657d7b0249bfffd Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期四, 07 十一月 2024 16:28:44 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java | 129 ++++++++++++++++++++++++------------------ 1 files changed, 74 insertions(+), 55 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 e0f0670..9e4f317 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 @@ -8,15 +8,18 @@ import com.zy.asrs.common.domain.param.SearchLocParam; import com.zy.asrs.common.utils.HttpHandler; import com.zy.asrs.framework.common.Cools; +import com.zy.asrs.framework.common.R; import com.zy.asrs.framework.common.SnowflakeIdWorker; import com.zy.asrs.wcs.core.domain.dto.MatDto; import com.zy.asrs.wcs.core.domain.dto.RedisMapDto; import com.zy.asrs.wcs.core.domain.dto.StaDto; +import com.zy.asrs.wcs.core.domain.param.CreateInTaskParam; 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.*; import com.zy.asrs.wcs.core.service.*; +import com.zy.asrs.wcs.core.utils.OpenUtils; import com.zy.asrs.wcs.core.utils.RedisUtil; import com.zy.asrs.wcs.core.utils.ShuttleDispatcher; import com.zy.asrs.wcs.core.utils.Utils; @@ -84,6 +87,10 @@ private BasLedService basLedService; @Autowired private DeviceBarcodeService deviceBarcodeService; + @Autowired + private ShuttleChargeStaService shuttleChargeStaService; + @Autowired + private OpenUtils openUtils; /** * 缁勬墭 @@ -158,6 +165,7 @@ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) + && staProtocol.isPakMk() ) { // 鑾峰彇鏉$爜鎵弿浠俊鎭� @@ -189,19 +197,18 @@ } } - //鑾峰彇鍏ュ簱浠诲姟绫诲瀷 - TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>() - .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.IN)) - .eq(TaskCtg::getStatus, 1)); - // 鍒ゆ柇閲嶅宸ヤ綔妗� Task task1 = taskService.getOne(new LambdaQueryWrapper<Task>() .eq(Task::getOriginSite, inSta.getStaNo()) - .eq(Task::getTaskCtg, taskCtg.getId()) - .in(Task::getTaskSts, 1, 2, 3) + .in(Task::getTaskSts, TaskStsType.NEW_INBOUND.sts, TaskStsType.ANALYZE_INBOUND.sts, TaskStsType.EXECUTE_INBOUND.sts) .eq(Task::getZpallet, barcode)); if (task1 != null) { News.error("宸ヤ綔妗e凡瀛樺湪,宸ヤ綔鍙�={}", task1.getTaskNo()); + if (staProtocol.getWorkNo().intValue() != Integer.parseInt(task1.getTaskNo())) { + devpThread.writeWorkSta(staProtocol.getSiteId(), Short.parseShort(task1.getTaskNo()), Short.parseShort(task1.getDestSite())); + devpThread.setPakMk(staProtocol.getSiteId(), false); + News.info("杈撻�佺嚎鍏ュ簱鍛戒护涓嬪彂锛屼换鍔℃暟鎹�={}", JSON.toJSON(task1)); + } continue; } @@ -218,7 +225,7 @@ param.setBarcode(barcode); param.setIoType(1); param.setSourceStaNo(inSta.getStaNo()); - param.setLocType1((short)1); + param.setLocType1(staProtocol.getLocType1().shortValue()); String response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath("/rpc/pakin/loc/v1") @@ -231,30 +238,28 @@ if (code.equals(200)) { StartupDto dto = jsonObject.getObject("data", StartupDto.class); - //鑾峰彇杈撻�佽矾寰� - BasConveyorPath conveyorPath = basConveyorPathService.getOne(new LambdaQueryWrapper<BasConveyorPath>() - .eq(BasConveyorPath::getTypeNo, TaskCtgType.IN.val()) - .eq(BasConveyorPath::getDeviceId, devp.getId()) - .eq(BasConveyorPath::getStnNo, staProtocol.getSiteId())); - if (conveyorPath == null) { - News.error("杈撻�佽矾寰勪笉瀛樺湪"); - }else { - devpThread.writeWorkSta(staProtocol.getSiteId(), dto.getWorkNo().shortValue(), conveyorPath.getDeviceStn().shortValue()); - devpThread.setPakMk(staProtocol.getSiteId(), false); - } + String wmsLocNo = dto.getLocNo(); + int row = Integer.parseInt(wmsLocNo.substring(0, 2)); + int bay = Integer.parseInt(wmsLocNo.substring(2, 5)); + int lev = Integer.parseInt(wmsLocNo.substring(5, 7)); + row -= 16; + String wcsLocNo = Utils.getLocNo(row, bay, lev); + + CreateInTaskParam createInTaskParam = new CreateInTaskParam(); + createInTaskParam.setTaskNo(String.valueOf(dto.getWorkNo())); + createInTaskParam.setDestLoc(wcsLocNo); + createInTaskParam.setOriginSite("31002"); + createInTaskParam.setDestSite("31004"); + createInTaskParam.setPriority(11); + createInTaskParam.setBarcode(barcode); + + R result = openUtils.createInTask(createInTaskParam); + News.info("鍒涘缓鍏ュ簱浠诲姟锛屼换鍔℃暟鎹�={}锛學MS鍝嶅簲={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject), JSON.toJSON(result)); }else { - if (ledThread != null) { - String errorMsg = jsonObject.getString("msg"); - if (!Cools.isEmpty(errorMsg)) { - ledThread.error(errorMsg); - ledThread.setLedMk(false); - } - } - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); + News.error("鍏ュ簱鐢宠澶辫触锛屼换鍔℃暟鎹�={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject)); } } catch (Exception e) { e.printStackTrace(); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } } } @@ -463,7 +468,7 @@ if (Cools.isEmpty(basConveyorSta.getTaskNo())){ continue; } - if (!basConveyorSta.getTaskNo().toString().equals(task.getWmsTaskNo())){ + if (!basConveyorSta.getTaskNo().toString().equals(task.getTaskNo())){ continue; } DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue()); @@ -544,7 +549,7 @@ // staProtocol1 = staProtocol1.clone(); } - // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� + // 鍒ゆ柇鍑哄簱绔欑姸鎬� if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { // if (!(staProtocol1.isAutoing() && !staProtocol1.isLoading() && staProtocol1.getWorkNo() == 0 && staProtocol1.isOutEnable())) { // continue; @@ -668,20 +673,19 @@ String currentLocNo = shuttleProtocol.getCurrentLocNo(); int lev = Utils.getLev(currentLocNo);//鑾峰彇灏忚溅妤煎眰 //鎼滅储灏忚溅褰撳墠妤煎眰鍏呯數妗� - ArrayList<Loc> allChargeLoc = new ArrayList<>(); - List<Loc> list1 = locService.list(new LambdaQueryWrapper<Loc>() - .eq(Loc::getLocSts, LocStsType.C.val()) - .eq(Loc::getStatus, 1) - .eq(Loc::getLev, lev)); + ArrayList<ShuttleChargeSta> allChargeLoc = new ArrayList<>(); + + List<ShuttleChargeSta> list1 = shuttleChargeStaService.list(new LambdaQueryWrapper<ShuttleChargeSta>() + .eq(ShuttleChargeSta::getDeviceLev, lev) + .eq(ShuttleChargeSta::getStatus, 1)); if (!list1.isEmpty()) { allChargeLoc.addAll(list1); } //鎼滅储鍏朵粬妤煎眰鍏呯數妗� - List<Loc> list2 = locService.list(new LambdaQueryWrapper<Loc>() - .eq(Loc::getLocSts, LocStsType.C.val()) - .eq(Loc::getStatus, 1) - .notIn(Loc::getLev, lev)); + List<ShuttleChargeSta> list2 = shuttleChargeStaService.list(new LambdaQueryWrapper<ShuttleChargeSta>() + .notIn(ShuttleChargeSta::getDeviceLev, lev) + .eq(ShuttleChargeSta::getStatus, 1)); if (!list2.isEmpty()) { allChargeLoc.addAll(list2); } @@ -692,24 +696,34 @@ } //閫夋嫨绌洪棽鍏呯數妗� - Loc chargeLoc = null; - for (Loc loc : allChargeLoc) { + ShuttleChargeSta chargeSta = null; + for (ShuttleChargeSta shuttleChargeSta : allChargeLoc) { // 鍒ゆ柇鍏呯數浣嶆槸鍚﹁鍗犵敤(杞﹁締浣嶇疆) - if (Utils.hasShuttleInLoc(loc.getLocNo(), device.getId())) { + if (Utils.hasShuttleInLoc(shuttleChargeSta.getDeviceLoc(), device.getId())) { continue; } // 鐩樼偣鍏呯數浣嶆槸鍚﹀瓨鍦ㄤ换鍔℃。 - List<Task> tasks = taskService.hasChargeInLoc(loc.getLocNo()); + List<Task> tasks = taskService.hasChargeInLoc(shuttleChargeSta.getDeviceLoc()); if (!tasks.isEmpty()) { continue; } - chargeLoc = loc; + Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>() + .eq(Loc::getLocNo, shuttleChargeSta.getDeviceLoc())); + if (loc == null) { + continue; + } + + if (!loc.getLocSts().equals(LocStsType.C.val())) { + continue;//搴撲綅涓嶆槸鍏呯數妗� + } + + chargeSta = shuttleChargeSta; break; } - if (chargeLoc == null) { + if (chargeSta == null) { continue;//鏈壘鍒板厖鐢垫々 } @@ -730,7 +744,7 @@ continue; } - String chargeLocNo = chargeLoc.getLocNo(); + String chargeLocNo = chargeSta.getDeviceLoc(); Task task = new Task(); task.setUuid(String.valueOf(snowflakeIdWorker.nextId())); task.setTaskNo(String.valueOf(Utils.getTaskNo("CHARGE"))); @@ -770,14 +784,6 @@ * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 婊$數鍚庡洖鍒板緟鏈轰綅 */ public synchronized void loopShuttleToStandbyCauseCharge() { - Integer enoughPower = 90; - Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>() - .eq(Dict::getFlag, "chargeMaxValue") - .eq(Dict::getStatus, 1)); - if (dict != null) { - enoughPower = Integer.parseInt(dict.getValue()); - } - //鑾峰彇杩佺Щ浠诲姟绫诲瀷 TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>() .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.MOVE)) @@ -823,8 +829,21 @@ continue; } + ShuttleChargeSta chargeSta = shuttleChargeStaService.getOne(new LambdaQueryWrapper<ShuttleChargeSta>() + .eq(ShuttleChargeSta::getDeviceLoc, chargeTask.getDestLoc()) + .eq(ShuttleChargeSta::getStatus, 1)); + if (chargeSta == null) { + continue;//鍏呯數妗╀笉瀛樺湪锛屽紓甯� + } + + String standbyLoc = chargeSta.getStandbyLoc(); + if (standbyLoc == null) { + continue;//閬胯浣嶇疆鏁版嵁涓嶅瓨鍦� + } + List<String> availableLoc = JSON.parseArray(standbyLoc, String.class); + //鑾峰彇閬胯浣嶇疆 - String standByLocNo = shuttleDispatcher.searchStandByLocNo(Integer.valueOf(device.getDeviceNo()), device.getHostId(), shuttleThread.getStatus().getCurrentLocNo()); + String standByLocNo = shuttleDispatcher.searchAvailableLocNo(Integer.valueOf(device.getDeviceNo()), device.getHostId(), shuttleThread.getStatus().getCurrentLocNo(), availableLoc); Task task = new Task(); task.setUuid(String.valueOf(snowflakeIdWorker.nextId())); -- Gitblit v1.9.1