diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxNursingLogServiceImpl.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxNursingLogServiceImpl.java index 2e34196..5a94c35 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxNursingLogServiceImpl.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxNursingLogServiceImpl.java @@ -1,9 +1,13 @@ package com.flossom.miniProgram.service.impl; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; +import java.time.ZoneId; import java.time.temporal.TemporalAdjusters; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import com.flossom.common.core.domain.entity.*; import com.flossom.common.core.domain.req.WxNursingLogReq; @@ -49,17 +53,20 @@ public class WxNursingLogServiceImpl implements IWxNursingLogService { queryNursingLog.getParams().put("beginTime", now.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN)); queryNursingLog.getParams().put("endTime", now.with(TemporalAdjusters.lastDayOfMonth()).with(LocalTime.MAX)); List wxNursingLogList = wxNursingLogMapper.selectWxNursingLogList(queryNursingLog); - if (wxNursingLogList != null) { + if (wxNursingLogList != null && wxNursingLogList.size() > 0) { WxNursingStatisticsRet wxNursingStatisticsRet = new WxNursingStatisticsRet(); - wxNursingStatisticsRet.setNursingNum(wxNursingLogList.size()); + Map collect = wxNursingLogList.stream().collect( + Collectors.groupingBy( + log -> log.getCreateTime().toInstant() + .atZone(ZoneId.systemDefault()).toLocalDate(), Collectors.counting() + ) + ); + wxNursingStatisticsRet.setNursingNum(collect.size()); Integer totalNursingSecond = 0; - if (wxNursingLogList.size() > 0) { - for (WxNursingLog wxNursingLog : wxNursingLogList) { - if (wxNursingLog.getNursingTime() != null) { - totalNursingSecond += wxNursingLog.getNursingTime().toSecondOfDay(); - } + for (WxNursingLog wxNursingLog : wxNursingLogList) { + if (wxNursingLog.getNursingTime() != null) { + totalNursingSecond += wxNursingLog.getNursingTime().toSecondOfDay(); } - } wxNursingStatisticsRet.setNursingTime(LocalTime.ofSecondOfDay(totalNursingSecond)); return wxNursingStatisticsRet;