From 48de12e1635b99d593048398af45d186c8f39234 Mon Sep 17 00:00:00 2001 From: “djh” <“3298565835@qq.com”> Date: 星期二, 29 七月 2025 11:10:42 +0800 Subject: [PATCH] 危化品简化版修改 --- hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzStatisticServiceImpl.java | 99 ++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 85 insertions(+), 14 deletions(-) diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzStatisticServiceImpl.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzStatisticServiceImpl.java index ebdd109..790e53d 100644 --- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzStatisticServiceImpl.java +++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzStatisticServiceImpl.java @@ -19,6 +19,8 @@ import com.gkhy.hazmat.common.utils.SecurityUtils; import com.gkhy.hazmat.common.utils.StringUtils; import com.gkhy.hazmat.system.domain.*; +import com.gkhy.hazmat.system.domain.dto.HazmatUseStatisticDTO; +import com.gkhy.hazmat.system.domain.vo.HzCompanyMessage; import com.gkhy.hazmat.system.domain.vo.HzEntryRecordVO; import com.gkhy.hazmat.system.domain.vo.HzHazmatUseVO; import com.gkhy.hazmat.system.domain.vo.HzHomeDataVO; @@ -195,31 +197,31 @@ @Override - public CommonPage useStatic(String startTime, String endTime,Long companyId) { + public CommonPage useStatic(HazmatUseStatisticDTO useStatisticDTO) { SysUser currentUser= SecurityUtils.getLoginUser().getUser(); checkUserAllowed(currentUser); String startDate=""; String endDate=""; - if(StringUtils.isBlank(startTime)&&StringUtils.isBlank(endTime)){ + if(StringUtils.isBlank(useStatisticDTO.getStartTime())&&StringUtils.isBlank(useStatisticDTO.getEndTime())){ Date currentDate=new Date(); startDate= DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.endOfDay(currentDate), -6)), DatePattern.NORM_DATETIME_FORMAT); endDate=DateUtil.format(DateUtil.endOfDay(currentDate),DatePattern.NORM_DATETIME_FORMAT); - } else if (StringUtils.isBlank(startTime)&&StringUtils.isNotBlank(endTime)) { - startDate= DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.endOfDay(new Date(endTime)), -6)), DatePattern.NORM_DATETIME_FORMAT); - endDate=endTime; - }else if (StringUtils.isNotBlank(startTime)&&StringUtils.isBlank(endTime)){ - startDate=startTime; - endDate=DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.endOfDay(new Date(endTime)), 6)), DatePattern.NORM_DATETIME_FORMAT); + } else if (StringUtils.isBlank(useStatisticDTO.getStartTime())&&StringUtils.isNotBlank(useStatisticDTO.getEndTime())) { + startDate= DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.endOfDay(new Date(useStatisticDTO.getEndTime())), -6)), DatePattern.NORM_DATETIME_FORMAT); + endDate=useStatisticDTO.getEndTime(); + }else if (StringUtils.isNotBlank(useStatisticDTO.getStartTime())&&StringUtils.isBlank(useStatisticDTO.getEndTime())){ + startDate=useStatisticDTO.getStartTime(); + endDate=DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.endOfDay(new Date(useStatisticDTO.getEndTime())), 6)), DatePattern.NORM_DATETIME_FORMAT); }else{ - startDate=startTime; - endDate=endTime; - if(DateUtil.between(DateUtil.parse(startDate),DateUtil.parse(startTime), DateUnit.DAY)>90){ + startDate=useStatisticDTO.getStartTime(); + endDate=useStatisticDTO.getEndTime(); + if(DateUtil.between(DateUtil.parse(startDate),DateUtil.parse(useStatisticDTO.getStartTime()), DateUnit.DAY)>90){ throw new ApiException("只能查询90天以内数据"); } } if (currentUser.getUserType().equals(UserTypeEnum.CHECK_USER.getCode())){ - IdTableNameHandler.setCurrentId(companyId); + IdTableNameHandler.setCurrentId(useStatisticDTO.getCompanyId()); }else { //设置分表id @@ -227,7 +229,10 @@ IdTableNameHandler.setCurrentId(currentUser.getCompanyId()); } PageUtils.startPage(); - List<HzHazmatUseVO> hazmatUseVOList= hazmatMapper.useCountStatic(startDate, endDate,currentUser.getUserType().equals(UserTypeEnum.CHECK_USER.getCode()) ? companyId:currentUser.getCompanyId()); + if (!currentUser.getUserType().equals(UserTypeEnum.CHECK_USER.getCode())){ + useStatisticDTO.setCompanyId(currentUser.getCompanyId()); + } + List<HzHazmatUseVO> hazmatUseVOList= hazmatMapper.useCountStatic(useStatisticDTO); IdTableNameHandler.removeCurrentId(); if(!hazmatUseVOList.isEmpty()) { List<Long> basicIds = hazmatUseVOList.stream().map(HzHazmatUseVO::getBasicId).collect(Collectors.toList()); @@ -272,7 +277,11 @@ //设置分表id IdTableNameHandler.setCurrentId(currentUser.getCompanyId()); // PageUtils.startPage(); - List<HzHazmatUseVO> hazmatUseVOList= hazmatMapper.useCountStatic(startDate, endDate,currentUser.getCompanyId()); + HazmatUseStatisticDTO hazmatUseStatisticDTO = new HazmatUseStatisticDTO(); + hazmatUseStatisticDTO.setStartTime(startDate); + hazmatUseStatisticDTO.setEndTime(endDate); + hazmatUseStatisticDTO.setCompanyId(currentUser.getCompanyId()); + List<HzHazmatUseVO> hazmatUseVOList= hazmatMapper.useCountStatic(hazmatUseStatisticDTO); IdTableNameHandler.removeCurrentId(); List<HazmatBasicUseExcelData> hazmatBasicUseExcelDatas = new ArrayList<>(); if(!hazmatUseVOList.isEmpty()) { @@ -315,6 +324,68 @@ } + + @Override + public List<HzEntryRecordVO> dayUseStatistic(Long companyId) { + SysUser currentUser = SecurityUtils.getLoginUser().getUser(); + checkUserAllowed(currentUser); + Date currentDate = new Date(); + + // 设置当天的8点作为开始时间,20点作为结束时间 + DateTime beginOfDay = DateUtil.beginOfDay(currentDate); // 当天零点 + + // 从零点偏移8小时得到8点,偏移20小时得到20点 + DateTime startTime = DateUtil.offsetHour(beginOfDay, 8); // 08:00:00 + DateTime endTime = DateUtil.offsetHour(beginOfDay, 21); // 20:00:00 + + String startDate = DateUtil.format(startTime, DatePattern.NORM_DATETIME_FORMAT); + String endDate = DateUtil.format(endTime, DatePattern.NORM_DATETIME_FORMAT); + + // 设置分表ID逻辑 + if (currentUser.getUserType().equals(UserTypeEnum.CHECK_USER.getCode())) { + IdTableNameHandler.setCurrentId(companyId); + } else { + IdTableNameHandler.setCurrentId(currentUser.getCompanyId()); + } + + // 生成每小时的统计列表,初始count为0 + List<HzEntryRecordVO> hourEntryList = new ArrayList<>(); + DateTime currentHour = startTime; + Integer i = hazmatMapper.countTotal(currentUser.getUserType().equals(UserTypeEnum.CHECK_USER.getCode()) ? companyId:currentUser.getCompanyId()); + while (currentHour.isBefore(endTime)) { // 从8点开始到20点前,共12个小时 + String hour = DateUtil.format(currentHour, "HH"); // 两位小时格式,如08,09,...,19 + HzEntryRecordVO entryRecordVO = new HzEntryRecordVO(); + entryRecordVO.setHour(hour); + entryRecordVO.setCount(0); + entryRecordVO.setTotalCount(i); + hourEntryList.add(entryRecordVO); + currentHour = DateUtil.offsetHour(currentHour, 1); // 增加一小时 + } + // 查询数据库,按小时统计使用量 + List<HzEntryRecordVO> entryRecordVOList = hazmatMapper.useCountHourlyStatic(startDate, endDate, currentUser.getUserType().equals(UserTypeEnum.CHECK_USER.getCode()) ? companyId:currentUser.getCompanyId() + ); + hourEntryList.get(0).setTotalCount(i); + IdTableNameHandler.removeCurrentId(); + // 将查询结果合并到初始化的每小时列表中 + if (!entryRecordVOList.isEmpty()) { + Map<String, HzEntryRecordVO> resMap = entryRecordVOList.stream() + .collect(Collectors.toMap(HzEntryRecordVO::getHour, item -> item)); + for (HzEntryRecordVO hourEntry : hourEntryList) { + HzEntryRecordVO matched = resMap.get(hourEntry.getHour()); + if (matched != null) { + hourEntry.setCount(matched.getCount()); + } + } + } + return hourEntryList; + } + + @Override + public List<HzCompanyMessage> companyMessage(Long type) { + return hazmatMapper.companyMessage(type); + } + + private void setExcelResponseProp(HttpServletResponse response, String rawFileName) throws UnsupportedEncodingException { //设置内容类型 response.setContentType("application/vnd.vnd.ms-excel"); -- Gitblit v1.9.2