Commit e75eff5e483b8dd86ff3b8d781c56d9053b971b2

Authored by litao@lymsh.com
1 parent f4a97ab890

1111

Showing 1 changed file with 55 additions and 7 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java View file @ e75eff5
... ... @@ -226,7 +226,7 @@
226 226 @Override
227 227 public BaseResponse wxInfo(String parentId, Integer type) {
228 228 List<Map<String, Object>> restList = new ArrayList<>();
229   - List<BloodSugar> bloodSugars = mongoTemplate.find(Query.query(Criteria.where("parentId").is(parentId).and("bloodSugarType").is(type)).with(new Sort(Sort.Direction.DESC, "created")), BloodSugar.class);
  229 + List<BloodSugar> bloodSugars = mongoTemplate.find(Query.query(Criteria.where("parentId").is(parentId)).with(new Sort(Sort.Direction.DESC, "created")), BloodSugar.class);
230 230 Set<String> dayCountSet = new HashSet<>();
231 231 Set<String> monthCountSet = new HashSet<>();
232 232 for (BloodSugar bloodSugar : bloodSugars) {
233 233  
234 234  
235 235  
236 236  
237 237  
... ... @@ -245,22 +245,70 @@
245 245  
246 246  
247 247 Date date = new Date();
248   - Map<Integer, Object> monthAvgMap = new LinkedHashMap<>();
  248 + Map<String, Object> monthAvgMap = new LinkedHashMap<>();
249 249 Map<Integer, Map<String, Object>> monthAvgTemp = new LinkedHashMap<>();
250   - Map<Integer, Object> weekAvgMap = new LinkedHashMap<>();
  250 + Map<String, Object> weekAvgMap = new LinkedHashMap<>();
251 251 Map<Integer, Map<String, Object>> weekAvgMapTemp = new LinkedHashMap<>();
252 252 Date weekStart = DateUtil.addWeek(date, -1);
253 253 Date monthStart = DateUtil.addMonth(date, -1);
254   - List<BloodSugar> 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);
  254 + List<BloodSugar> bloodSugarsWeek = mongoTemplate.find(Query.query(Criteria.where("parentId").is(parentId).and("created").gte(weekStart)).with(new Sort(Sort.Direction.DESC, "created")), BloodSugar.class);
255 255 for (BloodSugar bloodSugar : bloodSugarsWeek) {
  256 + if(weekAvgMapTemp.containsKey(bloodSugar.getBloodSugarType())) {
  257 + Map<String, Object> temp = weekAvgMapTemp.get(bloodSugar.getBloodSugarType());
  258 + temp.put("dayCount", Integer.parseInt(temp.get("count") + "") + 1); // 总共有记录的天数
  259 + temp.put("sugarCount", Double.parseDouble(temp.get("sugarCount") + "") + Double.parseDouble(bloodSugar.getBloodSugar())); // 总共所有记录的和
  260 + weekAvgMapTemp.put(bloodSugar.getBloodSugarType(), temp);
  261 + } else {
  262 + Map<String, Object> temp = new HashMap<>();
  263 + temp.put("dayCount", 1); // 总共有记录的天数
  264 + temp.put("sugarCount", bloodSugar.getBloodSugar()); // 总共所有记录的和
  265 + weekAvgMapTemp.put(bloodSugar.getBloodSugarType(), temp);
  266 + }
  267 + }
  268 + for (BloodSugarEnums bloodSugarEnums : BloodSugarEnums.values()) {
  269 + for (Map.Entry<Integer, Map<String, Object>> entry : weekAvgMapTemp.entrySet()) {
  270 + weekAvgMap.put("name", bloodSugarEnums.getName());
  271 + if(entry.getKey() == bloodSugarEnums.getId()) {
  272 + Map<String, Object> map = entry.getValue();
  273 + Integer dayCount = (Integer) map.get("dayCount");
  274 + Double sugarCount = (Double) map.get("sugarCount");
  275 + weekAvgMap.put("value", sugarCount / dayCount);
  276 + } else {
  277 + weekAvgMap.put("value", "--");
  278 + }
  279 + }
  280 + }
  281 +
  282 + // 月平均
  283 + List<BloodSugar> bloodSugarsMonth = mongoTemplate.find(Query.query(Criteria.where("parentId").is(parentId).and("created").gte(monthStart)).with(new Sort(Sort.Direction.DESC, "created")), BloodSugar.class);
  284 + for (BloodSugar bloodSugar : bloodSugarsMonth) {
256 285 if(monthAvgTemp.containsKey(bloodSugar.getBloodSugarType())) {
257 286 Map<String, Object> temp = monthAvgTemp.get(bloodSugar.getBloodSugarType());
258 287 temp.put("dayCount", Integer.parseInt(temp.get("count") + "") + 1); // 总共有记录的天数
259   -// temp.put()
260   -// monthAvgTemp.put(bloodSugar.getBloodSugarType(), )
  288 + temp.put("sugarCount", Double.parseDouble(temp.get("sugarCount") + "") + Double.parseDouble(bloodSugar.getBloodSugar())); // 总共所有记录的和
  289 + monthAvgTemp.put(bloodSugar.getBloodSugarType(), temp);
  290 + } else {
  291 + Map<String, Object> temp = new HashMap<>();
  292 + temp.put("dayCount", 1); // 总共有记录的天数
  293 + temp.put("sugarCount", bloodSugar.getBloodSugar()); // 总共所有记录的和
  294 + monthAvgTemp.put(bloodSugar.getBloodSugarType(), temp);
261 295 }
262 296 }
263   - List<BloodSugar> 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);
  297 + for (BloodSugarEnums bloodSugarEnums : BloodSugarEnums.values()) {
  298 + for (Map.Entry<Integer, Map<String, Object>> entry : monthAvgTemp.entrySet()) {
  299 + weekAvgMap.put("name", bloodSugarEnums.getName());
  300 + if(entry.getKey() == bloodSugarEnums.getId()) {
  301 + Map<String, Object> map = entry.getValue();
  302 + Integer dayCount = (Integer) map.get("dayCount");
  303 + Double sugarCount = (Double) map.get("sugarCount");
  304 + weekAvgMap.put("value", sugarCount / dayCount);
  305 + } else {
  306 + weekAvgMap.put("value", "--");
  307 + }
  308 + }
  309 + }
  310 +
  311 +
264 312 return RespBuilder.buildSuccess("restList", restList, "count", bloodSugars.size(), "dayCount", dayCountSet.size(), "month", monthCountSet, "monthAvgMap", monthAvgMap, "weekAvgMap", weekAvgMap);
265 313 }
266 314