Переглянути джерело

任务清单详情、修改任务清单。

tom 5 місяців тому
батько
коміт
92f350933d

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

@@ -37,9 +37,6 @@ public class TaskController extends BaseController {
     @Autowired
     private TaskService taskService;
 
-    /**
-     * 查询任务列表
-     */
     // @PreAuthorize("@ss.hasPermi('sim:task:list')")
     @GetMapping("/list")
     @ApiOperation("查询任务列表")
@@ -61,44 +58,33 @@ public class TaskController extends BaseController {
         util.exportExcel(response, list, "任务数据");
     }
 
-    /**
-     * 获取任务详细信息
-     */
     // @PreAuthorize("@ss.hasPermi('sim:task:query')")
     @GetMapping(value = "/{taskId}")
     @ApiOperation("获取任务详细信息")
     public AjaxResult getInfo(@PathVariable("taskId") Long taskId) {
-        return success(taskService.selectTaskByTaskId(taskId));
+        return taskService.selectTaskByTaskId(taskId);
     }
 
-    /**
-     * 新增任务
-     */
     // @PreAuthorize("@ss.hasPermi('sim:task:add')")
     @Log(title = "任务", businessType = BusinessType.INSERT)
     @PostMapping
     @ApiOperation("新增任务")
-    public AjaxResult add(@RequestBody TaskVo task) {
-        return taskService.insertTaskByTeacher(task);
+    public AjaxResult add(@RequestBody TaskVo tv) {
+        return taskService.insertTaskByTeacher(tv);
     }
 
-    /**
-     * 修改任务
-     */
     // @PreAuthorize("@ss.hasPermi('sim:task:edit')")
     @Log(title = "任务", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody Task task) {
-        return toAjax(taskService.updateTask(task));
+    @ApiOperation("修改任务")
+    public AjaxResult edit(@RequestBody TaskVo tv) {
+        return taskService.updateTaskByTeacher(tv);
     }
 
-    /**
-     * 删除任务
-     */
     // @PreAuthorize("@ss.hasPermi('sim:task:remove')")
     @Log(title = "任务", businessType = BusinessType.DELETE)
     @DeleteMapping("/{taskIds}")
-    @ApiOperation("删除任务")
+    @ApiOperation("批量删除任务")
     public AjaxResult remove(@PathVariable Long[] taskIds) {
         return taskService.deleteTaskByTaskIds(taskIds);
     }

+ 96 - 9
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/TaskService.java

@@ -1,8 +1,8 @@
 package com.ruoyi.sim.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
 
-import cn.hutool.http.useragent.UserAgentUtil;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
@@ -13,6 +13,7 @@ import com.ruoyi.sim.domain.vo.TaskVo;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.sim.mapper.TaskMapper;
@@ -36,8 +37,40 @@ public class TaskService {
      * @param taskId 任务主键
      * @return 任务
      */
-    public Task selectTaskByTaskId(Long taskId) {
-        return taskMapper.selectTaskByTaskId(taskId);
+    public AjaxResult selectTaskByTaskId(Long taskId) {
+        // check
+        if (taskId == null) {
+            return AjaxResult.error("taskId is null");
+        }
+        Task t = taskMapper.selectTaskByTaskId(taskId);
+        if (t == null) {
+            return AjaxResult.error("task is null");
+        }
+        //
+        TaskVo vo = new TaskVo();
+        String simType = t.getSimType();
+        BeanUtils.copyProperties(t, vo);
+        // 查询获得数据结构。
+        List<FaultTreeVo> listToQ = (List<FaultTreeVo>) faultService.selectAllTreeViaSimType(simType).get(AjaxResult.DATA_TAG);
+        // 变成扁平list
+        List<FaultTreeVo> listToF = FaultService.flatten(listToQ);
+        for (FaultTreeVo o : listToF) {
+            if (o == null) {
+                continue;
+            }
+            if (Fault.FAULT_TYPE_3.equals(o.getFaultType())) {
+                TaskFault tf = o.getTaskFault();
+                TaskFault tfQ = taskFaultService.selectUniqueTaskFault(taskId, tf.getFaultId());
+                // 存在就设置上数据库中TaskFault值。
+                if (tfQ != null) {
+                    o.setTaskFault(tfQ);
+                }
+            }
+        }
+        // 变成树list
+        vo.setSelectedData(FaultService.toTree(listToF, Fault.ROOT_FAULT_ID));
+        //
+        return AjaxResult.success(vo);
     }
 
     /**
@@ -53,12 +86,66 @@ public class TaskService {
     /**
      * 修改任务
      *
-     * @param task 任务
+     * @param tv 任务
      * @return 结果
      */
-    public int updateTask(Task task) {
-        task.setUpdateTime(DateUtils.getNowDate());
-        return taskMapper.updateTask(task);
+    public AjaxResult updateTaskByTeacher(TaskVo tv) {
+        l.info("updateTaskByTeacher " + tv);
+        // check
+        if (tv == null) {
+            return AjaxResult.error("TaskVo empty!");
+        }
+        if (!faultService.checkSimTypeOk(tv.getSimType())) {
+            return AjaxResult.error("simType error!");
+        }
+        if (!Task.TASK_TYPE_TEACHER_ADD.equals(tv.getTaskType())) {
+            return AjaxResult.error("taskType value error!");
+        }
+        if (StringUtils.isEmpty(tv.getName())) {
+            return AjaxResult.error("name isEmpty!");
+        }
+        //
+        tv.setCreateByUserId(SecurityUtils.getUserId());
+        tv.setCreateBy(SecurityUtils.getUsername());
+        tv.setCreateTime(DateUtils.getNowDate());
+        tv.setUpdateBy(SecurityUtils.getUsername());
+        tv.setUpdateTime(DateUtils.getNowDate());
+        tv.setRemark("");
+        tv.setUpdateTime(DateUtils.getNowDate());
+        taskMapper.updateTask(tv);
+        List<FaultTreeVo> selectedData = tv.getSelectedData();
+        if (selectedData != null) {
+            List<FaultTreeVo> list = FaultService.flatten(selectedData);
+            for (FaultTreeVo ftv : list) {
+                if (ftv == null) {
+                    continue;
+                }
+                if (!Fault.FAULT_TYPE_3.equals(ftv.getFaultType())) {
+                    continue;
+                }
+                TaskFault tf = ftv.getTaskFault();
+                // check
+                if (tf == null) {
+                    return AjaxResult.error("TaskFault empty!");
+                }
+                String flag = tf.getFlag();
+                if (StringUtils.isEmpty(flag)) {
+                    return AjaxResult.error("flag empty!");
+                }
+                if (TaskFault.UNKNOWN.equals(flag)) {
+                    return AjaxResult.error("flag UNKNOWN!");
+                }
+                if (!TaskFault.YES.equals(flag) && !TaskFault.NO.equals(flag)) {
+                    return AjaxResult.error("flag must YES or NO!");
+                }
+                // todo:选中数量限制
+
+                // todo:故障部位冲突
+                tf.setTaskId(tv.getTaskId());
+                taskFaultService.insertOrUpdateTaskFault(tf);
+            }
+        }
+        return AjaxResult.success();
     }
 
     /**
@@ -105,7 +192,7 @@ public class TaskService {
      */
     @Transactional
     public AjaxResult insertTaskByTeacher(TaskVo tv) {
-        l.info("task new task " + tv);
+        l.info("insertTaskByTeacher " + tv);
         // check
         if (tv == null) {
             return AjaxResult.error("TaskVo empty!");
@@ -126,8 +213,8 @@ public class TaskService {
         tv.setUpdateBy(SecurityUtils.getUsername());
         tv.setUpdateTime(DateUtils.getNowDate());
         tv.setRemark("");
-        List<FaultTreeVo> selectedData = tv.getSelectedData();
         taskMapper.insertTask(tv);
+        List<FaultTreeVo> selectedData = tv.getSelectedData();
         if (selectedData != null) {
             List<FaultTreeVo> list = FaultService.flatten(selectedData);
             for (FaultTreeVo ftv : list) {