From 3a49654f51096d4f9f95f4a5e8198e168e38a0c5 Mon Sep 17 00:00:00 2001 From: zhang <zc857179121@qq.com> Date: 星期六, 16 八月 2025 08:34:13 +0800 Subject: [PATCH] 1 --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 83 ++++++++++++++++++++++++++++++++++------- 1 files changed, 68 insertions(+), 15 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java index 451bc83..f3acf60 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java @@ -1,6 +1,7 @@ package com.zy.acs.manager.core.service; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.acs.common.domain.AgvAction; import com.zy.acs.common.domain.AgvActionItem; @@ -26,6 +27,7 @@ import com.zy.acs.manager.core.domain.Lane; import com.zy.acs.manager.core.domain.TaskPosDto; import com.zy.acs.manager.core.service.astart.MapDataDispatcher; +import com.zy.acs.manager.core.utils.HttpHandler; import com.zy.acs.manager.manager.controller.param.OpenBusSubmitParam; import com.zy.acs.manager.manager.entity.*; import com.zy.acs.manager.manager.enums.*; @@ -40,7 +42,9 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import java.io.IOException; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -182,8 +186,10 @@ } destSta = staService.getById(task.getDestSta()); - if (locStaStatusCheck && !destSta.getStaSts().equals(StaStsType.IDLE.val())) { - throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status"); + if (destSta.getStaTypeIsCheck() != 1) { + if (locStaStatusCheck && !destSta.getStaSts().equals(StaStsType.IDLE.val())) { + throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status"); + } } destSta.setStaSts(StaStsType.READY_RELEASE.val()); destSta.setUpdateTime(now); @@ -193,8 +199,10 @@ break; case STA_TO_LOC: oriSta = staService.getById(task.getOriSta()); - if (locStaStatusCheck && !oriSta.getStaSts().equals(StaStsType.STOCK.val())) { - throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status"); + if (oriSta.getStaTypeIsCheck() != 1) { + if (locStaStatusCheck && !oriSta.getStaSts().equals(StaStsType.STOCK.val())) { + throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status"); + } } oriSta.setStaSts(StaStsType.READY_TAKE.val()); oriSta.setUpdateTime(now); @@ -214,8 +222,10 @@ break; case STA_TO_STA: oriSta = staService.getById(task.getOriSta()); - if (locStaStatusCheck && !oriSta.getStaSts().equals(StaStsType.STOCK.val())) { - throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status"); + if (oriSta.getStaTypeIsCheck() != 1) { + if (locStaStatusCheck && !oriSta.getStaSts().equals(StaStsType.STOCK.val())) { + throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status"); + } } oriSta.setStaSts(StaStsType.READY_TAKE.val()); oriSta.setUpdateTime(now); @@ -224,8 +234,10 @@ } destSta = staService.getById(task.getDestSta()); - if (locStaStatusCheck && !destSta.getStaSts().equals(StaStsType.IDLE.val())) { - throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status"); + if (destSta.getStaTypeIsCheck() != 1) { + if (locStaStatusCheck && !destSta.getStaSts().equals(StaStsType.IDLE.val())) { + throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status"); + } } destSta.setStaSts(StaStsType.READY_RELEASE.val()); destSta.setUpdateTime(now); @@ -279,7 +291,7 @@ if (!taskService.updateById(task)) { throw new BusinessException("seqNum: " + task.getSeqNum() + " failed to update"); } - report(task,null, TaskReportStsType.START); + report(task, null, TaskReportStsType.START); } } catch (Exception e) { log.error("mainService.infuseAgvForTask", e); @@ -1017,7 +1029,9 @@ ActionTypeType.ReadyTakeFromConveyorSta.val(), // 鍔ㄤ綔绫诲瀷 actionPrepareSts, // 鍔ㄤ綔杩涘害 agvId, // AGV - now // 宸ヤ綔鏃堕棿 + now, // 宸ヤ綔鏃堕棿 + oriSta.getStaTypeIsCheck() == 1 ? 1 : 0, + oriSta.getStaNo() )); // 鏆傚瓨鐐规斁璐� assert backpackType != null; @@ -1060,7 +1074,7 @@ ActionTypeType.TurnCorner.val(), // 鍔ㄤ綔绫诲瀷 actionPrepareSts, // 鍔ㄤ綔杩涘害 agvId, // AGV - now // 宸ヤ綔鏃堕棿 + now // 宸ヤ綔鏃堕棿 )); lastDirection = destStaWorkDirection; } @@ -1079,7 +1093,9 @@ ActionTypeType.ReadyTakeFromAgvSite.val(), // 鍔ㄤ綔绫诲瀷 actionPrepareSts, // 鍔ㄤ綔杩涘害 agvId, // AGV - now // 宸ヤ綔鏃堕棿 + now, // 宸ヤ綔鏃堕棿 + destSta.getStaTypeIsCheck() == 1 ? 2 : 0, + destSta.getStaNo() )); // 璁$畻璐у弶宸ヤ綔鏂瑰悜 staWorkDirection = mapService.calculateAgvWorkDirectionByStation(destStaWorkDirection, lastDirection); @@ -1264,7 +1280,7 @@ public void publishAction(String actionGroupId) { try { Date now = new Date(); - + boolean flag = true; // action List<Action> actionList = actionService.list(new LambdaQueryWrapper<Action>() .eq(Action::getGroupId, actionGroupId).eq(Action::getActionSts, ActionStsType.PREPARE.val()) @@ -1395,9 +1411,14 @@ default: break; } - + if (!Cools.isEmpty(action.getAskType()) && (action.getAskType() == 1 || action.getAskType() == 2)) { + flag = askSta(action.getAskType(), action.getAskSta()); + } } - + if (!flag) { + log.error("浠诲姟缁� [{}] 鍔ㄤ綔鎸囦护涓嬪彂澶辫触 ,鍚戣緭閫佺嚎璇㈤棶鎶ラ敊锛侊紒锛�", actionGroupId); + throw new CoolException("浠诲姟缁� [{" + actionGroupId + "}] 鍔ㄤ綔鎸囦护涓嬪彂澶辫触 锛侊紒锛�"); + } BaseResult<?> result = agvCmdService.executeAgvActionCmd(agvAction); if (result.success()) { log.info("浠诲姟缁� [{}] 鍔ㄤ綔鎸囦护宸蹭笅鍙� ===>> 鎸囦护鏁伴噺锛歿}", actionGroupId, actionList.size()); @@ -1666,4 +1687,36 @@ log.info("Task [{}] 鐘舵�佽褰曟彃鍏ユ暟鎹簱 ==========>> ", task.getSeqNum()); } } + + private boolean askSta(Integer askType, String askSta) { + log.info("鏉ヨ闂緭閫佺嚎浜嗭紝{}锛寋}", askType, askSta); + String wmsUrl = configService.getVal("WMS_URL", String.class); + String wmsPath = configService.getVal("WMS_STA", String.class); + if (Cools.isEmpty(wmsPath) || Cools.isEmpty(wmsUrl)) { + return true; + } + Integer time = configService.getVal("TIMEOUT", Integer.class, 5); + //Integer times = configService.getVal("REPORT_TIMES", Integer.class, 2); + Map<String, Object> data = new HashMap<>(); + data.put("askType", askType); + data.put("askSta", askSta); + String response = null; + try { + response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath(wmsPath) + .setTimeout(time, TimeUnit.SECONDS) + .setJson(JSON.toJSONString(data)) + .build() + .doPost(); + log.info("杩斿洖鍙傛暟锛歿}", response); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + return true; + } + } catch (IOException e) { + log.info("鎶ラ敊浜嗭紝{}", e); + } + return false; + } } -- Gitblit v1.9.1