Prechádzať zdrojové kódy

修改 Task 实现。

tom 5 mesiacov pred
rodič
commit
7c4b162667

+ 3 - 3
pla-sim/01_SQL/02_table/sim_task.sql

@@ -11,7 +11,7 @@
  Target Server Version : 50740 (5.7.40-log)
  File Encoding         : 65001
 
- Date: 15/12/2024 19:23:52
+ Date: 16/12/2024 13:13:44
 */
 
 SET NAMES utf8mb4;
@@ -22,7 +22,7 @@ SET FOREIGN_KEY_CHECKS = 0;
 -- ----------------------------
 DROP TABLE IF EXISTS `sim_task`;
 CREATE TABLE `sim_task`  (
-  `task_id` bigint(20) NOT NULL COMMENT '任务ID',
+  `task_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务ID',
   `sim_type` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模拟器型号',
   `task_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务类型\r\n1:教师创建管理\r\n2:考试临时数据',
   `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务名称',
@@ -33,6 +33,6 @@ CREATE TABLE `sim_task`  (
   `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
   `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
   PRIMARY KEY (`task_id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'sim-任务表' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'sim-任务表' ROW_FORMAT = DYNAMIC;
 
 SET FOREIGN_KEY_CHECKS = 1;

+ 10 - 7
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/TaskController.java

@@ -3,6 +3,7 @@ package com.ruoyi.sim.controller;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
+import com.ruoyi.sim.domain.vo.TaskVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,6 +42,7 @@ public class TaskController extends BaseController {
      */
     // @PreAuthorize("@ss.hasPermi('sim:task:list')")
     @GetMapping("/list")
+    @ApiOperation("查询任务列表")
     public TableDataInfo list(Task task) {
         startPage();
         List<Task> list = taskService.selectTaskList(task);
@@ -51,7 +53,7 @@ public class TaskController extends BaseController {
      * 导出任务列表
      */
     // @PreAuthorize("@ss.hasPermi('sim:task:export')")
-    @Log(title = "任务", businessType = BusinessType.EXPORT)
+    // @Log(title = "任务", businessType = BusinessType.EXPORT)
     // @PostMapping("/export")
     public void export(HttpServletResponse response, Task task) {
         List<Task> list = taskService.selectTaskList(task);
@@ -64,6 +66,7 @@ public class TaskController extends BaseController {
      */
     // @PreAuthorize("@ss.hasPermi('sim:task:query')")
     @GetMapping(value = "/{taskId}")
+    @ApiOperation("获取任务详细信息")
     public AjaxResult getInfo(@PathVariable("taskId") Long taskId) {
         return success(taskService.selectTaskByTaskId(taskId));
     }
@@ -73,10 +76,10 @@ public class TaskController extends BaseController {
      */
     // @PreAuthorize("@ss.hasPermi('sim:task:add')")
     @Log(title = "任务", businessType = BusinessType.INSERT)
-    // @PostMapping
-    // @ApiOperation("新增任务")
-    public AjaxResult add(@RequestBody Task task) {
-        return toAjax(taskService.insertTask(task));
+    @PostMapping
+    @ApiOperation("新增任务")
+    public AjaxResult add(@RequestBody TaskVo task) {
+        return taskService.insertTask(task);
     }
 
     /**
@@ -103,11 +106,11 @@ public class TaskController extends BaseController {
     // -------------------------------- tom add  --------------------------------
 
     /**
-     * 获取空白的任务详细信息,为了新建任务
+     * 获取空白的任务详细信息,为了新建任务
      */
     // @PreAuthorize("@ss.hasPermi('sim:task:query')")
     @GetMapping("/getInfoForAdd/{simType}")
-    @ApiOperation("获取空白的任务详细信息,为了新建任务")
+    @ApiOperation("获取空白的任务详细信息,为了新建任务")
     public AjaxResult getInfoForAdd(@PathVariable("simType") String simType) {
         return taskService.getInfoForAdd(simType);
     }

+ 14 - 1
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/Fault.java

@@ -1,5 +1,6 @@
 package com.ruoyi.sim.domain;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
@@ -11,7 +12,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
  * @author tom
  * @date 2024-12-15
  */
-public class Fault extends BaseEntity {
+public class Fault extends BaseEntity implements Comparable<Fault> {
     private static final long serialVersionUID = 1L;
 
     /**
@@ -178,4 +179,16 @@ public class Fault extends BaseEntity {
                 .append("remark", getRemark())
                 .toString();
     }
+
+    // -------------------------------- tom add  --------------------------------
+    @Override
+    public int compareTo(Fault o) {
+        if (StringUtils.isNotEmpty(faultId)) {
+            return faultId.compareTo(o.getFaultId());
+        } else {
+            return -1;
+        }
+    }
+
+    public static String ROOT_FAULT_ID = "000000000000";
 }

+ 1 - 11
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/Task.java

@@ -1,6 +1,6 @@
 package com.ruoyi.sim.domain;
 
-import com.ruoyi.sim.domain.vo.FaultTree;
+import com.ruoyi.sim.domain.vo.FaultTreeVo;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
@@ -106,14 +106,4 @@ public class Task extends BaseEntity {
 
     // -------------------------------- tom add  --------------------------------
     public static final Long EMPTY_TASK_ID = 0L;
-
-    private List<FaultTree> selectedData;
-
-    public List<FaultTree> getSelectedData() {
-        return selectedData;
-    }
-
-    public void setSelectedData(List<FaultTree> selectedData) {
-        this.selectedData = selectedData;
-    }
 }

+ 6 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/TaskFault.java

@@ -96,4 +96,10 @@ public class TaskFault extends BaseEntity {
         this.faultId = faultId;
         this.flag = flag;
     }
+
+    public TaskFault(Long taskId, String faultId, String flag) {
+        this.taskId = taskId;
+        this.faultId = faultId;
+        this.flag = flag;
+    }
 }

+ 15 - 4
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/FaultTree.java → ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/FaultTreeVo.java

@@ -9,17 +9,28 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
  */
 import java.util.List;
 
-public class FaultTree extends Fault {
+/**
+ *
+ */
+public class FaultTreeVo extends Fault {
 
-    private List<FaultTree> children;
+    private List<FaultTreeVo> children;
 
     private TaskFault taskFault;
 
-    public List<FaultTree> getChildren() {
+    public FaultTreeVo() {
+    }
+
+    public FaultTreeVo(List<FaultTreeVo> children, TaskFault taskFault) {
+        this.children = children;
+        this.taskFault = taskFault;
+    }
+
+    public List<FaultTreeVo> getChildren() {
         return children;
     }
 
-    public void setChildren(List<FaultTree> children) {
+    public void setChildren(List<FaultTreeVo> children) {
         this.children = children;
     }
 

+ 18 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/TaskVo.java

@@ -0,0 +1,18 @@
+package com.ruoyi.sim.domain.vo;
+
+import com.ruoyi.sim.domain.Task;
+
+import java.util.List;
+
+public class TaskVo extends Task {
+
+    private List<FaultTreeVo> selectedData;
+
+    public List<FaultTreeVo> getSelectedData() {
+        return selectedData;
+    }
+
+    public void setSelectedData(List<FaultTreeVo> selectedData) {
+        this.selectedData = selectedData;
+    }
+}

+ 11 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/ITaskFaultService.java

@@ -58,4 +58,15 @@ public interface ITaskFaultService {
      * @return 结果
      */
     public int deleteTaskFaultByRelId(Long relId);
+
+    // -------------------------------- tom add  --------------------------------
+    public TaskFault selectUniqueTaskFault(Long taskId, String faultId);
+
+    public int insertTaskFault(Long taskId, String faultId, String flag);
+
+    public int updateTaskFault(Long relId, Long taskId, String faultId, String flag);
+
+    public int insertOrUpdateTaskFault(TaskFault taskFault);
+
+    public int deleteTaskFaultByTaskId(Long taskId);
 }

+ 2 - 1
ruoyi-sim/src/main/java/com/ruoyi/sim/service/ITaskService.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.sim.domain.Task;
+import com.ruoyi.sim.domain.vo.TaskVo;
 
 /**
  * 任务Service接口
@@ -34,7 +35,7 @@ public interface ITaskService {
      * @param task 任务
      * @return 结果
      */
-    public int insertTask(Task task);
+    public AjaxResult insertTask(TaskVo task);
 
     /**
      * 修改任务

+ 46 - 9
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/FaultServiceImpl.java

@@ -6,7 +6,7 @@ import java.util.stream.Collectors;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.sim.domain.TaskFault;
-import com.ruoyi.sim.domain.vo.FaultTree;
+import com.ruoyi.sim.domain.vo.FaultTreeVo;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -103,7 +103,6 @@ public class FaultServiceImpl implements IFaultService {
     /**
      * 查询故障列表tree
      *
-     * @param fault 故障
      * @return 故障
      */
     @Override
@@ -122,19 +121,20 @@ public class FaultServiceImpl implements IFaultService {
         // fault.getParams().put(TableSupport.PAGE_SIZE, 100);
         //
         List<Fault> list = faultMapper.selectFaultList(q);
+        Collections.sort(list);
         log.info("AAAAAAAAAAAAAAAAAAAAAAAAAAAA000000000000");
         log.info(Objects.requireNonNull(list).toString());
         log.info(Objects.requireNonNull(q.getParams()).toString());
         log.info(Objects.requireNonNull(list.size()).toString());
 
-        List<FaultTree> tempListNode = new ArrayList<>();
+        List<FaultTreeVo> tempListNode = new ArrayList<>();
         for (Fault source : list) {
-            FaultTree target = new FaultTree();
+            FaultTreeVo target = new FaultTreeVo();
             BeanUtils.copyProperties(source, target);
             tempListNode.add(target);
         }
         log.info(Objects.requireNonNull(tempListNode).toString());
-        List<FaultTree> tree = toTree(tempListNode, ROOT_FAULT_ID);
+        List<FaultTreeVo> tree = toTree(tempListNode, Fault.ROOT_FAULT_ID);
         log.info(Objects.requireNonNull(tree).toString());
         return AjaxResult.success(tree);
     }
@@ -158,8 +158,6 @@ public class FaultServiceImpl implements IFaultService {
         return SIM_TYPE_SET.contains(simType);
     }
 
-    private static String ROOT_FAULT_ID = "000000000000";
-
 //    private static List<FaultNode> toTree2(List<FaultNode> list) {
 //        List<FaultNode> tree = new ArrayList<>();
 //        for (FaultNode fn1 : list) {
@@ -178,9 +176,9 @@ public class FaultServiceImpl implements IFaultService {
 //        return tree;
 //    }
 
-    private static List<FaultTree> toTree(List<FaultTree> list, String parentFaultId) {
+    public static List<FaultTreeVo> toTree(List<FaultTreeVo> list, String parentFaultId) {
         // todo:sort
-        List<FaultTree> tree = list
+        List<FaultTreeVo> tree = list
                 .stream()
                 .filter(
                         parent ->
@@ -195,4 +193,43 @@ public class FaultServiceImpl implements IFaultService {
                 .collect(Collectors.toList());
         return tree;
     }
+
+    public static List<FaultTreeVo> flatten(List<FaultTreeVo> list) {
+        return list
+                // todo:stream filter
+
+//                .stream()
+//                .filter(x -> {
+//                    return StringUtils.isEmpty(x.getParentFaultId());
+//                })
+//                .collect(Collectors.toList())
+                .stream()
+                .map(x -> {
+                    return flatten(x, list);
+                })
+                .flatMap(Collection::stream)
+                .distinct()
+                .collect(Collectors.toList());
+    }
+
+    public static List<FaultTreeVo> flatten(FaultTreeVo node, List<FaultTreeVo> list2222) {
+        List<FaultTreeVo> results = new ArrayList<>();
+        if (node != null) {
+            // get rid of children & parent references
+            FaultTreeVo target = new FaultTreeVo();
+            BeanUtils.copyProperties(node, target);
+            results.add(target);
+        }
+
+        List<FaultTreeVo> children = node.getChildren();
+        for (FaultTreeVo child : children) {
+            if (child.getChildren() != null) {
+                // Recursive call - Keep flattening until no more children
+                List<FaultTreeVo> flatten = flatten(child, list2222);
+                results.addAll(flatten);
+            }
+        }
+        // stop or exit condition
+        return results;
+    }
 }

+ 58 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/TaskFaultServiceImpl.java

@@ -8,6 +8,7 @@ import org.springframework.stereotype.Service;
 import com.ruoyi.sim.mapper.TaskFaultMapper;
 import com.ruoyi.sim.domain.TaskFault;
 import com.ruoyi.sim.service.ITaskFaultService;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 任务故障关联Service业务层处理
@@ -86,4 +87,61 @@ public class TaskFaultServiceImpl implements ITaskFaultService {
     public int deleteTaskFaultByRelId(Long relId) {
         return taskFaultMapper.deleteTaskFaultByRelId(relId);
     }
+
+    // -------------------------------- tom add  --------------------------------
+    @Override
+    public TaskFault selectUniqueTaskFault(Long taskId, String faultId) {
+        TaskFault q = new TaskFault();
+        q.setTaskId(taskId);
+        q.setFaultId(faultId);
+        List<TaskFault> list = selectTaskFaultList(q);
+        if (list != null && !list.isEmpty()) {
+            return list.get(0);
+        } else {
+            return null;
+        }
+    }
+
+    @Transactional
+    @Override
+    public int insertTaskFault(Long taskId, String faultId, String flag) {
+        TaskFault n = new TaskFault(0L, taskId, faultId, flag);
+        return insertTaskFault(n);
+    }
+
+    @Transactional
+    @Override
+    public int updateTaskFault(Long relId, Long taskId, String faultId, String flag) {
+        TaskFault f = selectTaskFaultByRelId(relId);
+        f.setTaskId(taskId);
+        f.setFaultId(faultId);
+        f.setFlag(flag);
+        return updateTaskFault(f);
+    }
+
+    @Transactional
+    @Override
+    public int insertOrUpdateTaskFault(TaskFault tf) {
+        TaskFault f = selectUniqueTaskFault(tf.getTaskId(), tf.getFaultId());
+        if (f == null) {
+            return insertTaskFault(tf);
+        } else {
+            return updateTaskFault(tf);
+        }
+    }
+
+    @Transactional
+    @Override
+    public int deleteTaskFaultByTaskId(Long taskId) {
+        TaskFault q = new TaskFault();
+        q.setTaskId(taskId);
+        List<TaskFault> list = selectTaskFaultList(q);
+        if (list == null || list.isEmpty()) {
+            return 0;
+        }
+        for (TaskFault o : list) {
+            deleteTaskFaultByRelId(o.getRelId());
+        }
+        return list.size();
+    }
 }

+ 32 - 15
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/TaskServiceImpl.java

@@ -5,8 +5,11 @@ import java.util.List;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.sim.domain.Fault;
-import com.ruoyi.sim.domain.vo.FaultTree;
+import com.ruoyi.sim.domain.TaskFault;
+import com.ruoyi.sim.domain.vo.FaultTreeVo;
+import com.ruoyi.sim.domain.vo.TaskVo;
 import com.ruoyi.sim.service.IFaultService;
+import com.ruoyi.sim.service.ITaskFaultService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -49,18 +52,6 @@ public class TaskServiceImpl implements ITaskService {
     }
 
     /**
-     * 新增任务
-     *
-     * @param task 任务
-     * @return 结果
-     */
-    @Override
-    public int insertTask(Task task) {
-        task.setCreateTime(DateUtils.getNowDate());
-        return taskMapper.insertTask(task);
-    }
-
-    /**
      * 修改任务
      *
      * @param task 任务
@@ -95,8 +86,34 @@ public class TaskServiceImpl implements ITaskService {
     }
 
     // -------------------------------- tom add  --------------------------------
+
     @Autowired
     private IFaultService faultService;
+    @Autowired
+    private ITaskFaultService taskFaultService;
+
+    /**
+     * 新增任务
+     *
+     * @param task 任务
+     * @return 结果
+     */
+    @Transactional
+    @Override
+    public AjaxResult insertTask(TaskVo task) {
+        List<FaultTreeVo> selectedData = task.getSelectedData();
+        task.setCreateTime(DateUtils.getNowDate());
+        task.setUpdateTime(DateUtils.getNowDate());
+        if (selectedData != null) {
+            List<FaultTreeVo> list = FaultServiceImpl.flatten(selectedData);
+            for (FaultTreeVo one : list) {
+                TaskFault tf = one.getTaskFault();
+                taskFaultService.insertOrUpdateTaskFault(tf);
+            }
+        }
+        taskMapper.insertTask(task);
+        return AjaxResult.success();
+    }
 
     /**
      * 为了新建,返回一个带tree结构的数据对象。
@@ -114,8 +131,8 @@ public class TaskServiceImpl implements ITaskService {
         // query obj.
         Fault q = new Fault();
         q.setSimType(simType);
-        List<FaultTree> ftList = (List<FaultTree>) faultService.selectAllTreeViaSimType(simType).get(AjaxResult.DATA_TAG);
-        Task t = new Task();
+        List<FaultTreeVo> ftList = (List<FaultTreeVo>) faultService.selectAllTreeViaSimType(simType).get(AjaxResult.DATA_TAG);
+        TaskVo t = new TaskVo();
         t.setTaskId(Task.EMPTY_TASK_ID);
         t.setSelectedData(ftList);
         return AjaxResult.success(t);