From 34c07a4d85e59b27abf318bf73277b7ac6cb7d64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=80=9D=E8=B1=AA?= <1437200870@qq.com> Date: Wed, 4 Sep 2024 22:32:49 +0800 Subject: [PATCH] =?UTF-8?q?sql=E6=8B=BC=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cloud-task-remote/pom.xml | 7 ++ .../src/main/java/com/muyu/Main.java | 7 -- .../com/muyu/task/feign/DataValueFeign.java | 22 +++++ cloud-task-server/pom.xml | 6 ++ .../main/java/com/muyu/TaskApplication.java | 2 + .../com/muyu/controller/TaskController.java | 11 +++ ...troller.java => TaskOutputController.java} | 13 ++- .../com/muyu/service/TaskOutputService.java | 9 ++ .../java/com/muyu/service/TaskService.java | 2 + .../service/impl/TableInfoServiceImpl.java | 9 -- .../service/impl/TaskOutputServiceImpl.java | 32 ++++++ .../muyu/service/impl/TaskServiceImpl.java | 98 +++++++++++++++++++ .../src/main/resources/bootstrap.yml | 9 +- 13 files changed, 205 insertions(+), 22 deletions(-) delete mode 100644 cloud-task-remote/src/main/java/com/muyu/Main.java create mode 100644 cloud-task-remote/src/main/java/com/muyu/task/feign/DataValueFeign.java rename cloud-task-server/src/main/java/com/muyu/controller/{TaskOutPutController.java => TaskOutputController.java} (60%) create mode 100644 cloud-task-server/src/main/java/com/muyu/service/TaskOutputService.java create mode 100644 cloud-task-server/src/main/java/com/muyu/service/impl/TaskOutputServiceImpl.java diff --git a/cloud-task-remote/pom.xml b/cloud-task-remote/pom.xml index 415ee0f..c4f5839 100644 --- a/cloud-task-remote/pom.xml +++ b/cloud-task-remote/pom.xml @@ -17,4 +17,11 @@ UTF-8 + + + com.muyu + cloud-common-core + + + diff --git a/cloud-task-remote/src/main/java/com/muyu/Main.java b/cloud-task-remote/src/main/java/com/muyu/Main.java deleted file mode 100644 index 95690d4..0000000 --- a/cloud-task-remote/src/main/java/com/muyu/Main.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.muyu; - -public class Main { - public static void main(String[] args) { - System.out.println("Hello world!"); - } -} \ No newline at end of file diff --git a/cloud-task-remote/src/main/java/com/muyu/task/feign/DataValueFeign.java b/cloud-task-remote/src/main/java/com/muyu/task/feign/DataValueFeign.java new file mode 100644 index 0000000..26a9f80 --- /dev/null +++ b/cloud-task-remote/src/main/java/com/muyu/task/feign/DataValueFeign.java @@ -0,0 +1,22 @@ +package com.muyu.task.feign; + +import com.muyu.common.core.domain.Result; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * @PackageName:com.muyu.task.feign + * @ClassName:dataValue + * @Description: + * @author: ¥陈思豪¥ + * @date: 2024/9/4 15:13 + */ +//,fallback = TaskFeignFallback.class +@FeignClient(name = "cloud-source") +public interface DataValueFeign { + + @PostMapping("/DataValue/findTableValue") + public Result findTableValue(@RequestParam("basicId") Long basicId,@RequestParam("sql") String sql); + +} diff --git a/cloud-task-server/pom.xml b/cloud-task-server/pom.xml index c69c063..bc8bd19 100644 --- a/cloud-task-server/pom.xml +++ b/cloud-task-server/pom.xml @@ -72,6 +72,12 @@ spring-boot-starter-web + + com.muyu + cloud-task-remote + 1.0.0 + + diff --git a/cloud-task-server/src/main/java/com/muyu/TaskApplication.java b/cloud-task-server/src/main/java/com/muyu/TaskApplication.java index fba53f0..06334a0 100644 --- a/cloud-task-server/src/main/java/com/muyu/TaskApplication.java +++ b/cloud-task-server/src/main/java/com/muyu/TaskApplication.java @@ -2,8 +2,10 @@ package com.muyu; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication +@EnableFeignClients public class TaskApplication { public static void main (String[] args) { SpringApplication.run(TaskApplication.class, args); diff --git a/cloud-task-server/src/main/java/com/muyu/controller/TaskController.java b/cloud-task-server/src/main/java/com/muyu/controller/TaskController.java index f0a7d29..e4b36e6 100644 --- a/cloud-task-server/src/main/java/com/muyu/controller/TaskController.java +++ b/cloud-task-server/src/main/java/com/muyu/controller/TaskController.java @@ -72,5 +72,16 @@ public class TaskController { ); } + /** + * 执行任务 + */ + @RequestMapping(path = "/executeTask/{taskId}", method = RequestMethod.POST) + @Operation(summary = "对指定任务进行执行", description = "根据传来的id进行执行") + public Result executeTask(@PathVariable(name = "taskId") Integer taskId) { + return Result.success( + taskService.executeTask(taskId), "执行成功" + ); + } + } diff --git a/cloud-task-server/src/main/java/com/muyu/controller/TaskOutPutController.java b/cloud-task-server/src/main/java/com/muyu/controller/TaskOutputController.java similarity index 60% rename from cloud-task-server/src/main/java/com/muyu/controller/TaskOutPutController.java rename to cloud-task-server/src/main/java/com/muyu/controller/TaskOutputController.java index f50408b..0779877 100644 --- a/cloud-task-server/src/main/java/com/muyu/controller/TaskOutPutController.java +++ b/cloud-task-server/src/main/java/com/muyu/controller/TaskOutputController.java @@ -1,7 +1,9 @@ package com.muyu.controller; +import com.muyu.common.core.domain.Result; import com.muyu.domain.TaskOutputInfo; import com.muyu.mapper.TaskOutputMapper; +import com.muyu.service.TaskOutputService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -16,15 +18,16 @@ import org.springframework.web.bind.annotation.RestController; */ @RestController @RequestMapping(value = "/taskOutPut") -public class TaskOutPutController { +public class TaskOutputController { @Autowired - private TaskOutputMapper taskOutPutMapper; + private TaskOutputService taskOutputService; //添加数据输出方法 - @RequestMapping(value = "addTaskOutPut") - public void addTaskOutPut(@RequestBody TaskOutputInfo taskOutputInfo){ - int insert = taskOutPutMapper.insert(taskOutputInfo); + @RequestMapping(value = "addTaskOutput") + public Result addTaskOutPut(@RequestBody TaskOutputInfo taskOutputInfo){ + return Result.success(null, + taskOutputService.addTaskOutput(taskOutputInfo)); } diff --git a/cloud-task-server/src/main/java/com/muyu/service/TaskOutputService.java b/cloud-task-server/src/main/java/com/muyu/service/TaskOutputService.java new file mode 100644 index 0000000..be1c3db --- /dev/null +++ b/cloud-task-server/src/main/java/com/muyu/service/TaskOutputService.java @@ -0,0 +1,9 @@ +package com.muyu.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.TaskOutputInfo; + +public interface TaskOutputService extends IService { + + String addTaskOutput(TaskOutputInfo taskOutputInfo); +} diff --git a/cloud-task-server/src/main/java/com/muyu/service/TaskService.java b/cloud-task-server/src/main/java/com/muyu/service/TaskService.java index c6ca08a..8f4c263 100644 --- a/cloud-task-server/src/main/java/com/muyu/service/TaskService.java +++ b/cloud-task-server/src/main/java/com/muyu/service/TaskService.java @@ -21,4 +21,6 @@ public interface TaskService extends IService { String updById(TaskInfo taskInfo); String deleteById(Integer id); + + String executeTask(Integer taskId); } diff --git a/cloud-task-server/src/main/java/com/muyu/service/impl/TableInfoServiceImpl.java b/cloud-task-server/src/main/java/com/muyu/service/impl/TableInfoServiceImpl.java index 9d5c139..4f78d9a 100644 --- a/cloud-task-server/src/main/java/com/muyu/service/impl/TableInfoServiceImpl.java +++ b/cloud-task-server/src/main/java/com/muyu/service/impl/TableInfoServiceImpl.java @@ -48,15 +48,6 @@ public class TableInfoServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); -// queryWrapper.eq(TableInfo::getParentId,0); -// List list = this.list(queryWrapper); -// list.forEach(tableInfo -> { -// LambdaQueryWrapper queryWrapperC = new LambdaQueryWrapper<>(); -// queryWrapperC.eq(TableInfo::getParentId,tableInfo.getId()); -// List list1 = this.list(queryWrapperC); -// tableInfo.setTableInfoList(list1); -// }); }); return tableInfoCasResp; diff --git a/cloud-task-server/src/main/java/com/muyu/service/impl/TaskOutputServiceImpl.java b/cloud-task-server/src/main/java/com/muyu/service/impl/TaskOutputServiceImpl.java new file mode 100644 index 0000000..6f0099d --- /dev/null +++ b/cloud-task-server/src/main/java/com/muyu/service/impl/TaskOutputServiceImpl.java @@ -0,0 +1,32 @@ +package com.muyu.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.domain.TaskOutputInfo; +import com.muyu.mapper.TaskOutputMapper; +import com.muyu.service.TaskOutputService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @PackageName:com.muyu.service.impl + * @ClassName:TaskOutputServiceImpl + * @Description: + * @author: ¥陈思豪¥ + * @date: 2024/9/4 11:35 + */ +@Service +public class TaskOutputServiceImpl extends ServiceImpl implements TaskOutputService { + + @Autowired + private TaskOutputMapper taskOutputMapper; + + + @Override + public String addTaskOutput(TaskOutputInfo taskOutputInfo) { + int insert = taskOutputMapper.insert(taskOutputInfo); + if(insert<=0){ + return "添加失败"; + } + return "添加成功"; + } +} diff --git a/cloud-task-server/src/main/java/com/muyu/service/impl/TaskServiceImpl.java b/cloud-task-server/src/main/java/com/muyu/service/impl/TaskServiceImpl.java index 3082f16..b178d2b 100644 --- a/cloud-task-server/src/main/java/com/muyu/service/impl/TaskServiceImpl.java +++ b/cloud-task-server/src/main/java/com/muyu/service/impl/TaskServiceImpl.java @@ -2,13 +2,24 @@ package com.muyu.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.domain.Result; import com.muyu.common.core.utils.StringUtils; import com.muyu.domain.TaskInfo; +import com.muyu.domain.TaskInputInfo; +import com.muyu.domain.TaskJoinInfo; +import com.muyu.domain.TaskOutputInfo; import com.muyu.domain.req.TaskInfoReq; import com.muyu.mapper.TaskMapper; +import com.muyu.service.TaskInputService; +import com.muyu.service.TaskJoinService; +import com.muyu.service.TaskOutputService; import com.muyu.service.TaskService; +import com.muyu.task.feign.DataValueFeign; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.HashMap; import java.util.List; /** @@ -19,9 +30,23 @@ import java.util.List; * @date: 2024/8/22 17:15 */ @Service +@Log4j2 public class TaskServiceImpl extends ServiceImpl implements TaskService { + @Autowired + private TaskInputService taskInputService; + @Autowired + private TaskMapper taskMapper; + + @Autowired + private TaskJoinService taskJoinService; + + @Autowired + private TaskOutputService taskOutputService; + + @Autowired + private DataValueFeign dataValue; @Override public List selectList(TaskInfoReq taskInfoReq) { @@ -70,4 +95,77 @@ public class TaskServiceImpl extends ServiceImpl implement return "success"; } + @Override + public String executeTask(Integer taskId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TaskInputInfo::getTaskId, taskId); + List taskInputList = taskInputService.list(queryWrapper); + if(taskInputList.isEmpty()){ + return "表节点没有进行相对应的选择,无法继续执行"; + } + + LambdaQueryWrapper outputInfo = new LambdaQueryWrapper<>(); + outputInfo.eq(TaskOutputInfo::getTaskId, taskId); + TaskOutputInfo serviceOne = taskOutputService.getOne(outputInfo); + String[] outPutFileName = serviceOne.getLastFileName().split(","); + HashMap fieldAsNameMap = new HashMap<>(); + String sql = ""; + for (int i = 0; i < taskInputList.size(); i++) { + String[] tableFieldList = taskInputList.get(i).getTableField().split(","); + String[] tableAsFieldList = taskInputList.get(i).getTableAsField().split(","); + for (int j = 0; j < tableAsFieldList.length; j++) { + for (int o = 0; o < outPutFileName.length; o++) { + if(tableAsFieldList[j].equals(outPutFileName[o])){ + sql += ","+taskInputList.get(i).getTableAsName() + "." + tableFieldList[j] +" " + + tableAsFieldList[j] + " "; + } + } + fieldAsNameMap.put(tableAsFieldList[j], tableFieldList[j]); +// 规则 +// tableNameMap.put(tableFieldList[j], tableAsFieId[j]); + } + } + + sql = sql.substring(1); + sql = "select " + sql + " from "; + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(TaskJoinInfo::getTaskId, taskId); + List taskJoinInfos = taskJoinService.list(lambdaQueryWrapper); + if(!taskJoinInfos.isEmpty()){ + for (TaskJoinInfo taskJoinInfo : taskJoinInfos) { + //拿到左表id + String leftId = taskJoinInfo.getLeftId(); + TaskInputInfo leftInput = taskInputService.findByNodeId(leftId); + //拿到右表id + String rightId = taskJoinInfo.getRightId(); + TaskInputInfo rightInput = taskInputService.findByNodeId(rightId); + sql += leftInput.getTableName() + " " + leftInput.getTableAsName()+" " + + taskJoinInfo.getJoinType() + " " + rightInput.getTableName() + " " + + rightInput.getTableAsName() + " on " + leftInput.getTableAsName() + "." + + fieldAsNameMap.get(taskJoinInfo.getLeftJoinField()) + "=" + rightInput.getTableAsName() + "." + + fieldAsNameMap.get(taskJoinInfo.getRightJoinField()) + " "; + + } + }else{ + LambdaQueryWrapper selectOne = new LambdaQueryWrapper<>(); + queryWrapper.eq(TaskInputInfo::getTaskId, taskId); + TaskInputInfo taskInputInfo = taskInputService.getOne(selectOne); + sql += taskInputInfo.getTableName() + " " + taskInputInfo.getTableAsName(); + } + + System.out.println(sql); + System.out.println(sql); + System.out.println(sql); + System.out.println(sql); + System.out.println(sql); + System.out.println(sql); + log.info(sql); + Result tableValue = dataValue.findTableValue(Long.valueOf(serviceOne.getBasicId()), sql); + log.info(tableValue); + Object data = tableValue.getData(); + System.out.println(data); + + return "success"; + } + } diff --git a/cloud-task-server/src/main/resources/bootstrap.yml b/cloud-task-server/src/main/resources/bootstrap.yml index 691f553..ff58182 100644 --- a/cloud-task-server/src/main/resources/bootstrap.yml +++ b/cloud-task-server/src/main/resources/bootstrap.yml @@ -11,7 +11,8 @@ nacos: # text cloud-2112 # Spring spring: - + main: + allow-bean-definition-overriding: true application: # 应用名称 name: cloud-task @@ -19,6 +20,12 @@ spring: # 环境配置 active: dev cloud: + openfeign: + client: + config: + default: + connectTimeout: 50000 # 连接超时时间,单位为毫秒 + readTimeout: 5000 # 读取超时时间,单位为毫秒 nacos: discovery: # 服务注册地址