From 2f9fe8c64c7f5adfb1a5ae1eb98cf9daf5952dc2 Mon Sep 17 00:00:00 2001 From: zhangbaojian <1065122561@qq.com> Date: Thu, 6 Apr 2023 20:20:36 +0800 Subject: [PATCH] =?UTF-8?q?zbj//1.=E7=A8=B3=E6=80=81=E6=8C=87=E6=A0=87?= =?UTF-8?q?=E8=B6=85=E6=A0=87=E5=8D=A0=E6=AF=94(=E5=8C=BA=E5=9F=9F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/pq/pojo/vo/HomeostasisAreaVO.java | 30 +++++++ .../majornetwork/LargeScreenController.java | 52 ++++++++++++ .../majornetwork/LargeScreenMapper.java | 19 +++++ .../mapping/LargeScreenMapper.xml | 25 ++++++ .../majornetwork/LargeScreenService.java | 17 ++++ .../impl/LargeScreenServiceImpl.java | 82 +++++++++++++++++++ 6 files changed, 225 insertions(+) create mode 100644 pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/HomeostasisAreaVO.java create mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/LargeScreenController.java create mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/majornetwork/LargeScreenMapper.java create mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/majornetwork/mapping/LargeScreenMapper.xml create mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/LargeScreenService.java create mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/LargeScreenServiceImpl.java diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/HomeostasisAreaVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/HomeostasisAreaVO.java new file mode 100644 index 000000000..8d57174ed --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/HomeostasisAreaVO.java @@ -0,0 +1,30 @@ +package com.njcn.device.pq.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @version 1.0.0 + * @author: zbj + * @date: 2023/04/06 + */ +@Data +public class HomeostasisAreaVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 名称 + */ + @ApiModelProperty("名称") + private String name; + + /** + * 稳态超标占比 + */ + @ApiModelProperty("稳态超标占比") + private String avg; + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/LargeScreenController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/LargeScreenController.java new file mode 100644 index 000000000..7c23d3789 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/LargeScreenController.java @@ -0,0 +1,52 @@ +package com.njcn.harmonic.controller.majornetwork; + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.device.pq.pojo.param.LargeScreenParam; +import com.njcn.device.pq.pojo.vo.*; + +import com.njcn.harmonic.service.majornetwork.LargeScreenService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @version 1.0.0 + * @author: zbj + * @date: 2023/04/06 + */ +@Slf4j +@Api(tags = "大屏") +@RestController +@RequestMapping("/largeScreen") +@RequiredArgsConstructor +public class LargeScreenController extends BaseController { + + private final LargeScreenService largeScreenService; + + /** + * 稳态指标超标占比(区域) + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getHomeostasisArea") + @ApiOperation("稳态指标超标占比(区域)") + @ApiImplicitParam(name = "largeScreenParam", value = "稳态指标超标占比(区域)", required = true) + public HttpResult> getHomeostasisArea(@RequestBody @Validated LargeScreenParam largeScreenParam) { + String methodDescribe = getMethodDescribe("getHomeostasisArea"); + List result = largeScreenService.getHomeostasisArea(largeScreenParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/majornetwork/LargeScreenMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/majornetwork/LargeScreenMapper.java new file mode 100644 index 000000000..8eb99865a --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/majornetwork/LargeScreenMapper.java @@ -0,0 +1,19 @@ +package com.njcn.harmonic.mapper.majornetwork; + +import com.njcn.device.pq.pojo.vo.AllDataVO; +import com.njcn.device.pq.pojo.vo.EventVO; +import com.njcn.device.pq.pojo.vo.MiddleLimitRateVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @version 1.0.0 + * @author: zbj + * @date: 2023/03/31 + */ +public interface LargeScreenMapper { + + List> getHomeostasisArea (@Param("indexIds") List indexIds, @Param("startTime") String startTime, @Param("endTime") String endTime); +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/majornetwork/mapping/LargeScreenMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/majornetwork/mapping/LargeScreenMapper.xml new file mode 100644 index 000000000..ab38313dd --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/majornetwork/mapping/LargeScreenMapper.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/LargeScreenService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/LargeScreenService.java new file mode 100644 index 000000000..08221993c --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/LargeScreenService.java @@ -0,0 +1,17 @@ +package com.njcn.harmonic.service.majornetwork; + +import com.njcn.device.pq.pojo.param.LargeScreenParam; +import com.njcn.device.pq.pojo.vo.*; + +import java.util.List; + + +/** + * @version 1.0.0 + * @author: zbj + * @date: 2023/03/31 + */ +public interface LargeScreenService { + + List getHomeostasisArea(LargeScreenParam largeScreenParam); +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/LargeScreenServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/LargeScreenServiceImpl.java new file mode 100644 index 000000000..cc2622394 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/LargeScreenServiceImpl.java @@ -0,0 +1,82 @@ +package com.njcn.harmonic.service.majornetwork.impl; + +import com.njcn.common.pojo.dto.SimpleDTO; +import com.njcn.device.pq.api.GeneralDeviceInfoClient; +import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; +import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.device.pq.pojo.param.LargeScreenParam; +import com.njcn.device.pq.pojo.param.MonitoringPointScaleParam; +import com.njcn.device.pq.pojo.vo.*; +import com.njcn.harmonic.mapper.majornetwork.LargeScreenMapper; +import com.njcn.harmonic.service.majornetwork.LargeScreenService; +import com.njcn.system.pojo.enums.StatisticsEnum; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.map.HashedMap; +import org.springframework.stereotype.Service; + +import java.math.RoundingMode; +import java.text.NumberFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @version 1.0.0 + * @author: zbj + * @date: 2023/03/31 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class LargeScreenServiceImpl implements LargeScreenService { + + private final GeneralDeviceInfoClient generalDeviceInfoClient; + + private final LargeScreenMapper largeScreenMapper; + + /** + * 稳态指标超标占比(区域) + */ + @Override + public List getHomeostasisArea(LargeScreenParam largeScreenParam) { + //创建返回VO + List result = new ArrayList<>(); + + DeviceInfoParam.BusinessParam deviceInfoParam = new DeviceInfoParam.BusinessParam(); + //部门索引 + deviceInfoParam.setDeptIndex(largeScreenParam.getDeptIndex()); + //统计类型 + SimpleDTO simpleDTO = new SimpleDTO(); + simpleDTO.setCode(String.valueOf(StatisticsEnum.POWER_NETWORK)); + deviceInfoParam.setStatisticalType(simpleDTO); + //添加时间 + deviceInfoParam.setSearchBeginTime(largeScreenParam.getSearchBeginTime()); + deviceInfoParam.setSearchEndTime(largeScreenParam.getSearchEndTime()); + + // 获取所有数据 + List generalDeviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(deviceInfoParam).getData(); + //部门id集合 + List indexIds = generalDeviceDTOList.stream().map(GeneralDeviceDTO::getIndex).collect(Collectors.toList()); + + List> homeostasisArea = largeScreenMapper.getHomeostasisArea(indexIds, largeScreenParam.getSearchBeginTime(), largeScreenParam.getSearchEndTime()); + + for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { + for (Map map : homeostasisArea) { + if (Objects.equals(generalDeviceDTO.getIndex(), map.get("id"))) { + HomeostasisAreaVO homeostasisAreaVO = new HomeostasisAreaVO(); + homeostasisAreaVO.setName(generalDeviceDTO.getName()); + homeostasisAreaVO.setAvg(map.get("avg").toString()); + result.add(homeostasisAreaVO); + } else { + HomeostasisAreaVO homeostasisAreaVO = new HomeostasisAreaVO(); + homeostasisAreaVO.setName(generalDeviceDTO.getName()); + homeostasisAreaVO.setAvg("0"); + result.add(homeostasisAreaVO); + } + } + } + return result; + } +}