ソースを参照

Merge branch 'dev-api' into dev

tom 5 ヶ月 前
コミット
b9cab15e5c
22 ファイル変更2855 行追加57 行削除
  1. 41 0
      pla-sim/01_SQL/02_table/sim_fault.sql
  2. 199 38
      pla-sim/01_SQL/03_dev_backup/pla-chem-sim-dev-1.sql
  3. 1442 0
      pla-sim/01_SQL/03_dev_backup/pla-chem-sim-dev-2.sql
  4. 5 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/controller/AddOnDeptController.java
  5. 114 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/controller/FaultController.java
  6. 2 2
      ruoyi-sim/src/main/java/com/ruoyi/sim/controller/MajorController.java
  7. 24 11
      ruoyi-sim/src/main/java/com/ruoyi/sim/controller/StudentController.java
  8. 51 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/domain/AddOnDept.java
  9. 151 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/domain/Fault.java
  10. 24 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/domain/Student.java
  11. 11 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/domain/Teacher.java
  12. 26 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/FaultNode.java
  13. 61 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/mapper/AddOnDeptMapper.java
  14. 61 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/mapper/FaultMapper.java
  15. 61 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/service/IAddOnDeptService.java
  16. 72 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/service/IFaultService.java
  17. 87 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/AddOnDeptServiceImpl.java
  18. 177 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/FaultServiceImpl.java
  19. 17 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/ScheduledTaskService.java
  20. 44 6
      ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/StudentService.java
  21. 61 0
      ruoyi-sim/src/main/resources/mapper/sim/AddOnDeptMapper.xml
  22. 124 0
      ruoyi-sim/src/main/resources/mapper/sim/FaultMapper.xml

+ 41 - 0
pla-sim/01_SQL/02_table/sim_fault.sql

