From 0195e124097d3714c62d459017c56538c16632ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Thu, 25 Dec 2025 13:19:13 +0800 Subject: [PATCH] led --- .../led/controller/LedApiController.java | 57 +++++++++++++++++-- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gxwebsoft/led/controller/LedApiController.java b/src/main/java/com/gxwebsoft/led/controller/LedApiController.java index 0335e5e..70310c4 100644 --- a/src/main/java/com/gxwebsoft/led/controller/LedApiController.java +++ b/src/main/java/com/gxwebsoft/led/controller/LedApiController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.Optional; @Tag(name = "LED-排班接口") @RestController @@ -25,13 +26,61 @@ public class LedApiController extends BaseController { @Operation(summary = "查询一周内停替诊医生排班信息(10017)") @PostMapping("/stop-replace") - public ApiResult searchStopAndReplace(@RequestBody BmeStopReplaceParam param) { - return success(ledScheduleService.searchStopAndReplace(param)); + public ApiResult searchStopAndReplace(@RequestBody BmeStopReplaceParam param) { + return success(extractScheduleData(ledScheduleService.searchStopAndReplace(param))); } @Operation(summary = "查询医生排班信息当日剩余号源(10018)") @PostMapping("/number-sources") - public ApiResult searchNumberSources(@RequestBody BmeNumberSourcesParam param) { - return success(ledScheduleService.searchNumberSources(param)); + public ApiResult searchNumberSources(@RequestBody BmeNumberSourcesParam param) { + return success(extractScheduleData(ledScheduleService.searchNumberSources(param))); + } + + /** + * 将中台层层嵌套的响应简化为单层:tid、resultCode/resultMsg、data(主要数据)。 + */ + private JSONObject flattenScheduleResponse(JSONObject raw) { + JSONObject current = Optional.ofNullable(raw).orElseGet(JSONObject::new); + String tid = current.getString("tid"); + + // 下钻 data 层级 + while (current.getJSONObject("data") != null) { + current = current.getJSONObject("data"); + if (current.containsKey("tid")) { + tid = current.getString("tid"); + } + } + + JSONObject result = new JSONObject(); + result.put("tid", tid); + result.put("resultCode", firstNonEmpty(current.getString("resultCode"), current.getString("code"))); + result.put("resultMsg", firstNonEmpty(current.getString("resultMsg"), current.getString("msg"))); + + // 主体数据:优先 dataList.data,其次 data + if (current.containsKey("dataList") && current.getJSONObject("dataList") != null) { + result.put("data", current.getJSONObject("dataList").get("data")); + } else if (current.containsKey("data")) { + result.put("data", current.get("data")); + } else { + result.put("data", current); + } + return result; + } + + /** + * 直接返回核心数据字段(即扁平化后的 result.data)。 + */ + private Object extractScheduleData(JSONObject raw) { + JSONObject flattened = flattenScheduleResponse(raw); + return flattened.get("data"); + } + + private String firstNonEmpty(String... values) { + for (String v : values) { + if (v != null && !v.isEmpty()) { + return v; + } + } + return ""; } }