From 9884f8a9c197774296e0b02f958d9f6887dec15c Mon Sep 17 00:00:00 2001 From: tianyongbao Date: Wed, 16 Oct 2024 12:32:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AE=8C=E5=96=84=EF=BC=8C=E7=BB=9F=E8=AE=A1=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StatisticAnalysisController.java | 43 +++ .../health/domain/HealthMedicineBasic.java | 10 + .../health/domain/HealthMedicineStockIn.java | 17 + .../com/ruoyi/health/domain/HealthPerson.java | 17 +- .../ruoyi/health/domain/dto/AnalysisDto.java | 47 +++ .../domain/dto/HealthMedicineBasicDto.java | 9 +- .../health/domain/vo/HealthMarRecordVo.java | 5 + .../domain/vo/HealthStaticAnalysisVo.java | 37 ++ .../mapper/StatisticAnalysisMapper.java | 9 + .../service/IStatisticAnalysisService.java | 18 + .../service/impl/StatisticAnalysisImpl.java | 349 ++++++++++++++++++ .../health/HealthMedicineBasicMapper.xml | 44 ++- .../health/HealthMedicineStockInMapper.xml | 17 +- .../mapper/health/HealthPersonMapper.xml | 8 +- .../mapper/health/StatisticAnalysisMapper.xml | 8 + 15 files changed, 627 insertions(+), 11 deletions(-) create mode 100644 ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/controller/StatisticAnalysisController.java create mode 100644 ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/dto/AnalysisDto.java create mode 100644 ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/vo/HealthStaticAnalysisVo.java create mode 100644 ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/mapper/StatisticAnalysisMapper.java create mode 100644 ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/service/IStatisticAnalysisService.java create mode 100644 ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/service/impl/StatisticAnalysisImpl.java create mode 100644 ruoyi-modules/intc-health/src/main/resources/mapper/health/StatisticAnalysisMapper.xml diff --git a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/controller/StatisticAnalysisController.java b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/controller/StatisticAnalysisController.java new file mode 100644 index 0000000..0ca052d --- /dev/null +++ b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/controller/StatisticAnalysisController.java @@ -0,0 +1,43 @@ +package com.ruoyi.health.controller; + +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.health.domain.dto.AnalysisDto; +import com.ruoyi.health.service.IStatisticAnalysisService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +/** + * 统计分析Controller + * @author 22077662 + */ +@Api(tags = "统计分析") +@RestController +@RequestMapping("/analysis") +public class StatisticAnalysisController extends BaseController { + + @Autowired + private IStatisticAnalysisService iStatisticAnalysisService; + + @ApiOperation("用药统计分析") + @GetMapping("/marAnalysis") + public Map getMarAnalysis(AnalysisDto analysisDto){ + Map resultMap = iStatisticAnalysisService.getMarAnalysis(analysisDto); + return AjaxResult.success(resultMap); + } + + @ApiOperation("体温统计分析") + @GetMapping("/temperatureAnalysis") + public Map getTemperatureAnalysis(AnalysisDto analysisDto){ + Map resultMap = iStatisticAnalysisService.getTemperatureAnalysis(analysisDto); + return AjaxResult.success(resultMap); + } + + +} diff --git a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/HealthMedicineBasic.java b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/HealthMedicineBasic.java index 50dea8d..8e6e92a 100644 --- a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/HealthMedicineBasic.java +++ b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/HealthMedicineBasic.java @@ -119,7 +119,15 @@ public class HealthMedicineBasic extends BaseEntity @Excel(name = "功能主治") private String indications; + /** 药品简称 */ + @ApiModelProperty(value="药品简称") + @Excel(name = "药品简称") + private String shortName; + /** 包装单位 */ + @ApiModelProperty(value="包装单位") + @Excel(name = "包装单位") + private String packageUnit; @Override public String toString() { @@ -152,6 +160,8 @@ public class HealthMedicineBasic extends BaseEntity .append("character", getCharacter()) .append("storage", getStorage()) .append("indications", getIndications()) + .append("shortName", getShortName()) + .append("packageUnit", getPackageUnit()) .toString(); } } diff --git a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/HealthMedicineStockIn.java b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/HealthMedicineStockIn.java index 96a8a47..a1df127 100644 --- a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/HealthMedicineStockIn.java +++ b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/HealthMedicineStockIn.java @@ -105,6 +105,20 @@ public class HealthMedicineStockIn extends BaseEntity /** 年龄体重 */ private String ageWeight; + /** 单个单位 */ + private String unit; + + /** 总数量 */ + @ApiModelProperty(value="总数量)") + @NotNull(message="总数量") + @Excel(name = "总数量") + private Double totalCount; + + /** 包装单位 */ + @ApiModelProperty(value="包装单位") + @Excel(name = "包装单位") + private String packageUnit; + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -129,6 +143,9 @@ public class HealthMedicineStockIn extends BaseEntity .append("totalPrice", getTotalPrice()) .append("usage", getUsage()) .append("ageWeight", getAgeWeight()) + .append("unit", getUnit()) + .append("packageUnit", getPackageUnit()) + .append("totalCount", getTotalCount()) .toString(); } } diff --git a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/HealthPerson.java b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/HealthPerson.java index 4571be6..0e8912a 100644 --- a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/HealthPerson.java +++ b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/HealthPerson.java @@ -1,15 +1,16 @@ package com.ruoyi.health.domain; -import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.core.annotation.Excel; import com.ruoyi.common.core.web.domain.BaseEntity; -import lombok.Data; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import javax.validation.constraints.*; +import lombok.Data; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import javax.validation.constraints.NotNull; +import java.util.Date; /** * 成员管理对象 health_person * @@ -63,6 +64,11 @@ public class HealthPerson extends BaseEntity @Excel(name = "体重") private Double weight; + /** 排序 */ + @ApiModelProperty(value="排序") + @Excel(name = "排序") + private int ranking; + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -79,6 +85,7 @@ public class HealthPerson extends BaseEntity .append("nickName", getNickName()) .append("height", getHeight()) .append("weight", getWeight()) + .append("ranking", getRanking()) .toString(); } } diff --git a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/dto/AnalysisDto.java b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/dto/AnalysisDto.java new file mode 100644 index 0000000..cb3b171 --- /dev/null +++ b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/dto/AnalysisDto.java @@ -0,0 +1,47 @@ +package com.ruoyi.health.domain.dto; + +import com.ruoyi.common.core.web.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *统计分析Dto对象 + * + * @author tianyongbao + * @date 2023-12-15 + */ +@ApiModel("统计分析Dto对象") +@Data +public class AnalysisDto extends BaseEntity implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** 查询id */ + @ApiModelProperty(value="id") + private Long id; + + /** 类型 日 */ + @ApiModelProperty(value="类型") + private String type; + + /** 开始日期 */ + @ApiModelProperty(value="开始日期") + private String startTime; + + /** 结束日期 */ + @ApiModelProperty(value="结束日期") + private String endTime; + + /** 类型 */ + @ApiModelProperty(value="类型") + private String dataType; + + /** 档案Id */ + @ApiModelProperty(value="档案id") + private Long recordId; + + +} diff --git a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/dto/HealthMedicineBasicDto.java b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/dto/HealthMedicineBasicDto.java index 9286c9f..dc65f51 100644 --- a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/dto/HealthMedicineBasicDto.java +++ b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/dto/HealthMedicineBasicDto.java @@ -1,9 +1,10 @@ package com.ruoyi.health.domain.dto; -import lombok.Data; -import java.io.Serializable; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; /** * 药品基础信息Dto对象 health_medicine_basic * @@ -20,6 +21,10 @@ public class HealthMedicineBasicDto implements Serializable @ApiModelProperty(value="药品名称") private String name; + /** 药品简称 */ + @ApiModelProperty(value="药品简称") + private String shortName; + /** 药品分类 */ @ApiModelProperty(value="药品分类") private String classification; diff --git a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/vo/HealthMarRecordVo.java b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/vo/HealthMarRecordVo.java index 28d8266..b67192e 100644 --- a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/vo/HealthMarRecordVo.java +++ b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/vo/HealthMarRecordVo.java @@ -25,4 +25,9 @@ public class HealthMarRecordVo extends HealthMarRecord @Excel(name = "健康档案") private String healthRecordName; + /** 单位名称 */ + @ApiModelProperty(value="单位名称)") + @Excel(name = "单位名称") + private String unitName; + } diff --git a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/vo/HealthStaticAnalysisVo.java b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/vo/HealthStaticAnalysisVo.java new file mode 100644 index 0000000..34eb68e --- /dev/null +++ b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/domain/vo/HealthStaticAnalysisVo.java @@ -0,0 +1,37 @@ +package com.ruoyi.health.domain.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * 活动记录Vo对象 health_activity + * + * @author tianyongbao + * @date 2024-10-07 + */ +@ApiModel("活动记录Vo对象") +@Data +public class HealthStaticAnalysisVo +{ + + private String name;//名称 + + private Double total;//总值 + + private Double max;//最大值 + + private Double min;//最小值 + + private Double average;//平均值 + + private Double value;//值 + + private String strValue;//字符串值 + + private int count;//次数 + + private String details;//详细 + + private String time;//时间 + +} diff --git a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/mapper/StatisticAnalysisMapper.java b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/mapper/StatisticAnalysisMapper.java new file mode 100644 index 0000000..d08601c --- /dev/null +++ b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/mapper/StatisticAnalysisMapper.java @@ -0,0 +1,9 @@ +package com.ruoyi.health.mapper; + +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface StatisticAnalysisMapper { + + +} diff --git a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/service/IStatisticAnalysisService.java b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/service/IStatisticAnalysisService.java new file mode 100644 index 0000000..a714d86 --- /dev/null +++ b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/service/IStatisticAnalysisService.java @@ -0,0 +1,18 @@ +package com.ruoyi.health.service; + +import com.ruoyi.health.domain.dto.AnalysisDto; + +import java.util.Map; + +/** + * @author 22077662 + */ +public interface IStatisticAnalysisService { + + + public Map getMarAnalysis(AnalysisDto analysisDto); + + + public Map getTemperatureAnalysis(AnalysisDto analysisDto); + +} diff --git a/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/service/impl/StatisticAnalysisImpl.java b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/service/impl/StatisticAnalysisImpl.java new file mode 100644 index 0000000..2aa8e3d --- /dev/null +++ b/ruoyi-modules/intc-health/src/main/java/com/ruoyi/health/service/impl/StatisticAnalysisImpl.java @@ -0,0 +1,349 @@ +package com.ruoyi.health.service.impl; + +import com.ruoyi.common.core.utils.DateUtils; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.security.utils.DictUtils; +import com.ruoyi.health.domain.dto.AnalysisDto; +import com.ruoyi.health.domain.dto.HealthMarRecordDto; +import com.ruoyi.health.domain.dto.HealthTemperatureRecordDto; +import com.ruoyi.health.domain.vo.HealthMarRecordVo; +import com.ruoyi.health.domain.vo.HealthStaticAnalysisVo; +import com.ruoyi.health.domain.vo.HealthTemperatureRecordVo; +import com.ruoyi.health.mapper.HealthMarRecordMapper; +import com.ruoyi.health.mapper.HealthTemperatureRecordMapper; +import com.ruoyi.health.service.IStatisticAnalysisService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +@Service +public class StatisticAnalysisImpl implements IStatisticAnalysisService { + + @Resource + private HealthMarRecordMapper marRecordMapper; + + @Resource + private HealthTemperatureRecordMapper temperatureRecordMapper; + + + @Override + public Map getMarAnalysis(AnalysisDto analysisDto) { + //返回数据 + HashMap map = new HashMap<>(); + DecimalFormat decimalFormat = new DecimalFormat("#.###"); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat dateFormatSecond = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat formatterMonth = new SimpleDateFormat("yyyy-MM"); + //月查询 + if(analysisDto.getType().equals("2")){ + if(StringUtils.isEmpty(analysisDto.getStartTime())&&StringUtils.isEmpty(analysisDto.getEndTime())){ + String endTime=dateFormat.format(DateUtils.addMonths(DateUtils.getNowDate(),0)); + String startTime=dateFormat.format(DateUtils.addMonths(DateUtils.getNowDate(),-24)); + analysisDto.setStartTime(startTime); + analysisDto.setEndTime(endTime); + }else { + analysisDto.setStartTime(analysisDto.getStartTime()+"-01"); + if(analysisDto.getEndTime().equals(formatterMonth.format(new Date()))){ + SimpleDateFormat sdf = new SimpleDateFormat("dd"); + analysisDto.setEndTime(analysisDto.getEndTime()+"-"+sdf.format(new Date())); + }else { + analysisDto.setEndTime(analysisDto.getEndTime()+"-31"); + } + + } + + //年查询 + }else if(analysisDto.getType().equals("3")){ + if(StringUtils.isEmpty(analysisDto.getStartTime())&&StringUtils.isEmpty(analysisDto.getEndTime())){ + String endTime=dateFormat.format(DateUtils.getNowDate()); + String startTime=dateFormat.format(DateUtils.addYears(DateUtils.getNowDate(),-5)); + analysisDto.setStartTime(startTime); + analysisDto.setEndTime(endTime); + }else { + analysisDto.setStartTime(analysisDto.getStartTime()+"-01-01"); + SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy"); + if(analysisDto.getEndTime().equals(sdfYear.format(new Date()))){ + SimpleDateFormat sdf = new SimpleDateFormat("MM-dd"); + analysisDto.setEndTime(analysisDto.getEndTime()+"-"+sdf.format(new Date())); + }else { + analysisDto.setEndTime(analysisDto.getEndTime()+"-12-31"); + } + + } + } + HealthMarRecordDto dto=new HealthMarRecordDto(); + //获取数据 + dto.setEndTime(analysisDto.getEndTime()); + dto.setStartTime(analysisDto.getStartTime()); + + List marRecordVoList=marRecordMapper.selectHealthMarRecordList(dto); + + List queryList =new ArrayList<>(); + + if("1".equals(analysisDto.getType())){ + //日列表 + List staticsTimeList=new ArrayList<>(); + for (HealthMarRecordVo vo:marRecordVoList + ) { + if (null != vo.getUnit()) { + vo.setUnitName(DictUtils.getDictLabel("medical_unit", vo.getUnit().toString())); + } + String dayString=dateFormat.format(vo.getDosingTime()); + + if(!staticsTimeList.contains(dayString)){ + staticsTimeList.add(dayString); + } + } + + for (String staticsTime :staticsTimeList + ) { + double count=0; + String details=""; + for (HealthMarRecordVo vo:marRecordVoList + ) { + String dayString=dateFormat.format(vo.getDosingTime()); + + if(staticsTime.equals(dayString)){ + count++; + details+=vo.getPersonName()+"于"+dateFormatSecond.format(vo.getDosingTime())+"用药【"+vo.getName()+"】"+vo.getDosage()+vo.getUnitName()+";
"; + } + } + HealthMarRecordVo healthMarRecordVo=new HealthMarRecordVo(); + healthMarRecordVo.setContent(count); + healthMarRecordVo.setRemark(staticsTime); + healthMarRecordVo.setName(details); + queryList.add(healthMarRecordVo); + } + + //年查询 + } + else if("2".equals(analysisDto.getType())){ + //月列表 + List staticsTimeList=new ArrayList<>(); + for (HealthMarRecordVo vo:marRecordVoList + ) { + String monthString=dateFormat.format(vo.getDosingTime()).substring(0,7); + if(!staticsTimeList.contains(monthString)){ + staticsTimeList.add(monthString); + } + } + for (String staticsTime :staticsTimeList + ) { + double actualCreditBillMonth=0; + for (HealthMarRecordVo vo:marRecordVoList + ) { + String monthString=dateFormat.format(vo.getDosingTime()).substring(0,7); + if(staticsTime.equals(monthString)){ + actualCreditBillMonth++; + } + } + HealthMarRecordVo analysisVo=new HealthMarRecordVo(); + analysisVo.setContent(actualCreditBillMonth); + analysisVo.setRemark(staticsTime); + queryList.add(analysisVo); + } + //年查询 + }else if("3".equals(analysisDto.getType())){ + List staticsTimeList=new ArrayList<>(); + for (HealthMarRecordVo vo:marRecordVoList + ) { + String yearString=dateFormat.format(vo.getDosingTime()).substring(0,4); + + if(!staticsTimeList.contains(yearString)){ + staticsTimeList.add(yearString); + } + } + for (String staticsTime :staticsTimeList + ) { + double actualCreditBillYear=0; + for (HealthMarRecordVo vo:marRecordVoList + ) { + String yearString=dateFormat.format(vo.getCreateTime()).substring(0,4); + if(staticsTime.equals(yearString)){ + actualCreditBillYear++; + } + } + HealthMarRecordVo analysisVo=new HealthMarRecordVo(); + analysisVo.setContent(actualCreditBillYear); + analysisVo.setRemark(staticsTime); + queryList.add(analysisVo); + + } + + } + + ArrayList> marList = new ArrayList<>(); + ArrayList> tableMarList = new ArrayList<>(); + for (HealthMarRecordVo vo:queryList + ) { + Map datamap = new HashMap<>(); + datamap.put("time", vo.getRemark()); + datamap.put("value", decimalFormat.format(vo.getContent())); + datamap.put("detail", vo.getName()); + tableMarList.add(datamap); + } + Collections.reverse(queryList); + for (HealthMarRecordVo vo:queryList + ) { + Map datamap = new HashMap<>(); + datamap.put("time", vo.getRemark()); + datamap.put("value", decimalFormat.format(vo.getContent())); + marList.add(datamap); + } + //列表 + map.put("marList",marList); + map.put("tableMarList",tableMarList); + + return map; + } + + @Override + public Map getTemperatureAnalysis(AnalysisDto analysisDto) { + //返回数据 + HashMap map = new HashMap<>(); + DecimalFormat decimalFormat = new DecimalFormat("#.###"); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat dateFormatSecond = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat second = new SimpleDateFormat("HH:mm:ss"); + HealthTemperatureRecordDto dto=new HealthTemperatureRecordDto(); + //获取数据 + dto.setEndTime(analysisDto.getEndTime()); + dto.setStartTime(analysisDto.getStartTime()); + dto.setPersonId(analysisDto.getId()); + dto.setHealthRecordId(analysisDto.getRecordId()); + List temperatureRecordVoList=temperatureRecordMapper.selectHealthTemperatureRecordList(dto); + //测量总次数 + int totalCount=0; + //正常体温次数 + int normalTempCount=0; + //低烧次数 + int lowerTempCount=0; + //中烧次数 + int middleTempCount=0; + //超过38.5次数 + int higherTempCount=0; + // 最大值,最小值 + double maxTemp=0; + double minTemp=0; + if(!temperatureRecordVoList.isEmpty()) { + maxTemp = temperatureRecordVoList.stream().mapToDouble(HealthTemperatureRecordVo::getTemperature).max().getAsDouble(); + minTemp = temperatureRecordVoList.stream().mapToDouble(HealthTemperatureRecordVo::getTemperature).min().getAsDouble(); + } + for (HealthTemperatureRecordVo vo:temperatureRecordVoList + ){ + totalCount++; + if (vo.getTemperature()<36.9) { + normalTempCount++; + }else if (vo.getTemperature()>=36.9&&vo.getTemperature()<=37.5) { + lowerTempCount++; + }else if (vo.getTemperature()>37.5&&vo.getTemperature()<38.5) { + middleTempCount++; + }else if (vo.getTemperature()>=38.5) { + higherTempCount++; + } + } + //平均体温 + double accumulateTemp = temperatureRecordVoList.stream().mapToDouble(HealthTemperatureRecordVo::getTemperature).sum(); + double averageTemp=0; + if(totalCount!=0){ + averageTemp= accumulateTemp /totalCount; + } + map.put("averageTemp", decimalFormat.format(averageTemp)); + //测量总次数 + map.put("totalCount",totalCount); + map.put("normalTempCount",normalTempCount); + map.put("lowerTempCount",lowerTempCount); + map.put("middleTempCount",middleTempCount); + map.put("higherTempCount",higherTempCount); + map.put("maxTemp",maxTemp); + map.put("minTemp",minTemp); + + List queryList =new ArrayList<>(); + if("1".equals(analysisDto.getType())){ + //日列表 + List staticsTimeList=new ArrayList<>(); + for (HealthTemperatureRecordVo vo:temperatureRecordVoList + ) { + String dayString=dateFormat.format(vo.getMeasureTime()); + if(!staticsTimeList.contains(dayString)){ + staticsTimeList.add(dayString); + } + } + + for (String staticsTime :staticsTimeList + ) { + String details=""; + //测量次数 + int measureCount=0; + //当天最高体温 + double max=0; + //当天最低体温 + double min=45; + //当天最低体温 + double average=0; + //当天体温总计 + double total=0; + + for (HealthTemperatureRecordVo vo:temperatureRecordVoList + ) { + String dayString=dateFormat.format(vo.getMeasureTime()); + if(staticsTime.equals(dayString)){ + double temp=vo.getTemperature(); + total+=temp; + if(temp>max){ + max=temp; + } + if(temp"; + } + } + average=total/measureCount; + HealthStaticAnalysisVo analysisVo=new HealthStaticAnalysisVo(); + analysisVo.setTime(staticsTime); + analysisVo.setDetails(details); + analysisVo.setMax(max); + analysisVo.setMin(min); + analysisVo.setCount(measureCount); + analysisVo.setAverage(average); + queryList.add(analysisVo); + } + } + + ArrayList> temperatureList = new ArrayList<>(); + for (HealthTemperatureRecordVo vo:temperatureRecordVoList + ) { + Map datamap = new HashMap<>(); + datamap.put("time", dateFormatSecond.format(vo.getMeasureTime())); + datamap.put("value", decimalFormat.format(vo.getTemperature())); + temperatureList.add(datamap); + } + //列表 + map.put("temperatureList",temperatureList); + + ArrayList> tableList = new ArrayList<>(); + for (HealthStaticAnalysisVo vo:queryList + ) { + Map datamap = new HashMap<>(); + datamap.put("time", vo.getTime()); + datamap.put("count", vo.getCount()); +// datamap.put("value", decimalFormat.format(vo.getValue())); + datamap.put("detail", vo.getDetails()); + datamap.put("max", vo.getMax()); + datamap.put("min", vo.getMin()); + datamap.put("average", decimalFormat.format(vo.getAverage())); + + tableList.add(datamap); + } + //列表 + map.put("tableList",tableList); + return map; + } + +} diff --git a/ruoyi-modules/intc-health/src/main/resources/mapper/health/HealthMedicineBasicMapper.xml b/ruoyi-modules/intc-health/src/main/resources/mapper/health/HealthMedicineBasicMapper.xml index d99026e..310b243 100644 --- a/ruoyi-modules/intc-health/src/main/resources/mapper/health/HealthMedicineBasicMapper.xml +++ b/ruoyi-modules/intc-health/src/main/resources/mapper/health/HealthMedicineBasicMapper.xml @@ -33,10 +33,45 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + - select a.id, a.name, a.classification, a.category, a.brand, a.packaging, a.manufacturers, a.treatment_type, a.is_import, a.ingredients, a.usage, a.dosage_form, a.create_by, a.create_time, a.update_by, a.update_time, a.del_flag, a.remark, a.code, a.specifications, a.unit, a.adverse_reaction, a.address, a.content, a.content_unit, a.character, a.storage, a.indications from health_medicine_basic a + select + a.id, + a.name, + a.classification, + a.category, + a.brand, + a.packaging, + a.manufacturers, + a.treatment_type, + a.is_import, + a.ingredients, + a.usage, + a.dosage_form, + a.create_by, + a.create_time, + a.update_by, + a.update_time, + a.del_flag, + a.remark, + a.code, + a.specifications, + a.unit, + a.adverse_reaction, + a.address, + a.content, + a.content_unit, + a.character, + a.storage, + a.indications, + a.short_name, + a.package_unit + from + health_medicine_basic a + @@ -34,7 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${params.dataScope} - order by a.create_time desc + order by a.ranking asc