@@ -0,0 +1,41 @@
+/*
+ Navicat Premium Dump SQL
+
+ Source Server         : qdhome.iot321.top-dev
+ Source Server Type    : MySQL
+ Source Server Version : 50740 (5.7.40-log)
+ Source Host           : qdhome.iot321.top:33103
+ Source Schema         : pla-chem-sim-dev-1
+
+ Target Server Type    : MySQL
+ Target Server Version : 50740 (5.7.40-log)
+ File Encoding         : 65001
+
+ Date: 13/12/2024 10:23:23
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for sim_fault
+-- ----------------------------
+DROP TABLE IF EXISTS `sim_fault`;
+CREATE TABLE `sim_fault`  (
+  `fault_id` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '故障ID',
+  `parent_fault_id` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
+  `sim_type` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模拟器类型\r\n',
+  `fault_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '故障类型:\r\n1:故障现象\r\n2:故障现象的可能原因\r\n3:故障部位\r\n4:故障部位的排除方法\r\n5:修复结论',
+  `conflict_fault_id` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '互斥的故障ID',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '名称',
+  `sim_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '通信报文',
+  `order_num` int(4) NULL DEFAULT NULL COMMENT '显示顺序',
+  `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新者',
+  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
+  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+  PRIMARY KEY (`fault_id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'sim-故障表' ROW_FORMAT = DYNAMIC;
+
+SET FOREIGN_KEY_CHECKS = 1;

ファイルの差分が大きいため隠しています
+ 199 - 38
pla-sim/01_SQL/03_dev_backup/pla-chem-sim-dev-1.sql


ファイルの差分が大きいため隠しています
+ 1442 - 0
pla-sim/01_SQL/03_dev_backup/pla-chem-sim-dev-2.sql


+ 5 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/AddOnDeptController.java

@@ -0,0 +1,5 @@
+package com.ruoyi.sim.controller;
+
+public class AddOnDeptController {
+
+}

+ 114 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/FaultController.java

@@ -0,0 +1,114 @@
+package com.ruoyi.sim.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.sim.domain.vo.FaultNode;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.sim.domain.Fault;
+import com.ruoyi.sim.service.IFaultService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 故障Controller
+ *
+ * @author tom
+ * @date 2024-12-13
+ */
+@RestController
+@RequestMapping("/sim/fault")
+public class FaultController extends BaseController {
+    @Autowired
+    private IFaultService faultService;
+
+    /**
+     * 查询故障列表
+     */
+    // @PreAuthorize("@ss.hasPermi('sim:fault:list')")
+    @GetMapping("/list")
+    @ApiOperation("查询故障列表")
+    public TableDataInfo list(Fault fault) {
+        startPage();
+        List<Fault> list = faultService.selectFaultList(fault);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出故障列表
+     */
+    // @PreAuthorize("@ss.hasPermi('sim:fault:export')")
+    @Log(title = "故障", businessType = BusinessType.EXPORT)
+    // @PostMapping("/export")
+    public void export(HttpServletResponse response, Fault fault) {
+        List<Fault> list = faultService.selectFaultList(fault);
+        ExcelUtil<Fault> util = new ExcelUtil<Fault>(Fault.class);
+        util.exportExcel(response, list, "故障数据");
+    }
+
+    /**
+     * 获取故障详细信息
+     */
+    // @PreAuthorize("@ss.hasPermi('sim:fault:query')")
+    @GetMapping(value = "/{faultId}")
+    public AjaxResult getInfo(@PathVariable("faultId") String faultId) {
+        return success(faultService.selectFaultByFaultId(faultId));
+    }
+
+    /**
+     * 新增故障
+     */
+    // @PreAuthorize("@ss.hasPermi('sim:fault:add')")
+    @Log(title = "故障", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody Fault fault) {
+        return toAjax(faultService.insertFault(fault));
+    }
+
+    /**
+     * 修改故障
+     */
+    // @PreAuthorize("@ss.hasPermi('sim:fault:edit')")
+    @Log(title = "故障", businessType = BusinessType.UPDATE)
+    // @PutMapping
+    public AjaxResult edit(@RequestBody Fault fault) {
+        return toAjax(faultService.updateFault(fault));
+    }
+
+    /**
+     * 删除故障
+     */
+    // @PreAuthorize("@ss.hasPermi('sim:fault:remove')")
+    @Log(title = "故障", businessType = BusinessType.DELETE)
+    // @DeleteMapping("/{faultIds}")
+    public AjaxResult remove(@PathVariable String[] faultIds) {
+        return toAjax(faultService.deleteFaultByFaultIds(faultIds));
+    }
+
+    // -------------------------------- tom add  --------------------------------
+    private static final Logger logger = LoggerFactory.getLogger(FaultController.class);
+
+    /**
+     * 查询故障列表
+     */
+    // @PreAuthorize("@ss.hasPermi('sim:fault:list')")
+    @GetMapping("/listAllTree")
+    @ApiOperation("查询故障列表")
+    public TableDataInfo listAllTree(Fault fault) {
+        List<FaultNode> list = faultService.selectFaultListAllTree(fault);
+        return getDataTable(list);
+    }
+}

+ 2 - 2
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/MajorController.java

@@ -31,9 +31,9 @@ import com.ruoyi.common.core.page.TableDataInfo;
  * @author tom
  * @date 2024-12-10
  */
-@Api("专业Controller")
 @RestController
 @RequestMapping("/sim/major")
+@Api("专业Controller")
 public class MajorController extends BaseController {
     @Autowired
     private IMajorService majorService;
@@ -105,5 +105,5 @@ public class MajorController extends BaseController {
         return toAjax(majorService.deleteMajorByMajorIds(majorIds));
     }
 
-    // --------------------------------  --------------------------------
+    // -------------------------------- tom add  --------------------------------
 }

+ 24 - 11
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/StudentController.java

@@ -1,13 +1,13 @@
 package com.ruoyi.sim.controller;
 
-import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.sim.domain.Student;
 import com.ruoyi.sim.service.impl.Consts;
 import com.ruoyi.sim.service.impl.StudentService;
 import com.ruoyi.system.service.ISysDeptService;
@@ -17,12 +17,14 @@ import com.ruoyi.system.service.ISysUserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.ArrayUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Api("学生Controller")
 @RestController
@@ -42,8 +44,7 @@ public class StudentController extends BaseController {
     private ISysPostService postService;
 
     @Autowired
-    private StudentService extSysUserService;
-
+    private StudentService studentService;
 
     /**
      * copy
@@ -55,11 +56,25 @@ public class StudentController extends BaseController {
     @GetMapping("/list")
     @ApiOperation("查询学生列表")
     public TableDataInfo list() {
-        // startPage();
-        List<SysUser> list = extSysUserService.selectStudentList();
+        // startPage();  todo:分页
+        List<Student> list = studentService.selectStudentList();
         return getDataTable(list);
     }
 
+    /**
+     * copy
+     * 根据用户编号获取详细信息
+     */
+    // @PreAuthorize("@ss.hasPermi('system:user:query')")
+    @GetMapping(value = "/{userId}")
+    @ApiOperation("根据userId获取详细信息")
+    public AjaxResult getInfo(@PathVariable(value = "userId") Long userId) {
+        // -------------------------------- tom add  --------------------------------
+        // 覆盖data
+        // ajax.put(AjaxResult.DATA_TAG, student);
+        // -------------------------------- tom add  --------------------------------
+        return success(studentService.selectStudentByUserId(userId));
+    }
 
     // @PreAuthorize("@ss.hasPermi('sim:student:query')")
 
@@ -128,10 +143,8 @@ public class StudentController extends BaseController {
     // @Log(title = "用户管理", businessType = BusinessType.DELETE)
     @DeleteMapping("/{userIds}")
     @ApiOperation("删除学生")
-    public AjaxResult remove(@PathVariable Long[] userIds)
-    {
-        if (ArrayUtils.contains(userIds, getUserId()))
-        {
+    public AjaxResult remove(@PathVariable Long[] userIds) {
+        if (ArrayUtils.contains(userIds, getUserId())) {
             return error("当前用户不能删除");
         }
         return toAjax(userService.deleteUserByIds(userIds));

+ 51 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/AddOnDept.java

@@ -0,0 +1,51 @@
+package com.ruoyi.sim.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 部门附加对象 sim_add_on_dept
+ *
+ * @author tom
+ * @date 2024-12-13
+ */
+public class AddOnDept extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 班级ID/部门ID
+     */
+    private Long deptId;
+
+    /**
+     * 专业ID
+     */
+    @Excel(name = "专业ID")
+    private Long majorId;
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setMajorId(Long majorId) {
+        this.majorId = majorId;
+    }
+
+    public Long getMajorId() {
+        return majorId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("deptId", getDeptId())
+                .append("majorId", getMajorId())
+                .toString();
+    }
+}

+ 151 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/Fault.java

@@ -0,0 +1,151 @@
+package com.ruoyi.sim.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 故障对象 sim_fault
+ *
+ * @author tom
+ * @date 2024-12-13
+ */
+public class Fault extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 故障ID
+     */
+    private String faultId;
+
+    /**
+     * $column.columnComment
+     */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String parentFaultId = "";
+
+    /**
+     * 模拟器类型
+     */
+    @Excel(name = "模拟器类型")
+    private String simType;
+
+    /**
+     * 故障类型:
+     * 1:故障现象
+     * 2:故障现象的可能原因
+     * 3:故障部位
+     * 4:故障部位的排除方法
+     * 5:修复结论
+     */
+    @Excel(name = "故障类型")
+    private String faultType;
+
+    /**
+     * 互斥的故障ID
+     */
+    @Excel(name = "互斥的故障ID")
+    private String conflictFaultId;
+
+    /**
+     * 名称
+     */
+    @Excel(name = "名称")
+    private String name;
+
+    /**
+     * 通信报文
+     */
+    @Excel(name = "通信报文")
+    private String simMsg;
+
+    /**
+     * 显示顺序
+     */
+    @Excel(name = "显示顺序")
+    private Integer orderNum;
+
+    public void setFaultId(String faultId) {
+        this.faultId = faultId;
+    }
+
+    public String getFaultId() {
+        return faultId;
+    }
+
+    public void setParentFaultId(String parentFaultId) {
+        this.parentFaultId = parentFaultId;
+    }
+
+    public String getParentFaultId() {
+        return parentFaultId;
+    }
+
+    public void setSimType(String simType) {
+        this.simType = simType;
+    }
+
+    public String getSimType() {
+        return simType;
+    }
+
+    public void setFaultType(String faultType) {
+        this.faultType = faultType;
+    }
+
+    public String getFaultType() {
+        return faultType;
+    }
+
+    public void setConflictFaultId(String conflictFaultId) {
+        this.conflictFaultId = conflictFaultId;
+    }
+
+    public String getConflictFaultId() {
+        return conflictFaultId;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setSimMsg(String simMsg) {
+        this.simMsg = simMsg;
+    }
+
+    public String getSimMsg() {
+        return simMsg;
+    }
+
+    public void setOrderNum(Integer orderNum) {
+        this.orderNum = orderNum;
+    }
+
+    public Integer getOrderNum() {
+        return orderNum;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("faultId", getFaultId())
+                .append("parentFaultId", getParentFaultId())
+                .append("simType", getSimType())
+                .append("faultType", getFaultType())
+                .append("conflictFaultId", getConflictFaultId())
+                .append("name", getName())
+                .append("simMsg", getSimMsg())
+                .append("orderNum", getOrderNum())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .append("remark", getRemark())
+                .toString();
+    }
+}

+ 24 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/Student.java

@@ -0,0 +1,24 @@
+package com.ruoyi.sim.domain;
+
+import com.ruoyi.common.core.domain.entity.SysUser;
+
+/**
+ * 继承 用户对象 sys_user 的学员对象。
+ */
+public class Student extends SysUser {
+
+    // -------------------------------- tom add  --------------------------------
+
+    /**
+     * 仅仅返回查询关联结果。
+     */
+    private Major major;
+
+    public Major getMajor() {
+        return major;
+    }
+
+    public void setMajor(Major major) {
+        this.major = major;
+    }
+}

+ 11 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/Teacher.java

@@ -0,0 +1,11 @@
+package com.ruoyi.sim.domain;
+
+import com.ruoyi.common.core.domain.entity.SysUser;
+
+/**
+ * 继承 用户对象 sys_user 的教师对象。
+ */
+public class Teacher extends SysUser {
+
+    // -------------------------------- tom add  --------------------------------
+}

+ 26 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/FaultNode.java

@@ -0,0 +1,26 @@
+package com.ruoyi.sim.domain.vo;
+
+import com.ruoyi.sim.domain.Fault;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.util.List;
+
+public class FaultNode extends Fault {
+
+    private List<FaultNode> children;
+
+    public List<FaultNode> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<FaultNode> children) {
+        this.children = children;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this)
+                .append("children", children)
+                .toString();
+    }
+}

+ 61 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/mapper/AddOnDeptMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.sim.mapper;
+
+import java.util.List;
+
+import com.ruoyi.sim.domain.AddOnDept;
+
+/**
+ * 部门附加Mapper接口
+ *
+ * @author tom
+ * @date 2024-12-13
+ */
+public interface AddOnDeptMapper {
+    /**
+     * 查询部门附加
+     *
+     * @param deptId 部门附加主键
+     * @return 部门附加
+     */
+    public AddOnDept selectAddOnDeptByDeptId(Long deptId);
+
+    /**
+     * 查询部门附加列表
+     *
+     * @param addOnDept 部门附加
+     * @return 部门附加集合
+     */
+    public List<AddOnDept> selectAddOnDeptList(AddOnDept addOnDept);
+
+    /**
+     * 新增部门附加
+     *
+     * @param addOnDept 部门附加
+     * @return 结果
+     */
+    public int insertAddOnDept(AddOnDept addOnDept);
+
+    /**
+     * 修改部门附加
+     *
+     * @param addOnDept 部门附加
+     * @return 结果
+     */
+    public int updateAddOnDept(AddOnDept addOnDept);
+
+    /**
+     * 删除部门附加
+     *
+     * @param deptId 部门附加主键
+     * @return 结果
+     */
+    public int deleteAddOnDeptByDeptId(Long deptId);
+
+    /**
+     * 批量删除部门附加
+     *
+     * @param deptIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteAddOnDeptByDeptIds(Long[] deptIds);
+}

+ 61 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/mapper/FaultMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.sim.mapper;
+
+import java.util.List;
+
+import com.ruoyi.sim.domain.Fault;
+
+/**
+ * 故障Mapper接口
+ *
+ * @author tom
+ * @date 2024-12-13
+ */
+public interface FaultMapper {
+    /**
+     * 查询故障
+     *
+     * @param faultId 故障主键
+     * @return 故障
+     */
+    public Fault selectFaultByFaultId(String faultId);
+
+    /**
+     * 查询故障列表
+     *
+     * @param fault 故障
+     * @return 故障集合
+     */
+    public List<Fault> selectFaultList(Fault fault);
+
+    /**
+     * 新增故障
+     *
+     * @param fault 故障
+     * @return 结果
+     */
+    public int insertFault(Fault fault);
+
+    /**
+     * 修改故障
+     *
+     * @param fault 故障
+     * @return 结果
+     */
+    public int updateFault(Fault fault);
+
+    /**
+     * 删除故障
+     *
+     * @param faultId 故障主键
+     * @return 结果
+     */
+    public int deleteFaultByFaultId(String faultId);
+
+    /**
+     * 批量删除故障
+     *
+     * @param faultIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteFaultByFaultIds(String[] faultIds);
+}

+ 61 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/IAddOnDeptService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.sim.service;
+
+import java.util.List;
+
+import com.ruoyi.sim.domain.AddOnDept;
+
+/**
+ * 部门附加Service接口
+ *
+ * @author tom
+ * @date 2024-12-13
+ */
+public interface IAddOnDeptService {
+    /**
+     * 查询部门附加
+     *
+     * @param deptId 部门附加主键
+     * @return 部门附加
+     */
+    public AddOnDept selectAddOnDeptByDeptId(Long deptId);
+
+    /**
+     * 查询部门附加列表
+     *
+     * @param addOnDept 部门附加
+     * @return 部门附加集合
+     */
+    public List<AddOnDept> selectAddOnDeptList(AddOnDept addOnDept);
+
+    /**
+     * 新增部门附加
+     *
+     * @param addOnDept 部门附加
+     * @return 结果
+     */
+    public int insertAddOnDept(AddOnDept addOnDept);
+
+    /**
+     * 修改部门附加
+     *
+     * @param addOnDept 部门附加
+     * @return 结果
+     */
+    public int updateAddOnDept(AddOnDept addOnDept);
+
+    /**
+     * 批量删除部门附加
+     *
+     * @param deptIds 需要删除的部门附加主键集合
+     * @return 结果
+     */
+    public int deleteAddOnDeptByDeptIds(Long[] deptIds);
+
+    /**
+     * 删除部门附加信息
+     *
+     * @param deptId 部门附加主键
+     * @return 结果
+     */
+    public int deleteAddOnDeptByDeptId(Long deptId);
+}

+ 72 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/IFaultService.java

@@ -0,0 +1,72 @@
+package com.ruoyi.sim.service;
+
+import java.util.List;
+
+import com.ruoyi.sim.domain.Fault;
+import com.ruoyi.sim.domain.vo.FaultNode;
+
+/**
+ * 故障Service接口
+ *
+ * @author tom
+ * @date 2024-12-13
+ */
+public interface IFaultService {
+    /**
+     * 查询故障
+     *
+     * @param faultId 故障主键
+     * @return 故障
+     */
+    public Fault selectFaultByFaultId(String faultId);
+
+    /**
+     * 查询故障列表
+     *
+     * @param fault 故障
+     * @return 故障集合
+     */
+    public List<Fault> selectFaultList(Fault fault);
+
+    /**
+     * 新增故障
+     *
+     * @param fault 故障
+     * @return 结果
+     */
+    public int insertFault(Fault fault);
+
+    /**
+     * 修改故障
+     *
+     * @param fault 故障
+     * @return 结果
+     */
+    public int updateFault(Fault fault);
+
+    /**
+     * 批量删除故障
+     *
+     * @param faultIds 需要删除的故障主键集合
+     * @return 结果
+     */
+    public int deleteFaultByFaultIds(String[] faultIds);
+
+    /**
+     * 删除故障信息
+     *
+     * @param faultId 故障主键
+     * @return 结果
+     */
+    public int deleteFaultByFaultId(String faultId);
+
+    // -------------------------------- tom add  --------------------------------
+
+    /**
+     * 查询故障列表tree
+     *
+     * @param fault 故障
+     * @return 故障集合
+     */
+    public List<FaultNode> selectFaultListAllTree(Fault fault);
+}

+ 87 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/AddOnDeptServiceImpl.java

@@ -0,0 +1,87 @@
+package com.ruoyi.sim.service.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.sim.mapper.AddOnDeptMapper;
+import com.ruoyi.sim.domain.AddOnDept;
+import com.ruoyi.sim.service.IAddOnDeptService;
+
+/**
+ * 部门附加Service业务层处理
+ *
+ * @author tom
+ * @date 2024-12-13
+ */
+@Service
+public class AddOnDeptServiceImpl implements IAddOnDeptService {
+    @Autowired
+    private AddOnDeptMapper addOnDeptMapper;
+
+    /**
+     * 查询部门附加
+     *
+     * @param deptId 部门附加主键
+     * @return 部门附加
+     */
+    @Override
+    public AddOnDept selectAddOnDeptByDeptId(Long deptId) {
+        return addOnDeptMapper.selectAddOnDeptByDeptId(deptId);
+    }
+
+    /**
+     * 查询部门附加列表
+     *
+     * @param addOnDept 部门附加
+     * @return 部门附加
+     */
+    @Override
+    public List<AddOnDept> selectAddOnDeptList(AddOnDept addOnDept) {
+        return addOnDeptMapper.selectAddOnDeptList(addOnDept);
+    }
+
+    /**
+     * 新增部门附加
+     *
+     * @param addOnDept 部门附加
+     * @return 结果
+     */
+    @Override
+    public int insertAddOnDept(AddOnDept addOnDept) {
+        return addOnDeptMapper.insertAddOnDept(addOnDept);
+    }
+
+    /**
+     * 修改部门附加
+     *
+     * @param addOnDept 部门附加
+     * @return 结果
+     */
+    @Override
+    public int updateAddOnDept(AddOnDept addOnDept) {
+        return addOnDeptMapper.updateAddOnDept(addOnDept);
+    }
+
+    /**
+     * 批量删除部门附加
+     *
+     * @param deptIds 需要删除的部门附加主键
+     * @return 结果
+     */
+    @Override
+    public int deleteAddOnDeptByDeptIds(Long[] deptIds) {
+        return addOnDeptMapper.deleteAddOnDeptByDeptIds(deptIds);
+    }
+
+    /**
+     * 删除部门附加信息
+     *
+     * @param deptId 部门附加主键
+     * @return 结果
+     */
+    @Override
+    public int deleteAddOnDeptByDeptId(Long deptId) {
+        return addOnDeptMapper.deleteAddOnDeptByDeptId(deptId);
+    }
+}

+ 177 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/FaultServiceImpl.java

@@ -0,0 +1,177 @@
+package com.ruoyi.sim.service.impl;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.sim.domain.vo.FaultNode;
+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.FaultMapper;
+import com.ruoyi.sim.domain.Fault;
+import com.ruoyi.sim.service.IFaultService;
+
+/**
+ * 故障Service业务层处理
+ *
+ * @author tom
+ * @date 2024-12-13
+ */
+@Service
+public class FaultServiceImpl implements IFaultService {
+    @Autowired
+    private FaultMapper faultMapper;
+
+    /**
+     * 查询故障
+     *
+     * @param faultId 故障主键
+     * @return 故障
+     */
+    @Override
+    public Fault selectFaultByFaultId(String faultId) {
+        return faultMapper.selectFaultByFaultId(faultId);
+    }
+
+    /**
+     * 查询故障列表
+     *
+     * @param fault 故障
+     * @return 故障
+     */
+    @Override
+    public List<Fault> selectFaultList(Fault fault) {
+        return faultMapper.selectFaultList(fault);
+    }
+
+    /**
+     * 新增故障
+     *
+     * @param fault 故障
+     * @return 结果
+     */
+    @Override
+    public int insertFault(Fault fault) {
+        fault.setCreateTime(DateUtils.getNowDate());
+        return faultMapper.insertFault(fault);
+    }
+
+    /**
+     * 修改故障
+     *
+     * @param fault 故障
+     * @return 结果
+     */
+    @Override
+    public int updateFault(Fault fault) {
+        fault.setUpdateTime(DateUtils.getNowDate());
+        return faultMapper.updateFault(fault);
+    }
+
+    /**
+     * 批量删除故障
+     *
+     * @param faultIds 需要删除的故障主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFaultByFaultIds(String[] faultIds) {
+        return faultMapper.deleteFaultByFaultIds(faultIds);
+    }
+
+    /**
+     * 删除故障信息
+     *
+     * @param faultId 故障主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFaultByFaultId(String faultId) {
+        return faultMapper.deleteFaultByFaultId(faultId);
+    }
+
+    // -------------------------------- tom add  --------------------------------
+
+    private static final Logger log = LoggerFactory.getLogger(FaultServiceImpl.class);
+
+    /**
+     * 查询故障列表tree
+     *
+     * @param fault 故障
+     * @return 故障
+     */
+    @Override
+    public List<FaultNode> selectFaultListAllTree(Fault fault) {
+        //
+        // fault.getParams().put(TableSupport.PAGE_NUM, 1);
+        // fault.getParams().put(TableSupport.PAGE_SIZE, 100);
+        //
+        List<Fault> list = faultMapper.selectFaultList(fault);
+        log.info("AAAAAAAAAAAAAAAAAAAAAAAAAAAA000000000000");
+        log.info(Objects.requireNonNull(list).toString());
+        log.info(Objects.requireNonNull(fault.getParams()).toString());
+        log.info(Objects.requireNonNull(list.size()).toString());
+
+        List<FaultNode> tempListNode = new ArrayList<>();
+        for (Fault source : list) {
+            FaultNode target = new FaultNode();
+            BeanUtils.copyProperties(source, target);
+            tempListNode.add(target);
+        }
+        log.info(Objects.requireNonNull(tempListNode).toString());
+        List<FaultNode> tree = toTree(tempListNode, ROOT_FAULT_ID);
+        log.info(Objects.requireNonNull(tree).toString());
+        return tree;
+    }
+
+    /**
+     *
+     * @param simType
+     * @return
+     */
+    public boolean checkSimType(String simType) {
+        Set<String> s = new HashSet<>();
+        s.add("0001");
+        s.add("0002");
+        s.add("0003");
+        return s.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) {
+//            if (fn1.getParentFaultId().equals(ROOT_FAULT_ID)) {
+//                tree.add(fn1);
+//            }
+//            for (FaultNode fn2 : list) {
+//                if (fn2.getParentFaultId().equals(fn1.getParentFaultId())) {
+//                    if (fn1.getChildren() == null) {
+//                        fn1.setChildren(new ArrayList<>());
+//                    }
+//                    fn1.getChildren().add(fn2);
+//                }
+//            }
+//        }
+//        return tree;
+//    }
+
+    private static List<FaultNode> toTree(List<FaultNode> list, String parentFaultId) {
+        // todo:sort
+        List<FaultNode> tree = list
+                .stream()
+                .filter(
+                        parent ->
+                                parent.getParentFaultId().equals(parentFaultId))
+                .map(child -> {
+                    child.setChildren(toTree(list, child.getFaultId()));
+                    return child;
+                })
+                .collect(Collectors.toList());
+        return tree;
+    }
+}

+ 17 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/ScheduledTaskService.java

@@ -0,0 +1,17 @@
+package com.ruoyi.sim.service.impl;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * 定时任务Service。
+ */
+@Service
+public class ScheduledTaskService {
+
+    /**
+     * 物理删除ruoyi自带逻辑删除数据。
+     */
+    public void delete() {
+
+    }
+}

+ 44 - 6
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/StudentService.java

@@ -2,17 +2,24 @@ package com.ruoyi.sim.service.impl;
 
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.sim.domain.AddOnDept;
+import com.ruoyi.sim.domain.Major;
+import com.ruoyi.sim.domain.Student;
+import com.ruoyi.sim.service.IAddOnDeptService;
+import com.ruoyi.sim.service.IMajorService;
 import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysDeptService;
 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 javax.validation.Validator;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 @Service
 public class StudentService {
@@ -41,23 +48,54 @@ public class StudentService {
     private ISysDeptService deptService;
 
     @Autowired
+    private IAddOnDeptService addOnDeptService;
+
+    @Autowired
+    private IMajorService majorService;
+
+    @Autowired
     protected Validator validator;
 
     // @DataScope(deptAlias = "d", userAlias = "u")
-    public List<SysUser> selectStudentList() {
+    public List<Student> selectStudentList() {
         SysUser su = new SysUser();
-        List<SysUser> list  = userMapper.selectUserList(su);
-        List<SysUser> list2 = new ArrayList<SysUser>();
-        // todo:
+        List<SysUser> list = userMapper.selectUserList(su);
+        List<Student> list2 = new ArrayList<>();
+        // todo:分页
         for (SysUser sysUser : list) {
             List<SysRole> listR = roleMapper.selectRolesByUserName(sysUser.getUserName());
             for (SysRole sysRole : listR) {
-                if (sysRole.getRoleId() == Consts.ROLE_ID_STUDENT) {
-                    list2.add(sysUser);
+                if (Objects.equals(sysRole.getRoleId(), Consts.ROLE_ID_STUDENT)) {
+                    Student target = new Student();
+                    BeanUtils.copyProperties(sysUser, target);
+                    Major m = getMajorByDeptId(sysUser.getDeptId());
+                    if (Objects.nonNull(m)) {
+                        target.setMajor(m);
+                    }
+                    // final add.
+                    list2.add(target);
                     break;
                 }
             }
         }
         return list2;
     }
+
+
+    public Student selectStudentByUserId(Long userId) {
+        SysUser sysUser = userMapper.selectUserById(userId);
+        // 屏蔽密码
+        sysUser.setPassword("");
+        Student student = new Student();
+        BeanUtils.copyProperties(sysUser, student);
+        student.setMajor(getMajorByDeptId(sysUser.getDeptId()));
+        // logger.info(Objects.requireNonNull(student.toString()));
+        return student;
+    }
+
+    public Major getMajorByDeptId(long deptId) {
+        AddOnDept a = addOnDeptService.selectAddOnDeptByDeptId(deptId);
+        Major m = majorService.selectMajorByMajorId(a.getMajorId());
+        return m;
+    }
 }

+ 61 - 0
ruoyi-sim/src/main/resources/mapper/sim/AddOnDeptMapper.xml

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sim.mapper.AddOnDeptMapper">
+
+    <resultMap type="AddOnDept" id="AddOnDeptResult">
+        <result property="deptId" column="dept_id"/>
+        <result property="majorId" column="major_id"/>
+    </resultMap>
+
+    <sql id="selectAddOnDeptVo">
+        select dept_id, major_id
+        from sim_add_on_dept
+    </sql>
+
+    <select id="selectAddOnDeptList" parameterType="AddOnDept" resultMap="AddOnDeptResult">
+        <include refid="selectAddOnDeptVo"/>
+        <where>
+            <if test="majorId != null ">and major_id = #{majorId}</if>
+        </where>
+    </select>
+
+    <select id="selectAddOnDeptByDeptId" parameterType="Long" resultMap="AddOnDeptResult">
+        <include refid="selectAddOnDeptVo"/>
+        where dept_id = #{deptId}
+    </select>
+
+    <insert id="insertAddOnDept" parameterType="AddOnDept">
+        insert into sim_add_on_dept
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="deptId != null">dept_id,</if>
+            <if test="majorId != null">major_id,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="deptId != null">#{deptId},</if>
+            <if test="majorId != null">#{majorId},</if>
+        </trim>
+    </insert>
+
+    <update id="updateAddOnDept" parameterType="AddOnDept">
+        update sim_add_on_dept
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="majorId != null">major_id = #{majorId},</if>
+        </trim>
+        where dept_id = #{deptId}
+    </update>
+
+    <delete id="deleteAddOnDeptByDeptId" parameterType="Long">
+        delete
+        from sim_add_on_dept
+        where dept_id = #{deptId}
+    </delete>
+
+    <delete id="deleteAddOnDeptByDeptIds" parameterType="String">
+        delete from sim_add_on_dept where dept_id in
+        <foreach item="deptId" collection="array" open="(" separator="," close=")">
+            #{deptId}
+        </foreach>
+    </delete>
+</mapper>

+ 124 - 0
ruoyi-sim/src/main/resources/mapper/sim/FaultMapper.xml

@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sim.mapper.FaultMapper">
+
+    <resultMap type="Fault" id="FaultResult">
+        <result property="faultId" column="fault_id"/>
+        <result property="parentFaultId" column="parent_fault_id"/>
+        <result property="simType" column="sim_type"/>
+        <result property="faultType" column="fault_type"/>
+        <result property="conflictFaultId" column="conflict_fault_id"/>
+        <result property="name" column="name"/>
+        <result property="simMsg" column="sim_msg"/>
+        <result property="orderNum" column="order_num"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="remark" column="remark"/>
+    </resultMap>
+
+    <sql id="selectFaultVo">
+        select fault_id,
+               parent_fault_id,
+               sim_type,
+               fault_type,
+               conflict_fault_id,
+               name,
+               sim_msg,
+               order_num,
+               create_by,
+               create_time,
+               update_by,
+               update_time,
+               remark
+        from sim_fault
+    </sql>
+
+    <select id="selectFaultList" parameterType="Fault" resultMap="FaultResult">
+        <include refid="selectFaultVo"/>
+        <where>
+            <if test="parentFaultId != null  and parentFaultId != ''">and parent_fault_id = #{parentFaultId}</if>
+            <if test="simType != null  and simType != ''">and sim_type = #{simType}</if>
+            <if test="faultType != null  and faultType != ''">and fault_type = #{faultType}</if>
+            <if test="conflictFaultId != null  and conflictFaultId != ''">and conflict_fault_id = #{conflictFaultId}
+            </if>
+            <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if>
+            <if test="simMsg != null  and simMsg != ''">and sim_msg = #{simMsg}</if>
+            <if test="orderNum != null ">and order_num = #{orderNum}</if>
+        </where>
+    </select>
+
+    <select id="selectFaultByFaultId" parameterType="String" resultMap="FaultResult">
+        <include refid="selectFaultVo"/>
+        where fault_id = #{faultId}
+    </select>
+
+    <insert id="insertFault" parameterType="Fault">
+        insert into sim_fault
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="faultId != null">fault_id,</if>
+            <if test="parentFaultId != null and parentFaultId != ''">parent_fault_id,</if>
+            <if test="simType != null and simType != ''">sim_type,</if>
+            <if test="faultType != null">fault_type,</if>
+            <if test="conflictFaultId != null">conflict_fault_id,</if>
+            <if test="name != null">name,</if>
+            <if test="simMsg != null">sim_msg,</if>
+            <if test="orderNum != null">order_num,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="faultId != null">#{faultId},</if>
+            <if test="parentFaultId != null and parentFaultId != ''">#{parentFaultId},</if>
+            <if test="simType != null and simType != ''">#{simType},</if>
+            <if test="faultType != null">#{faultType},</if>
+            <if test="conflictFaultId != null">#{conflictFaultId},</if>
+            <if test="name != null">#{name},</if>
+            <if test="simMsg != null">#{simMsg},</if>
+            <if test="orderNum != null">#{orderNum},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+        </trim>
+    </insert>
+
+    <update id="updateFault" parameterType="Fault">
+        update sim_fault
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="parentFaultId != null and parentFaultId != ''">parent_fault_id = #{parentFaultId},</if>
+            <if test="simType != null and simType != ''">sim_type = #{simType},</if>
+            <if test="faultType != null">fault_type = #{faultType},</if>
+            <if test="conflictFaultId != null">conflict_fault_id = #{conflictFaultId},</if>
+            <if test="name != null">name = #{name},</if>
+            <if test="simMsg != null">sim_msg = #{simMsg},</if>
+            <if test="orderNum != null">order_num = #{orderNum},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where fault_id = #{faultId}
+    </update>
+
+    <delete id="deleteFaultByFaultId" parameterType="String">
+        delete
+        from sim_fault
+        where fault_id = #{faultId}
+    </delete>
+
+    <delete id="deleteFaultByFaultIds" parameterType="String">
+        delete from sim_fault where fault_id in
+        <foreach item="faultId" collection="array" open="(" separator="," close=")">
+            #{faultId}
+        </foreach>
+    </delete>
+</mapper>

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません