diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/controller/LargeScreenNewController.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/controller/LargeScreenNewController.java index a5d325e..34da6a3 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/controller/LargeScreenNewController.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/controller/LargeScreenNewController.java @@ -308,6 +308,14 @@ public class LargeScreenNewController { return Result.ok(largeScreenDataService.isLiaisonUser()); } + /** + * 一人一案(移动端) + */ + @GetMapping("onePersonCase") + public Result onePersonCase(){ + return Result.ok(largeScreenDataService.onePersonCase()); + } + /** * 或者安眼平台访问token diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/entity/vo/OnePersonCaseVO.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/entity/vo/OnePersonCaseVO.java new file mode 100644 index 0000000..02ea920 --- /dev/null +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/entity/vo/OnePersonCaseVO.java @@ -0,0 +1,279 @@ +package com.renkang.emergency.largeScreen.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; +import java.time.Period; +import java.time.format.DateTimeFormatter; + +/** + * 一人一案详情出参 + * 数据来源:安眼库 AYGC_YWK.EMP_PERSON_FILE 及关联表 + */ +@Data +public class OnePersonCaseVO { + + @Schema(title = "ID") + private String id; + + @Schema(title = "员工ID") + private String empId; + + @Schema(title = "员工姓名") + private String name; + + @Schema(title = "年龄") + private Integer age; + + @Schema(title = "性别") + private String sexCode; + + @Schema(title = "身份证号") + private String idNo; + + @Schema(title = "手机号") + private String phone; + + @Schema(title = "关爱状态") + private String careStatus; + + @Schema(title = "工作单位") + private String workUnit ; + + @Schema(title = "单位ID") + private String workUnitId; + + @Schema(title = "创建时间") + private String createDate; + + @Schema(title = "修改时间") + private String updateDate; + + @Schema(title = "数据级别") + private Integer dataLevel; + + @Schema(title = "负面清单") + private String negativeList; + + @Schema(title = "一人一案") + private String caseInfo; + + @Schema(title = "肥胖人员标识(1,是,2-否)") + private Integer flagFat; + + @Schema(title = "BMI") + private Double bmi; + + @Schema(title = "身高") + private Double height; + + @Schema(title = "体重") + private Double weight; + + @Schema(title = "体重管理目标") + private Double targetWeight; + + @Schema(title = "目标BMI") + private Double targetBmi; + + @Schema(title = "目前BMI监测值") + private String bmiCurrent; + + @Schema(title = "最新腰围") + private String waistNew; + + @Schema(title = "最新体脂率") + private String bodyFatPercentNew; + + @Schema(title = "体重风险类型") + private String weightRiskType; + + @Schema(title = "高血压(0-否,1-是)") + private Integer hypertension; + + @Schema(title = "收缩压均值") + private String systolicPressureAvg; + + @Schema(title = "收缩压控制目标") + private String systolicPressureTarget; + + @Schema(title = "目前收缩压检测值") + private String systolicPressureCurrent; + + @Schema(title = "舒张压平均值") + private String diastolicPressureAvg; + + @Schema(title = "舒张压控制目标值") + private String diastolicPressureTarget; + + @Schema(title = "舒张压当前检测值") + private String diastolicPressureCurrent; + + @Schema(title = "糖尿病标识(0-否,1-是)") + private Integer diabetes; + + @Schema(title = "空腹葡萄糖(GLU)") + private String glu; + + @Schema(title = "血糖控制目标值") + private String bloodSugarTarget; + + @Schema(title = "目前血糖监测值:") + private String bloodSugarCurrent; + + @Schema(title = "低密度脂蛋白") + private String ldl; + + @Schema(title = "低密度脂蛋白目标控制值") + private String ldlTarget; + + @Schema(title = "低密度脂蛋白当前检测值") + private String ldlCurrent; + + @Schema(title = "总胆固醇") + private String tc; + + @Schema(title = "总胆固醇目标控制值") + private String tcTarget; + + @Schema(title = "总胆固醇目前监测值") + private String tcCurrent; + + @Schema(title = "甘油三酯") + private String tg; + + @Schema(title = "甘油三酯目标控制值") + private String tgTarget; + + @Schema(title = "甘油三酯当前监测值") + private String tgCurrent; + + @Schema(title = "尿酸") + private String uricAcid; + + @Schema(title = "尿酸目标控制值") + private String uricAcidTarget; + + @Schema(title = "尿酸当前监测值") + private String uricAcidCurrent; + + @Schema(title = "同型半胱氨酸") + private String homocysteine; + + @Schema(title = "同型半胱氨酸目标控制值") + private String homocysteineTarget; + + @Schema(title = "同型半胱氨酸当前监测值") + private String homocysteineCurrent; + + @Schema(title = "血钾") + private String bloodK; + + @Schema(title = "冠心病") + private String chd; + + @Schema(title = "脑血管") + private String cvd; + + @Schema(title = "心房颤动") + private String af; + + @Schema(title = "恶性肿瘤") + private String ca; + + @Schema(title = "检测指标列表") + private String indicatorListStr; + + @Schema(title = "导入指标列表") + private String indicatorListStrOrigin; + + @Schema(title = "风险等级") + private String riskLevel; + + @Schema(title = "年度") + private String year; + + @Schema(title = "筛查项目汇总") + private String screeningProjects; + + @Schema(title = "关爱联络员姓名") + private String careLiaisonName; + + @Schema(title = "治疗方案") + private String treatPlan; + + @Schema(title = "治疗方案反馈") + private String treatPlanResponse; + + @Schema(title = "饮食建议") + private String dietSuggestion; + + @Schema(title = "饮食建议反馈") + private String dietSuggestionResponse; + + @Schema(title = "运动指导") + private String sportGuide; + + @Schema(title = "运动指导反馈") + private String sportGuideResponse; + + @Schema(title = "日常生活管理") + private String lifeManage; + + @Schema(title = "日常生活管理反馈") + private String lifeManageResponse; + + @Schema(title = "小屋意见") + private String cabinOpinion; + + @Schema(title = "小屋意见时间") + private String cabinOpinionTime; + + @Schema(title = "小屋意见员工姓名") + private String cabinOpinionUserName; + + @Schema(title = "专家意见") + private String expertOpinion; + + @Schema(title = "专家意见时间") + private String expertOpinionTime; + + @Schema(title = "专家意见员工姓名") + private String expertOpinionUserName; + + /** + * BMI 保留一位小数 + */ + public Double getBmi() { + if (bmi == null) { + return null; + } + return Math.round(bmi * 10) / 10.0; + } + + /** + * 年龄:优先取库中值,为空时根据身份证号计算 + */ + public Integer getAge() { + if (age != null) { + return age; + } + if (idNo == null || idNo.length() != 18) { + return null; // 身份证号无效时返回null + } + try { + // 截取出生日期字符串 + String birthDateStr = idNo.substring(6, 14); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + LocalDate birthDate = LocalDate.parse(birthDateStr, formatter); + LocalDate now = LocalDate.now(); + if (birthDate.isAfter(now)) { + return null; // 出生日期在未来,返回null + } + return Period.between(birthDate, now).getYears(); + } catch (Exception e) { + return null; // 解析异常返回null + } + } +} diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/mapper/LargeScreenDataMapper.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/mapper/LargeScreenDataMapper.java index b134f0d..bb0737f 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/mapper/LargeScreenDataMapper.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/mapper/LargeScreenDataMapper.java @@ -2,6 +2,7 @@ package com.renkang.emergency.largeScreen.mapper; import com.github.yulichang.base.MPJBaseMapper; import com.renkang.emergency.entity.LargeScreenData; +import com.renkang.emergency.largeScreen.entity.vo.OnePersonCaseVO; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -22,4 +23,13 @@ public interface LargeScreenDataMapper extends MPJBaseMapper { @Select("SELECT COUNT(1) FROM AYGC_YWK.HYT_RELATION_CARE_NEW WHERE ADMIN_NUM = #{workNo}") int countByAdminNum(@Param("workNo") String workNo); + /** + * 一人一案:根据身份证号查询最新一条档案详情 + * SQL 见同包 xml/LargeScreenDataMapper.xml + * + * @param idCard 身份证号 + * @return 一人一案详情,无数据时返回 null + */ + OnePersonCaseVO selectOnePersonCase(@Param("idCard") String idCard); + } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/mapper/xml/LargeScreenDataMapper.xml b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/mapper/xml/LargeScreenDataMapper.xml new file mode 100644 index 0000000..3e1cc48 --- /dev/null +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/mapper/xml/LargeScreenDataMapper.xml @@ -0,0 +1,191 @@ + + + + + + + + diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/ILargeScreenDataService.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/ILargeScreenDataService.java index 817faa3..2f68ccd 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/ILargeScreenDataService.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/ILargeScreenDataService.java @@ -13,6 +13,7 @@ import com.renkang.emergency.entity.dto.LargeScreenDataValueDTO; import com.renkang.emergency.entity.vo.DataDetailVO; import com.renkang.emergency.entity.vo.MedicalDataVO; import com.renkang.emergency.largeScreen.entity.dto.TodayEmergencyDTO; +import com.renkang.emergency.largeScreen.entity.vo.OnePersonCaseVO; import com.renkang.emergency.largeScreen.entity.vo.TodayEmergencyVO; import java.util.List; @@ -53,6 +54,8 @@ public interface ILargeScreenDataService extends IService { Boolean isLiaisonUser(); + OnePersonCaseVO onePersonCase(); + IPage queryAnYanHealthCheckNew(AnYanHealthCheckNewParam param); AnYanEmpHealthCheckNew queryCheckNewByCheckId(String id); diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenDataServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenDataServiceImpl.java index 401a06a..17bdb45 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenDataServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenDataServiceImpl.java @@ -22,6 +22,7 @@ import com.renkang.emergency.entity.vo.DataDetailVO; import com.renkang.emergency.entity.vo.MedicalDataVO; import com.renkang.emergency.largeScreen.entity.dto.TodayEmergencyDTO; import com.renkang.emergency.largeScreen.entity.vo.LargeScreenMap; +import com.renkang.emergency.largeScreen.entity.vo.OnePersonCaseVO; import com.renkang.emergency.largeScreen.entity.vo.TodayEmergencyVO; import com.renkang.emergency.largeScreen.mapper.LargeScreenDataMapper; import com.renkang.emergency.largeScreen.service.ILargeScreenDataService; @@ -938,6 +939,16 @@ public class LargeScreenDataServiceImpl extends ServiceImpl 0; } + @Override + public OnePersonCaseVO onePersonCase(){ + LoginUser loginUser = GlobalUtils.getLoginUser(); + String idCard = loginUser.getIdCard(); + if (StrUtil.isEmpty(idCard)) { + return null; + } + return baseMapper.selectOnePersonCase(idCard); + } + @Override public IPage queryAnYanHealthCheckNew(AnYanHealthCheckNewParam param) { return anYanClient.queryAnYanHealthCheckNew(param);