| | |
| | | } |
| | | |
| | | /** |
| | | * 反向字段映射转换(target → source) |
| | | * 用于上报场景:WMS回传字段名还原为ERP字段名 |
| | | * |
| | | * @param appId 应用ID |
| | | * @param funcId 功能ID |
| | | * @param params 经过正向映射的参数 |
| | | * @return 反向映射后的参数 |
| | | */ |
| | | public static JSONObject reverseApiMaps(String appId, String funcId, JSONObject params) { |
| | | if (params == null || params.isEmpty()) { |
| | | return params; |
| | | } |
| | | |
| | | List<ApiMap> maps = ATTRIBUTE_MAPS.stream() |
| | | .filter(map -> map.getAppId().equals(appId) && map.getFuncId().equals(funcId)) |
| | | .toList(); |
| | | |
| | | if (maps.isEmpty()) { |
| | | log.debug("未找到映射配置 - appId:{}, funcId:{}", appId, funcId); |
| | | return params; |
| | | } |
| | | |
| | | // 反向映射:targetAttribute → sourceAttribute |
| | | Map<String, String> reverseRules = new HashMap<>(); |
| | | for (ApiMap map : maps) { |
| | | String sourceAttribute = map.getSourceAttribute(); |
| | | String targetAttribute = map.getTargetAttribute(); |
| | | if (!StringUtils.isBlank(sourceAttribute) && !StringUtils.isBlank(targetAttribute)) { |
| | | reverseRules.put(targetAttribute, sourceAttribute); |
| | | } |
| | | } |
| | | |
| | | JSONObject result = replaceKeysRecursive(params, reverseRules); |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 递归替换JSON所有层级的属性名称 |
| | | * 支持嵌套对象和数组的深度遍历 |
| | | * |