From 29058b309496ca8e2446221cfb8225b70bca2c30 Mon Sep 17 00:00:00 2001 From: guo Date: Tue, 31 Oct 2023 18:59:50 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E8=A1=A8=E9=83=A8=E5=88=86=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/xmgl/base/entity/vo/TrendVo.java | 16 +++- .../mapper/AmmeterRecordDetailMapper.java | 2 +- .../mapper/xml/AmmeterRecordDetailMapper.xml | 4 +- .../impl/AmmeterRecordDetailServiceImpl.java | 31 +++++++- .../java/com/zhgd/xmgl/util/DateUtils.java | 73 ++++++++++++++----- 5 files changed, 102 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/base/entity/vo/TrendVo.java b/src/main/java/com/zhgd/xmgl/base/entity/vo/TrendVo.java index c47d50e5b..f47dbd80d 100644 --- a/src/main/java/com/zhgd/xmgl/base/entity/vo/TrendVo.java +++ b/src/main/java/com/zhgd/xmgl/base/entity/vo/TrendVo.java @@ -1,5 +1,7 @@ package com.zhgd.xmgl.base.entity.vo; + +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import lombok.Data; @@ -35,9 +37,21 @@ public class TrendVo { vo.setY("0"); vo.setX(day); } - vo.setX(DateUtil.format(DateUtil.parseDate(vo.getX()), format)); + vo.setX(DateUtil.format(parse(vo.getX(), format), format)); rtList.add(vo); } return rtList; } + + /** + * @param str + * @param format + * @return + */ + private static DateTime parse(String str, String format) { + if ("yyyy-MM".equals(format)) { + return DateUtil.parse(str, format); + } + return DateUtil.parse(str); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/ammeter/mapper/AmmeterRecordDetailMapper.java b/src/main/java/com/zhgd/xmgl/modules/ammeter/mapper/AmmeterRecordDetailMapper.java index e350108e6..4ff3fb16c 100644 --- a/src/main/java/com/zhgd/xmgl/modules/ammeter/mapper/AmmeterRecordDetailMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/ammeter/mapper/AmmeterRecordDetailMapper.java @@ -57,7 +57,7 @@ public interface AmmeterRecordDetailMapper extends BaseMapper queryNewestRecord(Map map); - double getDegreeSum(Map map); + Double getDegreeSum(Map map); /** * 查询用电量 diff --git a/src/main/java/com/zhgd/xmgl/modules/ammeter/mapper/xml/AmmeterRecordDetailMapper.xml b/src/main/java/com/zhgd/xmgl/modules/ammeter/mapper/xml/AmmeterRecordDetailMapper.xml index 86e0ba0d9..65b844a5b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/ammeter/mapper/xml/AmmeterRecordDetailMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/ammeter/mapper/xml/AmmeterRecordDetailMapper.xml @@ -116,8 +116,8 @@ group by b.ammeter_no - + select ifnull(sum(ifnull(a.degree, 0)), 0) from ammeter_record_detail a WHERE a.project_sn = #{projectSn} diff --git a/src/main/java/com/zhgd/xmgl/modules/ammeter/service/impl/AmmeterRecordDetailServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/ammeter/service/impl/AmmeterRecordDetailServiceImpl.java index 861a4e7b9..720deb799 100644 --- a/src/main/java/com/zhgd/xmgl/modules/ammeter/service/impl/AmmeterRecordDetailServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/ammeter/service/impl/AmmeterRecordDetailServiceImpl.java @@ -9,9 +9,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhgd.xmgl.base.entity.vo.TrendVo; import com.zhgd.xmgl.modules.ammeter.entity.Ammeter; +import com.zhgd.xmgl.modules.ammeter.entity.AmmeterMonthRecord; import com.zhgd.xmgl.modules.ammeter.entity.AmmeterRecordDetail; import com.zhgd.xmgl.modules.ammeter.entity.vo.CountAmmeterRecordDetailVo; import com.zhgd.xmgl.modules.ammeter.mapper.AmmeterMapper; +import com.zhgd.xmgl.modules.ammeter.mapper.AmmeterMonthRecordMapper; import com.zhgd.xmgl.modules.ammeter.mapper.AmmeterRecordDetailMapper; import com.zhgd.xmgl.modules.ammeter.service.IAmmeterRecordDetailService; import com.zhgd.xmgl.modules.doublecarbon.entity.dto.DateValueDTO; @@ -39,6 +41,8 @@ public class AmmeterRecordDetailServiceImpl extends ServiceImpl queryUseRecordTrend(Map map) { List trendVos = new ArrayList<>(); Integer type = MapUtils.getInteger(map, "type"); + String projectSn = MapUtils.getString(map, "projectSn"); + String ammeterNo = MapUtils.getString(map, "ammeterNo"); if (Objects.equals(type, 1)) { //近7天 List ammeterRecordDetails = baseMapper.queryUseRecord(map); @@ -162,7 +168,30 @@ public class AmmeterRecordDetailServiceImpl extends ServiceImpl ammeterMonthRecords = ammeterMonthRecordMapper.selectList(new LambdaQueryWrapper() + .eq(AmmeterMonthRecord::getAmmeterNo, ammeterNo) + .eq(AmmeterMonthRecord::getAmmeterNo, projectSn)); + List dateStrList = DateUtils.getDateStrList(90, "yyyy-MM"); + List list = ammeterMonthRecords.stream().map(detail -> { + TrendVo vo = new TrendVo(); + vo.setY(detail.getUseDegree() + ""); + vo.setX(detail.getMonthTime() + ""); + return vo; + }).collect(Collectors.toList()); + return TrendVo.fillTrendVos(list, dateStrList, "yyyy-MM"); + } else if (Objects.equals(type, 4)) { + //近一年 + List ammeterMonthRecords = ammeterMonthRecordMapper.selectList(new LambdaQueryWrapper() + .eq(AmmeterMonthRecord::getAmmeterNo, ammeterNo) + .eq(AmmeterMonthRecord::getAmmeterNo, projectSn)); + List dateStrList = DateUtils.getDateStrList(93, "yyyy-MM"); + List list = ammeterMonthRecords.stream().map(detail -> { + TrendVo vo = new TrendVo(); + vo.setY(detail.getUseDegree() + ""); + vo.setX(detail.getMonthTime() + ""); + return vo; + }).collect(Collectors.toList()); + return TrendVo.fillTrendVos(list, dateStrList, "yyyy-MM"); } return trendVos; } diff --git a/src/main/java/com/zhgd/xmgl/util/DateUtils.java b/src/main/java/com/zhgd/xmgl/util/DateUtils.java index 5d82bdbe1..88e0ee662 100644 --- a/src/main/java/com/zhgd/xmgl/util/DateUtils.java +++ b/src/main/java/com/zhgd/xmgl/util/DateUtils.java @@ -1,5 +1,6 @@ package com.zhgd.xmgl.util; + import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; @@ -425,11 +426,11 @@ public class DateUtils { public static List getCurrentMonthAllDayList() { ArrayList rtList = new ArrayList<>(); Date now = new Date(); - DateTime beginDate = cn.hutool.core.date.DateUtil.beginOfMonth(now); - DateTime endDate = cn.hutool.core.date.DateUtil.endOfMonth(now); - long offset = cn.hutool.core.date.DateUtil.betweenDay(beginDate, endDate, true); + DateTime beginDate = DateUtil.beginOfMonth(now); + DateTime endDate = DateUtil.endOfMonth(now); + long offset = DateUtil.betweenDay(beginDate, endDate, true); for (int i = 0; i < offset + 1; i++) { - rtList.add(cn.hutool.core.date.DateUtil.formatDate(cn.hutool.core.date.DateUtil.offsetDay(beginDate, i))); + rtList.add(DateUtil.formatDate(DateUtil.offsetDay(beginDate, i))); } return rtList; } @@ -441,11 +442,11 @@ public class DateUtils { */ public static List getDaysBetweenLastMonth() { ArrayList rtList = new ArrayList<>(); - DateTime beginDate = cn.hutool.core.date.DateUtil.lastMonth(); + DateTime beginDate = DateUtil.lastMonth(); DateTime endDate = DateTime.now(); - long offset = cn.hutool.core.date.DateUtil.betweenDay(beginDate, endDate, true); + long offset = DateUtil.betweenDay(beginDate, endDate, true); for (int i = 0; i < offset + 1; i++) { - rtList.add(cn.hutool.core.date.DateUtil.formatDate(cn.hutool.core.date.DateUtil.offsetDay(beginDate, i))); + rtList.add(DateUtil.formatDate(DateUtil.offsetDay(beginDate, i))); } return rtList; } @@ -457,11 +458,11 @@ public class DateUtils { */ public static List getDaysBetweenLastWeek() { ArrayList rtList = new ArrayList<>(); - DateTime beginDate = cn.hutool.core.date.DateUtil.lastWeek(); + DateTime beginDate = DateUtil.lastWeek(); DateTime endDate = DateTime.now(); - long offset = cn.hutool.core.date.DateUtil.betweenDay(beginDate, endDate, true); + long offset = DateUtil.betweenDay(beginDate, endDate, true); for (int i = 0; i < offset + 1; i++) { - rtList.add(cn.hutool.core.date.DateUtil.formatDate(cn.hutool.core.date.DateUtil.offsetDay(beginDate, i))); + rtList.add(DateUtil.formatDate(DateUtil.offsetDay(beginDate, i))); } return rtList; } @@ -507,9 +508,9 @@ public class DateUtils { ArrayList rtList = new ArrayList<>(); DateTime beginDate = DateUtil.parseDate(queryStartTime); DateTime endDate = DateUtil.parseDate(queryEndTime); - long offset = cn.hutool.core.date.DateUtil.betweenDay(beginDate, endDate, true); + long offset = DateUtil.betweenDay(beginDate, endDate, true); for (int i = 0; i < offset + 1; i++) { - rtList.add(cn.hutool.core.date.DateUtil.format(cn.hutool.core.date.DateUtil.offsetDay(beginDate, i), format)); + rtList.add(DateUtil.format(DateUtil.offsetDay(beginDate, i), format)); } return rtList; } @@ -521,11 +522,11 @@ public class DateUtils { */ public static List getDaysBetweenLastWeekWithoutYear() { ArrayList rtList = new ArrayList<>(); - DateTime beginDate = cn.hutool.core.date.DateUtil.lastWeek(); + DateTime beginDate = DateUtil.lastWeek(); DateTime endDate = DateTime.now(); - long offset = cn.hutool.core.date.DateUtil.betweenDay(beginDate, endDate, true); + long offset = DateUtil.betweenDay(beginDate, endDate, true); for (int i = 0; i < offset + 1; i++) { - rtList.add(cn.hutool.core.date.DateUtil.format(cn.hutool.core.date.DateUtil.offsetDay(beginDate, i), "MM-dd")); + rtList.add(DateUtil.format(DateUtil.offsetDay(beginDate, i), "MM-dd")); } return rtList; } @@ -537,11 +538,11 @@ public class DateUtils { */ public static List getHoursListLastDay() { ArrayList rtList = new ArrayList<>(); - DateTime beginDate = cn.hutool.core.date.DateUtil.yesterday(); + DateTime beginDate = DateUtil.yesterday(); DateTime endDate = DateTime.now(); - long offset = cn.hutool.core.date.DateUtil.between(beginDate, endDate, DateUnit.HOUR); + long offset = DateUtil.between(beginDate, endDate, DateUnit.HOUR); for (int i = 1; i < offset + 1; i++) { - rtList.add(cn.hutool.core.date.DateUtil.format(cn.hutool.core.date.DateUtil.offsetHour(beginDate, i), "HH:00")); + rtList.add(DateUtil.format(DateUtil.offsetHour(beginDate, i), "HH:00")); } return rtList; } @@ -557,7 +558,41 @@ public class DateUtils { return DateUtil.formatDate(DateUtil.offsetDay(DateUtil.parseDate(dayStr), offset)); } + /** + * 获取所有日期列表 + * + * @param type 类型: + * 10.近12小时,20.近24小时,30.近半天,40.近一天,50.近两天,60.近一周,70.近两周,80.近一个月,90.近半年,93.近一年 + * 100.今天,200.昨天,300.本周,400.本月,500.本年,600.去年 + * @param pattern 格式 如:yyyy-MM-dd HH:mm:ss + * @return + */ + public static List getDateStrList(int type, String pattern) { + if (type == 1) { + + } else if (type == 90) { + ArrayList rtList = new ArrayList<>(); + DateTime endDate = DateTime.now(); + DateTime beginDate = DateUtil.offsetMonth(endDate, -6); + long offset = DateUtil.betweenMonth(beginDate, endDate, true); + for (int i = 1; i < offset + 1; i++) { + rtList.add(DateUtil.format(DateUtil.offsetMonth(beginDate, i), pattern)); + } + return rtList; + } else if (type == 93) { + ArrayList rtList = new ArrayList<>(); + DateTime endDate = DateTime.now(); + DateTime beginDate = DateUtil.offsetMonth(endDate, -12); + long offset = DateUtil.betweenMonth(beginDate, endDate, true); + for (int i = 1; i < offset + 1; i++) { + rtList.add(DateUtil.format(DateUtil.offsetMonth(beginDate, i), pattern)); + } + return rtList; + } + return null; + } + public static void main(String[] args) { - System.out.println(getDaysBetweenLastHalfMonth()); + System.out.println(getDateStrList(93, "yyyy-MM")); } }