From d065e32f6598791bd76504d8dc809fbf5c4a0291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=91=E5=B9=B4=E6=A2=A6=E4=B8=8E=E7=A0=96?= <2847127106@qq.com> Date: Fri, 6 Sep 2024 21:11:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/muyu/quest/domain/TaskExport.java | 4 ++-- .../muyu/quest/controller/TaskExportController.java | 12 ++++++++++++ .../quest/service/impl/TaskExportServiceImpl.java | 13 +------------ .../muyu/quest/service/impl/TaskServiceImpl.java | 11 +++++++---- .../main/java/com/muyu/quest/utils/NodeUtils.java | 1 + 5 files changed, 23 insertions(+), 18 deletions(-) diff --git a/muyu-quest-common/src/main/java/com/muyu/quest/domain/TaskExport.java b/muyu-quest-common/src/main/java/com/muyu/quest/domain/TaskExport.java index 82990dc..28e02fc 100644 --- a/muyu-quest-common/src/main/java/com/muyu/quest/domain/TaskExport.java +++ b/muyu-quest-common/src/main/java/com/muyu/quest/domain/TaskExport.java @@ -41,7 +41,7 @@ public class TaskExport implements Serializable { /** 执行SQL */ @Excel(name = "执行SQL") - private String addSql; + private Object addSql; /** 执行状态 */ @Excel(name = "执行状态") @@ -49,7 +49,7 @@ public class TaskExport implements Serializable { /** 失败原因 */ @Excel(name = "失败原因") - private String error; + private Object error; public TaskExport(String taskCode,String exportCode, String addSql, Integer start, String error) { this.taskCode = taskCode; diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/controller/TaskExportController.java b/muyu-quest-server/src/main/java/com/muyu/quest/controller/TaskExportController.java index a59a65f..5ffcd52 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/controller/TaskExportController.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/controller/TaskExportController.java @@ -107,4 +107,16 @@ public class TaskExportController extends BaseController taskExportService.removeBatchByIds(Arrays.asList(ids)); return success(); } + + + @PostMapping("/selTaskStart") + public Result selTaskStart(String taskCode){ + TaskExport taskExport = new TaskExport(); + taskExport.setTaskCode(taskCode); + List taskExports = taskExportService.selectTaskExportList(taskExport); + int num = taskExports.size(); + int yNum = taskExports.stream().filter(taskExport1 -> taskExport1.getStart() == 1).toArray().length; + int nNum = num - yNum; + return success("共执行线程"+num+"个,完成"+yNum+"个,未完成"+nNum+"个"); + } } diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/TaskExportServiceImpl.java b/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/TaskExportServiceImpl.java index 74a95b1..b75df97 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/TaskExportServiceImpl.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/TaskExportServiceImpl.java @@ -52,12 +52,7 @@ public class TaskExportServiceImpl if (StringUtils.isNotEmpty(taskExport.getTaskCode())){ queryWrapper.eq(TaskExport::getTaskCode, taskExport.getTaskCode()); } - if (StringUtils.isNotEmpty(taskExport.getAddSql())){ - queryWrapper.eq(TaskExport::getAddSql, taskExport.getAddSql()); - } - if (StringUtils.isNotEmpty(taskExport.getError())){ - queryWrapper.eq(TaskExport::getError, taskExport.getError()); - } + return this.list(queryWrapper); } @@ -79,15 +74,9 @@ public class TaskExportServiceImpl if (StringUtils.isNotEmpty(taskExport.getTaskCode())){ queryWrapper.eq(TaskExport::getTaskCode, taskExport.getTaskCode()); } - if (StringUtils.isNotEmpty(taskExport.getAddSql())){ - queryWrapper.eq(TaskExport::getAddSql, taskExport.getAddSql()); - } if (taskExport.getStart() != null){ queryWrapper.eq(TaskExport::getStart, taskExport.getStart()); } - if (StringUtils.isNotEmpty(taskExport.getError())){ - queryWrapper.eq(TaskExport::getError, taskExport.getError()); - } queryWrapper.last("limit 1"); return this.getOne(queryWrapper); } diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/TaskServiceImpl.java b/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/TaskServiceImpl.java index 2ed6dba..c94e953 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/TaskServiceImpl.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/TaskServiceImpl.java @@ -154,7 +154,8 @@ public class TaskServiceImpl extends ServiceImpl // 获取查询条数 int count = getFindCount(findSql, nodeMap); // 划分线程 每次查询1000条 - int threadNum = count / 1000 + 1; + int pageSize = 10000; + int threadNum = count / pageSize + 1; log.info("任务 {} 总共需要 {} 条数据, 划分为线程{}条",taskCode,count,threadNum); for (int i = 0; i < threadNum; i++) { int index = i+1; @@ -162,14 +163,16 @@ public class TaskServiceImpl extends ServiceImpl taskManager.execute(() -> { String exportCode = UUID.randomUUID().toString().replace("-",""); // 获取新SQL 并执行 - String sql = findSql + " LIMIT 1000 OFFSET "+(index-1)*1000; + String sql = findSql + " LIMIT 1000 OFFSET "+(index-1)*pageSize; String addSql = getAddSql(nodeMap, sql); - TaskExport entity = new TaskExport(taskCode,exportCode, sql, 0, ""); + int addSqlMaxLength = Math.min(addSql.length(), 30000); + TaskExport entity = new TaskExport(taskCode,exportCode, addSql.substring(0,addSqlMaxLength), 0, ""); taskExportService.save(entity); Result addResult = remoteDataSourceService.addTableValue(new DataValueModel(4L, addSql)); log.info("任务 {} 第 {} 线程执行结果 {}",taskCode,index,addResult); if (addResult.getCode() != 200){ - entity.setError(addResult.getMsg()); + int errorMaxLength = Math.min(addResult.getMsg().length(), 30000); + entity.setError(addResult.getMsg().substring(0,errorMaxLength)); entity.setStart(2); }else { entity.setStart(1); diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/utils/NodeUtils.java b/muyu-quest-server/src/main/java/com/muyu/quest/utils/NodeUtils.java index 47cf1ed..859ad3a 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/utils/NodeUtils.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/utils/NodeUtils.java @@ -307,6 +307,7 @@ public class NodeUtils { datum.forEach(dataModel -> { // 检查 getValue 是否为空 String value = dataModel.getValue() != null ? dataModel.getValue().toString() : null; + // 规则校验 dataMap.put(dataModel.getKey(), value); }); dataList1.add(dataMap);