From a101719d3dfa04b30bfc8b103f30ba8787ee9799 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B0=8F=E6=9E=97?= <320730042@qq.com> Date: Tue, 30 Jul 2024 17:24:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AF=A6=E7=BB=86=E6=B8=85=E5=8D=95?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DeviceTypeController.java | 1 - .../bellmann/controller/DomainController.java | 7 ++ .../bellmann/controller/ReportController.java | 47 ++++++++++++ .../converter/DeviceStaticConverter.java | 7 +- .../bellmann/mapper/DeviceStaticMapper.java | 1 + .../mapper/ViewDeviceTotalMapper.java | 15 ++++ .../model/entity/ViewDeviceTotal.java | 76 +++++++++++++++++++ .../model/query/ReportBasicQuery.java | 36 +++++++++ .../com/bellmann/model/vo/DetailExportVO.java | 41 ++++++++++ .../model/vo/DetailInventoryStatisticsVO.java | 37 +++++++++ .../bellmann/service/DeviceStaticService.java | 9 ++- .../com/bellmann/service/DomainService.java | 2 + .../com/bellmann/service/ReportService.java | 14 ++++ .../service/impl/DomainServiceImpl.java | 16 +++- .../service/impl/ReportServiceImpl.java | 52 +++++++++++++ .../resources/mapper/DeviceTypeMapper.xml | 5 +- src/main/resources/mapper/DomainMapper.xml | 1 + .../mapper/ViewDeviceTotalMapper.xml | 69 +++++++++++++++++ 18 files changed, 427 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/bellmann/controller/ReportController.java create mode 100644 src/main/java/com/bellmann/mapper/ViewDeviceTotalMapper.java create mode 100644 src/main/java/com/bellmann/model/entity/ViewDeviceTotal.java create mode 100644 src/main/java/com/bellmann/model/query/ReportBasicQuery.java create mode 100644 src/main/java/com/bellmann/model/vo/DetailExportVO.java create mode 100644 src/main/java/com/bellmann/model/vo/DetailInventoryStatisticsVO.java create mode 100644 src/main/java/com/bellmann/service/ReportService.java create mode 100644 src/main/java/com/bellmann/service/impl/ReportServiceImpl.java create mode 100644 src/main/resources/mapper/ViewDeviceTotalMapper.xml diff --git a/src/main/java/com/bellmann/controller/DeviceTypeController.java b/src/main/java/com/bellmann/controller/DeviceTypeController.java index ef7c7c8..e0071b2 100644 --- a/src/main/java/com/bellmann/controller/DeviceTypeController.java +++ b/src/main/java/com/bellmann/controller/DeviceTypeController.java @@ -60,7 +60,6 @@ public class DeviceTypeController { List> list = deviceTypeService.typeNameOption(vendorOui); return Result.success(list); } - @GetMapping("hard-ver-option/") @Operation(summary = "查找设备硬件版本选择框") public Result>> hardVerOption(@RequestParam String typeName){ diff --git a/src/main/java/com/bellmann/controller/DomainController.java b/src/main/java/com/bellmann/controller/DomainController.java index 6a9084d..6347bcd 100644 --- a/src/main/java/com/bellmann/controller/DomainController.java +++ b/src/main/java/com/bellmann/controller/DomainController.java @@ -64,4 +64,11 @@ public class DomainController { return domainService.transferOption(); } + + @Operation(summary = "报表") + @GetMapping("/report-area/options/{groupId}") + public Result>> reportArea(@PathVariable Long groupId) { + List> list = domainService.reportArea(groupId); + return Result.success(list); + } } diff --git a/src/main/java/com/bellmann/controller/ReportController.java b/src/main/java/com/bellmann/controller/ReportController.java new file mode 100644 index 0000000..ebb2a17 --- /dev/null +++ b/src/main/java/com/bellmann/controller/ReportController.java @@ -0,0 +1,47 @@ +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.model.query.ReportBasicQuery; +import com.bellmann.model.vo.DetailExportVO; +import com.bellmann.model.vo.DetailInventoryStatisticsVO; +import com.bellmann.service.ReportService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.List; + +@Tag(name = "31.家庭用户-报表") +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/report/v1") +public class ReportController { + + private final ReportService reportService; + + @PostMapping("/detail-inventory-statistics") + @Operation(summary = "运行报表") + public PageResult detailPage(@RequestBody ReportBasicQuery query){ + Page page = reportService.detailPage(query); + return PageResult.success(page); + } + + @Operation(summary = "导出详细清单统计报表") + @GetMapping("/_export") + public void exportDetail(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 exportUserList = reportService.listExportDetail(queryParams); + EasyExcel.write(response.getOutputStream(), DetailExportVO.class).sheet("详细清单统计报表") + .doWrite(exportUserList); + } + +} diff --git a/src/main/java/com/bellmann/converter/DeviceStaticConverter.java b/src/main/java/com/bellmann/converter/DeviceStaticConverter.java index 9bd10e0..19d17c0 100644 --- a/src/main/java/com/bellmann/converter/DeviceStaticConverter.java +++ b/src/main/java/com/bellmann/converter/DeviceStaticConverter.java @@ -5,12 +5,13 @@ import com.bellmann.model.bo.EquipmentBO; import com.bellmann.model.bo.RemoteEquipmentBO; import com.bellmann.model.entity.DeviceStatic; import com.bellmann.model.form.EquipmentAddForm; -import com.bellmann.model.vo.EquipmentVO; -import com.bellmann.model.vo.RemoteEquipmentVO; +import com.bellmann.model.vo.*; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; +import java.util.List; + @Mapper(componentModel = "spring") public interface DeviceStaticConverter { @@ -32,4 +33,6 @@ public interface DeviceStaticConverter { }) RemoteEquipmentVO remoteBOPage2VOPage(RemoteEquipmentBO bo); Page remoteBOPage2VOPage(Page boPage); + + List detailVO2ExportVO(List records); } diff --git a/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java b/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java index 400b36f..c52b349 100644 --- a/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java +++ b/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java @@ -35,4 +35,5 @@ public interface DeviceStaticMapper extends BaseMapper { DeviceDetail findRDeviceDetailStructByDevId(@Param("devId") Long devId); String getLogicIdByDevId(@Param("devId") Long devId); + } diff --git a/src/main/java/com/bellmann/mapper/ViewDeviceTotalMapper.java b/src/main/java/com/bellmann/mapper/ViewDeviceTotalMapper.java new file mode 100644 index 0000000..fa8d853 --- /dev/null +++ b/src/main/java/com/bellmann/mapper/ViewDeviceTotalMapper.java @@ -0,0 +1,15 @@ +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.ReportBasicQuery; +import com.bellmann.model.vo.DetailInventoryStatisticsVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface ViewDeviceTotalMapper extends BaseMapper { + + Page detailInventoryStatisticsPage(Page page, @Param("form") ReportBasicQuery query); +} diff --git a/src/main/java/com/bellmann/model/entity/ViewDeviceTotal.java b/src/main/java/com/bellmann/model/entity/ViewDeviceTotal.java new file mode 100644 index 0000000..631ecf1 --- /dev/null +++ b/src/main/java/com/bellmann/model/entity/ViewDeviceTotal.java @@ -0,0 +1,76 @@ +package com.bellmann.model.entity; + +import lombok.Data; + +import java.util.Date; +import java.io.Serializable; + +/** + * (VZjDeviceTotal)实体类 + * + * @author makejava + * @since 2024-07-30 09:54:58 + */ +@Data +public class ViewDeviceTotal implements Serializable { + private static final long serialVersionUID = 882370856173531679L; + + private Long devId; + + private Long typeAndVerId; + + private Long custId; + + private String devSno; + + private String devPppoe; + + private String devAdNo; + + private String devStatus; + + private Date devCreateTime; + + private Date devModifyTime; + + private Date devOnlineTime; + + private String devRemark1; + + private String devRemark3; + + private String devRemark4; + + private Long devTypeId; + + private String softVer; + + private Long tr069VerId; + + private String devVendorName; + + private String devVendorOui; + + private String devTypeName; + + private String devHardVer; + + private String devAccessType; + + private String devTypeNamea; + + private String devTypeNameNew; + + private Long groupid; + + private String groupname; + + private Long parentgroupid; + + private String groupdescription; + + private String groupcode; + + +} + diff --git a/src/main/java/com/bellmann/model/query/ReportBasicQuery.java b/src/main/java/com/bellmann/model/query/ReportBasicQuery.java new file mode 100644 index 0000000..dd2a935 --- /dev/null +++ b/src/main/java/com/bellmann/model/query/ReportBasicQuery.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 ReportBasicQuery extends BasePageQuery { + private Long area; + + private Long subarea; + + private String category; + + private String devName; + + private String accessType; + + private String devType; + + 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/DetailExportVO.java b/src/main/java/com/bellmann/model/vo/DetailExportVO.java new file mode 100644 index 0000000..f92d127 --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/DetailExportVO.java @@ -0,0 +1,41 @@ +package com.bellmann.model.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +@Data +@ColumnWidth(25) +public class DetailExportVO { + @ExcelProperty(value = "分公司") + private String area; + @ExcelProperty(value = "区局") + private String subArea; + @ExcelProperty(value = "设备Id") + private Long devId; + @ExcelProperty(value = "厂商") + private String category; + @ExcelProperty(value = "设备型号") + private String oui; + @ExcelProperty(value = "设备序列号") + private String devSno; + @ExcelProperty(value = "硬件版本") + private String devHard; + @ExcelProperty(value = "软件版本") + private String devSoft; + @ExcelProperty(value = "网关类型") + private String gateWayType; + @ExcelProperty(value = "逻辑ID") + private String sno; + @ExcelProperty(value = "宽带账号") + private String pppoe; + @ExcelProperty(value = "首次装机时间") + private String createTime; + @ExcelProperty(value = "最近一次装机时间") + private String modifyTime; + @ExcelProperty(value = "最近一次上线时间") + private String onLineTime; + @ExcelProperty(value = "接入类型") + private String rgMode; + +} diff --git a/src/main/java/com/bellmann/model/vo/DetailInventoryStatisticsVO.java b/src/main/java/com/bellmann/model/vo/DetailInventoryStatisticsVO.java new file mode 100644 index 0000000..03ca2a3 --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/DetailInventoryStatisticsVO.java @@ -0,0 +1,37 @@ +package com.bellmann.model.vo; + +import lombok.Data; + +@Data +public class DetailInventoryStatisticsVO { + private String area; + + private String subArea; + + private Long devId; + + private String category; + + private String devName; + + private String oui; + + private String devSno; + + private String devHard; + + private String devSoft; + + private String gateWayType; + + private String sno; + + private String pppoe; + + private String createTime; + private String modifyTime; + private String onLineTime; + + private String rgMode; + +} diff --git a/src/main/java/com/bellmann/service/DeviceStaticService.java b/src/main/java/com/bellmann/service/DeviceStaticService.java index ecdb83d..8f8b7bf 100644 --- a/src/main/java/com/bellmann/service/DeviceStaticService.java +++ b/src/main/java/com/bellmann/service/DeviceStaticService.java @@ -5,11 +5,10 @@ import com.bellmann.common.result.PageResult; import com.bellmann.common.result.Result; import com.bellmann.model.form.*; import com.bellmann.model.query.DevOuiSnoQuery; +import com.bellmann.model.query.ReportBasicQuery; import com.bellmann.model.query.SelectQuery; -import com.bellmann.model.vo.EquipmentVO; -import com.bellmann.model.vo.RemoteDevInfoVO; -import com.bellmann.model.vo.RemoteEquipmentVO; -import com.bellmann.model.vo.RemoteOperateResult; +import com.bellmann.model.vo.*; +import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; @@ -63,4 +62,6 @@ public interface DeviceStaticService { Long setAccountPassword(Long devId); void exeCustomTaskByIds(Long devId, Integer[] ids); + + } diff --git a/src/main/java/com/bellmann/service/DomainService.java b/src/main/java/com/bellmann/service/DomainService.java index 897ee80..93450ea 100644 --- a/src/main/java/com/bellmann/service/DomainService.java +++ b/src/main/java/com/bellmann/service/DomainService.java @@ -55,4 +55,6 @@ public interface DomainService { void refreshDomainCache(); + public List> reportArea(Long groupId); + } diff --git a/src/main/java/com/bellmann/service/ReportService.java b/src/main/java/com/bellmann/service/ReportService.java new file mode 100644 index 0000000..15ffb46 --- /dev/null +++ b/src/main/java/com/bellmann/service/ReportService.java @@ -0,0 +1,14 @@ +package com.bellmann.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bellmann.model.query.ReportBasicQuery; +import com.bellmann.model.vo.DetailExportVO; +import com.bellmann.model.vo.DetailInventoryStatisticsVO; + +import java.util.List; + +public interface ReportService { + Page detailPage(ReportBasicQuery query); + + List listExportDetail(ReportBasicQuery queryParams); +} diff --git a/src/main/java/com/bellmann/service/impl/DomainServiceImpl.java b/src/main/java/com/bellmann/service/impl/DomainServiceImpl.java index 492c1f5..1be43e2 100644 --- a/src/main/java/com/bellmann/service/impl/DomainServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/DomainServiceImpl.java @@ -11,8 +11,8 @@ import com.bellmann.mapper.DomainMapper; import com.bellmann.model.entity.Domain; import com.bellmann.model.form.DomainForm; import com.bellmann.model.query.DomainQuery; -import com.bellmann.model.vo.TransferOption; import com.bellmann.model.vo.DomainVO; +import com.bellmann.model.vo.TransferOption; import com.bellmann.service.DomainService; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; @@ -185,4 +185,18 @@ public class DomainServiceImpl implements DomainService { return Result.success(collect); } + + @Override + public List> reportArea(Long groupId) { + List list = domainMapper.selectList(new LambdaQueryWrapper() + .eq(Domain::getParentGroupId, groupId) + ); + return list.stream().map(obj -> { + Option option = new Option<>(); + option.setLabel(obj.getGroupName()); + option.setValue(obj.getGroupId()); + 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 new file mode 100644 index 0000000..3460b96 --- /dev/null +++ b/src/main/java/com/bellmann/service/impl/ReportServiceImpl.java @@ -0,0 +1,52 @@ +package com.bellmann.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.ReportBasicQuery; +import com.bellmann.model.vo.DetailExportVO; +import com.bellmann.model.vo.DetailInventoryStatisticsVO; +import com.bellmann.service.ReportService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class ReportServiceImpl implements ReportService { + private final ViewDeviceTotalMapper viewDeviceTotalMapper; + + private final DeviceStaticMapper deviceStaticMapper; + + private final ServiceManager serviceManager; + + private final DeviceStaticConverter deviceStaticConverter; + @Override + public Page detailPage(ReportBasicQuery query) { + int pageNum = query.getPageNum(); + int pageSize = query.getPageSize(); + Page page = new Page<>(pageNum,pageSize); + Page voPage = viewDeviceTotalMapper.detailInventoryStatisticsPage(page, query); + + voPage.getRecords().forEach(obj->{ + obj.setRgMode(serviceManager.getConnType(obj.getDevId())); + }); + return voPage; + } + + @Override + public List listExportDetail(ReportBasicQuery queryParams) { + int pageNum = queryParams.getPageNum(); + int pageSize = queryParams.getPageSize(); + Page page = new Page<>(pageNum,pageSize); + List records = viewDeviceTotalMapper.detailInventoryStatisticsPage(page, queryParams).getRecords(); + records.forEach(obj->{ + obj.setRgMode(serviceManager.getConnType(obj.getDevId())); + }); + return deviceStaticConverter.detailVO2ExportVO(records); + + } +} diff --git a/src/main/resources/mapper/DeviceTypeMapper.xml b/src/main/resources/mapper/DeviceTypeMapper.xml index bb2c47d..6b49533 100644 --- a/src/main/resources/mapper/DeviceTypeMapper.xml +++ b/src/main/resources/mapper/DeviceTypeMapper.xml @@ -38,7 +38,7 @@ + diff --git a/src/main/resources/mapper/ViewDeviceTotalMapper.xml b/src/main/resources/mapper/ViewDeviceTotalMapper.xml new file mode 100644 index 0000000..9cc1c90 --- /dev/null +++ b/src/main/resources/mapper/ViewDeviceTotalMapper.xml @@ -0,0 +1,69 @@ + + + + + +