diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/controller/NodeController.java b/muyu-quest-server/src/main/java/com/muyu/quest/controller/NodeController.java index 8c1b3ca..eb58390 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/controller/NodeController.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/controller/NodeController.java @@ -143,7 +143,7 @@ public class NodeController extends BaseController { */ @PostMapping("/batch/{taskCode}") @Transactional - public Result batch(@Validated @RequestBody ArrayList nodeList,@PathVariable("taskCode") String taskCode) { + public Result batch(@Validated @RequestBody ArrayList nodeList,@PathVariable("taskCode") String[] taskCode) { // 批量删除 nodeService.batchDelect(taskCode); diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/controller/NodeDispositionController.java b/muyu-quest-server/src/main/java/com/muyu/quest/controller/NodeDispositionController.java index ee7ace9..beb5174 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/controller/NodeDispositionController.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/controller/NodeDispositionController.java @@ -121,7 +121,7 @@ public class NodeDispositionController extends BaseController @Transactional public Result batch( @Validated @RequestBody ArrayList dispList, - @PathVariable("nodeCode") String nodeCode){ + @PathVariable("nodeCode") String[] nodeCode){ // 根据节点编码删除 nodeDispositionService.batchDelect(nodeCode); // 批量新增 diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/controller/TaskController.java b/muyu-quest-server/src/main/java/com/muyu/quest/controller/TaskController.java index 46075e8..ea1f693 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/controller/TaskController.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/controller/TaskController.java @@ -9,6 +9,7 @@ import com.muyu.quest.domain.Task; import javax.annotation.Resource; +import com.muyu.quest.job.TaskJob; import com.muyu.quest.req.TaskReq; import com.muyu.quest.resp.TaskResp; import org.springframework.validation.annotation.Validated; @@ -38,6 +39,8 @@ public class TaskController extends BaseController { @Resource private TaskService taskService; + @Resource + private TaskJob taskJob; /** * 查询任务列表 @@ -115,4 +118,13 @@ public class TaskController extends BaseController return success(taskService.execute(taskCode)); } + /** + * 手动清理无用任务数据 + */ + @PostMapping("/clearTask") + public Result clearTask() { + taskJob.clearTask(); + return success(); + } + } diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/job/TaskJob.java b/muyu-quest-server/src/main/java/com/muyu/quest/job/TaskJob.java new file mode 100644 index 0000000..43e3617 --- /dev/null +++ b/muyu-quest-server/src/main/java/com/muyu/quest/job/TaskJob.java @@ -0,0 +1,79 @@ +package com.muyu.quest.job; + +/** + * @Author: 胡杨 + * @Name: TaskJob + * @Description: 任务定时任务 + * @CreatedDate: 2024/9/4 下午2:37 + * @FilePath: com.muyu.quest.job + */ + + +import com.muyu.quest.domain.Node; +import com.muyu.quest.domain.NodeDisposition; +import com.muyu.quest.req.NodeReq; +import com.muyu.quest.req.TaskReq; +import com.muyu.quest.resp.TaskResp; +import com.muyu.quest.service.INodeDispositionService; +import com.muyu.quest.service.INodeService; +import com.muyu.quest.service.TaskService; +import com.xxl.job.core.handler.annotation.XxlJob; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author: 胡杨 + * @Name: TaskJob + * @Description: 任务定时任务 + * @CreatedDate: 2024/9/4 下午2:37 + * @FilePath: com.muyu.quest.job + */ + +@Component +public class TaskJob { + + @Resource + private TaskService taskService; + @Resource + private INodeService nodeService; + @Resource + private INodeDispositionService nodeDispositionService; + + // 定时清理过期任务与其相关数据 + @XxlJob(value = "clearTask") + public void clearTask() { + List tasks = taskService.selectTaskList(new TaskReq()); + List nodes = nodeService.selectNodeList(new NodeReq()); + List dispositions = nodeDispositionService.selectNodeDispositionList(new NodeDisposition()); + + // 查询节点表存在但任务表不存在的任务编码 + List notContainsTaskCodeList = nodes. + stream(). + map(Node::getTaskCode). + filter(nodeTaskCode -> !tasks. + stream(). + map(TaskResp::getTaskCode). + toList().contains(nodeTaskCode)). + toList(); + // 删除相关节点表数据 + if (!notContainsTaskCodeList.isEmpty()) { + nodeService.batchDelect(notContainsTaskCodeList.toArray(new String[0])); + } + // 查询配置表存在但节点表不存在的节点编码 + List notContainsNodeCodeList = dispositions. + stream(). + map(NodeDisposition::getNodeCode). + filter(nodeDispositionNodeCode -> !nodes. + stream(). + map(Node::getNodeCode). + toList().contains(nodeDispositionNodeCode)). + toList(); + // 删除相关配置表数据 + if (!notContainsNodeCodeList.isEmpty()) { + nodeDispositionService.batchDelect(notContainsNodeCodeList.toArray(new String[0])); + } + } + +} diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/service/INodeDispositionService.java b/muyu-quest-server/src/main/java/com/muyu/quest/service/INodeDispositionService.java index c8690ad..b2a5d30 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/service/INodeDispositionService.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/service/INodeDispositionService.java @@ -36,5 +36,5 @@ public interface INodeDispositionService extends IService { Boolean checkDispUnique(NodeDisposition disp); - void batchDelect(String nodeCode); + void batchDelect(String[] nodeCode); } diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/service/INodeService.java b/muyu-quest-server/src/main/java/com/muyu/quest/service/INodeService.java index d8022d2..d69ce50 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/service/INodeService.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/service/INodeService.java @@ -37,5 +37,5 @@ public interface INodeService extends IService { List selectNodeByIds(Long[] ids); - void batchDelect(String taskCode); + void batchDelect(String[] taskCode); } diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/NodeDispositionServiceImpl.java b/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/NodeDispositionServiceImpl.java index 9d6868c..88c73dd 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/NodeDispositionServiceImpl.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/NodeDispositionServiceImpl.java @@ -83,9 +83,9 @@ public class NodeDispositionServiceImpl } @Override - public void batchDelect(String nodeCode) { + public void batchDelect(String[] nodeCode) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(NodeDisposition::getNodeCode, nodeCode); + queryWrapper.in(NodeDisposition::getNodeCode, nodeCode); this.remove(queryWrapper); } diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/NodeServiceImpl.java b/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/NodeServiceImpl.java index d43def6..f1611aa 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/NodeServiceImpl.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/NodeServiceImpl.java @@ -91,9 +91,9 @@ public class NodeServiceImpl } @Override - public void batchDelect(String taskCode) { + public void batchDelect(String[] taskCode) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Node::getTaskCode,taskCode); + queryWrapper.in(Node::getTaskCode,taskCode); this.remove(queryWrapper); } 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 ea04056..b70c485 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 @@ -256,10 +256,10 @@ public class NodeUtils { String dbTable = "`" + db.getDispDesc() + "`." + db.getDispValue(); // 根据表结构拼接新增字段 List fieldList = dispMap.get("toFields"); - // 获取新增语句前半段 + // 拼接新增语句的表与字段 String join = StringUtils.join(fieldList.stream().map(NodeDisposition::getDispValue).toArray(), ","); StringBuilder insSql = new StringBuilder("INSERT INTO " + dbTable + "( " + join + " ) VALUES "); - // 获取查询字段 + // 整理需新增数据 List> dataList1 = new ArrayList<>(); HashMap dataMap = new HashMap<>(); for (int i = 0; i < data.size(); i++) { @@ -269,16 +269,15 @@ public class NodeUtils { } dataMap.put(data.get(i).getKey(), data.get(i).getValue().toString()); } - dataList1.forEach(map -> insSql.append( - "( " + - StringUtils.join( - fieldList. - stream(). - map(field -> map.get(field.getDispDesc())). - map(field -> "'" + field + "'"). - toArray(), - ",") + - " ),")); + // 拼接新增语句的值 + dataList1.forEach(map -> insSql.append("( "). + append(StringUtils.join( + fieldList. + stream(). + map(field -> map.get(field.getDispDesc())). + map(field -> "'" + field + "'"). + toArray(), + ",")).append(" ),")); return insSql.deleteCharAt(insSql.length() - 1).toString(); }