|  | @@ -1,8 +1,8 @@
 | 
											
												
													
														|  |  package com.ruoyi.sim.service.impl;
 |  |  package com.ruoyi.sim.service.impl;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +import java.util.ArrayList;
 | 
											
												
													
														|  |  import java.util.List;
 |  |  import java.util.List;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -import cn.hutool.http.useragent.UserAgentUtil;
 |  | 
 | 
											
												
													
														|  |  import com.ruoyi.common.core.domain.AjaxResult;
 |  |  import com.ruoyi.common.core.domain.AjaxResult;
 | 
											
												
													
														|  |  import com.ruoyi.common.utils.DateUtils;
 |  |  import com.ruoyi.common.utils.DateUtils;
 | 
											
												
													
														|  |  import com.ruoyi.common.utils.SecurityUtils;
 |  |  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.apache.commons.lang3.StringUtils;
 | 
											
												
													
														|  |  import org.slf4j.Logger;
 |  |  import org.slf4j.Logger;
 | 
											
												
													
														|  |  import org.slf4j.LoggerFactory;
 |  |  import org.slf4j.LoggerFactory;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.beans.BeanUtils;
 | 
											
												
													
														|  |  import org.springframework.beans.factory.annotation.Autowired;
 |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
											
												
													
														|  |  import org.springframework.stereotype.Service;
 |  |  import org.springframework.stereotype.Service;
 | 
											
												
													
														|  |  import com.ruoyi.sim.mapper.TaskMapper;
 |  |  import com.ruoyi.sim.mapper.TaskMapper;
 | 
											
										
											
												
													
														|  | @@ -36,8 +37,40 @@ public class TaskService {
 | 
											
												
													
														|  |       * @param taskId 任务主键
 |  |       * @param taskId 任务主键
 | 
											
												
													
														|  |       * @return 任务
 |  |       * @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 结果
 |  |       * @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();
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      /**
 |  |      /**
 | 
											
										
											
												
													
														|  | @@ -67,8 +154,16 @@ public class TaskService {
 | 
											
												
													
														|  |       * @param taskIds 需要删除的任务主键
 |  |       * @param taskIds 需要删除的任务主键
 | 
											
												
													
														|  |       * @return 结果
 |  |       * @return 结果
 | 
											
												
													
														|  |       */
 |  |       */
 | 
											
												
													
														|  | -    public int deleteTaskByTaskIds(Long[] taskIds) {
 |  | 
 | 
											
												
													
														|  | -        return taskMapper.deleteTaskByTaskIds(taskIds);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    @Transactional
 | 
											
												
													
														|  | 
 |  | +    public AjaxResult deleteTaskByTaskIds(Long[] taskIds) {
 | 
											
												
													
														|  | 
 |  | +        if (taskIds == null || taskIds.length == 0) {
 | 
											
												
													
														|  | 
 |  | +            return AjaxResult.error("taskIds null!");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        for (Long tId : taskIds) {
 | 
											
												
													
														|  | 
 |  | +            taskMapper.deleteTaskByTaskId(tId);
 | 
											
												
													
														|  | 
 |  | +            taskFaultService.deleteTaskFaultByTaskId(tId);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        return AjaxResult.success();
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      /**
 |  |      /**
 | 
											
										
											
												
													
														|  | @@ -97,7 +192,7 @@ public class TaskService {
 | 
											
												
													
														|  |       */
 |  |       */
 | 
											
												
													
														|  |      @Transactional
 |  |      @Transactional
 | 
											
												
													
														|  |      public AjaxResult insertTaskByTeacher(TaskVo tv) {
 |  |      public AjaxResult insertTaskByTeacher(TaskVo tv) {
 | 
											
												
													
														|  | -        l.info("task new task " + tv);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        l.info("insertTaskByTeacher " + tv);
 | 
											
												
													
														|  |          // check
 |  |          // check
 | 
											
												
													
														|  |          if (tv == null) {
 |  |          if (tv == null) {
 | 
											
												
													
														|  |              return AjaxResult.error("TaskVo empty!");
 |  |              return AjaxResult.error("TaskVo empty!");
 | 
											
										
											
												
													
														|  | @@ -118,8 +213,8 @@ public class TaskService {
 | 
											
												
													
														|  |          tv.setUpdateBy(SecurityUtils.getUsername());
 |  |          tv.setUpdateBy(SecurityUtils.getUsername());
 | 
											
												
													
														|  |          tv.setUpdateTime(DateUtils.getNowDate());
 |  |          tv.setUpdateTime(DateUtils.getNowDate());
 | 
											
												
													
														|  |          tv.setRemark("");
 |  |          tv.setRemark("");
 | 
											
												
													
														|  | -        List<FaultTreeVo> selectedData = tv.getSelectedData();
 |  | 
 | 
											
												
													
														|  |          taskMapper.insertTask(tv);
 |  |          taskMapper.insertTask(tv);
 | 
											
												
													
														|  | 
 |  | +        List<FaultTreeVo> selectedData = tv.getSelectedData();
 | 
											
												
													
														|  |          if (selectedData != null) {
 |  |          if (selectedData != null) {
 | 
											
												
													
														|  |              List<FaultTreeVo> list = FaultService.flatten(selectedData);
 |  |              List<FaultTreeVo> list = FaultService.flatten(selectedData);
 | 
											
												
													
														|  |              for (FaultTreeVo ftv : list) {
 |  |              for (FaultTreeVo ftv : list) {
 |