forked from github/dataease
feat(X-Pack): [数据填报]支持表单数据下载
This commit is contained in:
parent
cddef75615
commit
b950e6e41d
@ -10,11 +10,10 @@ import io.dataease.api.chart.request.ChartExcelRequestInner;
|
|||||||
import io.dataease.api.dataset.dto.DataSetExportRequest;
|
import io.dataease.api.dataset.dto.DataSetExportRequest;
|
||||||
import io.dataease.api.dataset.union.DatasetGroupInfoDTO;
|
import io.dataease.api.dataset.union.DatasetGroupInfoDTO;
|
||||||
import io.dataease.api.dataset.union.UnionDTO;
|
import io.dataease.api.dataset.union.UnionDTO;
|
||||||
import io.dataease.extensions.datasource.api.PluginManageApi;
|
import io.dataease.api.export.BaseExportApi;
|
||||||
import io.dataease.extensions.view.dto.DatasetRowPermissionsTreeObj;
|
|
||||||
import io.dataease.license.manage.F2CLicLimitedManage;
|
|
||||||
import io.dataease.model.ExportTaskDTO;
|
|
||||||
import io.dataease.api.permissions.dataset.dto.DataSetRowPermissionsTreeDTO;
|
import io.dataease.api.permissions.dataset.dto.DataSetRowPermissionsTreeDTO;
|
||||||
|
import io.dataease.api.xpack.dataFilling.DataFillingApi;
|
||||||
|
import io.dataease.api.xpack.dataFilling.dto.DataFillFormTableDataRequest;
|
||||||
import io.dataease.auth.bo.TokenUserBO;
|
import io.dataease.auth.bo.TokenUserBO;
|
||||||
import io.dataease.chart.dao.auto.mapper.CoreChartViewMapper;
|
import io.dataease.chart.dao.auto.mapper.CoreChartViewMapper;
|
||||||
import io.dataease.chart.server.ChartDataServer;
|
import io.dataease.chart.server.ChartDataServer;
|
||||||
@ -22,7 +21,6 @@ import io.dataease.dataset.dao.auto.entity.CoreDatasetGroup;
|
|||||||
import io.dataease.dataset.dao.auto.mapper.CoreDatasetGroupMapper;
|
import io.dataease.dataset.dao.auto.mapper.CoreDatasetGroupMapper;
|
||||||
import io.dataease.dataset.manage.*;
|
import io.dataease.dataset.manage.*;
|
||||||
import io.dataease.datasource.utils.DatasourceUtils;
|
import io.dataease.datasource.utils.DatasourceUtils;
|
||||||
import io.dataease.engine.constant.DeTypeConstants;
|
|
||||||
import io.dataease.engine.sql.SQLProvider;
|
import io.dataease.engine.sql.SQLProvider;
|
||||||
import io.dataease.engine.trans.Field2SQLObj;
|
import io.dataease.engine.trans.Field2SQLObj;
|
||||||
import io.dataease.engine.trans.Order2SQLObj;
|
import io.dataease.engine.trans.Order2SQLObj;
|
||||||
@ -32,6 +30,7 @@ import io.dataease.engine.utils.Utils;
|
|||||||
import io.dataease.exception.DEException;
|
import io.dataease.exception.DEException;
|
||||||
import io.dataease.exportCenter.dao.auto.entity.CoreExportTask;
|
import io.dataease.exportCenter.dao.auto.entity.CoreExportTask;
|
||||||
import io.dataease.exportCenter.dao.auto.mapper.CoreExportTaskMapper;
|
import io.dataease.exportCenter.dao.auto.mapper.CoreExportTaskMapper;
|
||||||
|
import io.dataease.extensions.datasource.api.PluginManageApi;
|
||||||
import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO;
|
import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO;
|
||||||
import io.dataease.extensions.datasource.dto.DatasourceRequest;
|
import io.dataease.extensions.datasource.dto.DatasourceRequest;
|
||||||
import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO;
|
import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO;
|
||||||
@ -39,8 +38,11 @@ import io.dataease.extensions.datasource.factory.ProviderFactory;
|
|||||||
import io.dataease.extensions.datasource.model.SQLMeta;
|
import io.dataease.extensions.datasource.model.SQLMeta;
|
||||||
import io.dataease.extensions.datasource.provider.Provider;
|
import io.dataease.extensions.datasource.provider.Provider;
|
||||||
import io.dataease.extensions.view.dto.ColumnPermissionItem;
|
import io.dataease.extensions.view.dto.ColumnPermissionItem;
|
||||||
|
import io.dataease.extensions.view.dto.DatasetRowPermissionsTreeObj;
|
||||||
import io.dataease.i18n.Translator;
|
import io.dataease.i18n.Translator;
|
||||||
import io.dataease.license.config.XpackInteract;
|
import io.dataease.license.config.XpackInteract;
|
||||||
|
import io.dataease.license.manage.F2CLicLimitedManage;
|
||||||
|
import io.dataease.model.ExportTaskDTO;
|
||||||
import io.dataease.system.manage.CoreUserManage;
|
import io.dataease.system.manage.CoreUserManage;
|
||||||
import io.dataease.system.manage.SysParameterManage;
|
import io.dataease.system.manage.SysParameterManage;
|
||||||
import io.dataease.utils.*;
|
import io.dataease.utils.*;
|
||||||
@ -72,7 +74,7 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public class ExportCenterManage {
|
public class ExportCenterManage implements BaseExportApi {
|
||||||
@Resource
|
@Resource
|
||||||
private CoreExportTaskMapper exportTaskMapper;
|
private CoreExportTaskMapper exportTaskMapper;
|
||||||
@Resource
|
@Resource
|
||||||
@ -117,6 +119,13 @@ public class ExportCenterManage {
|
|||||||
@Resource
|
@Resource
|
||||||
private DatasetDataManage datasetDataManage;
|
private DatasetDataManage datasetDataManage;
|
||||||
|
|
||||||
|
@Autowired(required = false)
|
||||||
|
private DataFillingApi dataFillingApi = null;
|
||||||
|
|
||||||
|
private DataFillingApi getDataFillingApi() {
|
||||||
|
return dataFillingApi;
|
||||||
|
}
|
||||||
|
|
||||||
@Resource(name = "f2CLicLimitedManage")
|
@Resource(name = "f2CLicLimitedManage")
|
||||||
private F2CLicLimitedManage f2CLicLimitedManage;
|
private F2CLicLimitedManage f2CLicLimitedManage;
|
||||||
|
|
||||||
@ -153,7 +162,7 @@ public class ExportCenterManage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Long getExportLimit() {
|
private Long getExportLimit() {
|
||||||
return Math.min(f2CLicLimitedManage.checkDatasetLimit(),limit);
|
return Math.min(f2CLicLimitedManage.checkDatasetLimit(), limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void download(String id, HttpServletResponse response) throws Exception {
|
public void download(String id, HttpServletResponse response) throws Exception {
|
||||||
@ -234,6 +243,10 @@ public class ExportCenterManage {
|
|||||||
DataSetExportRequest request = JsonUtil.parseObject(exportTask.getParams(), DataSetExportRequest.class);
|
DataSetExportRequest request = JsonUtil.parseObject(exportTask.getParams(), DataSetExportRequest.class);
|
||||||
startDatasetTask(exportTask, request);
|
startDatasetTask(exportTask, request);
|
||||||
}
|
}
|
||||||
|
if (exportTask.getExportFromType().equalsIgnoreCase("data_filling")) {
|
||||||
|
HashMap request = JsonUtil.parseObject(exportTask.getParams(), HashMap.class);
|
||||||
|
startDataFillingTask(exportTask, request);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ExportTaskDTO> exportTasks(String status) {
|
public List<ExportTaskDTO> exportTasks(String status) {
|
||||||
@ -279,6 +292,13 @@ public class ExportCenterManage {
|
|||||||
List<String> finalFullName = fullName;
|
List<String> finalFullName = fullName;
|
||||||
exportTaskDTO.setExportFromName(String.join("/", finalFullName));
|
exportTaskDTO.setExportFromName(String.join("/", finalFullName));
|
||||||
}
|
}
|
||||||
|
if (exportTaskDTO.getExportFromType().equalsIgnoreCase("data_filling")) {
|
||||||
|
List<String> fullName = new ArrayList<>();
|
||||||
|
getDataFillingApi().geFullName(Long.valueOf(exportTaskDTO.getExportFrom()), fullName);
|
||||||
|
Collections.reverse(fullName);
|
||||||
|
List<String> finalFullName = fullName;
|
||||||
|
exportTaskDTO.setExportFromName(String.join("/", finalFullName));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setExportFromName(ExportTaskDTO exportTaskDTO) {
|
private void setExportFromName(ExportTaskDTO exportTaskDTO) {
|
||||||
@ -288,6 +308,9 @@ public class ExportCenterManage {
|
|||||||
if (exportTaskDTO.getExportFromType().equalsIgnoreCase("dataset")) {
|
if (exportTaskDTO.getExportFromType().equalsIgnoreCase("dataset")) {
|
||||||
exportTaskDTO.setExportFromName(coreDatasetGroupMapper.selectById(exportTaskDTO.getExportFrom()).getName());
|
exportTaskDTO.setExportFromName(coreDatasetGroupMapper.selectById(exportTaskDTO.getExportFrom()).getName());
|
||||||
}
|
}
|
||||||
|
if (exportTaskDTO.getExportFromType().equalsIgnoreCase("data_filling")) {
|
||||||
|
exportTaskDTO.setExportFromName(getDataFillingApi().get(Long.parseLong(exportTaskDTO.getExportFrom())).getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String hostName() {
|
private String hostName() {
|
||||||
@ -333,6 +356,65 @@ public class ExportCenterManage {
|
|||||||
startDatasetTask(exportTask, request);
|
startDatasetTask(exportTask, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addTask(String exportFromId, String exportFromType, HashMap<String, Object> request, Long userId, Long org) {
|
||||||
|
CoreExportTask exportTask = new CoreExportTask();
|
||||||
|
request.put("org", org);
|
||||||
|
exportTask.setId(UUID.randomUUID().toString());
|
||||||
|
exportTask.setUserId(userId);
|
||||||
|
exportTask.setExportFrom(exportFromId);
|
||||||
|
exportTask.setExportFromType(exportFromType);
|
||||||
|
exportTask.setExportStatus("PENDING");
|
||||||
|
exportTask.setFileName(request.get("name") + ".xlsx");
|
||||||
|
exportTask.setExportProgress("0");
|
||||||
|
exportTask.setExportTime(System.currentTimeMillis());
|
||||||
|
exportTask.setParams(JsonUtil.toJSONString(request).toString());
|
||||||
|
exportTask.setExportMachineName(hostName());
|
||||||
|
exportTaskMapper.insert(exportTask);
|
||||||
|
if (StringUtils.equals(exportFromType, "data_filling")) {
|
||||||
|
startDataFillingTask(exportTask, request);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startDataFillingTask(CoreExportTask exportTask, HashMap<String, Object> request) {
|
||||||
|
|
||||||
|
if (ObjectUtils.isEmpty(getDataFillingApi())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String dataPath = exportData_path + exportTask.getId();
|
||||||
|
File directory = new File(dataPath);
|
||||||
|
boolean isCreated = directory.mkdir();
|
||||||
|
TokenUserBO tokenUserBO = AuthUtils.getUser();
|
||||||
|
Future future = scheduledThreadPoolExecutor.submit(() -> {
|
||||||
|
AuthUtils.setUser(tokenUserBO);
|
||||||
|
try {
|
||||||
|
exportTask.setExportStatus("IN_PROGRESS");
|
||||||
|
exportTaskMapper.updateById(exportTask);
|
||||||
|
|
||||||
|
getDataFillingApi().writeExcel(dataPath + "/" + exportTask.getFileName(),
|
||||||
|
new DataFillFormTableDataRequest()
|
||||||
|
.setId(Long.parseLong(exportTask.getExportFrom()))
|
||||||
|
.setWithoutLogs(true)
|
||||||
|
, exportTask.getUserId(), Long.parseLong(request.get("org").toString()));
|
||||||
|
|
||||||
|
|
||||||
|
exportTask.setExportProgress("100");
|
||||||
|
exportTask.setExportStatus("SUCCESS");
|
||||||
|
|
||||||
|
setFileSize(dataPath + "/" + exportTask.getFileName(), exportTask);
|
||||||
|
} catch (Exception e) {
|
||||||
|
exportTask.setMsg(e.getMessage());
|
||||||
|
LogUtil.error("Failed to export data", e);
|
||||||
|
exportTask.setExportStatus("FAILED");
|
||||||
|
} finally {
|
||||||
|
exportTaskMapper.updateById(exportTask);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Running_Task.put(exportTask.getId(), future);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void startDatasetTask(CoreExportTask exportTask, DataSetExportRequest request) {
|
private void startDatasetTask(CoreExportTask exportTask, DataSetExportRequest request) {
|
||||||
String dataPath = exportData_path + exportTask.getId();
|
String dataPath = exportData_path + exportTask.getId();
|
||||||
File directory = new File(dataPath);
|
File directory = new File(dataPath);
|
||||||
@ -395,7 +477,7 @@ public class ExportCenterManage {
|
|||||||
}
|
}
|
||||||
if (StringUtils.isNotEmpty(request.getExpressionTree())) {
|
if (StringUtils.isNotEmpty(request.getExpressionTree())) {
|
||||||
Gson gson = new Gson();
|
Gson gson = new Gson();
|
||||||
DatasetRowPermissionsTreeObj datasetRowPermissionsTreeObj =JsonUtil.parseObject(request.getExpressionTree(), DatasetRowPermissionsTreeObj.class);
|
DatasetRowPermissionsTreeObj datasetRowPermissionsTreeObj = JsonUtil.parseObject(request.getExpressionTree(), DatasetRowPermissionsTreeObj.class);
|
||||||
permissionManage.getField(datasetRowPermissionsTreeObj);
|
permissionManage.getField(datasetRowPermissionsTreeObj);
|
||||||
DataSetRowPermissionsTreeDTO dataSetRowPermissionsTreeDTO = new DataSetRowPermissionsTreeDTO();
|
DataSetRowPermissionsTreeDTO dataSetRowPermissionsTreeDTO = new DataSetRowPermissionsTreeDTO();
|
||||||
dataSetRowPermissionsTreeDTO.setTree(datasetRowPermissionsTreeObj);
|
dataSetRowPermissionsTreeDTO.setTree(datasetRowPermissionsTreeObj);
|
||||||
|
@ -379,6 +379,7 @@ export default {
|
|||||||
confirm_delete: 'Confirm delete?',
|
confirm_delete: 'Confirm delete?',
|
||||||
add_data: 'Add Data',
|
add_data: 'Add Data',
|
||||||
batch_upload: 'Upload Data',
|
batch_upload: 'Upload Data',
|
||||||
|
download: 'Download Data',
|
||||||
download_template: 'Download Template',
|
download_template: 'Download Template',
|
||||||
insert_data: 'Insert Data',
|
insert_data: 'Insert Data',
|
||||||
update_data: 'Update Data',
|
update_data: 'Update Data',
|
||||||
|
@ -280,6 +280,7 @@ export default {
|
|||||||
confirm_delete: '確認刪除?',
|
confirm_delete: '確認刪除?',
|
||||||
add_data: '添加數據',
|
add_data: '添加數據',
|
||||||
batch_upload: '批量上傳',
|
batch_upload: '批量上傳',
|
||||||
|
download: '下載',
|
||||||
download_template: '下載模板',
|
download_template: '下載模板',
|
||||||
insert_data: '插入數據',
|
insert_data: '插入數據',
|
||||||
update_data: '更新數據',
|
update_data: '更新數據',
|
||||||
|
@ -2716,6 +2716,7 @@ export default {
|
|||||||
confirm_delete: '确认删除?',
|
confirm_delete: '确认删除?',
|
||||||
add_data: '添加数据',
|
add_data: '添加数据',
|
||||||
batch_upload: '批量上传',
|
batch_upload: '批量上传',
|
||||||
|
download: '下载',
|
||||||
download_template: '下载模板',
|
download_template: '下载模板',
|
||||||
insert_data: '插入数据',
|
insert_data: '插入数据',
|
||||||
update_data: '更新数据',
|
update_data: '更新数据',
|
||||||
|
@ -471,6 +471,9 @@ defineExpose({
|
|||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.exportFromType === 'dataset'">{{ t('data_set.data_set') }}</span>
|
<span v-if="scope.row.exportFromType === 'dataset'">{{ t('data_set.data_set') }}</span>
|
||||||
<span v-if="scope.row.exportFromType === 'chart'">{{ t('data_set.view') }}</span>
|
<span v-if="scope.row.exportFromType === 'chart'">{{ t('data_set.view') }}</span>
|
||||||
|
<span v-if="scope.row.exportFromType === 'data_filling'">{{
|
||||||
|
t('data_fill.data_fill')
|
||||||
|
}}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
|
2
de-xpack
2
de-xpack
@ -1 +1 @@
|
|||||||
Subproject commit 303250e24bf9c59dffe5d88898e7428ba8657751
|
Subproject commit 506b74bf3e9f136118d9a02bedb7a68b854c878e
|
@ -0,0 +1,13 @@
|
|||||||
|
package io.dataease.api.export;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.Hidden;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
@Hidden
|
||||||
|
public interface BaseExportApi {
|
||||||
|
|
||||||
|
void addTask(String exportFromId, String exportFromType, HashMap<String, Object> request, Long userId, Long org);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -107,7 +107,7 @@ public interface DataFillingApi {
|
|||||||
List<Map<String, Object>> listSubTaskUser(@PathVariable("id") Long id, @PathVariable("type") String type) throws Exception;
|
List<Map<String, Object>> listSubTaskUser(@PathVariable("id") Long id, @PathVariable("type") String type) throws Exception;
|
||||||
|
|
||||||
@PostMapping("/user-task/page/{goPage}/{pageSize}")
|
@PostMapping("/user-task/page/{goPage}/{pageSize}")
|
||||||
IPage<DfUserTaskVo> listUserTask(@PathVariable("goPage") int goPage, @PathVariable("pageSize") int pageSize,@RequestBody DfUserTaskRequest request) throws Exception;
|
IPage<DfUserTaskVo> listUserTask(@PathVariable("goPage") int goPage, @PathVariable("pageSize") int pageSize, @RequestBody DfUserTaskRequest request) throws Exception;
|
||||||
|
|
||||||
@GetMapping("/user-task/list/{id}")
|
@GetMapping("/user-task/list/{id}")
|
||||||
DfUserTaskData listUserTaskData(@PathVariable("id") Long id) throws Exception;
|
DfUserTaskData listUserTaskData(@PathVariable("id") Long id) throws Exception;
|
||||||
@ -134,4 +134,11 @@ public interface DataFillingApi {
|
|||||||
|
|
||||||
@GetMapping("/template/{itemId}")
|
@GetMapping("/template/{itemId}")
|
||||||
String getTemplateByUserTaskItemId(@PathVariable("itemId") Long itemId);
|
String getTemplateByUserTaskItemId(@PathVariable("itemId") Long itemId);
|
||||||
|
|
||||||
|
void writeExcel(String file, DataFillFormTableDataRequest request, Long userId, Long org) throws Exception;
|
||||||
|
|
||||||
|
void geFullName(Long pid, List<String> fullName);
|
||||||
|
|
||||||
|
@PostMapping("/innerExport/{formId}")
|
||||||
|
void innerExport(@PathVariable("formId") Long formId) throws Exception;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user