From 3070d38152c115e578bb373cb2cbdcaddec2ee19 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Tue, 2 Apr 2024 10:54:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AE=BE=E5=A4=87=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=AE=BE=E5=A4=87=E6=A6=82=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/KhDeviceController.java | 13 +++++ .../jero/modules/enums/DeviceTypeEnum.java | 22 ++++++++ .../com/jero/modules/enums/WellTypeEnum.java | 22 ++++++++ .../modules/service/IKhDeviceService.java | 8 +++ .../service/impl/KhDeviceServiceImpl.java | 37 +++++++++++++ .../jero/modules/vo/DeviceStatisticsVO.java | 55 +++++++++++++++++++ 6 files changed, 157 insertions(+) create mode 100644 jero-boot-modules/src/main/java/com/jero/modules/enums/DeviceTypeEnum.java create mode 100644 jero-boot-modules/src/main/java/com/jero/modules/enums/WellTypeEnum.java create mode 100644 jero-boot-modules/src/main/java/com/jero/modules/vo/DeviceStatisticsVO.java diff --git a/jero-boot-modules/src/main/java/com/jero/modules/controller/KhDeviceController.java b/jero-boot-modules/src/main/java/com/jero/modules/controller/KhDeviceController.java index a6951387..6818a5dc 100644 --- a/jero-boot-modules/src/main/java/com/jero/modules/controller/KhDeviceController.java +++ b/jero-boot-modules/src/main/java/com/jero/modules/controller/KhDeviceController.java @@ -9,6 +9,7 @@ import com.jero.common.api.vo.Results; import com.jero.modules.entity.KhDevice; import com.jero.modules.service.IKhDeviceService; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jero.modules.vo.DeviceStatisticsVO; import lombok.extern.slf4j.Slf4j; import com.jero.common.system.base.controller.JeroController; import org.springframework.beans.factory.annotation.Autowired; @@ -56,6 +57,18 @@ public class KhDeviceController extends JeroController statistics() { + return Results.OK(khDeviceService.statistics()); + } + /** * 列表查询 * diff --git a/jero-boot-modules/src/main/java/com/jero/modules/enums/DeviceTypeEnum.java b/jero-boot-modules/src/main/java/com/jero/modules/enums/DeviceTypeEnum.java new file mode 100644 index 00000000..5eecfdd1 --- /dev/null +++ b/jero-boot-modules/src/main/java/com/jero/modules/enums/DeviceTypeEnum.java @@ -0,0 +1,22 @@ +package com.jero.modules.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * @date 2022/1/21 15:22 + * @auth zhn + */ +@Getter +@AllArgsConstructor +public enum DeviceTypeEnum { + + RTU("RTU控制器","1"), + NG("天然气数据远传终端","2"); + + + final String name; + final String value; + +} diff --git a/jero-boot-modules/src/main/java/com/jero/modules/enums/WellTypeEnum.java b/jero-boot-modules/src/main/java/com/jero/modules/enums/WellTypeEnum.java new file mode 100644 index 00000000..ef6d09c2 --- /dev/null +++ b/jero-boot-modules/src/main/java/com/jero/modules/enums/WellTypeEnum.java @@ -0,0 +1,22 @@ +package com.jero.modules.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @description + * @date 2022/1/21 15:22 + * @auth zhn + */ +@Getter +@AllArgsConstructor +public enum WellTypeEnum { + + OIL("油井","1"), + WATER("水井","2"); + + + final String name; + final String value; + +} diff --git a/jero-boot-modules/src/main/java/com/jero/modules/service/IKhDeviceService.java b/jero-boot-modules/src/main/java/com/jero/modules/service/IKhDeviceService.java index 4bc380ed..187a5f60 100644 --- a/jero-boot-modules/src/main/java/com/jero/modules/service/IKhDeviceService.java +++ b/jero-boot-modules/src/main/java/com/jero/modules/service/IKhDeviceService.java @@ -4,6 +4,8 @@ import com.jero.modules.entity.KhDevice; import com.baomidou.mybatisplus.extension.service.IService; import javax.servlet.http.HttpServletRequest; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jero.modules.vo.DeviceStatisticsVO; + import java.util.List; /** @@ -73,4 +75,10 @@ public interface IKhDeviceService extends IService { * @return */ KhDevice queryById(String id); + + /** + * 系统设备概况 + * @return + */ + DeviceStatisticsVO statistics(); } diff --git a/jero-boot-modules/src/main/java/com/jero/modules/service/impl/KhDeviceServiceImpl.java b/jero-boot-modules/src/main/java/com/jero/modules/service/impl/KhDeviceServiceImpl.java index 1b58f788..72cba313 100644 --- a/jero-boot-modules/src/main/java/com/jero/modules/service/impl/KhDeviceServiceImpl.java +++ b/jero-boot-modules/src/main/java/com/jero/modules/service/impl/KhDeviceServiceImpl.java @@ -3,16 +3,25 @@ package com.jero.modules.service.impl; import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.jero.modules.entity.KhDevice; +import com.jero.modules.entity.KhWellhead; +import com.jero.modules.enums.DeviceTypeEnum; +import com.jero.modules.enums.WellTypeEnum; import com.jero.modules.enums.YesOrNoEnum; import com.jero.modules.mapper.KhDeviceMapper; import com.jero.modules.service.IKhDeviceService; +import com.jero.modules.service.IKhWellheadService; +import com.jero.modules.vo.DeviceStatisticsVO; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.jero.common.exception.JeroBootException; import java.util.List; import java.util.Date; +import java.util.stream.Collectors; + import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.system.query.QueryGenerator; + +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -28,6 +37,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @Transactional(rollbackFor = JeroBootException.class) public class KhDeviceServiceImpl extends ServiceImpl implements IKhDeviceService { + @Resource + private IKhWellheadService wellheadService; /** * 分页查询 @@ -122,4 +133,30 @@ public class KhDeviceServiceImpl extends ServiceImpl i public KhDevice queryById(String id) { return getById(id); } + + @Override + public DeviceStatisticsVO statistics() { + DeviceStatisticsVO vo = new DeviceStatisticsVO(); + List wellList = wellheadService.list(); + List deviceList = list(); + vo.setDeviceCount(deviceList.size()) + .setOnlineDeviceCount((int) deviceList.stream().filter(d -> d.getDeviceStatus().equals(YesOrNoEnum.YES.getValue())).count()) + .setOfflineDeviceCount((int) deviceList.stream().filter(d -> d.getDeviceStatus().equals(YesOrNoEnum.NO.getValue())).count()); + + vo.setWellCount(wellList.size()) + .setWaterWellCount((int) wellList.stream().filter(d -> d.getWellheadType().equals(WellTypeEnum.WATER.getValue())).count()) + .setOilWellCount((int) wellList.stream().filter(d -> d.getWellheadType().equals(WellTypeEnum.OIL.getValue())).count()); + + List rtuDeviceList = deviceList.stream().filter(d -> d.getDeviceType().equals(DeviceTypeEnum.RTU.getValue())).collect(Collectors.toList()); + List ngDeviceList = deviceList.stream().filter(d -> d.getDeviceType().equals(DeviceTypeEnum.NG.getValue())).collect(Collectors.toList()); + + vo.setRtuCount(rtuDeviceList.size()) + .setOnlineRtuCount((int) rtuDeviceList.stream().filter(d -> d.getDeviceStatus().equals(YesOrNoEnum.YES.getValue())).count()) + .setOfflineRtuCount((int) rtuDeviceList.stream().filter(d -> d.getDeviceStatus().equals(YesOrNoEnum.NO.getValue())).count()); + + vo.setNgCount(ngDeviceList.size()) + .setOnlineNgCount((int) rtuDeviceList.stream().filter(d -> d.getDeviceStatus().equals(YesOrNoEnum.YES.getValue())).count()) + .setOfflineNgCount((int) rtuDeviceList.stream().filter(d -> d.getDeviceStatus().equals(YesOrNoEnum.NO.getValue())).count()); + return vo; + } } diff --git a/jero-boot-modules/src/main/java/com/jero/modules/vo/DeviceStatisticsVO.java b/jero-boot-modules/src/main/java/com/jero/modules/vo/DeviceStatisticsVO.java new file mode 100644 index 00000000..2e9ba052 --- /dev/null +++ b/jero-boot-modules/src/main/java/com/jero/modules/vo/DeviceStatisticsVO.java @@ -0,0 +1,55 @@ +package com.jero.modules.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @author: Mzaxd + * @Date: 2024/4/2 10:15 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class DeviceStatisticsVO { + + // 设备总数 + @ApiModelProperty(value = "设备总数") + private int deviceCount; + // 在线 + @ApiModelProperty(value = "在线") + private int onlineDeviceCount; + // 离线 + @ApiModelProperty(value = "离线") + private int offlineDeviceCount; + // 总井数量 + @ApiModelProperty(value = "总井数量") + private int wellCount; + // 水井数量 + @ApiModelProperty(value = "水井数量") + private int waterWellCount; + // 油井数量 + @ApiModelProperty(value = "油井数量") + private int oilWellCount; + // RTU控制器数量 + @ApiModelProperty(value = "RTU控制器数量") + private int rtuCount; + // 在线RTU控制器数量 + @ApiModelProperty(value = "在线RTU控制器数量") + private int onlineRtuCount; + // 离线RTU控制器数量 + @ApiModelProperty(value = "离线RTU控制器数量") + private int offlineRtuCount; + // 天然气数据远传终端数量 + @ApiModelProperty(value = "天然气数据远传终端数量") + private int ngCount; + // 在线天然气数据远传终端数量 + @ApiModelProperty(value = "在线天然气数据远传终端数量") + private int onlineNgCount; + // 离线天然气数据远传终端数量 + @ApiModelProperty(value = "离线天然气数据远传终端数量") + private int offlineNgCount; +}