fix: 健康管理系统,统计分析修改。

This commit is contained in:
tianyongbao
2024-12-02 13:13:44 +08:00
parent c6a2cdfbbb
commit 2c18e66c77
3 changed files with 39 additions and 13 deletions

View File

@@ -35,4 +35,8 @@ public class HealthMarRecordVo extends HealthMarRecord
@ApiModelProperty(value="次数)")
private Integer count;
/** 次数 */
@ApiModelProperty(value="用药天数")
private Integer useDays;
}

View File

@@ -1,10 +1,11 @@
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.*;
import com.ruoyi.health.domain.vo.*;
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.*;
import com.ruoyi.health.service.IStatisticAnalysisService;
import org.springframework.stereotype.Service;
@@ -50,10 +51,10 @@ public class StatisticAnalysisImpl implements IStatisticAnalysisService {
//月查询
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);
// 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()))){
@@ -68,10 +69,10 @@ public class StatisticAnalysisImpl implements IStatisticAnalysisService {
//年查询
}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);
// 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");
@@ -130,10 +131,11 @@ public class StatisticAnalysisImpl implements IStatisticAnalysisService {
for (HealthMarRecordVo vo:marClassList
) {
Map<String, Object> datamap = new HashMap<>();
datamap.put("time", vo.getName());
datamap.put("value", vo.getCount());
datamap.put("medicalName", vo.getName());
datamap.put("count", vo.getCount());
datamap.put("unit", vo.getUnitName());
datamap.put("dosage", vo.getDosage());
datamap.put("useDays", vo.getUseDays());
marMapList.add(datamap);
}
//列表
@@ -287,6 +289,7 @@ public class StatisticAnalysisImpl implements IStatisticAnalysisService {
// 最大值,最小值
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();
@@ -332,6 +335,8 @@ public class StatisticAnalysisImpl implements IStatisticAnalysisService {
}
}
//发烧天数
int feverDay=0;
for (String staticsTime :staticsTimeList
) {
String details="";
@@ -346,6 +351,7 @@ public class StatisticAnalysisImpl implements IStatisticAnalysisService {
//当天体温总计
double total=0;
for (HealthTemperatureRecordVo vo:temperatureRecordVoList
) {
String dayString=dateFormat.format(vo.getMeasureTime());
@@ -363,6 +369,10 @@ public class StatisticAnalysisImpl implements IStatisticAnalysisService {
details+=""+second.format(vo.getMeasureTime())+"时间测量体温"+vo.getTemperature()+"℃;<br/>";
}
}
//大于37度认为当天发烧
if(max>37){
feverDay++;
}
average=total/measureCount;
HealthStaticAnalysisVo analysisVo=new HealthStaticAnalysisVo();
analysisVo.setTime(staticsTime);
@@ -373,6 +383,7 @@ public class StatisticAnalysisImpl implements IStatisticAnalysisService {
analysisVo.setAverage(average);
queryList.add(analysisVo);
}
map.put("feverDay",feverDay);
}
ArrayList<Map<String, Object>> temperatureList = new ArrayList<>();

View File

@@ -25,6 +25,7 @@
<result property="contentUnit" column="content_unit" />
<result property="personName" column="person_name" />
<result property="healthRecordName" column="health_record_name" />
<result property="useDays" column="useDays" />
</resultMap>
<select id="selectMarRecordList" parameterType="HealthMarRecordDto" resultMap="HealthMarRecordResult">
@@ -37,7 +38,17 @@
hmr.person_id ,
hp."name" as person_name,
hmr.health_record_id as health_record_id,
hr."name" as health_record_name
hr."name" as health_record_name,
(
select
count(distinct to_char(t.dosing_time, 'yyyy-MM-dd'))
from
health_mar_record t
where
t.person_id = hmr.person_id
and t.health_record_id = hmr.health_record_id
and t.medicine_id = hmr.medicine_id
) as useDays
from
health_mar_record hmr
left join health_medicine_basic hmb on