From b315b3a045418eb989418e5028fa5c4e55963716 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B0=8F=E6=9E=97?= <320730042@qq.com> Date: Thu, 1 Aug 2024 16:20:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BD=AF=E4=BB=B6=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=BD=92=E5=B9=B6=E7=8E=87=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DeviceTypeVerController.java | 6 + .../bellmann/controller/ReportController.java | 20 +++ .../bellmann/mapper/DeviceStaticMapper.java | 13 +- .../bellmann/mapper/DeviceTypeVerMapper.java | 2 + .../com/bellmann/model/bo/MergeSoftBO.java | 13 ++ .../model/query/SoftMergeReportQuery.java | 24 ++++ .../model/vo/SoftVerMergeExportVO.java | 27 ++++ .../com/bellmann/model/vo/SoftVerMergeVO.java | 25 ++++ .../service/DeviceTypeVerService.java | 3 + .../com/bellmann/service/ReportService.java | 5 + .../impl/DeviceTypeVerServiceImpl.java | 12 ++ .../service/impl/ReportServiceImpl.java | 73 +++++++++++ .../resources/mapper/DeviceStaticMapper.xml | 121 ++++++++++++++++++ .../resources/mapper/DeviceTypeVerMapper.xml | 10 ++ .../mapper/ViewDeviceTotalMapper.xml | 4 +- 15 files changed, 352 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/bellmann/model/bo/MergeSoftBO.java create mode 100644 src/main/java/com/bellmann/model/query/SoftMergeReportQuery.java create mode 100644 src/main/java/com/bellmann/model/vo/SoftVerMergeExportVO.java create mode 100644 src/main/java/com/bellmann/model/vo/SoftVerMergeVO.java diff --git a/src/main/java/com/bellmann/controller/DeviceTypeVerController.java b/src/main/java/com/bellmann/controller/DeviceTypeVerController.java index 09af38e..6bd2431 100644 --- a/src/main/java/com/bellmann/controller/DeviceTypeVerController.java +++ b/src/main/java/com/bellmann/controller/DeviceTypeVerController.java @@ -157,4 +157,10 @@ public class DeviceTypeVerController { List> list = deviceTypeVerService.softVerOption(); return Result.success(list); } + @GetMapping("/merge-soft-ver-option") + @Operation(summary = "查找设备归并软件版本选择框") + public Result>> mergeSoftVerOption(){ + List> list = deviceTypeVerService.mergeSoftVerOption(); + 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 9449420..eb152b9 100644 --- a/src/main/java/com/bellmann/controller/ReportController.java +++ b/src/main/java/com/bellmann/controller/ReportController.java @@ -6,6 +6,7 @@ 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.query.SoftMergeReportQuery; import com.bellmann.model.vo.*; import com.bellmann.plugin.dupsubmit.annotation.PreventDuplicateSubmit; import com.bellmann.service.ReportService; @@ -87,4 +88,23 @@ public class ReportController { EasyExcel.write(response.getOutputStream(), DeviceTypeHardSoftVerExportVO.class).sheet("设备类型及软硬件版本统计报表") .doWrite(list); } + + @PostMapping("/device-type-soft-merge") + @Operation(summary = "软件归并率统计") + @PreventDuplicateSubmit + public PageResult softVerMergeStatistics(@RequestBody SoftMergeReportQuery query){ + Page page = reportService.softVerMergeStatistics(query); + return PageResult.success(page); + } + @GetMapping("/_export/soft-ver-merge") + @PreventDuplicateSubmit + public void exportSoftMergeVer(SoftMergeReportQuery 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.listExportSoftMerge(queryParams); + EasyExcel.write(response.getOutputStream(), SoftVerMergeExportVO.class).sheet("软件版本归并率统计报表") + .doWrite(list); + } } diff --git a/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java b/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java index c52b349..e494b2a 100644 --- a/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java +++ b/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java @@ -2,13 +2,13 @@ package com.bellmann.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.bellmann.model.bo.DevOnlineStatus; -import com.bellmann.model.bo.DeviceDetailBO; -import com.bellmann.model.bo.EquipmentBO; -import com.bellmann.model.bo.RemoteEquipmentBO; +import com.bellmann.model.bo.*; import com.bellmann.model.dto.DeviceDetail; import com.bellmann.model.entity.DeviceStatic; +import com.bellmann.model.query.SoftMergeReportQuery; import com.bellmann.model.vo.EquipmentDetailVO; +import com.bellmann.model.vo.SoftVerMergeExportVO; +import com.bellmann.model.vo.SoftVerMergeVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -36,4 +36,9 @@ public interface DeviceStaticMapper extends BaseMapper { String getLogicIdByDevId(@Param("devId") Long devId); + Page getSoftListReportPage(Page page, @Param("form") SoftMergeReportQuery queryParams); + + MergeSoftBO getDeviceSoft(@Param("category") String category, @Param("devName") String devName, @Param("devHard") String devHard, @Param("query") SoftMergeReportQuery queryParams); + + Page exportSoftMergePage(Page page,@Param("form") SoftMergeReportQuery queryParams); } diff --git a/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java b/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java index c25ef97..967fdf5 100644 --- a/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java +++ b/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java @@ -35,4 +35,6 @@ public interface DeviceTypeVerMapper extends BaseMapper { List upgradeSoftVerTable(@Param("devId") Long devId); List softVerOption(); + + List mergeSoftVerOption(); } diff --git a/src/main/java/com/bellmann/model/bo/MergeSoftBO.java b/src/main/java/com/bellmann/model/bo/MergeSoftBO.java new file mode 100644 index 0000000..521c70a --- /dev/null +++ b/src/main/java/com/bellmann/model/bo/MergeSoftBO.java @@ -0,0 +1,13 @@ +package com.bellmann.model.bo; + +import lombok.Data; + +@Data +public class MergeSoftBO { + + private Long typeAndVerId; + + private String softVer; + + private Integer softCount; +} diff --git a/src/main/java/com/bellmann/model/query/SoftMergeReportQuery.java b/src/main/java/com/bellmann/model/query/SoftMergeReportQuery.java new file mode 100644 index 0000000..bcf7e6f --- /dev/null +++ b/src/main/java/com/bellmann/model/query/SoftMergeReportQuery.java @@ -0,0 +1,24 @@ +package com.bellmann.model.query; + +import com.bellmann.common.base.BasePageQuery; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SoftMergeReportQuery extends BasePageQuery { + + private Long area; + + private String devName; + + private String devHardVer; + + private String category; + + private String softVer; + + private String onLineStartTime; + + private String onLineEndTime; +} diff --git a/src/main/java/com/bellmann/model/vo/SoftVerMergeExportVO.java b/src/main/java/com/bellmann/model/vo/SoftVerMergeExportVO.java new file mode 100644 index 0000000..2e473bd --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/SoftVerMergeExportVO.java @@ -0,0 +1,27 @@ +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 SoftVerMergeExportVO { + + @ExcelProperty(value = "厂商") + private String category; + @ExcelProperty(value = "设备型号") + private String devName; + @ExcelProperty(value = "硬件版本") + private String devHard; + @ExcelProperty(value = "终端数量") + private Integer hardCount; + @ExcelProperty(value = "软件版本") + private String softVer; + @ExcelProperty(value = "归并版本数") + private Integer softCount; + @ExcelProperty(value = "设备类型") + private String devType; + @ExcelProperty(value = "归并率") + private String softAvg; +} diff --git a/src/main/java/com/bellmann/model/vo/SoftVerMergeVO.java b/src/main/java/com/bellmann/model/vo/SoftVerMergeVO.java new file mode 100644 index 0000000..a9c6d29 --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/SoftVerMergeVO.java @@ -0,0 +1,25 @@ +package com.bellmann.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "软件归并率统计") +public class SoftVerMergeVO { + + private String category; + + private String devName; + + private String devHard; + + private Integer hardCount; + + private String softVer; + + private Integer softCount; + + private String devType; + + private String softAvg; +} diff --git a/src/main/java/com/bellmann/service/DeviceTypeVerService.java b/src/main/java/com/bellmann/service/DeviceTypeVerService.java index 82272f8..3a1f749 100644 --- a/src/main/java/com/bellmann/service/DeviceTypeVerService.java +++ b/src/main/java/com/bellmann/service/DeviceTypeVerService.java @@ -53,4 +53,7 @@ public interface DeviceTypeVerService { List upgradeSoftVerTable(Long devId); List> softVerOption(); + + List> mergeSoftVerOption(); + } diff --git a/src/main/java/com/bellmann/service/ReportService.java b/src/main/java/com/bellmann/service/ReportService.java index 8bdeb86..81c92c6 100644 --- a/src/main/java/com/bellmann/service/ReportService.java +++ b/src/main/java/com/bellmann/service/ReportService.java @@ -3,6 +3,7 @@ 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.query.SoftMergeReportQuery; import com.bellmann.model.vo.*; import java.util.List; @@ -19,4 +20,8 @@ public interface ReportService { List devTypeSoftVerStatistics(DeviceTypeHardSoftReportQuery query); List listExportDeviceTypeHardSoftVer(DeviceTypeHardSoftReportQuery queryParams); + + Page softVerMergeStatistics(SoftMergeReportQuery query); + + List listExportSoftMerge(SoftMergeReportQuery queryParams); } diff --git a/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java b/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java index 865744c..40e4448 100644 --- a/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/DeviceTypeVerServiceImpl.java @@ -394,4 +394,16 @@ public class DeviceTypeVerServiceImpl implements DeviceTypeVerService { return option; }).collect(Collectors.toList()); } + + @Override + public List> mergeSoftVerOption() { + List list = deviceTypeVerMapper.mergeSoftVerOption(); + + 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 a022d61..adb2261 100644 --- a/src/main/java/com/bellmann/service/impl/ReportServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/ReportServiceImpl.java @@ -1,5 +1,6 @@ package com.bellmann.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bellmann.common.base.IBaseEnum; import com.bellmann.common.enums.DevAccessTypeEnum; @@ -7,14 +8,20 @@ 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.DeviceTypeVerDetailMapper; import com.bellmann.mapper.ViewDeviceTotalMapper; +import com.bellmann.model.bo.MergeSoftBO; +import com.bellmann.model.entity.DeviceTypeVerDetail; import com.bellmann.model.query.DeviceTypeHardSoftReportQuery; import com.bellmann.model.query.ReportBasicQuery; +import com.bellmann.model.query.SoftMergeReportQuery; import com.bellmann.model.vo.*; import com.bellmann.service.ReportService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.text.DecimalFormat; +import java.util.ArrayList; import java.util.List; @Service @@ -27,6 +34,8 @@ public class ReportServiceImpl implements ReportService { private final ServiceManager serviceManager; private final DeviceStaticConverter deviceStaticConverter; + + private final DeviceTypeVerDetailMapper deviceTypeVerDetailMapper; @Override public Page detailPage(ReportBasicQuery query) { int pageNum = query.getPageNum(); @@ -107,4 +116,68 @@ public class ReportServiceImpl implements ReportService { public List listExportDeviceTypeHardSoftVer(DeviceTypeHardSoftReportQuery queryParams) { return viewDeviceTotalMapper.listExportDeviceTypeHardSoftVer(queryParams); } + + @Override + public Page softVerMergeStatistics(SoftMergeReportQuery queryParams) { + int pageNum = queryParams.getPageNum(); + int pageSize = queryParams.getPageSize(); + Page page = new Page<>(pageNum,pageSize); + Page mergePage = deviceStaticMapper.getSoftListReportPage(page,queryParams); + List records = mergePage.getRecords(); + if (records.isEmpty()){ + return mergePage; + } + records.forEach(obj->{ + MergeSoftBO merge = deviceStaticMapper.getDeviceSoft(obj.getCategory(),obj.getDevName(),obj.getDevHard(),queryParams); + if (merge!=null) { + DeviceTypeVerDetail deviceTypeVerDetail = deviceTypeVerDetailMapper.selectOne(new LambdaQueryWrapper() + .eq(DeviceTypeVerDetail::getTypeAndVerId, merge.getTypeAndVerId()) + ); + if (deviceTypeVerDetail != null) { + obj.setDevType(IBaseEnum.getLabelByValue(deviceTypeVerDetail.getDevTypeName(), EquipmentTypeEnum.class)); + } + obj.setSoftVer( merge.getSoftVer()); + obj.setSoftCount(merge.getSoftCount()); + DecimalFormat decimalFormat = new DecimalFormat("0.00%"); + String avg = decimalFormat.format((float) Long.valueOf(merge.getSoftCount()) / (float) Long.valueOf(obj.getHardCount())); + obj.setSoftAvg(avg); + }else { + obj.setSoftCount(0); + obj.setSoftAvg("0.00%"); + } + }); + return mergePage.setRecords(records); + } + + @Override + public List listExportSoftMerge(SoftMergeReportQuery queryParams) { + int pageNum = queryParams.getPageNum(); + int pageSize = queryParams.getPageSize(); + Page page = new Page<>(pageNum,pageSize); + Page exportVOPage = deviceStaticMapper.exportSoftMergePage(page,queryParams); + List records = exportVOPage.getRecords(); + if (records.isEmpty()){ + return new ArrayList<>(); + } + records.forEach(obj->{ + MergeSoftBO merge = deviceStaticMapper.getDeviceSoft(obj.getCategory(),obj.getDevName(),obj.getDevHard(),queryParams); + if (merge!=null) { + DeviceTypeVerDetail deviceTypeVerDetail = deviceTypeVerDetailMapper.selectOne(new LambdaQueryWrapper() + .eq(DeviceTypeVerDetail::getTypeAndVerId, merge.getTypeAndVerId()) + ); + if (deviceTypeVerDetail != null) { + obj.setDevType(IBaseEnum.getLabelByValue(deviceTypeVerDetail.getDevTypeName(), EquipmentTypeEnum.class)); + } + obj.setSoftVer( merge.getSoftVer()); + obj.setSoftCount(merge.getSoftCount()); + DecimalFormat decimalFormat = new DecimalFormat("0.00%"); + String avg = decimalFormat.format((float) Long.valueOf(merge.getSoftCount()) / (float) Long.valueOf(obj.getHardCount())); + obj.setSoftAvg(avg); + }else { + obj.setSoftCount(0); + obj.setSoftAvg("0.00%"); + } + }); + return records; + } } diff --git a/src/main/resources/mapper/DeviceStaticMapper.xml b/src/main/resources/mapper/DeviceStaticMapper.xml index a92614f..7df2d6c 100644 --- a/src/main/resources/mapper/DeviceStaticMapper.xml +++ b/src/main/resources/mapper/DeviceStaticMapper.xml @@ -322,4 +322,125 @@ A.DEV_ID = B.DEV_ID AND A.DEV_ID = #{devId} + + + + diff --git a/src/main/resources/mapper/DeviceTypeVerMapper.xml b/src/main/resources/mapper/DeviceTypeVerMapper.xml index fe3903e..d0622e8 100644 --- a/src/main/resources/mapper/DeviceTypeVerMapper.xml +++ b/src/main/resources/mapper/DeviceTypeVerMapper.xml @@ -142,4 +142,14 @@ FROM itms_device_type_ver order by soft_ver + diff --git a/src/main/resources/mapper/ViewDeviceTotalMapper.xml b/src/main/resources/mapper/ViewDeviceTotalMapper.xml index f60ace4..9744164 100644 --- a/src/main/resources/mapper/ViewDeviceTotalMapper.xml +++ b/src/main/resources/mapper/ViewDeviceTotalMapper.xml @@ -226,7 +226,7 @@ and t1.soft_ver = #{form.softVer} - and t1.dev_hand_ver = #{form.devHardVer} + and t1.dev_hard_ver = #{form.devHardVer} and t1.dev_type_name_new = #{form.gateWayType} @@ -283,7 +283,7 @@ and t1.soft_ver = #{form.softVer} - and t1.dev_hand_ver = #{form.devHardVer} + and t1.dev_hard_ver = #{form.devHardVer} and t1.dev_type_name_new = #{form.gateWayType}