| | |
| | | package com.gkhy.hazmat.system.service.impl; |
| | | |
| | | import cn.hutool.core.date.DateField; |
| | | import cn.hutool.core.date.DatePattern; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gkhy.hazmat.common.api.CommonPage; |
| | | import com.gkhy.hazmat.common.config.IdTableNameHandler; |
| | | import com.gkhy.hazmat.common.domain.entity.SysUser; |
| | | import com.gkhy.hazmat.common.enums.UserTypeEnum; |
| | | import com.gkhy.hazmat.common.exception.ApiException; |
| | | import com.gkhy.hazmat.common.utils.PageUtils; |
| | | import com.gkhy.hazmat.common.utils.SecurityUtils; |
| | | import com.gkhy.hazmat.system.domain.HzWarning; |
| | | import com.gkhy.hazmat.system.domain.vo.HzEntryRecordVO; |
| | | import com.gkhy.hazmat.system.mapper.HzWarningMapper; |
| | | import com.gkhy.hazmat.system.service.HzWarningService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | } |
| | | return baseMapper.selectWarningCount(currentUser.getCompanyId()); |
| | | } |
| | | |
| | | @Override |
| | | public List<HzEntryRecordVO> dailywarningCount() { |
| | | // 获取当前时间并清零时分秒 |
| | | DateTime now = DateUtil.date().setField(Calendar.HOUR_OF_DAY, 0) |
| | | .setField(Calendar.MINUTE, 0) |
| | | .setField(Calendar.SECOND, 0) |
| | | .setField(Calendar.MILLISECOND, 0); |
| | | |
| | | // 设置时间范围:30天前00:00:00 到 昨天23:59:59 |
| | | DateTime startTime = DateUtil.offsetDay(now, -30); |
| | | DateTime endTime = DateUtil.endOfDay(DateUtil.offsetDay(now, -1)); |
| | | |
| | | // 格式化成数据库参数 |
| | | String startDate = DateUtil.format(startTime, DatePattern.NORM_DATETIME_FORMAT); |
| | | String endDate = DateUtil.format(endTime, DatePattern.NORM_DATETIME_FORMAT); |
| | | |
| | | // 生成30天的日期列表(格式:dd) |
| | | List<HzEntryRecordVO> dailyEntryList = new ArrayList<>(); |
| | | DateTime currentDay = startTime; |
| | | while (!currentDay.isAfter(endTime)) { |
| | | String dayStr = DateUtil.format(currentDay, "MM-dd"); // 两位天数 |
| | | HzEntryRecordVO vo = new HzEntryRecordVO(); |
| | | vo.setDay(dayStr); |
| | | vo.setCount(0); |
| | | dailyEntryList.add(vo); |
| | | currentDay = DateUtil.offsetDay(currentDay, 1); |
| | | } |
| | | |
| | | // 查询数据库按天统计(需SQL返回dd格式) |
| | | List<HzEntryRecordVO> dbResults = baseMapper.dailyWarningStatic(startDate, endDate); |
| | | IdTableNameHandler.removeCurrentId(); |
| | | |
| | | // 合并结果到初始化列表 |
| | | if (!dbResults.isEmpty()) { |
| | | Map<String, HzEntryRecordVO> resultMap = dbResults.stream() |
| | | .collect(Collectors.toMap(HzEntryRecordVO::getDay, item -> item)); |
| | | for (HzEntryRecordVO dailyVO : dailyEntryList) { |
| | | HzEntryRecordVO matched = resultMap.get(dailyVO.getDay()); |
| | | if (matched != null) { |
| | | dailyVO.setCount(matched.getCount()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return dailyEntryList; |
| | | } |
| | | } |