From 7b43430e03456d83dd5b8d119c30545a9f181e11 Mon Sep 17 00:00:00 2001 From: xy <748613696@qq.com> Date: Sun, 2 Jun 2024 15:25:45 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=BC=E5=90=88=E8=AF=84=E4=BC=B0=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/RespDataServiceImpl.java | 21 ++++++ .../pojo/param/hebeinorth/AssessParam.java | 3 + .../service/hebeinorth/IGridService.java | 2 +- .../service/impl/GridServiceImpl.java | 70 ++++++++----------- .../java/com/njcn/harmonic/util/TimeUtil.java | 67 ++++++++++++++++++ 5 files changed, 121 insertions(+), 42 deletions(-) create mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/util/TimeUtil.java diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/responsibility/impl/RespDataServiceImpl.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/responsibility/impl/RespDataServiceImpl.java index 7b50c721b..37e318a96 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/responsibility/impl/RespDataServiceImpl.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/service/responsibility/impl/RespDataServiceImpl.java @@ -1,6 +1,7 @@ package com.njcn.advance.service.responsibility.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; @@ -33,12 +34,18 @@ import com.njcn.advance.service.responsibility.IRespDataService; import com.njcn.advance.service.responsibility.IRespUserDataService; import com.njcn.advance.utils.ResponsibilityAlgorithm; import com.njcn.advance.utils.ResponsibilityCallDllOrSo; +import com.njcn.common.pojo.constant.ServerInfo; import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.utils.FileUtil; import com.njcn.common.utils.PubUtils; import com.njcn.db.constant.DbConstant; +import com.njcn.device.biz.commApi.CommTerminalGeneralClient; +import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; +import com.njcn.device.biz.pojo.dto.LineDevGetDTO; +import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.device.biz.pojo.po.Overlimit; +import com.njcn.device.pms.pojo.po.StatationStat; import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.pojo.vo.LineDetailDataVO; import com.njcn.device.pq.pojo.vo.LineDetailVO; @@ -50,6 +57,7 @@ import com.njcn.oss.constant.OssPath; import com.njcn.oss.utils.FileStorageUtil; import com.njcn.web.factory.PageFactory; import com.njcn.web.pojo.param.BaseParam; +import com.njcn.web.utils.RequestUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -58,6 +66,7 @@ import java.io.*; import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -85,9 +94,21 @@ public class RespDataServiceImpl extends ServiceImpl i private final IRespUserDataService respUserDataService; + private final CommTerminalGeneralClient commTerminalGeneralClient; + @Override public Page responsibilityList(BaseParam queryParam) { QueryWrapper queryWrapper = new QueryWrapper<>(); + //获取当前用户部门,根据部门获取监测点 + DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); + deptGetLineParam.setDeptId(RequestUtil.getDeptIndex()); + deptGetLineParam.setServerName(ServerInfo.ADVANCE_BOOT); + List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); + DeptGetChildrenMoreDTO dto = list.stream().collect(Collectors.toMap(DeptGetChildrenMoreDTO::getUnitId, Function.identity())).get(RequestUtil.getDeptIndex()); + if (CollUtil.isNotEmpty(dto.getLineBaseList())) { + List line = dto.getLineBaseList().stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + queryWrapper.in("pqs_resp_data.line_id", line); + } if (ObjectUtil.isNotNull(queryParam)) { //查询参数不为空,进行条件填充 if (StrUtil.isNotBlank(queryParam.getSearchValue())) { diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/hebeinorth/AssessParam.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/hebeinorth/AssessParam.java index cc4687776..a4445980c 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/hebeinorth/AssessParam.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/hebeinorth/AssessParam.java @@ -44,4 +44,7 @@ public class AssessParam { @ApiModelProperty("电压等级") private String voltageLevel; + @ApiModelProperty(name="type",value="类型(1年 2季度 3月份 4周 5日)") + private Integer type; + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/hebeinorth/IGridService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/hebeinorth/IGridService.java index 19f173a29..15f37fb40 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/hebeinorth/IGridService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/hebeinorth/IGridService.java @@ -41,7 +41,7 @@ public interface IGridService { List getData(AssessParam param); /** - * 综合评估趋势数据(当前时间统计前三个月时间) + * 综合评估趋势数据(当前时间统计前五个月时间、或者前五年) */ List getAssessTrend(AssessParam param); diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java index 807cb8a4b..ae2d1ed0a 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java @@ -26,6 +26,7 @@ import com.njcn.harmonic.pojo.vo.hebeinorth.EvaluationLevelVo; import com.njcn.harmonic.pojo.vo.hebeinorth.EvaluationVo; import com.njcn.harmonic.service.hebeinorth.IGridService; import com.njcn.harmonic.util.ComAssesUtil; +import com.njcn.harmonic.util.TimeUtil; import com.njcn.system.enums.DicDataEnum; import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.dto.DeptDTO; @@ -33,6 +34,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.time.LocalDate; +import java.time.Year; import java.time.YearMonth; import java.time.format.DateTimeFormatter; import java.util.*; @@ -176,14 +178,24 @@ public class GridServiceImpl implements IGridService { Map> lineDetailMap = lineDetailList.stream().collect(Collectors.groupingBy(LineDetail::getActualArea)); //获取部门 List deptList = deptFeignClient.getDepSonDetailByDeptId(param.getDeptIndex()).getData(); - //根据传入的参数,获取返回的月份 - List monthList = this.getLastThreeMonth(3); - monthList.forEach(month->{ - String firstDayOfMonth = month.atDay(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - String lastDayOfMonth = month.atEndOfMonth().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - List comAssesList = rStatComassesDMapper.getAvgCount(lineList,firstDayOfMonth,lastDayOfMonth); - map.put(month.toString(),comAssesList); - }); + //按月、年来展示数据 + if (Objects.equals(param.getType(),1)) { + List yearList = TimeUtil.getLastFiveYear(2); + yearList.forEach(year->{ + String firstDayOfYear = TimeUtil.getYearFirst(year); + String lastDayOfYear = TimeUtil.getYearLast(year); + List comAssesList = rStatComassesDMapper.getAvgCount(lineList,firstDayOfYear,lastDayOfYear); + map.put(year.toString(),comAssesList); + }); + } else if (Objects.equals(param.getType(),3)){ + List monthList = TimeUtil.getLastThreeMonth(5); + monthList.forEach(month->{ + String firstDayOfMonth = month.atDay(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + String lastDayOfMonth = month.atEndOfMonth().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + List comAssesList = rStatComassesDMapper.getAvgCount(lineList,firstDayOfMonth,lastDayOfMonth); + map.put(month.toString(),comAssesList); + }); + } //数据处理 deptList.forEach(item->{ if (lineDetailMap.containsKey(item.getArea())) { @@ -365,7 +377,7 @@ public class GridServiceImpl implements IGridService { // 获取当前年份 int currentYear = currentDate.getYear(); LocalDate beginDay = LocalDate.of(currentYear, 1, 1); - List monthList = getMonthsBetween(beginDay,currentDate); + List monthList = TimeUtil.getMonthsBetween(beginDay,currentDate); for (YearMonth month : monthList) { String firstDayOfMonth = month.atDay(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); String lastDayOfMonth = month.atEndOfMonth().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); @@ -775,28 +787,21 @@ public class GridServiceImpl implements IGridService { }else if(f4 getMonthsBetween(LocalDate startDate, LocalDate endDate) { - List months = new ArrayList<>(); - YearMonth currentMonth = YearMonth.from(startDate); - YearMonth endMonth = YearMonth.from(endDate); - while (!currentMonth.isAfter(endMonth)) { - months.add(currentMonth); - currentMonth = currentMonth.plusMonths(1); - } - return months; - } - /** * 过滤监测点 * @param list @@ -827,21 +832,4 @@ public class GridServiceImpl implements IGridService { return map; } - /** - * 根据传入的月份数获取时间集合 - * @param month - * @return - */ - public List getLastThreeMonth(int month) { - //按月获取时间集合 - LocalDate currentDate = LocalDate.now(); - int currentYear = currentDate.getYear(); - LocalDate beginDay = LocalDate.of(currentYear, 1, 1); - List monthList = getMonthsBetween(beginDay,currentDate); - if (monthList.size() > month) { - monthList = monthList.subList(monthList.size() - month,monthList.size()); - } - return monthList; - } - } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/util/TimeUtil.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/util/TimeUtil.java new file mode 100644 index 000000000..136689973 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/util/TimeUtil.java @@ -0,0 +1,67 @@ +package com.njcn.harmonic.util; + +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.Year; +import java.time.YearMonth; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +public class TimeUtil { + + /** + * 根据传入的月份数获取时间集合 + * @param month + * @return + */ + public static List getLastThreeMonth(int month) { + //按月获取时间集合 + LocalDate currentDate = LocalDate.now(); + int currentYear = currentDate.getYear(); + LocalDate beginDay = LocalDate.of(currentYear, 1, 1); + List monthList = getMonthsBetween(beginDay,currentDate); + if (monthList.size() > month) { + monthList = monthList.subList(monthList.size() - month,monthList.size()); + } + return monthList; + } + + public static List getMonthsBetween(LocalDate startDate, LocalDate endDate) { + List months = new ArrayList<>(); + YearMonth currentMonth = YearMonth.from(startDate); + YearMonth endMonth = YearMonth.from(endDate); + while (!currentMonth.isAfter(endMonth)) { + months.add(currentMonth); + currentMonth = currentMonth.plusMonths(1); + } + return months; + } + + public static List getLastFiveYear(int year) { + List yearList = new ArrayList<>(); + LocalDate currentDate = LocalDate.now(); + int currentYear = currentDate.getYear(); + for (int i = year; i >= 0; i--) { + yearList.add(currentYear - i); + } + return yearList; + } + + public static String getYearFirst(int year){ + Calendar calendar = Calendar.getInstance(); + calendar.clear(); + calendar.set(Calendar.YEAR, year); + Date currYearFirst = calendar.getTime(); + return new SimpleDateFormat("yyyy-MM-dd").format(currYearFirst); + } + + public static String getYearLast(int year){ + Calendar calendar = Calendar.getInstance(); + calendar.clear(); + calendar.set(Calendar.YEAR, year); + calendar.roll(Calendar.DAY_OF_YEAR, -1); + return new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()); + } +}