mirror of
https://github.com/dataease/dataease.git
synced 2025-02-24 11:32:57 +08:00
Merge pull request #2929 from dataease/pr@dev@feat_email_task_export
feat(系统管理-定时报告): 增加导出api
This commit is contained in:
commit
d963c92a7c
@ -1,11 +1,14 @@
|
||||
package io.dataease.plugins.server;
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import io.dataease.auth.api.dto.CurrentUserDto;
|
||||
import io.dataease.commons.exception.DEException;
|
||||
import io.dataease.commons.model.excel.ExcelSheetModel;
|
||||
import io.dataease.commons.pool.PriorityThreadPoolExecutor;
|
||||
import io.dataease.commons.utils.*;
|
||||
import io.dataease.i18n.Translator;
|
||||
import io.dataease.plugins.common.entity.GlobalTaskEntity;
|
||||
import io.dataease.plugins.common.entity.GlobalTaskInstance;
|
||||
import io.dataease.plugins.common.entity.XpackConditionEntity;
|
||||
@ -27,11 +30,17 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
@ApiIgnore
|
||||
@RequestMapping("/plugin/task")
|
||||
@ -216,6 +225,70 @@ public class XEmailTaskServer {
|
||||
return instanceForm.getInfo();
|
||||
}
|
||||
|
||||
@RequiresPermissions("task-email:read")
|
||||
@PostMapping("/export")
|
||||
public void export(@RequestBody XpackGridRequest request) throws Exception{
|
||||
Pager<List<XpackTaskInstanceDTO>> listPager = instancesGrid(0, 0, request);
|
||||
List<XpackTaskInstanceDTO> instanceDTOS = listPager.getListObject();
|
||||
ExcelSheetModel excelSheetModel = excelSheetModel(instanceDTOS);
|
||||
List<ExcelSheetModel> sheetModels = new ArrayList<>();
|
||||
sheetModels.add(excelSheetModel);
|
||||
File file = ExcelUtils.exportExcel(sheetModels, null);
|
||||
InputStream inputStream = new FileInputStream(file);
|
||||
HttpServletResponse response = ServletUtils.response();
|
||||
try {
|
||||
String filename = file.getName();
|
||||
response.reset();
|
||||
response.addHeader("Access-Control-Allow-Origin", "*");
|
||||
response.setContentType("application/octet-stream;charset=UTF-8");
|
||||
response.addHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));
|
||||
ServletOutputStream outputStream = response.getOutputStream();
|
||||
byte[] buff = new byte[1024];
|
||||
BufferedInputStream bis = null;
|
||||
// 读取文件
|
||||
bis = new BufferedInputStream(inputStream);
|
||||
int i = bis.read(buff);
|
||||
while (i != -1) {
|
||||
outputStream.write(buff, 0, buff.length);
|
||||
outputStream.flush();
|
||||
i = bis.read(buff);
|
||||
}
|
||||
outputStream.close();
|
||||
inputStream.close();
|
||||
} catch (IOException ex) {
|
||||
ex.printStackTrace();
|
||||
}finally {
|
||||
if (file.exists())
|
||||
FileUtil.del(file);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private ExcelSheetModel excelSheetModel(List<XpackTaskInstanceDTO> instanceDTOS) {
|
||||
ExcelSheetModel excelSheetModel = new ExcelSheetModel();
|
||||
excelSheetModel.setSheetName(Translator.get("I18N_XPACKTASK_FILE_NAME"));
|
||||
String[] headArr = new String[] {Translator.get("I18N_XPACKTASK_NAME"), Translator.get("I18N_XPACKTASK_EXEC_TIME"), Translator.get("I18N_XPACKTASK_STATUS")};
|
||||
List<String> head = Arrays.asList(headArr);
|
||||
excelSheetModel.setHeads(head);
|
||||
List<List<String>> datas = instanceDTOS.stream().map(this::formatExcelData).collect(Collectors.toList());
|
||||
excelSheetModel.setDatas(datas);
|
||||
return excelSheetModel;
|
||||
}
|
||||
|
||||
private List<String> formatExcelData(XpackTaskInstanceDTO instanceDTO) {
|
||||
List<String> results = new ArrayList<>();
|
||||
results.add(instanceDTO.getTaskName());
|
||||
try {
|
||||
results.add(DateUtils.getTimeString(instanceDTO.getExecuteTime()));
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
Integer status = instanceDTO.getStatus();
|
||||
String i18key = "I18N_XPACKTASK_" + (ObjectUtils.isEmpty(status) || status == -1 ? "ERROR" : status == 0 ? "UNDERWAY" : "SUCCESS");
|
||||
results.add(Translator.get(i18key));
|
||||
return results;
|
||||
}
|
||||
|
||||
private XpackPixelEntity buildPixel(String pixel) {
|
||||
|
||||
if (StringUtils.isBlank(pixel))
|
||||
|
@ -213,3 +213,12 @@ i18n_gauge_field_delete=Field type changed,please edit
|
||||
\u6570\u636E\u540C\u6B65\u8868\u5355=Data synchronization form
|
||||
|
||||
i18n_max_user_import_size=File size exceeds 10M
|
||||
|
||||
|
||||
I18N_XPACKTASK_FILE_NAME=Execute log
|
||||
I18N_XPACKTASK_NAME=Name
|
||||
I18N_XPACKTASK_EXEC_TIME=Time
|
||||
I18N_XPACKTASK_STATUS=Status
|
||||
I18N_XPACKTASK_SUCCESS=Success
|
||||
I18N_XPACKTASK_ERROR=Error
|
||||
I18N_XPACKTASK_UNDERWAY=Underway
|
||||
|
@ -214,3 +214,12 @@ i18n_gauge_field_change=\u6240\u7528\u5B57\u6BB5\u53D1\u751F\u53D8\u66F4\uFF0C\u
|
||||
i18n_gauge_field_delete=\u6240\u7528\u5B57\u6BB5\u5DF2\u5220\u9664\uFF0C\u8BF7\u91CD\u65B0\u7F16\u8F91
|
||||
|
||||
i18n_max_user_import_size=\u6587\u4EF6\u5927\u5C0F\u8D85\u8FC710M
|
||||
|
||||
|
||||
I18N_XPACKTASK_FILE_NAME=\u6267\u884C\u8BB0\u5F55
|
||||
I18N_XPACKTASK_NAME=\u4EFB\u52A1\u540D\u79F0
|
||||
I18N_XPACKTASK_EXEC_TIME=\u6267\u884C\u65F6\u95F4
|
||||
I18N_XPACKTASK_STATUS=\u6267\u884C\u72B6\u6001
|
||||
I18N_XPACKTASK_SUCCESS=\u6210\u529F
|
||||
I18N_XPACKTASK_ERROR=\u5931\u8D25
|
||||
I18N_XPACKTASK_UNDERWAY=\u6267\u884C\u4E2D
|
||||
|
@ -211,3 +211,12 @@ i18n_gauge_field_delete=\u6240\u7528\u5B57\u6BB5\u5DF2\u522A\u9664\uFF0C\u8ACB\u
|
||||
|
||||
|
||||
i18n_max_user_import_size=\u6587\u4EF6\u5927\u5C0F\u8D85\u904E10M
|
||||
|
||||
|
||||
I18N_XPACKTASK_FILE_NAME=\u57F7\u884C\u8A18\u9304
|
||||
I18N_XPACKTASK_NAME=\u4EFB\u52D9\u540D\u7A31
|
||||
I18N_XPACKTASK_EXEC_TIME=\u57F7\u884C\u6642\u9593
|
||||
I18N_XPACKTASK_STATUS=\u57F7\u884C\u72C0\u614B
|
||||
I18N_XPACKTASK_SUCCESS=\u6210\u529F
|
||||
I18N_XPACKTASK_ERROR=\u5931\u6557
|
||||
I18N_XPACKTASK_UNDERWAY=\u57F7\u884C\u4E2D
|
||||
|
Loading…
Reference in New Issue
Block a user