From 872e6dc49cf5a38ae5d9dfdbc0ce7a0186c9b4a5 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Wed, 11 Jun 2025 17:52:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CaseLabelController.java | 47 +++++++++++++ .../dto/caseLabel/GetCaseLabelDto.java | 19 +++++ .../extend/app/label/GetLabelsResponse.java | 55 +++++++++++++++ .../caseData/extend/app/label/Label.java | 69 +++++++++++++++++++ .../caseLabelRequest/getCaseLabel.java | 10 +++ 5 files changed, 200 insertions(+) create mode 100644 src/main/java/com/example/caseData/controller/CaseLabelController.java create mode 100644 src/main/java/com/example/caseData/dto/caseLabel/GetCaseLabelDto.java create mode 100644 src/main/java/com/example/caseData/extend/app/label/GetLabelsResponse.java create mode 100644 src/main/java/com/example/caseData/extend/app/label/Label.java create mode 100644 src/main/java/com/example/caseData/request/caseLabelRequest/getCaseLabel.java diff --git a/src/main/java/com/example/caseData/controller/CaseLabelController.java b/src/main/java/com/example/caseData/controller/CaseLabelController.java new file mode 100644 index 0000000..771510c --- /dev/null +++ b/src/main/java/com/example/caseData/controller/CaseLabelController.java @@ -0,0 +1,47 @@ +package com.example.caseData.controller; + +import com.example.caseData.common.Response; +import com.example.caseData.dto.caseLabel.GetCaseLabelDto; +import com.example.caseData.dto.user.UserDto; +import com.example.caseData.extend.app.Hospital.GetHospitalByUuidResponse; +import com.example.caseData.extend.app.Hospital.Hospital; +import com.example.caseData.extend.app.label.GetLabelsResponse; +import com.example.caseData.extend.app.label.Label; +import com.example.caseData.request.UserRequest.UserRequest; +import com.example.caseData.request.caseLabelRequest.getCaseLabel; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("/api") +public class CaseLabelController { + @Resource + private Label label; + + /** + * 获取疾病标签数据 + */ + @GetMapping("/case/label") + public Response> getCaseLabel(@Validated() @ModelAttribute getCaseLabel request) { + GetLabelsResponse result = label.getLabels(request.getPId()); + List datas = result.getData(); + + List labelDtoList = new ArrayList<>(); + for (GetLabelsResponse.GetLabelsData d : datas) { + GetCaseLabelDto dto = new GetCaseLabelDto(); + dto.setAppIden(d.getId()); + dto.setLabelName(d.getName()); + labelDtoList.add(dto); + } + + return Response.success(labelDtoList); + + } +} diff --git a/src/main/java/com/example/caseData/dto/caseLabel/GetCaseLabelDto.java b/src/main/java/com/example/caseData/dto/caseLabel/GetCaseLabelDto.java new file mode 100644 index 0000000..3a6130e --- /dev/null +++ b/src/main/java/com/example/caseData/dto/caseLabel/GetCaseLabelDto.java @@ -0,0 +1,19 @@ +package com.example.caseData.dto.caseLabel; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class GetCaseLabelDto { + /** + * app唯一标识 + */ + @JsonProperty("app_iden") + private String appIden; + + /** + * 标签名称 + */ + @JsonProperty("label_name") + private String labelName; +} diff --git a/src/main/java/com/example/caseData/extend/app/label/GetLabelsResponse.java b/src/main/java/com/example/caseData/extend/app/label/GetLabelsResponse.java new file mode 100644 index 0000000..4cf347f --- /dev/null +++ b/src/main/java/com/example/caseData/extend/app/label/GetLabelsResponse.java @@ -0,0 +1,55 @@ +package com.example.caseData.extend.app.label; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class GetLabelsResponse +{ + /** 接口调用状态。200:正常;其它值:调用出错 */ + private int code; + + /** 结果说明。如果接口调用出错,那么返回错误描述。成功则返回 ok */ + private String msg; + + /** 接口返回的用户信息数据 */ + private List data; + + /** 接口是否调用成功 */ + private boolean success; + + /** 错误信息或提示信息 */ + private String message; + + + /** + * 根据统一标签列表 - 详细数据 + */ + @Data + public static class GetLabelsData { + + /** + * 标签名称 + */ + private String name; + + /** + * id + */ + private String id; + + /** + * 子标签数量 + */ + @JsonProperty("children_size") + private String childrenSize; + + /** + * p_id + */ + @JsonProperty("p_id") + private String pId; + } +} diff --git a/src/main/java/com/example/caseData/extend/app/label/Label.java b/src/main/java/com/example/caseData/extend/app/label/Label.java new file mode 100644 index 0000000..e32d8b4 --- /dev/null +++ b/src/main/java/com/example/caseData/extend/app/label/Label.java @@ -0,0 +1,69 @@ +package com.example.caseData.extend.app.label; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.json.JSONUtil; +import com.example.caseData.config.AppConfig; +import com.example.caseData.exception.BusinessException; +import com.example.caseData.extend.app.Base; +import com.example.caseData.extend.app.Hospital.GetHospitalByUuidResponse; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +@Slf4j +@Component +public class Label extends Base { + @Resource + private AppConfig appConfig; + + // 根据医院唯一标识获取医院数据 + public GetLabelsResponse getLabels(String p_id) throws BusinessException { + String timestamp = String.valueOf(System.currentTimeMillis() / 1000); + + // 处理参数 + Map requestData = new HashMap<>(); + requestData.put("p_id", p_id); + requestData.put("platform", appConfig.getPlatform()); + requestData.put("timestamp", timestamp); + + // 生成签名 + String sign = genSignature(requestData,appConfig.getSecretKey()); + + String url = appConfig.getApiUrl() + "/expert-api/getLabels"; + String jsonBody = JSONUtil.toJsonStr(requestData); + log.info("获取app数据参数:{}",jsonBody); + + try(HttpResponse response = HttpRequest.post(url) + .header("Content-Type", "application/json") + .header("sign", sign) + .body(jsonBody) + .execute()){ + + if (response.getStatus() != 200) { + throw new BusinessException("失败"); + } + + // 反序列化 JSON + GetLabelsResponse result = JSONUtil.toBean(response.body(), GetLabelsResponse.class); + log.info("获取app数据返回:{}",result); + if (result.getCode() != 200){ + if (!Objects.equals(result.getMsg(), "")){ + throw new BusinessException(result.getMsg()); + }else{ + throw new BusinessException("失败"); + } + } + + if (result.getData() == null){ + throw new BusinessException("失败"); + } + + return result; + } + } +} diff --git a/src/main/java/com/example/caseData/request/caseLabelRequest/getCaseLabel.java b/src/main/java/com/example/caseData/request/caseLabelRequest/getCaseLabel.java new file mode 100644 index 0000000..5b3c240 --- /dev/null +++ b/src/main/java/com/example/caseData/request/caseLabelRequest/getCaseLabel.java @@ -0,0 +1,10 @@ +package com.example.caseData.request.caseLabelRequest; + +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +@Data +public class getCaseLabel { + @NotEmpty(message = "参数错误") + private String pId = "0"; +}