From 335b88b42fee695fe8d871a4ee91a89f119bffe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B0=8F=E6=9E=97?= <320730042@qq.com> Date: Wed, 31 Jul 2024 16:51:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BB=88=E7=AB=AF=E8=83=BD=E5=8A=9B?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E3=80=81=E8=AE=BE=E5=A4=87=E5=9E=8B=E5=8F=B7?= =?UTF-8?q?=E5=8F=8A=E8=BD=AF=E7=A1=AC=E4=BB=B6=E7=89=88=E6=9C=AC=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DeviceTypeVerController.java | 7 + .../bellmann/controller/ReportController.java | 49 +++- .../bellmann/mapper/DeviceTypeVerMapper.java | 2 + .../mapper/ViewDeviceTotalMapper.java | 13 +- .../query/DeviceTypeHardSoftReportQuery.java | 36 +++ .../vo/DeviceTypeHardSoftVerExportVO.java | 24 ++ .../model/vo/DeviceTypeHardSoftVerVO.java | 23 ++ .../vo/TerminalCapabilityStatisticsVO.java | 24 ++ .../bellmann/model/vo/TerminalExportVO.java | 26 ++ .../service/DeviceTypeVerService.java | 3 + .../com/bellmann/service/ReportService.java | 12 +- .../impl/DeviceTypeVerServiceImpl.java | 13 + .../service/impl/ReportServiceImpl.java | 62 ++++- .../resources/mapper/DeviceTypeMapper.xml | 2 +- .../resources/mapper/DeviceTypeVerMapper.xml | 5 + .../mapper/ViewDeviceTotalMapper.xml | 246 ++++++++++++++++++ 16 files changed, 538 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/bellmann/model/query/DeviceTypeHardSoftReportQuery.java create mode 100644 src/main/java/com/bellmann/model/vo/DeviceTypeHardSoftVerExportVO.java create mode 100644 src/main/java/com/bellmann/model/vo/DeviceTypeHardSoftVerVO.java create mode 100644 src/main/java/com/bellmann/model/vo/TerminalCapabilityStatisticsVO.java create mode 100644 src/main/java/com/bellmann/model/vo/TerminalExportVO.java diff --git a/src/main/java/com/bellmann/controller/DeviceTypeVerController.java b/src/main/java/com/bellmann/controller/DeviceTypeVerController.java index eeed924..09af38e 100644 --- a/src/main/java/com/bellmann/controller/DeviceTypeVerController.java +++ b/src/main/java/com/bellmann/controller/DeviceTypeVerController.java @@ -2,6 +2,7 @@ package com.bellmann.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bellmann.common.base.BasePageQuery; +import com.bellmann.common.model.Option; import com.bellmann.common.result.PageResult; import com.bellmann.common.result.Result; import com.bellmann.model.form.BindingTr069Form; @@ -150,4 +151,10 @@ public class DeviceTypeVerController { List list = deviceTypeVerService.upgradeSoftVerTable(devId); return Result.success(list); } + @GetMapping("/soft-ver-option") + @Operation(summary = "查找设备软件版本选择框") + public Result>> softVerOption(){ + List> list = deviceTypeVerService.softVerOption(); + return Result.success(list); + } } diff --git a/src/main/java/com/bellmann/controller/ReportController.java b/src/main/java/com/bellmann/controller/ReportController.java index ebb2a17..9449420 100644 --- a/src/main/java/com/bellmann/controller/ReportController.java +++ b/src/main/java/com/bellmann/controller/ReportController.java @@ -3,9 +3,11 @@ package com.bellmann.controller; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bellmann.common.result.PageResult; +import com.bellmann.common.result.Result; +import com.bellmann.model.query.DeviceTypeHardSoftReportQuery; import com.bellmann.model.query.ReportBasicQuery; -import com.bellmann.model.vo.DetailExportVO; -import com.bellmann.model.vo.DetailInventoryStatisticsVO; +import com.bellmann.model.vo.*; +import com.bellmann.plugin.dupsubmit.annotation.PreventDuplicateSubmit; import com.bellmann.service.ReportService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -26,7 +28,8 @@ public class ReportController { private final ReportService reportService; @PostMapping("/detail-inventory-statistics") - @Operation(summary = "运行报表") + @Operation(summary = "详细清单统计") + @PreventDuplicateSubmit public PageResult detailPage(@RequestBody ReportBasicQuery query){ Page page = reportService.detailPage(query); return PageResult.success(page); @@ -34,6 +37,7 @@ public class ReportController { @Operation(summary = "导出详细清单统计报表") @GetMapping("/_export") + @PreventDuplicateSubmit public void exportDetail(ReportBasicQuery queryParams, HttpServletResponse response) throws IOException { String fileName = "详细清单统计报表.xlsx"; response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); @@ -42,6 +46,45 @@ public class ReportController { List exportUserList = reportService.listExportDetail(queryParams); EasyExcel.write(response.getOutputStream(), DetailExportVO.class).sheet("详细清单统计报表") .doWrite(exportUserList); + + } + + @PostMapping("/terminal-capability-statistics") + @Operation(summary = "终端能力统计") + @PreventDuplicateSubmit + public Result> terminalStatistics(@RequestBody ReportBasicQuery query){ + List list = reportService.terminalStatistics(query); + return Result.success(list); + } + + @Operation(summary = "导出终端能力统计报表") + @GetMapping("/_export/terminal") + @PreventDuplicateSubmit + public void exportTerminal(ReportBasicQuery queryParams, HttpServletResponse response) throws IOException { + String fileName = "终端能力统计报表.xlsx"; + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8")); + + List list = reportService.listExportTerminal(queryParams); + EasyExcel.write(response.getOutputStream(), TerminalExportVO.class).sheet("终端能力统计报表") + .doWrite(list); + } + @PostMapping("/device-type-soft") + @Operation(summary = "设备型号及软硬件版本统计") + @PreventDuplicateSubmit + public Result> devTypeSoftVerStatistics(@RequestBody DeviceTypeHardSoftReportQuery query){ + List list = reportService.devTypeSoftVerStatistics(query); + return Result.success(list); } + @GetMapping("/_export/device-type-soft-ver") + @PreventDuplicateSubmit + public void exportDeviceTypeHardSoftVer(DeviceTypeHardSoftReportQuery queryParams, HttpServletResponse response) throws IOException { + String fileName = "设备类型及软硬件版本统计报表.xlsx"; + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8")); + List list = reportService.listExportDeviceTypeHardSoftVer(queryParams); + EasyExcel.write(response.getOutputStream(), DeviceTypeHardSoftVerExportVO.class).sheet("设备类型及软硬件版本统计报表") + .doWrite(list); + } } diff --git a/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java b/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java index fe786e2..c25ef97 100644 --- a/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java +++ b/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java @@ -33,4 +33,6 @@ public interface DeviceTypeVerMapper extends BaseMapper { Long getTypeAndVerId(); List upgradeSoftVerTable(@Param("devId") Long devId); + + List softVerOption(); } diff --git a/src/main/java/com/bellmann/mapper/ViewDeviceTotalMapper.java b/src/main/java/com/bellmann/mapper/ViewDeviceTotalMapper.java index fa8d853..7e7e6ae 100644 --- a/src/main/java/com/bellmann/mapper/ViewDeviceTotalMapper.java +++ b/src/main/java/com/bellmann/mapper/ViewDeviceTotalMapper.java @@ -3,13 +3,24 @@ package com.bellmann.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bellmann.model.entity.ViewDeviceTotal; +import com.bellmann.model.query.DeviceTypeHardSoftReportQuery; import com.bellmann.model.query.ReportBasicQuery; -import com.bellmann.model.vo.DetailInventoryStatisticsVO; +import com.bellmann.model.vo.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + @Mapper public interface ViewDeviceTotalMapper extends BaseMapper { Page detailInventoryStatisticsPage(Page page, @Param("form") ReportBasicQuery query); + + List terminalStatistics(@Param("form") ReportBasicQuery query); + + List listExportTerminal(@Param("form") ReportBasicQuery queryParams); + + List devTypeSoftVerStatistics(@Param("form")DeviceTypeHardSoftReportQuery query); + + List listExportDeviceTypeHardSoftVer(@Param("form")DeviceTypeHardSoftReportQuery queryParams); } diff --git a/src/main/java/com/bellmann/model/query/DeviceTypeHardSoftReportQuery.java b/src/main/java/com/bellmann/model/query/DeviceTypeHardSoftReportQuery.java new file mode 100644 index 0000000..c225aa0 --- /dev/null +++ b/src/main/java/com/bellmann/model/query/DeviceTypeHardSoftReportQuery.java @@ -0,0 +1,36 @@ +package com.bellmann.model.query; + +import com.bellmann.common.base.BasePageQuery; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class DeviceTypeHardSoftReportQuery extends BasePageQuery { + private Long area; + + private Long subarea; + + private String category; + + private String devName; + + private String devHardVer; + + private String softVer; + + private String gateWayType; + + private String firstStartTime; + + private String firstEndTime; + + private String lastStartTime; + + private String lastEndTime; + + private String onLineStartTime; + + private String onLineEndTime; + +} diff --git a/src/main/java/com/bellmann/model/vo/DeviceTypeHardSoftVerExportVO.java b/src/main/java/com/bellmann/model/vo/DeviceTypeHardSoftVerExportVO.java new file mode 100644 index 0000000..24a4fc0 --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/DeviceTypeHardSoftVerExportVO.java @@ -0,0 +1,24 @@ +package com.bellmann.model.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +@Data +@ColumnWidth(20) +public class DeviceTypeHardSoftVerExportVO { + @ExcelProperty(value = "分公司") + private String area; + @ExcelProperty(value = "分公司") + private String subArea; + @ExcelProperty(value = "厂商") + private String category; + @ExcelProperty(value = "设备型号") + private String deviceName; + @ExcelProperty(value = "硬件版本") + private String devHardVer; + @ExcelProperty(value = "软件版本") + private String softVer; + @ExcelProperty(value = "数量") + private Integer devCount; +} diff --git a/src/main/java/com/bellmann/model/vo/DeviceTypeHardSoftVerVO.java b/src/main/java/com/bellmann/model/vo/DeviceTypeHardSoftVerVO.java new file mode 100644 index 0000000..92595f3 --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/DeviceTypeHardSoftVerVO.java @@ -0,0 +1,23 @@ +package com.bellmann.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "设备类型及软硬件版本统计") +public class DeviceTypeHardSoftVerVO { + + private String area; + + private String subArea; + + private String category; + + private String deviceName; + + private String devHardVer; + + private String softVer; + + private Integer devCount; +} diff --git a/src/main/java/com/bellmann/model/vo/TerminalCapabilityStatisticsVO.java b/src/main/java/com/bellmann/model/vo/TerminalCapabilityStatisticsVO.java new file mode 100644 index 0000000..4641f7c --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/TerminalCapabilityStatisticsVO.java @@ -0,0 +1,24 @@ +package com.bellmann.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "终端能力统计视图") +public class TerminalCapabilityStatisticsVO { + private String area; + + private String subArea; + + private String category; + + private String deviceName; + + private String accessType; + + private String deviceType; + + private String gateWayType; + + private Integer devCount; +} diff --git a/src/main/java/com/bellmann/model/vo/TerminalExportVO.java b/src/main/java/com/bellmann/model/vo/TerminalExportVO.java new file mode 100644 index 0000000..60510c8 --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/TerminalExportVO.java @@ -0,0 +1,26 @@ +package com.bellmann.model.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +@Data +@ColumnWidth(20) +public class TerminalExportVO { + @ExcelProperty(value = "分公司") + private String area; + @ExcelProperty(value = "分公司") + private String subArea; + @ExcelProperty(value = "厂商") + private String category; + @ExcelProperty(value = "设备型号") + private String deviceName; + @ExcelProperty(value = "设备网络测接口") + private String accessType; + @ExcelProperty(value = "设备类型") + private String deviceType; + @ExcelProperty(value = "网关类型") + private String gateWayType; + @ExcelProperty(value = "数量") + private Integer devCount; +} diff --git a/src/main/java/com/bellmann/service/DeviceTypeVerService.java b/src/main/java/com/bellmann/service/DeviceTypeVerService.java index 99eb84c..82272f8 100644 --- a/src/main/java/com/bellmann/service/DeviceTypeVerService.java +++ b/src/main/java/com/bellmann/service/DeviceTypeVerService.java @@ -2,6 +2,7 @@ package com.bellmann.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bellmann.common.base.BasePageQuery; +import com.bellmann.common.model.Option; import com.bellmann.common.result.Result; import com.bellmann.model.form.BindingTr069Form; import com.bellmann.model.form.DeviceTypeVerForm; @@ -50,4 +51,6 @@ public interface DeviceTypeVerService { Result tr069BindingDevType(BindingTr069Form form); List upgradeSoftVerTable(Long devId); + + List> softVerOption(); } diff --git a/src/main/java/com/bellmann/service/ReportService.java b/src/main/java/com/bellmann/service/ReportService.java index 15ffb46..8bdeb86 100644 --- a/src/main/java/com/bellmann/service/ReportService.java +++ b/src/main/java/com/bellmann/service/ReportService.java @@ -1,9 +1,9 @@ package com.bellmann.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.model.query.DeviceTypeHardSoftReportQuery; import com.bellmann.model.query.ReportBasicQuery; -import com.bellmann.model.vo.DetailExportVO; -import com.bellmann.model.vo.DetailInventoryStatisticsVO; +import com.bellmann.model.vo.*; import java.util.List; @@ -11,4 +11,12 @@ public interface ReportService { Page detailPage(ReportBasicQuery query); List listExportDetail(ReportBasicQuery queryParams); + + List terminalStatistics(ReportBasicQuery query); + + List listExportTerminal(ReportBasicQuery queryParams); + + List devTypeSoftVerStatistics(DeviceTypeHardSoftReportQuery query); + + List listExportDeviceTypeHardSoftVer(DeviceTypeHardSoftReportQuery queryParams); } diff --git a/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java b/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java index 7a8146e..865744c 100644 --- a/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java @@ -8,6 +8,7 @@ import com.bellmann.common.constant.StringUtilsConstants; import com.bellmann.common.enums.DevTypeVerStatusEnum; import com.bellmann.common.enums.ProvisionFlagEnum; import com.bellmann.common.exception.BusinessException; +import com.bellmann.common.model.Option; import com.bellmann.common.result.Result; import com.bellmann.common.result.ResultCode; import com.bellmann.converter.DeviceTypeVerConverter; @@ -381,4 +382,16 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { return deviceTypeVerMapper.upgradeSoftVerTable(devId); } + + @Override + public List> softVerOption() { + List list = deviceTypeVerMapper.softVerOption(); + + return list.stream().map(str -> { + Option option = new Option<>(); + option.setLabel(str); + option.setValue(str); + return option; + }).collect(Collectors.toList()); + } } diff --git a/src/main/java/com/bellmann/service/impl/ReportServiceImpl.java b/src/main/java/com/bellmann/service/impl/ReportServiceImpl.java index 3460b96..a022d61 100644 --- a/src/main/java/com/bellmann/service/impl/ReportServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/ReportServiceImpl.java @@ -1,13 +1,16 @@ package com.bellmann.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.common.base.IBaseEnum; +import com.bellmann.common.enums.DevAccessTypeEnum; +import com.bellmann.common.enums.EquipmentTypeEnum; import com.bellmann.converter.DeviceStaticConverter; import com.bellmann.manger.ServiceManager; import com.bellmann.mapper.DeviceStaticMapper; import com.bellmann.mapper.ViewDeviceTotalMapper; +import com.bellmann.model.query.DeviceTypeHardSoftReportQuery; import com.bellmann.model.query.ReportBasicQuery; -import com.bellmann.model.vo.DetailExportVO; -import com.bellmann.model.vo.DetailInventoryStatisticsVO; +import com.bellmann.model.vo.*; import com.bellmann.service.ReportService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -37,6 +40,42 @@ public class ReportServiceImpl implements ReportService { return voPage; } + @Override + public List terminalStatistics(ReportBasicQuery query) { + List list = viewDeviceTotalMapper.terminalStatistics(query); + Integer total = 0; + list.forEach(obj->{ + if (obj.getAccessType()!=null) { + obj.setAccessType(IBaseEnum.getLabelByValue(obj.getAccessType(), DevAccessTypeEnum.class)); + } + if (obj.getDeviceType()!=null){ + obj.setDeviceType(IBaseEnum.getLabelByValue(obj.getDeviceType(), EquipmentTypeEnum.class)); + } + }); + for (TerminalCapabilityStatisticsVO data : list){ + total += data.getDevCount(); + } + TerminalCapabilityStatisticsVO count = new TerminalCapabilityStatisticsVO(); + count.setDevCount(total); + count.setArea("总计"); + list.add(0,count); + return list; + } + + @Override + public List devTypeSoftVerStatistics(DeviceTypeHardSoftReportQuery query) { + List list = viewDeviceTotalMapper.devTypeSoftVerStatistics(query); + Integer total = 0; + for (DeviceTypeHardSoftVerVO data : list){ + total += data.getDevCount(); + } + DeviceTypeHardSoftVerVO count = new DeviceTypeHardSoftVerVO(); + count.setDevCount(total); + count.setArea("总计"); + list.add(0,count); + return list; + } + @Override public List listExportDetail(ReportBasicQuery queryParams) { int pageNum = queryParams.getPageNum(); @@ -49,4 +88,23 @@ public class ReportServiceImpl implements ReportService { return deviceStaticConverter.detailVO2ExportVO(records); } + + @Override + public List listExportTerminal(ReportBasicQuery queryParams) { + List list = viewDeviceTotalMapper.listExportTerminal(queryParams); + list.forEach(obj->{ + if (obj.getAccessType()!=null) { + obj.setAccessType(IBaseEnum.getLabelByValue(obj.getAccessType(), DevAccessTypeEnum.class)); + } + if (obj.getDeviceType()!=null){ + obj.setDeviceType(IBaseEnum.getLabelByValue(obj.getDeviceType(), EquipmentTypeEnum.class)); + } + }); + return list; + } + + @Override + public List listExportDeviceTypeHardSoftVer(DeviceTypeHardSoftReportQuery queryParams) { + return viewDeviceTotalMapper.listExportDeviceTypeHardSoftVer(queryParams); + } } diff --git a/src/main/resources/mapper/DeviceTypeMapper.xml b/src/main/resources/mapper/DeviceTypeMapper.xml index 6b49533..7f54272 100644 --- a/src/main/resources/mapper/DeviceTypeMapper.xml +++ b/src/main/resources/mapper/DeviceTypeMapper.xml @@ -40,7 +40,7 @@ - SELECT DISTINCT ( dev_hard_ver ) FROM diff --git a/src/main/resources/mapper/DeviceTypeVerMapper.xml b/src/main/resources/mapper/DeviceTypeVerMapper.xml index 0069c05..fe3903e 100644 --- a/src/main/resources/mapper/DeviceTypeVerMapper.xml +++ b/src/main/resources/mapper/DeviceTypeVerMapper.xml @@ -137,4 +137,9 @@ WHERE aa.dev_id = #{devId} + diff --git a/src/main/resources/mapper/ViewDeviceTotalMapper.xml b/src/main/resources/mapper/ViewDeviceTotalMapper.xml index 9cc1c90..f60ace4 100644 --- a/src/main/resources/mapper/ViewDeviceTotalMapper.xml +++ b/src/main/resources/mapper/ViewDeviceTotalMapper.xml @@ -66,4 +66,250 @@ + + + + + +