diff --git a/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java b/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java index c66a8e0d0e..6135035b5c 100644 --- a/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java +++ b/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java @@ -10,11 +10,10 @@ import io.dataease.api.chart.request.ChartExcelRequestInner; import io.dataease.api.dataset.dto.DataSetExportRequest; import io.dataease.api.dataset.union.DatasetGroupInfoDTO; import io.dataease.api.dataset.union.UnionDTO; -import io.dataease.extensions.datasource.api.PluginManageApi; -import io.dataease.extensions.view.dto.DatasetRowPermissionsTreeObj; -import io.dataease.license.manage.F2CLicLimitedManage; -import io.dataease.model.ExportTaskDTO; +import io.dataease.api.export.BaseExportApi; 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.chart.dao.auto.mapper.CoreChartViewMapper; 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.manage.*; import io.dataease.datasource.utils.DatasourceUtils; -import io.dataease.engine.constant.DeTypeConstants; import io.dataease.engine.sql.SQLProvider; import io.dataease.engine.trans.Field2SQLObj; import io.dataease.engine.trans.Order2SQLObj; @@ -32,6 +30,7 @@ import io.dataease.engine.utils.Utils; import io.dataease.exception.DEException; import io.dataease.exportCenter.dao.auto.entity.CoreExportTask; 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.DatasourceRequest; 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.provider.Provider; import io.dataease.extensions.view.dto.ColumnPermissionItem; +import io.dataease.extensions.view.dto.DatasetRowPermissionsTreeObj; import io.dataease.i18n.Translator; 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.SysParameterManage; import io.dataease.utils.*; @@ -72,7 +74,7 @@ import java.util.stream.Collectors; @Component @Transactional(rollbackFor = Exception.class) -public class ExportCenterManage { +public class ExportCenterManage implements BaseExportApi { @Resource private CoreExportTaskMapper exportTaskMapper; @Resource @@ -117,6 +119,13 @@ public class ExportCenterManage { @Resource private DatasetDataManage datasetDataManage; + @Autowired(required = false) + private DataFillingApi dataFillingApi = null; + + private DataFillingApi getDataFillingApi() { + return dataFillingApi; + } + @Resource(name = "f2CLicLimitedManage") private F2CLicLimitedManage f2CLicLimitedManage; @@ -153,7 +162,7 @@ public class ExportCenterManage { } private Long getExportLimit() { - return Math.min(f2CLicLimitedManage.checkDatasetLimit(),limit); + return Math.min(f2CLicLimitedManage.checkDatasetLimit(), limit); } public void download(String id, HttpServletResponse response) throws Exception { @@ -234,6 +243,10 @@ public class ExportCenterManage { DataSetExportRequest request = JsonUtil.parseObject(exportTask.getParams(), DataSetExportRequest.class); startDatasetTask(exportTask, request); } + if (exportTask.getExportFromType().equalsIgnoreCase("data_filling")) { + HashMap request = JsonUtil.parseObject(exportTask.getParams(), HashMap.class); + startDataFillingTask(exportTask, request); + } } public List exportTasks(String status) { @@ -279,6 +292,13 @@ public class ExportCenterManage { List finalFullName = fullName; exportTaskDTO.setExportFromName(String.join("/", finalFullName)); } + if (exportTaskDTO.getExportFromType().equalsIgnoreCase("data_filling")) { + List fullName = new ArrayList<>(); + getDataFillingApi().geFullName(Long.valueOf(exportTaskDTO.getExportFrom()), fullName); + Collections.reverse(fullName); + List finalFullName = fullName; + exportTaskDTO.setExportFromName(String.join("/", finalFullName)); + } } private void setExportFromName(ExportTaskDTO exportTaskDTO) { @@ -288,6 +308,9 @@ public class ExportCenterManage { if (exportTaskDTO.getExportFromType().equalsIgnoreCase("dataset")) { 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() { @@ -333,6 +356,65 @@ public class ExportCenterManage { startDatasetTask(exportTask, request); } + @Override + public void addTask(String exportFromId, String exportFromType, HashMap 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 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) { String dataPath = exportData_path + exportTask.getId(); File directory = new File(dataPath); @@ -395,7 +477,7 @@ public class ExportCenterManage { } if (StringUtils.isNotEmpty(request.getExpressionTree())) { Gson gson = new Gson(); - DatasetRowPermissionsTreeObj datasetRowPermissionsTreeObj =JsonUtil.parseObject(request.getExpressionTree(), DatasetRowPermissionsTreeObj.class); + DatasetRowPermissionsTreeObj datasetRowPermissionsTreeObj = JsonUtil.parseObject(request.getExpressionTree(), DatasetRowPermissionsTreeObj.class); permissionManage.getField(datasetRowPermissionsTreeObj); DataSetRowPermissionsTreeDTO dataSetRowPermissionsTreeDTO = new DataSetRowPermissionsTreeDTO(); dataSetRowPermissionsTreeDTO.setTree(datasetRowPermissionsTreeObj); diff --git a/core/core-frontend/src/locales/en.ts b/core/core-frontend/src/locales/en.ts index ddf4a9ac8e..9cc5427fb1 100644 --- a/core/core-frontend/src/locales/en.ts +++ b/core/core-frontend/src/locales/en.ts @@ -379,6 +379,7 @@ export default { confirm_delete: 'Confirm delete?', add_data: 'Add Data', batch_upload: 'Upload Data', + download: 'Download Data', download_template: 'Download Template', insert_data: 'Insert Data', update_data: 'Update Data', diff --git a/core/core-frontend/src/locales/tw.ts b/core/core-frontend/src/locales/tw.ts index 878f25b35e..a508e40c3e 100644 --- a/core/core-frontend/src/locales/tw.ts +++ b/core/core-frontend/src/locales/tw.ts @@ -280,6 +280,7 @@ export default { confirm_delete: '確認刪除?', add_data: '添加數據', batch_upload: '批量上傳', + download: '下載', download_template: '下載模板', insert_data: '插入數據', update_data: '更新數據', diff --git a/core/core-frontend/src/locales/zh-CN.ts b/core/core-frontend/src/locales/zh-CN.ts index eea02d37a4..cfa1ddfc11 100644 --- a/core/core-frontend/src/locales/zh-CN.ts +++ b/core/core-frontend/src/locales/zh-CN.ts @@ -2716,6 +2716,7 @@ export default { confirm_delete: '确认删除?', add_data: '添加数据', batch_upload: '批量上传', + download: '下载', download_template: '下载模板', insert_data: '插入数据', update_data: '更新数据', diff --git a/core/core-frontend/src/views/visualized/data/dataset/ExportExcel.vue b/core/core-frontend/src/views/visualized/data/dataset/ExportExcel.vue index 62753703c6..3bf53089a0 100644 --- a/core/core-frontend/src/views/visualized/data/dataset/ExportExcel.vue +++ b/core/core-frontend/src/views/visualized/data/dataset/ExportExcel.vue @@ -471,6 +471,9 @@ defineExpose({ request, Long userId, Long org); + + +} diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/xpack/dataFilling/DataFillingApi.java b/sdk/api/api-base/src/main/java/io/dataease/api/xpack/dataFilling/DataFillingApi.java index cfa29dac23..2ae604ce42 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/xpack/dataFilling/DataFillingApi.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/xpack/dataFilling/DataFillingApi.java @@ -107,7 +107,7 @@ public interface DataFillingApi { List> listSubTaskUser(@PathVariable("id") Long id, @PathVariable("type") String type) throws Exception; @PostMapping("/user-task/page/{goPage}/{pageSize}") - IPage listUserTask(@PathVariable("goPage") int goPage, @PathVariable("pageSize") int pageSize,@RequestBody DfUserTaskRequest request) throws Exception; + IPage listUserTask(@PathVariable("goPage") int goPage, @PathVariable("pageSize") int pageSize, @RequestBody DfUserTaskRequest request) throws Exception; @GetMapping("/user-task/list/{id}") DfUserTaskData listUserTaskData(@PathVariable("id") Long id) throws Exception; @@ -134,4 +134,11 @@ public interface DataFillingApi { @GetMapping("/template/{itemId}") String getTemplateByUserTaskItemId(@PathVariable("itemId") Long itemId); + + void writeExcel(String file, DataFillFormTableDataRequest request, Long userId, Long org) throws Exception; + + void geFullName(Long pid, List fullName); + + @PostMapping("/innerExport/{formId}") + void innerExport(@PathVariable("formId") Long formId) throws Exception; }