|
|
@@ -0,0 +1,96 @@
|
|
|
+package com.xunmei.core.reportForms.monitor.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.xunmei.common.core.constant.SecurityConstants;
|
|
|
+import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskExcelVo;
|
|
|
+import com.xunmei.common.core.utils.DateHelper;
|
|
|
+import com.xunmei.common.core.web.page.TableDataInfo;
|
|
|
+import com.xunmei.core.access.vo.TMonitoringRetrievalPlanVO;
|
|
|
+import com.xunmei.core.reportForms.monitor.dto.MonitoringAccessDTO;
|
|
|
+import com.xunmei.core.reportForms.monitor.mapper.MonitorAccessReportMapper;
|
|
|
+import com.xunmei.core.reportForms.monitor.service.MonitorAccessReportService;
|
|
|
+import com.xunmei.core.reportForms.monitor.vo.MonitoringAccessVO;
|
|
|
+import com.xunmei.system.api.RemoteOrgService;
|
|
|
+import com.xunmei.system.api.RemoteRoleService;
|
|
|
+import com.xunmei.system.api.domain.SysDictData;
|
|
|
+import com.xunmei.system.api.domain.SysOrg;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+import java.net.URLEncoder;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author :LuoWei
|
|
|
+ * @date : 2023/10/30
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class MonitorAccessReportServiceImpl implements MonitorAccessReportService {
|
|
|
+ @Autowired
|
|
|
+ private MonitorAccessReportMapper monitorAccessReportMapper;
|
|
|
+ @Resource
|
|
|
+ private RemoteOrgService remoteOrgService;
|
|
|
+ @Override
|
|
|
+ public TableDataInfo<MonitoringAccessVO> report(MonitoringAccessDTO monitoringAccessDTO) {
|
|
|
+ Page<MonitoringAccessVO> page;
|
|
|
+ if (monitoringAccessDTO.getPageNum() != null && monitoringAccessDTO.getPageSize() != null) {
|
|
|
+ page = new Page<>(monitoringAccessDTO.getPageNum(), monitoringAccessDTO.getPageSize());
|
|
|
+ } else {
|
|
|
+ page = new Page<>();
|
|
|
+ }
|
|
|
+ if (null!=monitoringAccessDTO.getOrgId()){
|
|
|
+ SysOrg sysOrg = remoteOrgService.selectSysOrgById(monitoringAccessDTO.getOrgId(), SecurityConstants.INNER);
|
|
|
+ monitoringAccessDTO.setOrgPath(sysOrg.getPath());
|
|
|
+ }
|
|
|
+ Page<MonitoringAccessVO> report = monitorAccessReportMapper.report(page, monitoringAccessDTO);
|
|
|
+ report.getRecords().forEach(r -> {
|
|
|
+ Integer integer = monitorAccessReportMapper.selectNetworkNumberByPath(r.getPath());
|
|
|
+ r.setNetworkNumber(integer);
|
|
|
+ });
|
|
|
+ return TableDataInfo.build(report);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<MonitoringAccessVO> selectAll(MonitoringAccessDTO monitoringAccessDTO) {
|
|
|
+
|
|
|
+ List<MonitoringAccessVO> monitoringAccessVOS = monitorAccessReportMapper.selectAll(monitoringAccessDTO);
|
|
|
+ monitoringAccessVOS.forEach(m->{
|
|
|
+ Integer integer = monitorAccessReportMapper.selectNetworkNumberByPath(m.getPath());
|
|
|
+ m.setNetworkNumber(integer);
|
|
|
+ });
|
|
|
+ return monitoringAccessVOS;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void export(MonitoringAccessDTO monitoringAccessDTO, HttpServletResponse response) throws IOException {
|
|
|
+ String orgName = null;
|
|
|
+ if (null!=monitoringAccessDTO.getOrgId()){
|
|
|
+ SysOrg sysOrg = remoteOrgService.selectSysOrgById(monitoringAccessDTO.getOrgId(), SecurityConstants.INNER);
|
|
|
+ monitoringAccessDTO.setOrgPath(sysOrg.getPath());
|
|
|
+ orgName=sysOrg.getName();
|
|
|
+ }
|
|
|
+ List<MonitoringAccessVO> monitoringAccessVOS = this.selectAll(monitoringAccessDTO);
|
|
|
+ if (ObjectUtil.isEmpty(monitoringAccessVOS)) {
|
|
|
+ throw new RuntimeException("导出数据为空!");
|
|
|
+ }
|
|
|
+ for (int i = 0; i < monitoringAccessVOS.size(); i++) {
|
|
|
+ MonitoringAccessVO monitoringAccessVO = monitoringAccessVOS.get(i);
|
|
|
+ monitoringAccessVO.setOrderNum(i + 1);
|
|
|
+ }
|
|
|
+ if (monitoringAccessVOS.size() > 10000) {
|
|
|
+ throw new RuntimeException("导出数据量过大(单次导出限量10000条数据),请填写条件分批导出");
|
|
|
+ }
|
|
|
+ response.setContentType("application/vnd.ms-excel");
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
+ String fileName = URLEncoder.encode("【" + orgName + "】-监控调阅报表" + DateHelper.getDateString(new Date()), "UTF-8");
|
|
|
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
|
|
|
+ // 调用EasyExcel的导出方法
|
|
|
+ EasyExcel.write(response.getOutputStream(), MonitoringAccessVO.class).sheet("Sheet1").doWrite(monitoringAccessVOS);
|
|
|
+ }
|
|
|
+}
|