Browse Source

统计

master
zhizhi wu 5 years ago
parent
commit
81695b0171
  1. 54
      src/main/java/com/ccsens/carbasics/service/StatisticalService.java
  2. 8
      src/main/java/com/ccsens/carbasics/util/Constant.java

54
src/main/java/com/ccsens/carbasics/service/StatisticalService.java

@ -18,8 +18,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.text.SimpleDateFormat;
import java.util.List; import java.util.*;
/** /**
* @description: 统计查询 * @description: 统计查询
@ -150,11 +150,44 @@ public class StatisticalService implements IStatisticalService {
List<Long> hospitalIds = getHospitalIds(param.getProjectId()); List<Long> hospitalIds = getHospitalIds(param.getProjectId());
List<StatisticalVo.Item> items = firstAidRecordDao.countThrombosisRateDate(param.getCountType(), hospitalIds, param.getStartTime(), param.getEndTime()); List<StatisticalVo.Item> items = firstAidRecordDao.countThrombosisRateDate(param.getCountType(), hospitalIds, param.getStartTime(), param.getEndTime());
StatisticalVo.Common common = new StatisticalVo.Common(); StatisticalVo.Common common = new StatisticalVo.Common();
// TODO 补充items 计算求和 common.setTotal(getTotal(items));
common.setTotal(0L); List<StatisticalVo.Item> newItems = fillItems(items, param.getStartTime(), param.getEndTime(), param.getCountType());
common.setList(items); common.setList(newItems);
return common; return common;
} }
private List<StatisticalVo.Item> fillItems(List<StatisticalVo.Item> items, Long startTime, Long endTime, Byte countType) {
if (CollectionUtil.isEmpty(items)) {
return items;
}
Map<String, StatisticalVo.Item> map = new HashMap<>();
List<StatisticalVo.Item> newItems = new ArrayList<>();
items.forEach(item -> map.put(item.getName(), item));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int unit = Calendar.HOUR_OF_DAY;
if (countType == Constant.Param.COUNT_TYPE_HOUR) {
sdf = new SimpleDateFormat("yyyy-MM-dd HH");
unit = Calendar.HOUR;
} else if (countType == Constant.Param.COUNT_TYPE_MONTH) {
sdf = new SimpleDateFormat("yyyy-MM");
unit = Calendar.MONTH;
}
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(startTime);
while (calendar.getTimeInMillis() <= endTime) {
String format = sdf.format(calendar.getTime());
if (map.containsKey(format)) {
newItems.add(map.get(format));
} else {
newItems.add(new StatisticalVo.Item(format, null));
}
calendar.add(unit, 1);
}
return items;
}
@Override @Override
public StatisticalVo.Common timeWindowsPatient(StatisticalDto.TimeAndType param, Long userId) { public StatisticalVo.Common timeWindowsPatient(StatisticalDto.TimeAndType param, Long userId) {
List<Long> hospitalIds = getHospitalIds(param.getProjectId()); List<Long> hospitalIds = getHospitalIds(param.getProjectId());
@ -170,12 +203,9 @@ public class StatisticalService implements IStatisticalService {
} }
List<StatisticalVo.Item> items = firstAidRecordDao.countTimeWindowPatientFx(hospitalIds, param.getStartTime(), param.getEndTime(), type); List<StatisticalVo.Item> items = firstAidRecordDao.countTimeWindowPatientFx(hospitalIds, param.getStartTime(), param.getEndTime(), type);
StatisticalVo.Common common = new StatisticalVo.Common(); StatisticalVo.Common common = new StatisticalVo.Common();
long total = 0L; common.setTotal(getTotal(items));
for (StatisticalVo.Item item : items) { List<StatisticalVo.Item> newItems = fillItems(items, param.getStartTime(), param.getEndTime(), param.getCountType());
total += Integer.parseInt(item.getValue()); common.setList(newItems);
}
common.setTotal(total);
common.setList(items);
return common; return common;
} }
@ -228,7 +258,7 @@ public class StatisticalService implements IStatisticalService {
return common; return common;
} }
private long getTotal(List<StatisticalVo.Item> items, int countType) { private long getTotal(List<StatisticalVo.Item> items) {
long total = 0L; long total = 0L;
if(CollectionUtil.isNotEmpty(items)){ if(CollectionUtil.isNotEmpty(items)){
for (StatisticalVo.Item item : items){ for (StatisticalVo.Item item : items){

8
src/main/java/com/ccsens/carbasics/util/Constant.java

@ -15,8 +15,14 @@ public class Constant {
/**xls*/ /**xls*/
public static final String XLS = "xls"; public static final String XLS = "xls";
public static final class Param {
//0-每小时 1-每天 2-每月
public final static byte COUNT_TYPE_HOUR = 0;
public final static byte COUNT_TYPE_DAY = 1;
public final static byte COUNT_TYPE_MONTH = 2;
}
public static final class Statistical{ public static final class Statistical {
public final static String TIME_WINDOW_NAME = "时间窗患者数"; public final static String TIME_WINDOW_NAME = "时间窗患者数";
public final static String THROMBOSIS_RATE_NAME = "溶栓率"; public final static String THROMBOSIS_RATE_NAME = "溶栓率";
public final static String DNT_MEDIAN_NAME = "DNT中位数"; public final static String DNT_MEDIAN_NAME = "DNT中位数";

Loading…
Cancel
Save