diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java index ac0fc10..ab1efc8 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java @@ -226,7 +226,7 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga @Override public BaseResponse wxInfo(String parentId, Integer type) { List> restList = new ArrayList<>(); - List bloodSugars = mongoTemplate.find(Query.query(Criteria.where("parentId").is(parentId).and("bloodSugarType").is(type)).with(new Sort(Sort.Direction.DESC, "created")), BloodSugar.class); + List bloodSugars = mongoTemplate.find(Query.query(Criteria.where("parentId").is(parentId)).with(new Sort(Sort.Direction.DESC, "created")), BloodSugar.class); Set dayCountSet = new HashSet<>(); Set monthCountSet = new HashSet<>(); for (BloodSugar bloodSugar : bloodSugars) { @@ -245,22 +245,70 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga Date date = new Date(); - Map monthAvgMap = new LinkedHashMap<>(); + Map monthAvgMap = new LinkedHashMap<>(); Map> monthAvgTemp = new LinkedHashMap<>(); - Map weekAvgMap = new LinkedHashMap<>(); + Map weekAvgMap = new LinkedHashMap<>(); Map> weekAvgMapTemp = new LinkedHashMap<>(); Date weekStart = DateUtil.addWeek(date, -1); Date monthStart = DateUtil.addMonth(date, -1); - List bloodSugarsWeek = mongoTemplate.find(Query.query(Criteria.where("parentId").is(parentId).and("bloodSugarType").is(type).and("created").gte(weekStart)).with(new Sort(Sort.Direction.DESC, "created")), BloodSugar.class); + List bloodSugarsWeek = mongoTemplate.find(Query.query(Criteria.where("parentId").is(parentId).and("created").gte(weekStart)).with(new Sort(Sort.Direction.DESC, "created")), BloodSugar.class); for (BloodSugar bloodSugar : bloodSugarsWeek) { + if(weekAvgMapTemp.containsKey(bloodSugar.getBloodSugarType())) { + Map temp = weekAvgMapTemp.get(bloodSugar.getBloodSugarType()); + temp.put("dayCount", Integer.parseInt(temp.get("count") + "") + 1); // 总共有记录的天数 + temp.put("sugarCount", Double.parseDouble(temp.get("sugarCount") + "") + Double.parseDouble(bloodSugar.getBloodSugar())); // 总共所有记录的和 + weekAvgMapTemp.put(bloodSugar.getBloodSugarType(), temp); + } else { + Map temp = new HashMap<>(); + temp.put("dayCount", 1); // 总共有记录的天数 + temp.put("sugarCount", bloodSugar.getBloodSugar()); // 总共所有记录的和 + weekAvgMapTemp.put(bloodSugar.getBloodSugarType(), temp); + } + } + for (BloodSugarEnums bloodSugarEnums : BloodSugarEnums.values()) { + for (Map.Entry> entry : weekAvgMapTemp.entrySet()) { + weekAvgMap.put("name", bloodSugarEnums.getName()); + if(entry.getKey() == bloodSugarEnums.getId()) { + Map map = entry.getValue(); + Integer dayCount = (Integer) map.get("dayCount"); + Double sugarCount = (Double) map.get("sugarCount"); + weekAvgMap.put("value", sugarCount / dayCount); + } else { + weekAvgMap.put("value", "--"); + } + } + } + + // 月平均 + List bloodSugarsMonth = mongoTemplate.find(Query.query(Criteria.where("parentId").is(parentId).and("created").gte(monthStart)).with(new Sort(Sort.Direction.DESC, "created")), BloodSugar.class); + for (BloodSugar bloodSugar : bloodSugarsMonth) { if(monthAvgTemp.containsKey(bloodSugar.getBloodSugarType())) { Map temp = monthAvgTemp.get(bloodSugar.getBloodSugarType()); temp.put("dayCount", Integer.parseInt(temp.get("count") + "") + 1); // 总共有记录的天数 -// temp.put() -// monthAvgTemp.put(bloodSugar.getBloodSugarType(), ) + temp.put("sugarCount", Double.parseDouble(temp.get("sugarCount") + "") + Double.parseDouble(bloodSugar.getBloodSugar())); // 总共所有记录的和 + monthAvgTemp.put(bloodSugar.getBloodSugarType(), temp); + } else { + Map temp = new HashMap<>(); + temp.put("dayCount", 1); // 总共有记录的天数 + temp.put("sugarCount", bloodSugar.getBloodSugar()); // 总共所有记录的和 + monthAvgTemp.put(bloodSugar.getBloodSugarType(), temp); } } - List bloodSugarsMonth = mongoTemplate.find(Query.query(Criteria.where("parentId").is(parentId).and("bloodSugarType").is(type).and("created").gte(monthStart)).with(new Sort(Sort.Direction.DESC, "created")), BloodSugar.class); + for (BloodSugarEnums bloodSugarEnums : BloodSugarEnums.values()) { + for (Map.Entry> entry : monthAvgTemp.entrySet()) { + weekAvgMap.put("name", bloodSugarEnums.getName()); + if(entry.getKey() == bloodSugarEnums.getId()) { + Map map = entry.getValue(); + Integer dayCount = (Integer) map.get("dayCount"); + Double sugarCount = (Double) map.get("sugarCount"); + weekAvgMap.put("value", sugarCount / dayCount); + } else { + weekAvgMap.put("value", "--"); + } + } + } + + return RespBuilder.buildSuccess("restList", restList, "count", bloodSugars.size(), "dayCount", dayCountSet.size(), "month", monthCountSet, "monthAvgMap", monthAvgMap, "weekAvgMap", weekAvgMap); }