大屏开发

This commit is contained in:
wanghao
2025-07-06 14:08:36 +08:00
parent 3bd73a6eb8
commit c342a77af1
30 changed files with 1221 additions and 200 deletions
@@ -1,43 +0,0 @@
package com.renkang.emergency.controller;
import com.renkang.emergency.entity.EmergencyHealthRoom;
import com.renkang.emergency.entity.vo.LargeScreenMap;
import com.renkang.emergency.service.IEmergencyHealthRoomService;
import com.renkang.emergency.service.ILargeScreenService;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Description: HealthRoom
* @Author: wang hao
* @Date: 2025-07-03
* @Version: V1.0
*/
@Tag(name = "大屏/主屏")
@RestController
@RequestMapping("/emergency/largeScreen")
@Slf4j
@RequiredArgsConstructor
public class LargeScreenController {
private final ILargeScreenService largeScreenService;
/**
* 获取地图
* @param type 1:油田医院 2:健康小屋 5:救护车 不传则全部
* @return
*/
@GetMapping("/map")
public Result<List<LargeScreenMap>> map(@RequestParam(name = "type",required = false) String type) {
return Result.ok(largeScreenService.map(type));
}
}
@@ -1,76 +0,0 @@
package com.renkang.emergency.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.renkang.emergency.entity.TblUserHelp;
import com.renkang.emergency.entity.dto.*;
import com.renkang.emergency.service.ITbUserHelpMacService;
import com.renkang.emergency.service.ITblAmbulanceGpsService;
import com.renkang.emergency.service.YcLargeScreenService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import org.jeecg.common.api.dto.YcMedicalCenterFakerData;
import org.jeecg.common.api.dto.YcUserHealthFakerData;
import org.jeecg.common.api.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/emergency/LargeScreenNew")
public class LargeScreenNewController {
@Resource
private ITbUserHelpMacService tbUserHelpMacService;
@Resource
private YcLargeScreenService ycLargeScreenService;
@Resource
private ITblAmbulanceGpsService tblAmbulanceGpsService;
/**
* 服务详情数据-24.09.19 新版大屏接口
*/
@PostMapping("/statisticsNew")
@Operation(summary = "服务详情数据", description = "服务详情数据")
public Result<?> statisticsNew(@RequestBody StatisticsDTO dto) {
return Result.OK(tbUserHelpMacService.statisticsNew(dto));
}
/**
* 获取云坐席列表数据-24.09.19 新版大屏接口
*/
@PostMapping("/phoneListNew")
@Operation(summary = "获取云坐席列表数据", description = "获取云坐席列表数据")
public Result<?> getPhoneListNew(@RequestBody PhoneListDTO dto) {
return Result.ok(tbUserHelpMacService.getPhoneListNew(dto));
}
/**
* 一线医疗点每日工作动态-24.09.19 新版大屏接口
*/
@PostMapping("/medicalCenterNew")
@Operation(summary = "一线医疗点每日工作动态", description = "一线医疗点每日工作动态")
public Result<List<YcMedicalCenterFakerData>> medicalCenterNew(@RequestBody MedicalCenterDTO dto) {
return Result.ok(ycLargeScreenService.medicalCenterNew(dto));
}
/**
* 员工队伍健康状况数据-24.09.19 新版大屏接口
*/
@PostMapping("/userHealthCenterNew")
@Operation(summary = "员工队伍健康状况数据", description = "员工队伍健康状况数据")
public Result<YcUserHealthFakerData> userHealthCenterNew(@RequestBody UserHealthCenterDTO dto) {
return Result.ok(ycLargeScreenService.userHealthCenterNew(dto));
}
/**
* 获取所有资源-24.09.19 新版大屏接口
*/
@PostMapping("/getAllListNew")
@Operation(summary = "获取所有资源", description = "获取所有资源")
public Result<?> getAllListNew(@RequestBody ResourcesAllDTO dto) {
return Result.OK(tblAmbulanceGpsService.getAllListNew(dto));
}
}
@@ -0,0 +1,150 @@
package com.renkang.emergency.largeScreen.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.renkang.emergency.entity.dto.*;
import com.renkang.emergency.largeScreen.entity.dto.*;
import com.renkang.emergency.largeScreen.entity.vo.*;
import com.renkang.emergency.largeScreen.service.ILargeScreenService;
import com.renkang.emergency.service.ITbUserHelpMacService;
import com.renkang.emergency.service.ITblAmbulanceGpsService;
import com.renkang.emergency.service.YcLargeScreenService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.dto.YcMedicalCenterFakerData;
import org.jeecg.common.api.dto.YcUserHealthFakerData;
import org.jeecg.common.api.vo.Result;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Tag(name = "大屏/主屏")
@RestController
@RequestMapping("/emergency/LargeScreenNew")
@RequiredArgsConstructor
@Slf4j
public class LargeScreenNewController {
private final ITbUserHelpMacService tbUserHelpMacService;
private final YcLargeScreenService ycLargeScreenService;
private final ITblAmbulanceGpsService tblAmbulanceGpsService;
private final ILargeScreenService largeScreenService;
/**
* 获取地图
* @param type 1:油田医院 2:健康小屋 5:救护车 不传则全部
* @return
*/
@GetMapping("/map")
public Result<List<LargeScreenMap>> map(@RequestParam(name = "type",required = false) String type) {
return Result.ok(largeScreenService.map(type));
}
/**
* 服务详情数据-24.09.19 新版大屏接口
*/
@PostMapping("/statisticsNew")
@Operation(summary = "服务详情数据", description = "服务详情数据")
public Result<?> statisticsNew(@RequestBody StatisticsDTO dto) {
return Result.OK(tbUserHelpMacService.statisticsNew(dto));
}
/**
* 获取云坐席列表数据-24.09.19 新版大屏接口
*/
@PostMapping("/phoneListNew")
@Operation(summary = "获取云坐席列表数据", description = "获取云坐席列表数据")
public Result<?> getPhoneListNew(@RequestBody PhoneListDTO dto) {
return Result.ok(tbUserHelpMacService.getPhoneListNew(dto));
}
/**
* 一线医疗点每日工作动态-24.09.19 新版大屏接口
*/
@PostMapping("/medicalCenterNew")
@Operation(summary = "一线医疗点每日工作动态", description = "一线医疗点每日工作动态")
public Result<List<YcMedicalCenterFakerData>> medicalCenterNew(@RequestBody MedicalCenterDTO dto) {
return Result.ok(ycLargeScreenService.medicalCenterNew(dto));
}
/**
* 员工队伍健康状况数据-24.09.19 新版大屏接口
*/
@PostMapping("/userHealthCenterNew")
@Operation(summary = "员工队伍健康状况数据", description = "员工队伍健康状况数据")
public Result<YcUserHealthFakerData> userHealthCenterNew(@RequestBody UserHealthCenterDTO dto) {
return Result.ok(ycLargeScreenService.userHealthCenterNew(dto));
}
/**
* 获取所有资源-24.09.19 新版大屏接口
*/
@PostMapping("/getAllListNew")
@Operation(summary = "获取所有资源", description = "获取所有资源")
public Result<?> getAllListNew(@RequestBody ResourcesAllDTO dto) {
return Result.OK(tblAmbulanceGpsService.getAllListNew(dto));
}
@PostMapping("/healthRoomBase")
@Operation(summary = "健康小屋基础数据", description = "健康小屋基础数据")
public Result<List<HealthRoomBaseVO>> healthRoomBase(@RequestBody HealthRoomBaseDTO dto){
return Result.ok(largeScreenService.healthRoomBase(dto));
}
@PostMapping("/healthRoomDetail")
@Operation(summary = "健康小屋详情", description = "健康小屋详情")
public Result<IPage<HealthRoomVO>> healthRoomDetail(@RequestBody HealthRoomDTO dto){
return Result.ok(largeScreenService.healthRoomDetail(dto));
}
@PostMapping("/medicalAbnormal")
@Operation(summary = "体检异常数据详情列表", description = "体检异常数据详情列表")
public Result<IPage<MedicalAbnormalVO>> medicalAbnormal(@RequestBody MedicalAbnormalDTO dto){
return Result.ok(largeScreenService.medicalAbnormal(dto));
}
@PostMapping("/healthWeightLoss")
@Operation(summary = "健康打卡减重详情列表", description = "健康打卡减重详情列表")
public Result<IPage<HealthWeightLossVO>> healthWeightLoss(@RequestBody HealthWeightLossDTO dto){
return Result.ok(largeScreenService.healthWeightLoss(dto));
}
@PostMapping("/healthBloodSugar")
@Operation(summary = "健康打卡血糖详情列表", description = "健康打卡血糖详情列表")
public Result<IPage<HealthBloodSugarVO>> healthBloodSugar(@RequestBody HealthBloodSugarDTO dto){
return Result.ok(largeScreenService.healthBloodSugar(dto));
}
@PostMapping("/healthBloodPressure")
@Operation(summary = "健康打卡血压详情列表", description = "健康打卡血压详情列表")
public Result<IPage<HealthBloodPressureVO>> healthBloodPressure(@RequestBody HealthBloodPressureDTO dto){
return Result.ok(largeScreenService.healthBloodPressure(dto));
}
@PostMapping("/medicalPeopleNumStatistics")
@Operation(summary = "体检人数统计", description = "体检人数统计")
public Result<List<MedicalPeopleNumStatisticsVO>> medicalPeopleNumStatistics(@RequestBody MedicalPeopleNumStatisticsDTO dto){
return Result.ok(largeScreenService.medicalPeopleNumStatistics(dto));
}
@PostMapping("/medicalAbnormalStatistics")
@Operation(summary = "体检异常数据统计", description = "体检异常数据统计")
public Result<List<MedicalAbnormalStatisticsVO>> medicalAbnormalStatistics(@RequestBody MedicalAbnormalStatisticsDTO dto){
return Result.ok(largeScreenService.medicalAbnormalStatistics(dto));
}
@PostMapping("/healthSign")
@Operation(summary = "健康打卡数据", description = "健康打卡数据")
public Result<HealthSignVO> healthSign(HealthSignDTO dto){
return Result.ok(largeScreenService.healthSign(dto));
}
@GetMapping("/hospital")
@Operation(summary = "医院数据", description = "医院数据")
public Result<List<HospitalVO>> hospital(){
return Result.ok(largeScreenService.hospital());
}
}
@@ -0,0 +1,58 @@
package com.renkang.emergency.largeScreen.entity.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class HealthBloodPressureDTO {
/**
* 单位名称
*/
@Schema(title = "单位名称")
private String departName;
/**
* 员工姓名
*/
@Schema(title = "员工姓名")
private String name;
/**
* 填报开始时间起
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报开始时间起")
private Date inputDateBegin;
/**
* 填报开始时间止
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报开始时间止")
private Date inputDateEnd;
/**
* 异常标记 0:正常/1:异常/2:全部
*/
@Schema(title = "异常标记 0:正常/1:异常/2:全部")
private String abFlag;
/**
* 页码 从1开始
*/
@Schema(title = "页码 从1开始")
private Integer pageNo;
/**
* 每页数量
*/
@Schema(title = "每页数量")
private Integer pageSize;
public HealthBloodPressureDTO() {
this.pageNo = 1;
this.pageSize = 10;
}
}
@@ -0,0 +1,58 @@
package com.renkang.emergency.largeScreen.entity.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class HealthBloodSugarDTO {
/**
* 单位名称
*/
@Schema(title = "单位名称")
private String departName;
/**
* 员工姓名
*/
@Schema(title = "员工姓名")
private String name;
/**
* 填报开始时间起
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报开始时间起")
private Date inputDateBegin;
/**
* 填报开始时间止
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报开始时间止")
private Date inputDateEnd;
/**
* 异常标记 0:正常/1:异常/2:全部
*/
@Schema(title = "异常标记 0:正常/1:异常/2:全部")
private String abFlag;
/**
* 页码 从1开始
*/
@Schema(title = "页码 从1开始")
private Integer pageNo;
/**
* 每页数量
*/
@Schema(title = "每页数量")
private Integer pageSize;
public HealthBloodSugarDTO() {
this.pageNo = 1;
this.pageSize = 10;
}
}
@@ -0,0 +1,33 @@
package com.renkang.emergency.largeScreen.entity.dto;
import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class HealthRoomBaseDTO {
/**
* 检查日期起期 参数为空时,默认为今年第一天,如:2025-01-01
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "检查日期起期 参数为空时,默认为今年第一天,如:2025-01-01")
private Date checkInDateBegin;
/**
* 检查日期止期 参数为空时,默认为今天
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "检查日期止期 参数为空时,默认为今天")
private Date checkInDateEnd;
public HealthRoomBaseDTO() {
Date date = new Date();
this.checkInDateBegin = DateUtil.beginOfYear(date);
this.checkInDateEnd = DateUtil.endOfDay(date);
}
}
@@ -0,0 +1,67 @@
package com.renkang.emergency.largeScreen.entity.dto;
import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
public class HealthRoomDTO {
/**
* 健康小屋ID
*/
@Schema(title = "健康小屋ID")
@NotNull
private String healthRoomId;
/**
* 检查类型 11:BMI/21:收缩压/22:舒张压/31:血糖/41:低密度脂蛋白/42:总胆固醇/43:甘油三酯/51:尿酸/61:同型半胱氨酸 等等,缺失的可以继续加
*/
@Schema(title = "检查类型 11:BMI/21:收缩压/22:舒张压/31:血糖/41:低密度脂蛋白/42:总胆固醇/43:甘油三酯/51:尿酸/61:同型半胱氨酸 等等,缺失的可以继续加")
private String checkType;
/**
* 员工姓名
*/
@Schema(title = "员工姓名")
private String name;
/**
* 检查日期起期 参数为空时,默认为今年第一天,如:2025-01-01
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "检查日期起期 参数为空时,默认为今年第一天,如:2025-01-01")
private Date checkInDateBegin;
/**
* 检查日期止期 参数为空时,默认为今天
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "检查日期止期 参数为空时,默认为今天")
private Date checkInDateEnd;
/**
* 是否成功控降 是否成功空降,1:是/0.否
*/
@Schema(title = "是否成功控降 是否成功空降,1:是/0.否")
private String successFlag;
/**
* 页码 从1开始
*/
@Schema(title = "页码 从1开始")
private Integer pageNo;
/**
* 每页数量
*/
@Schema(title = "每页数量")
private Integer pageSize;
public HealthRoomDTO() {
Date date = new Date();
this.checkInDateBegin = DateUtil.beginOfYear(date);
this.checkInDateEnd = DateUtil.endOfDay(date);
this.pageNo = 1;
this.pageSize = 10;
}
}
@@ -0,0 +1,39 @@
package com.renkang.emergency.largeScreen.entity.dto;
import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class HealthSignDTO {
/**
* 数据类型 1.减重/2.血压/3.血糖 默认空则全部
*/
@Schema(title = "数据类型 1.减重/2.血压/3.血糖 默认空则全部")
private String dataType;
/**
* 填报开始时间起 参数为空时,默认为当天
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报开始时间起 参数为空时,默认为当天")
private Date inputDateBegin;
/**
* 填报开始时间止 参数为空时,默认为当天
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报开始时间止 参数为空时,默认为当天")
private Date inputDateEnd;
public HealthSignDTO() {
this.dataType = "";
Date date = new Date();
this.inputDateBegin = DateUtil.beginOfDay(date);
this.inputDateEnd = DateUtil.endOfDay(date);
}
}
@@ -0,0 +1,58 @@
package com.renkang.emergency.largeScreen.entity.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class HealthWeightLossDTO {
/**
* 单位名称
*/
@Schema(title = "单位名称")
private String departName;
/**
* 员工姓名
*/
@Schema(title = "员工姓名")
private String name;
/**
* 填报开始时间起
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报开始时间起")
private Date inputDateBegin;
/**
* 填报开始时间止
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报开始时间止")
private Date inputDateEnd;
/**
* 异常标记
*/
@Schema(title = "异常标记")
private String abFlag;
/**
* 页码 从1开始
*/
@Schema(title = "页码 从1开始")
private Integer pageNo;
/**
* 每页数量
*/
@Schema(title = "每页数量")
private Integer pageSize;
public HealthWeightLossDTO() {
this.pageNo = 1;
this.pageSize = 10;
}
}
@@ -0,0 +1,60 @@
package com.renkang.emergency.largeScreen.entity.dto;
import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
public class MedicalAbnormalDTO {
/**
* 单位名称
*/
private String departName;
/**
* 员工姓名
*/
private String name;
/**
* 检查日期起期 参数为空时,默认为今年第一天,如:2025-01-01
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "检查日期起期 参数为空时,默认为今年第一天,如:2025-01-01")
private Date checkInDateBegin;
/**
* 检查日期止期 参数为空时,默认为今天
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "检查日期止期 参数为空时,默认为今天")
private Date checkInDateEnd;
/**
* 查询类型 1:心血管异常/2:脑血管异常/3:冠脉CT异常
*/
@Schema(title = "查询类型 1:心血管异常/2:脑血管异常/3:冠脉CT异常")
@NotNull
private String queryType;
/**
* 页码 从1开始
*/
@Schema(title = "页码 从1开始")
private Integer pageNo;
/**
* 每页数量
*/
@Schema(title = "每页数量")
private Integer pageSize;
public MedicalAbnormalDTO() {
Date date = new Date();
this.checkInDateBegin = DateUtil.beginOfYear(date);
this.checkInDateEnd = DateUtil.endOfDay(date);
this.pageNo = 1;
this.pageSize = 10;
}
}
@@ -0,0 +1,33 @@
package com.renkang.emergency.largeScreen.entity.dto;
import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class MedicalAbnormalStatisticsDTO {
/**
* 检查日期起期 参数为空时,默认为今年第一天
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "检查日期起期 参数为空时,默认为今年第一天")
private Date checkInDateBegin;
/**
* 检查日期止期 参数为空时,默认为今天
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "检查日期止期 参数为空时,默认为今天")
private Date checkInDateEnd;
public MedicalAbnormalStatisticsDTO() {
Date date = new Date();
this.checkInDateBegin = DateUtil.beginOfYear(date);
this.checkInDateEnd = DateUtil.endOfDay(date);
}
}
@@ -0,0 +1,15 @@
package com.renkang.emergency.largeScreen.entity.dto;
import cn.hutool.core.date.DateUtil;
import lombok.Data;
import java.util.Date;
@Data
public class MedicalPeopleNumStatisticsDTO {
private Integer medicalYear;
public MedicalPeopleNumStatisticsDTO() {
this.medicalYear = DateUtil.year(new Date());
}
}
@@ -0,0 +1,50 @@
package com.renkang.emergency.largeScreen.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class HealthBloodPressureVO {
/**
* 单位
*/
@Schema(title = "单位")
private String departName;
/**
* 姓名
*/
@Schema(title = "姓名")
private String name;
/**
* 收缩压
*/
@Schema(title = "收缩压")
private String sbp;
/**
* 收缩压是否异常 1:是/0:否
*/
@Schema(title = "收缩压是否异常 1:是/0:否")
private String sbpFlag;
/**
* 舒张压
*/
@Schema(title = "舒张压")
private String dbp;
/**
* 舒张压是否异常 1:是/0:否
*/
@Schema(title = "舒张压是否异常 1:是/0:否")
private String dbpFlag;
/**
* 填报时间
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报时间")
private Date inputDate;
}
@@ -0,0 +1,39 @@
package com.renkang.emergency.largeScreen.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class HealthBloodSugarVO {
/**
* 单位
*/
@Schema(title = "单位")
private String departName;
/**
* 姓名
*/
@Schema(title = "姓名")
private String name;
/**
* 血糖值
*/
@Schema(title = "血糖值")
private String bsVal;
/**
* 血糖是否异常 1:是/0:否
*/
@Schema(title = "血糖是否异常 1:是/0:否")
private String bmiFlag;
/**
* 填报时间
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报时间")
private Date inputDate;
}
@@ -0,0 +1,24 @@
package com.renkang.emergency.largeScreen.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class HealthRoomBaseVO {
private String id;
private String departName;
private String address;
private String lon;
private String lat;
/**
* 建设时间
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "建设时间")
private Date buildDate;
}
@@ -0,0 +1,53 @@
package com.renkang.emergency.largeScreen.entity.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class HealthRoomVO {
/**
* 单位
*/
@Schema(title = "单位")
private String departName;
/**
* 姓名
*/
@Schema(title = "姓名")
private String name;
/**
* 检查日期
*/
@Schema(title = "检查日期")
private String checkInDate;
/**
* 检查类型 11:BMI/21:收缩压/22:舒张压/31:血糖/41:低密度脂蛋白/42:总胆固醇/43:甘油三酯/51:尿酸/61:同型半胱氨酸 等等,缺失的可以继续加
*/
@Schema(title = "检查类型 11:BMI/21:收缩压/22:舒张压/31:血糖/41:低密度脂蛋白/42:总胆固醇/43:甘油三酯/51:尿酸/61:同型半胱氨酸 等等,缺失的可以继续加")
private String checkType;
/**
* 去年体检值 前一年的体检值(初始值)
*/
@Schema(title = "去年体检值 前一年的体检值(初始值)")
private String lastVal;
/**
* 控降目标 一人一档(控降目标值)
*/
@Schema(title = "控降目标 一人一档(控降目标值")
private String goalVal;
/**
* 目前测量值 目前控降数值(可和健康打卡最新值一致)
*/
@Schema(title = "目前测量值 目前控降数值(可和健康打卡最新值一致)")
private String currentVal;
/**
* 控降差值 和控降目标对比
*/
@Schema(title = "控降差值 和控降目标对比")
private String compareVal;
/**
* 是否成功空降,1:是/0.否
*/
@Schema(title = "是否成功空降,1:是/0.否")
private String successFlag;
}
@@ -0,0 +1,23 @@
package com.renkang.emergency.largeScreen.entity.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class HealthSignDataVO {
/**
* 数据类型 1.减重/2.血压/3.血糖
*/
@Schema(title = "数据类型 1.减重/2.血压/3.血糖")
private String dataType;
/**
* 打卡总人数
*/
@Schema(title = "打卡总人数")
private Integer totalCount;
/**
* 异常人数
*/
@Schema(title = "异常人数")
private Integer abCount;
}
@@ -0,0 +1,70 @@
package com.renkang.emergency.largeScreen.entity.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class HealthSignVO {
/**
* 减重今日打卡人数
*/
@Schema(title = "减重今日打卡人数")
private Integer weightLossCountDay;
/**
* 减重本月打卡人数
*/
@Schema(title = "减重本月打卡人数")
private Integer weightLossCountMonth;
/**
* 减重今日异常人数
*/
@Schema(title = "减重今日异常人数")
private Integer weightLossAbnormalCountDay;
/**
* 减重本月异常人数
*/
@Schema(title = "减重本月异常人数")
private Integer weightLossAbnormalCountMonth;
/**
* 血糖今日打卡人数
*/
@Schema(title = "血糖今日打卡人数")
private Integer bloodSugarCountDay;
/**
* 血糖本月打卡人数
*/
@Schema(title = "血糖本月打卡人数")
private Integer bloodSugarCountMonth;
/**
* 血糖今日异常人数
*/
@Schema(title = "血糖今日异常人数")
private Integer bloodSugarAbnormalCountDay;
/**
* 血糖本月异常人数
*/
@Schema(title = "血糖本月异常人数")
private Integer bloodSugarAbnormalCountMonth;
/**
* 血压今日打卡人数
*/
@Schema(title = "血压今日打卡人数")
private Integer bloodPressureCountDay;
/**
* 血压本月打卡人数
*/
@Schema(title = "血压本月打卡人数")
private Integer bloodPressureCountMonth;
/**
* 血压今日异常人数
*/
@Schema(title = "血压今日异常人数")
private Integer bloodPressureAbnormalCountDay;
/**
* 血压本月异常人数
*/
@Schema(title = "血压本月异常人数")
private Integer bloodPressureAbnormalCountMonth;
}
@@ -0,0 +1,54 @@
package com.renkang.emergency.largeScreen.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class HealthWeightLossVO {
/**
* 单位
*/
@Schema(title = "单位")
private String departName;
/**
* 姓名
*/
@Schema(title = "姓名")
private String name;
/**
* 腰围(CM
*/
@Schema(title = "腰围(CM")
private String waist;
/**
* 身高(M
*/
@Schema(title = "身高(M")
private String height;
/**
* 体重(KG
*/
@Schema(title = "体重(KG")
private String weight;
/**
* BMI
*/
@Schema(title = "BMI")
private String bmi;
/**
* BMI是否异常 1:是/0:否
*/
@Schema(title = "BMI是否异常 1:是/0:否")
private String bmiFlag;
/**
* 填报时间
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "填报时间")
private Date inputDate;
}
@@ -0,0 +1,44 @@
package com.renkang.emergency.largeScreen.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class HospitalVO {
/**
* 医院名字
*/
@Schema(title = "医院名字")
private String hospitalName;
/**
* 别名
*/
@Schema(title = "别名")
private String alias;
/**
* 地点
*/
@Schema(title = "地点")
private String address;
/**
* 经度
*/
@Schema(title = "经度")
private String lon;
/**
* 纬度
*/
@Schema(title = "纬度")
private String lat;
/**
* 签约时间
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(title = "签约时间")
private Date contractDate;
}
@@ -1,4 +1,4 @@
package com.renkang.emergency.entity.vo;
package com.renkang.emergency.largeScreen.entity.vo;
import com.renkang.emergency.entity.EmergencyHealthRoom;
import com.renkang.emergency.entity.Resource;
@@ -0,0 +1,17 @@
package com.renkang.emergency.largeScreen.entity.vo;
import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class MedicalAbnormalStatisticsVO {
private Integer totalCount;
private Integer cardiovaAbCount;
private Integer cerebrovAbCount;
private Integer cctaAbCount;
}
@@ -0,0 +1,28 @@
package com.renkang.emergency.largeScreen.entity.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class MedicalAbnormalVO {
/**
* 单位
*/
@Schema(title = "单位")
private String departName;
/**
* 姓名
*/
@Schema(title = "姓名")
private String name;
/**
* 体检医院
*/
@Schema(title = "体检医院")
private String hospitalName;
/**
* 检查日期
*/
@Schema(title = "检查日期")
private String checkInDate;
}
@@ -0,0 +1,23 @@
package com.renkang.emergency.largeScreen.entity.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class MedicalPeopleNumStatisticsVO {
/**
* 医院名称
*/
@Schema(title = "医院名称")
private String hospitalName;
/**
* 已参检人数
*/
@Schema(title = "已参检人数")
private Integer checkedCount;
/**
* 应检人数 (可能无法提供 先冗余)
*/
@Schema(title = "应检人数 (可能无法提供 先冗余)")
private Integer totalCount;
}
@@ -1,8 +1,7 @@
package com.renkang.emergency.mapper;
package com.renkang.emergency.largeScreen.mapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.renkang.emergency.entity.EmergencyHealthRoom;
import com.renkang.emergency.entity.vo.LargeScreenMap;
import com.renkang.emergency.largeScreen.entity.vo.LargeScreenMap;
/**
* @Description: large_screen
@@ -0,0 +1,41 @@
package com.renkang.emergency.largeScreen.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.renkang.emergency.largeScreen.entity.dto.*;
import com.renkang.emergency.largeScreen.entity.vo.*;
import java.util.List;
/**
* @Description: HealthRoom
* @Author: wang hao
* @Date: 2025-07-03
* @Version: V1.0
*/
public interface ILargeScreenService extends IService<LargeScreenMap> {
List<LargeScreenMap> map(String type);
List<HealthRoomBaseVO> healthRoomBase(HealthRoomBaseDTO dto);
IPage<HealthRoomVO> healthRoomDetail(HealthRoomDTO dto);
IPage<MedicalAbnormalVO> medicalAbnormal(MedicalAbnormalDTO dto);
IPage<HealthWeightLossVO> healthWeightLoss(HealthWeightLossDTO dto);
IPage<HealthBloodSugarVO> healthBloodSugar(HealthBloodSugarDTO dto);
IPage<HealthBloodPressureVO> healthBloodPressure(HealthBloodPressureDTO dto);
List<MedicalPeopleNumStatisticsVO> medicalPeopleNumStatistics(MedicalPeopleNumStatisticsDTO dto);
List<MedicalAbnormalStatisticsVO> medicalAbnormalStatistics(MedicalAbnormalStatisticsDTO dto);
HealthSignVO healthSign(HealthSignDTO dto);
List<HospitalVO> hospital();
void runJob();
}
@@ -0,0 +1,162 @@
package com.renkang.emergency.largeScreen.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.renkang.emergency.entity.EmergencyHealthRoom;
import com.renkang.emergency.entity.Resource;
import com.renkang.emergency.largeScreen.entity.dto.*;
import com.renkang.emergency.largeScreen.entity.vo.*;
import com.renkang.emergency.largeScreen.mapper.LargeScreenMapper;
import com.renkang.emergency.service.IEmergencyHealthRoomService;
import com.renkang.emergency.largeScreen.service.ILargeScreenService;
import com.renkang.emergency.service.IResourceService;
import lombok.RequiredArgsConstructor;
import org.jeecg.util.RedisClientUtil;
import org.jeecg.util.RedisKeyPrefix;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description: large_screen
* @Author: wang hao
* @Date: 2025-07-04
* @Version: V1.0
*/
@Service
@RequiredArgsConstructor
public class LargeScreenServiceImpl extends ServiceImpl<LargeScreenMapper, LargeScreenMap> implements ILargeScreenService {
private final RedisKeyPrefix MEDICAL = new RedisKeyPrefix(-1, "emergency:");
private final String MEDICAL_PEOPLE_NUM_STATISTICS = "medicalPeopleNumStatistics";
private final String MEDICAL_ABNORMAL_STATISTICS = "medicalAbnormalStatistics";
private final String HEALTH_SIGN = "healthSign";
private final IResourceService resourceService;
private final IEmergencyHealthRoomService roomService;
private final RedisClientUtil redisClientUtil;
@Override
public List<LargeScreenMap> map(String type) {
List<LargeScreenMap> maps = new ArrayList<>();
if (StrUtil.isEmpty(type) || type.equals("1")) {
List<Resource> list = resourceService.list(new LambdaQueryWrapper<Resource>()
.eq(StrUtil.isNotEmpty(type),Resource::getType, type)
.eq(StrUtil.isEmpty(type),Resource::getType, "1"));
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
}
if (StrUtil.isEmpty(type) || type.equals("2")) {
List<EmergencyHealthRoom> list = roomService.list();
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
}
if (StrUtil.isEmpty(type) || type.equals("5")) {
List<Resource> list = resourceService.list(new LambdaQueryWrapper<Resource>()
.eq(StrUtil.isNotEmpty(type),Resource::getType, type)
.eq(StrUtil.isEmpty(type),Resource::getType, "5"));
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
}
return maps;
}
@Override
public List<HealthRoomBaseVO> healthRoomBase(HealthRoomBaseDTO dto){
// 查询第三方接口返回 此接口返回对象跟原有可能不太一样 要注意
return null;
}
@Override
public IPage<HealthRoomVO> healthRoomDetail(HealthRoomDTO dto){
// 查询第三方接口返回
return null;
}
@Override
public IPage<MedicalAbnormalVO> medicalAbnormal (MedicalAbnormalDTO dto){
// 查询第三方接口返回
return null;
}
@Override
public IPage<HealthWeightLossVO> healthWeightLoss (HealthWeightLossDTO dto){
// 查询第三方接口返回
return null;
}
@Override
public IPage<HealthBloodSugarVO> healthBloodSugar (HealthBloodSugarDTO dto){
// 查询第三方接口返回
return null;
}
@Override
public IPage<HealthBloodPressureVO> healthBloodPressure (HealthBloodPressureDTO dto){
// 查询第三方接口返回
return null;
}
@Override
public List<HospitalVO> hospital(){
// 查询第三方接口返回
return null;
}
@Override
public List<MedicalPeopleNumStatisticsVO> medicalPeopleNumStatistics (MedicalPeopleNumStatisticsDTO dto){
List<MedicalPeopleNumStatisticsVO> list = redisClientUtil.getList(MEDICAL,MEDICAL_PEOPLE_NUM_STATISTICS,MedicalPeopleNumStatisticsVO.class);
if (CollUtil.isEmpty(list)){
return new ArrayList<>();
}
return list;
}
@Override
public List<MedicalAbnormalStatisticsVO> medicalAbnormalStatistics (MedicalAbnormalStatisticsDTO dto){
List<MedicalAbnormalStatisticsVO> list = redisClientUtil.getList(MEDICAL,MEDICAL_ABNORMAL_STATISTICS,MedicalAbnormalStatisticsVO.class);
if (CollUtil.isEmpty(list)){
return new ArrayList<>();
}
return list;
}
@Override
public HealthSignVO healthSign (HealthSignDTO dto){
HealthSignVO vo = redisClientUtil.get(MEDICAL,HEALTH_SIGN,HealthSignVO.class);
if (null == vo){
return new HealthSignVO();
}
return vo;
}
@Override
public void runJob(){
// 体检人数统计查询
List<MedicalPeopleNumStatisticsVO> medicalPeopleNumStatisticsList = new ArrayList<>();
redisClientUtil.set(MEDICAL,MEDICAL_PEOPLE_NUM_STATISTICS,medicalPeopleNumStatisticsList);
// 体检异常数据查询
List<MedicalAbnormalStatisticsVO> medicalAbnormalStatisticsList = new ArrayList<>();
redisClientUtil.set(MEDICAL,MEDICAL_ABNORMAL_STATISTICS,medicalAbnormalStatisticsList);
// 减重 健康打卡数据今日查询
HealthSignDataVO weightLossDay = new HealthSignDataVO();
// 减重 健康打卡数据本月查询
HealthSignDataVO weightLossMonth = new HealthSignDataVO();
// 血压 健康打卡数据今日查询
HealthSignDataVO bloodPressureDay = new HealthSignDataVO();
// 血压 健康打卡数据本月查询
HealthSignDataVO bloodPressureMonth = new HealthSignDataVO();
// 血糖 健康打卡数据今日查询
HealthSignDataVO bloodSugarDay = new HealthSignDataVO();
// 血糖 健康打卡数据本月查询
HealthSignDataVO bloodSugarMonth = new HealthSignDataVO();
// 减重 血压 血糖 三种数据整合存
HealthSignVO healthSign = new HealthSignVO();
redisClientUtil.set(MEDICAL,HEALTH_SIGN,healthSign);
}
}
@@ -0,0 +1,19 @@
package com.renkang.emergency.largeScreen.task;
import com.renkang.emergency.largeScreen.service.ILargeScreenService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Component
@Slf4j
@RequiredArgsConstructor
public class LargeScreenJob {
private final ILargeScreenService largeScreenService;
public void largeScreen() {
log.info("========开始缓存大屏数据========");
largeScreenService.runJob();
log.info("========结束缓存大屏数据========");
}
}
@@ -1,18 +0,0 @@
package com.renkang.emergency.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.renkang.emergency.entity.EmergencyHealthRoom;
import com.renkang.emergency.entity.vo.LargeScreenMap;
import java.util.List;
/**
* @Description: HealthRoom
* @Author: wang hao
* @Date: 2025-07-03
* @Version: V1.0
*/
public interface ILargeScreenService extends IService<LargeScreenMap> {
List<LargeScreenMap> map(String type);
}
@@ -1,59 +0,0 @@
package com.renkang.emergency.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.renkang.emergency.entity.EmergencyHealthRoom;
import com.renkang.emergency.entity.Resource;
import com.renkang.emergency.entity.vo.LargeScreenMap;
import com.renkang.emergency.mapper.EmergencyHealthRoomMapper;
import com.renkang.emergency.mapper.LargeScreenMapper;
import com.renkang.emergency.service.IEmergencyCenterResourceService;
import com.renkang.emergency.service.IEmergencyHealthRoomService;
import com.renkang.emergency.service.ILargeScreenService;
import com.renkang.emergency.service.IResourceService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description: large_screen
* @Author: wang hao
* @Date: 2025-07-04
* @Version: V1.0
*/
@Service
@RequiredArgsConstructor
public class LargeScreenServiceImpl extends ServiceImpl<LargeScreenMapper, LargeScreenMap> implements ILargeScreenService {
private final IResourceService resourceService;
private final IEmergencyHealthRoomService roomService;
@Override
public List<LargeScreenMap> map(String type) {
List<LargeScreenMap> maps = new ArrayList<>();
if (StrUtil.isEmpty(type) || type.equals("1")) {
List<Resource> list = resourceService.list(new LambdaQueryWrapper<Resource>()
.eq(StrUtil.isNotEmpty(type),Resource::getType, type)
.eq(StrUtil.isEmpty(type),Resource::getType, "1"));
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
}
if (StrUtil.isEmpty(type) || type.equals("2")) {
List<EmergencyHealthRoom> list = roomService.list();
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
}
if (StrUtil.isEmpty(type) || type.equals("5")) {
List<Resource> list = resourceService.list(new LambdaQueryWrapper<Resource>()
.eq(StrUtil.isNotEmpty(type),Resource::getType, type)
.eq(StrUtil.isEmpty(type),Resource::getType, "5"));
maps.addAll(list.stream().map(LargeScreenMap::new).collect(Collectors.toList()));
}
return maps;
}
}