|  | @@ -7,6 +7,7 @@ import cn.hutool.core.date.DateUtil;
 | 
	
		
			
				|  |  |  import cn.hutool.core.util.ObjectUtil;
 | 
	
		
			
				|  |  |  import cn.hutool.poi.excel.ExcelUtil;
 | 
	
		
			
				|  |  |  import cn.hutool.poi.excel.ExcelWriter;
 | 
	
		
			
				|  |  | +import com.alibaba.excel.EasyExcel;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
	
	
		
			
				|  | @@ -17,6 +18,7 @@ import com.xunmei.common.core.domain.DateRange;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanPageVo;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.domain.retrieval.dto.RetrievalTaskPageDto;
 | 
	
		
			
				|  |  | +import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskExcelVo;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskOneVo;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskVo;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.domain.retrieval.vo.TaskDataVo;
 | 
	
	
		
			
				|  | @@ -57,6 +59,7 @@ import java.util.List;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * 监控调阅任务Service业务层处理
 | 
	
		
			
				|  |  |   *
 | 
	
	
		
			
				|  | @@ -99,47 +102,34 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public void export(RetrievalTaskPageDto request, HttpServletResponse response) throws IOException {
 | 
	
		
			
				|  |  | -        //不分页
 | 
	
		
			
				|  |  | -        request.setPageSize(1L);
 | 
	
		
			
				|  |  | -        request.setPageNum(100000L);
 | 
	
		
			
				|  |  |          SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgById(request.getOrgId(),SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 | 
	
		
			
				|  |  |          List<SysDictData> listDict = RemoteCallHandlerExecutor.executeRemoteCall(() -> dictDataService.selectDictByeType("retrieval_task_status", SecurityConstants.INNER), ErrorMsgConstants.QUERY_DICT_DATA_ERROR);
 | 
	
		
			
				|  |  | -        final TableDataInfo tableDataInfo = this.selectPage(request);
 | 
	
		
			
				|  |  | -        if (ObjectUtil.isEmpty(tableDataInfo.getRows())) {
 | 
	
		
			
				|  |  | +        List<SysDictData> listDicta = RemoteCallHandlerExecutor.executeRemoteCall(() -> dictDataService.selectDictByeType("sys_access_cycle", SecurityConstants.INNER), ErrorMsgConstants.QUERY_DICT_DATA_ERROR);
 | 
	
		
			
				|  |  | +        if (request.getCheckSub()) {
 | 
	
		
			
				|  |  | +            request.setOrgPath(sysOrg.getPath());
 | 
	
		
			
				|  |  | +            request.setOrgId(null);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        List<CoreMonitoringRetrievalTaskExcelVo> list = coreMonitoringRetrievalTaskMapper.selectAllList(request);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (ObjectUtil.isEmpty(list)) {
 | 
	
		
			
				|  |  |              throw new RuntimeException("导出数据为空!");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        List<CoreMonitoringRetrievalTaskVo> list = tableDataInfo.getRows();
 | 
	
		
			
				|  |  | -        list.forEach(r -> {
 | 
	
		
			
				|  |  | -            r.setStatusText(listDict.stream().filter(d -> d.getDictValue().equals(r.getStatus())).findFirst().orElse(new SysDictData()).getDictLabel());
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -        list.forEach(r -> r.setNo(list.indexOf(r) + 1));
 | 
	
		
			
				|  |  | -        ExcelWriter writer = ExcelUtil.getWriter(true);
 | 
	
		
			
				|  |  | -        writer.addHeaderAlias("序号", "no");
 | 
	
		
			
				|  |  | -        writer.addHeaderAlias("任务名称", "taskName");
 | 
	
		
			
				|  |  | -        writer.addHeaderAlias("开始时间", "planStartTime");
 | 
	
		
			
				|  |  | -        writer.addHeaderAlias("结束时间", "planEndTime");
 | 
	
		
			
				|  |  | -        writer.addHeaderAlias("状态", "statusText");
 | 
	
		
			
				|  |  | -        writer.addHeaderAlias("调阅机构", "orgName");
 | 
	
		
			
				|  |  | -        writer.addHeaderAlias("调阅角色", "roleName");
 | 
	
		
			
				|  |  | -        writer.addHeaderAlias("调阅开始时间", "startTime");
 | 
	
		
			
				|  |  | -        writer.addHeaderAlias("调阅结束时间", "endTime");
 | 
	
		
			
				|  |  | -        writer.addHeaderAlias("调阅人", "retrievalUserName");
 | 
	
		
			
				|  |  | -        writer.addHeaderAlias("异常数", "exceptionCount");
 | 
	
		
			
				|  |  | -        //只保留别名的数据
 | 
	
		
			
				|  |  | -        writer.setOnlyAlias(true);
 | 
	
		
			
				|  |  | -        // 默认配置
 | 
	
		
			
				|  |  | -        writer.write(list, true);
 | 
	
		
			
				|  |  | -        // 设置content—type
 | 
	
		
			
				|  |  | -        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset:utf-8");
 | 
	
		
			
				|  |  | -        // 设置标题
 | 
	
		
			
				|  |  | +        if(list.size()>10000){
 | 
	
		
			
				|  |  | +            throw new RuntimeException("导出数据量过大(单次导出限量10000条数据),请填写条件分批导出");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        for(int i=0;i<list.size();i++){
 | 
	
		
			
				|  |  | +            CoreMonitoringRetrievalTaskExcelVo vo = list.get(i);
 | 
	
		
			
				|  |  | +            vo.setStatusText(listDict.stream().filter(d -> d.getDictValue().equals(vo.getStatus())).findFirst().orElse(new SysDictData()).getDictLabel());
 | 
	
		
			
				|  |  | +            vo.setOrderNum(i+1);
 | 
	
		
			
				|  |  | +            vo.setCycleText(listDicta.stream().filter(d -> d.getDictValue().equals(vo.getStatus())).findFirst().orElse(new SysDictData()).getDictLabel());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        response.setContentType("application/vnd.ms-excel");
 | 
	
		
			
				|  |  | +        response.setCharacterEncoding("utf-8");
 | 
	
		
			
				|  |  |          String fileName = URLEncoder.encode("【" + sysOrg.getName() + "】-监控调阅任务记录" + DateHelper.getDateString(new Date()), "UTF-8");
 | 
	
		
			
				|  |  | -        //Content-disposition是MIME协议的扩展,MIME协议指示MIME用户代理如何显示附加的文件。
 | 
	
		
			
				|  |  | -        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".et");
 | 
	
		
			
				|  |  | -        ServletOutputStream outputStream = response.getOutputStream();
 | 
	
		
			
				|  |  | -        //将Writer刷新到OutPut
 | 
	
		
			
				|  |  | -        writer.flush(outputStream, true);
 | 
	
		
			
				|  |  | -        outputStream.close();
 | 
	
		
			
				|  |  | -        writer.close();
 | 
	
		
			
				|  |  | +        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
 | 
	
		
			
				|  |  | +        // 调用EasyExcel的导出方法
 | 
	
		
			
				|  |  | +        EasyExcel.write(response.getOutputStream(), CoreMonitoringRetrievalTaskExcelVo.class).sheet("Sheet1").doWrite(list);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 |