From dc4a188afcf5b01615f4e3982a00d8a97f1c1369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E7=86=9F=E5=90=B4=E5=BD=A6=E7=A5=96?= Date: Fri, 28 Aug 2026 18:01:50 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=A7=BB=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autoWareHourceHaian/HAIAN_AI_CONTEXT.md | 3 +- .../HaiAnGroundLocationQueryRequest.java | 5 ++- .../service/HaiAnPdaAutoWarehouseService.java | 2 +- .../HaiAnPdaAutoWarehouseServiceImpl.java | 41 +++++++------------ 4 files changed, 20 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/gaotao/modules/autoWareHourceHaian/HAIAN_AI_CONTEXT.md b/src/main/java/com/gaotao/modules/autoWareHourceHaian/HAIAN_AI_CONTEXT.md index 89099620..55f0f4a5 100644 --- a/src/main/java/com/gaotao/modules/autoWareHourceHaian/HAIAN_AI_CONTEXT.md +++ b/src/main/java/com/gaotao/modules/autoWareHourceHaian/HAIAN_AI_CONTEXT.md @@ -48,6 +48,7 @@ - `haianPalletPacking.vue` 的“调用空托盘”流程中,只有在用户选定区域后,站点下拉才允许调用立库接口获取;禁止未选区域直接拉站点 - rqrq - `haianPalletPacking.vue` 的“调用空托盘”弹窗初始化时,只允许调用“托盘类型列表接口”获取全部可选类型,禁止通过 `getPalletInfo` 按单栈板查询替代 - rqrq - 站点来源:先取 `haian_area.wcs_area_code`,再调用立库接口获取站点清单 - rqrq +- 站点清单接口固定使用 `getGroundLocationList`(`/api/wms/query-ground-location-list`):第一个参数传 `haian_area.wcs_area_code`,第二个参数 `status` 当前固定传 `IDLE`(只拉空闲点位) - rqrq - 立库取货(`/haiAnWcsIntegration/callOutToStation`)、Call料(`/haiAnWcsIntegration/callOutToOutboundPort`)与调用空托盘(`/haiAnWcsIntegration/callEmptyPalletToStation`)下发WCS时,`targetArea` 必须使用 `haian_area.wcs_area_code`,禁止直传业务区域 `area_id` - rqrq - 以上三条链路中,前端传入的 `targetArea/areaId` 语义是“业务区域”(来自 `haian_area.area_id` 或固定区域文案),后端必须先查 `haian_area` 完成映射再调用下级系统 - rqrq - 海安任务主表 `haian_wms_order_task.to_area` 继续存业务区域 `area_id`,仅WCS请求报文中的 `targetArea` 使用 `wcs_area_code`,避免业务查询与接口编码混淆 - rqrq @@ -111,7 +112,7 @@ - 当 `haianWarehouse=false` 时,查询类接口(如查询站点)必须返回静态数据,静态结构需遵循既定契约(`resCode/resMsg/locations[]`) - rqrq - 当 `haianWarehouse=false` 时,非查询类接口(如组盘对送、调用空托盘)必须短路通过,不允许调用外部立库接口 - rqrq - 当 `haianWarehouse=true` 时,接口按既定立库调用链路执行,但仍保持现有前后端协议不变 - rqrq -- 当 `haianWarehouse=true` 时,查询类接口至少包含:站点清单(`query-location-list`)与分拣清单(`query-auto-sorting-info`)真实调用;若外部失败需按当前协议回退可识别的静态结果,禁止前端无响应 - rqrq +- 当 `haianWarehouse=true` 时,查询类接口至少包含:站点清单(`query-ground-location-list`,参数 `areaCode + status=IDLE`)与分拣清单(`query-auto-sorting-info`)真实调用;若外部失败需按当前协议回退可识别的静态结果,禁止前端无响应 - rqrq - 静态模式返回建议包含可识别标记(如 `mockMode=true` 或明确 `msg`),防止测试环境结果与真实联机混淆 - rqrq ## 11. 维护要求 diff --git a/src/main/java/com/gaotao/modules/autoWareHourceHaian/api/entity/HaiAnGroundLocationQueryRequest.java b/src/main/java/com/gaotao/modules/autoWareHourceHaian/api/entity/HaiAnGroundLocationQueryRequest.java index 06d06b53..78d5be41 100644 --- a/src/main/java/com/gaotao/modules/autoWareHourceHaian/api/entity/HaiAnGroundLocationQueryRequest.java +++ b/src/main/java/com/gaotao/modules/autoWareHourceHaian/api/entity/HaiAnGroundLocationQueryRequest.java @@ -15,8 +15,9 @@ public class HaiAnGroundLocationQueryRequest { private String areaCode; /** - * 点位状态过滤条件(可选) - rqrq + * 点位状态过滤条件:LOADED(已装载)/MOVING(运输中)/EMPTY(空载)/IDLE(空闲) - rqrq + * 当前海安PDA区域站点清单固定传IDLE,仅拉取空闲点位避免前端再做二次过滤 - rqrq */ - private String locationStatus; + private String status; } diff --git a/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/HaiAnPdaAutoWarehouseService.java b/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/HaiAnPdaAutoWarehouseService.java index a17e4534..03f55b91 100644 --- a/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/HaiAnPdaAutoWarehouseService.java +++ b/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/HaiAnPdaAutoWarehouseService.java @@ -149,7 +149,7 @@ public interface HaiAnPdaAutoWarehouseService { /** * @author rqrq - * @Description 通过haian_area.wcs_area_code获取站点清单并解析locationCode/status - rqrq + * @Description 通过haian_area.wcs_area_code调用getGroundLocationList(status=IDLE)获取空闲站点清单并解析locationCode/status - rqrq */ HaiAnStationsByAreaResult getStationsByArea(HaiAnPdaRequest request); diff --git a/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnPdaAutoWarehouseServiceImpl.java b/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnPdaAutoWarehouseServiceImpl.java index 71fe1ca4..323dd9cb 100644 --- a/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnPdaAutoWarehouseServiceImpl.java +++ b/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnPdaAutoWarehouseServiceImpl.java @@ -6,6 +6,7 @@ import com.gaotao.common.utils.HttpUtils; import com.gaotao.modules.autoWareHourceHaian.api.entity.HaiAnCallPalletRequest; import com.gaotao.modules.autoWareHourceHaian.api.entity.HaiAnCheckInventoryExistsRequest; import com.gaotao.modules.autoWareHourceHaian.api.entity.HaiAnDirectMaterialCallRequest; +import com.gaotao.modules.autoWareHourceHaian.api.entity.HaiAnGroundLocationQueryRequest; import com.gaotao.modules.autoWareHourceHaian.api.entity.HaiAnGroundLocationStatusUpdateRequest; import com.gaotao.modules.autoWareHourceHaian.api.entity.HaiAnOutsideTransferTaskRequest; import com.gaotao.modules.autoWareHourceHaian.api.entity.HaiAnSpecialPalletTask; @@ -119,6 +120,7 @@ public class HaiAnPdaAutoWarehouseServiceImpl implements HaiAnPdaAutoWarehouseSe private static final String WOT_ACTION_TYPE_PALLET_OUT = "栈板出库"; private static final Integer GROUND_LOCATION_STATUS_TYPE_BIND = 1; private static final Integer GROUND_LOCATION_STATUS_TYPE_REMOVE = 2; + private static final String GROUND_LOCATION_IDLE = "IDLE"; // 入库口1固定站点号(留空待业务确认后手工填写)- rqrq private static final String INBOUND_PORT_1_STATION_CODE = "入库口1"; // 入库口2固定站点号(留空待业务确认后手工填写)- rqrq @@ -310,15 +312,13 @@ public class HaiAnPdaAutoWarehouseServiceImpl implements HaiAnPdaAutoWarehouseSe result.setRows(rows); result.setMsg("OK"); - // TODO 外部真实接口路径待联调确认,此处先按约定结构解析并保留容错回退 - rqrq - String requestBody = "\"" + wcsAreaCode + "\""; - String requestUrl = (haianWcsUrl == null ? "" : haianWcsUrl) + "query-location-list"; - long startTime = System.currentTimeMillis(); - String response = null; - String logStatus = "SUCCESS"; - String logErrorMessage = null; + // 区域站点清单统一走getGroundLocationList:第一个参数传wcs_area_code,第二个状态参数固定IDLE - rqrq + HaiAnGroundLocationQueryRequest queryRequest = new HaiAnGroundLocationQueryRequest(); + queryRequest.setAreaCode(wcsAreaCode); + queryRequest.setStatus(GROUND_LOCATION_IDLE); + try { - response = HttpUtils.doPost(requestUrl, requestBody, null); + String response = haiAnWcsApiService.getGroundLocationList(queryRequest); ObjectMapper mapper = new ObjectMapper(); JsonNode rootNode = mapper.readTree(response); int resCode = rootNode.path("resCode").asInt(); @@ -334,6 +334,10 @@ public class HaiAnPdaAutoWarehouseServiceImpl implements HaiAnPdaAutoWarehouseSe if (!StringUtils.hasText(locationCode)) { continue; } + // 双保险:即使下级系统未严格按status过滤返回,也只透出空闲点位给当前海安PDA流程 - rqrq + if (!GROUND_LOCATION_IDLE.equalsIgnoreCase(status)) { + continue; + } HaiAnStationRow row = new HaiAnStationRow(); row.setStationId(locationCode); row.setStationCode(locationCode); @@ -346,17 +350,15 @@ public class HaiAnPdaAutoWarehouseServiceImpl implements HaiAnPdaAutoWarehouseSe result.setRows(rows); return result; } catch (Exception ex) { - logStatus = "ERROR"; - logErrorMessage = ex.getMessage(); // 海安接口失败同步落sys_error_log,保留请求参数和异常信息便于排查 - rqrq haiAnSysErrorLogService.haiAnLogInterface( site, "海安立库", "查询站点清单", "WCS", - "query-location-list", + "query-ground-location-list", wcsAreaCode, - requestBody, + "areaCode=" + wcsAreaCode + ", status=" + GROUND_LOCATION_IDLE, ex.getMessage() ); // 真实调用失败时回退静态数据,避免页面在联调期完全不可用 - rqrq @@ -364,21 +366,6 @@ public class HaiAnPdaAutoWarehouseServiceImpl implements HaiAnPdaAutoWarehouseSe result.setRows(buildMockStationRows()); result.setMsg("真实站点接口调用失败,已回退静态清单: " + ex.getMessage()); return result; - } finally { - long executionTime = System.currentTimeMillis() - startTime; - // 海安接口调用日志统一写入haian_interface_call_log,失败也记录 - rqrq - haiAnInterfaceCallLogService.haiAnLogCompleteCall( - "WCS", - "query-location-list", - requestBody, - response, - logStatus, - logErrorMessage, - executionTime, - site, - wcsAreaCode, - "海安区域站点清单查询" - ); } }