Kaynağa Gözat

天气预警

ouyang 2 yıl önce
ebeveyn
işleme
fae99ca16c

+ 112 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/domain/CoreEduTrainingTaskToRole.java

@@ -0,0 +1,112 @@
+package com.xunmei.common.core.domain.retrieval.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 监控调阅任务对象 core_monitoring_retrieval_task
+ *
+ * @author xunmei
+ * @date 2023-08-25
+ */
+@Data
+@ApiModel(value = "CoreMonitoringRetrievalTask对象", description = "监控调阅任务")
+public class CoreMonitoringRetrievalTaskExcelVo {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    @ExcelProperty("序号")
+    private Integer orderNum;
+
+    /**
+     * 任务名称
+     */
+    @ExcelProperty("任务名称")
+    private String taskName;
+    /**
+     * 调阅周期
+     */
+    @ExcelIgnore
+    @ApiModelProperty(value = "调阅周期")
+    private String cycle;
+    @ExcelProperty("调阅周期")
+    private String cycleText;
+    /**
+     * 开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ExcelProperty("开始时间")
+    private Date planStartTime;
+
+    /**
+     * 结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ExcelProperty("结束时间")
+    private Date planEndTime;
+
+    /**
+     * 状态
+     */
+    @ExcelIgnore
+    @ApiModelProperty(value = "状态")
+    private String status;
+    @ExcelProperty("状态")
+    private String statusText;
+
+    /**
+     * 调阅机构
+     */
+    @ExcelProperty("调阅机构")
+    private String orgName;
+    /**
+     * 调阅角色
+     */
+    @ExcelProperty("调阅角色")
+    private String roleName;
+
+
+    /**
+     * 调阅开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ExcelProperty("调阅开始时间")
+    private Date startTime;
+
+    /**
+     * 调阅结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ExcelProperty("调阅结束时间")
+    private Date endTime;
+
+    /**
+     * 调阅人
+     */
+    @ExcelProperty("调阅人")
+    private String retrievalUserName;
+
+    @ExcelProperty("异常数")
+    private Integer exceptionCount;
+
+
+
+
+
+
+
+
+
+
+}

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/mapper/CoreMonitoringRetrievalTaskMapper.java

@@ -9,6 +9,7 @@ import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanPageDto;
 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;
@@ -85,4 +86,6 @@ public interface CoreMonitoringRetrievalTaskMapper extends BaseMapper<CoreMonito
     void deleteTaskByPlanId(@Param("planId") Long planId);
 
     void updateDeleteTaskByPlanId(@Param("planId") Long planId,@Param("isDeleted") Integer isDeleted);
+
+    List<CoreMonitoringRetrievalTaskExcelVo> selectAllList(@Param("request") RetrievalTaskPageDto request);
 }

+ 26 - 36
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java

@@ -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

+ 30 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml

@@ -161,6 +161,36 @@
                  left join sys_user c on a.retrieval_user = c.id
         where a.id = #{taskId}
     </select>
+    <select id="selectAllList"
+            resultType="com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskExcelVo">
+        select a.*,b.role_name as roleName,c.name as retrievalUserName from core_monitoring_retrieval_task a left join
+        sys_role b on a.role_id = b.id left join sys_user c on a.retrieval_user = c.id
+        where is_deleted = 0
+        <if test="request.orgId != null ">
+            and a.org_id = #{request.orgId}
+        </if>
+        <if test="request.orgPath != null  and request.orgPath != ''">
+            and a.org_path like concat( #{request.orgPath}, '%')
+        </if>
+        <if test="request.taskName != null  and request.taskName != ''">
+            and a.task_name like concat('%', #{request.taskName}, '%')
+        </if>
+        <if test="request.cycle != null ">
+            and a.cycle = #{request.cycle}
+        </if>
+        <if test="request.dateRange != null and request.dateRange.length>0">
+            and a.ymd_date >= #{request.dateRange[0]}
+            and #{request.dateRange[1]}>=a.ymd_date
+        </if>
+        <if test="request.status != null ">
+            and a.status = #{request.status}
+        </if>
+        <if test="request.roleId != null ">
+            and a.role_id = #{request.roleId}
+        </if>
+        order by a.ymd_date desc
+
+    </select>
 
     <insert id="insertCoreMonitoringRetrievalTask"
             parameterType="com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask">