Explorar o código

修改提供选择题基础数据。

tom hai 8 meses
pai
achega
453fccdd23
Modificáronse 19 ficheiros con 677 adicións e 187 borrados
  1. 20 0
      ele6-catalyzer-ruoyi-vue/src/main/java/cn/ele6/catalyzer/ruoyi/vue/custom/Ele6RYBaseService.java
  2. 60 4
      ele6-catalyzer-ruoyi-vue/src/main/java/cn/ele6/catalyzer/ruoyi/vue/enhance/TableDataInfo.java
  3. 156 65
      pla-sim/01_SQL/02_table/sim_fault.sql
  4. 6 0
      ruoyi-sim/pom.xml
  5. 33 4
      ruoyi-sim/src/main/java/com/ruoyi/sim/controller/FaultController.java
  6. 26 43
      ruoyi-sim/src/main/java/com/ruoyi/sim/controller/RealExamCompRequestController.java
  7. 73 29
      ruoyi-sim/src/main/java/com/ruoyi/sim/domain/Fault.java
  8. 1 1
      ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/RealExamFaultReportPart1Vo.java
  9. 40 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/RealExamFaultReportPart2Vo.java
  10. 39 0
      ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/RealExamFaultReportPart3Vo.java
  11. 44 5
      ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/StudentRealExamPostVo.java
  12. 2 2
      ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/CommSendService.java
  13. 67 11
      ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/FaultService.java
  14. 0 1
      ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamCollectionService.java
  15. 44 1
      ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamCompRequestService.java
  16. 24 4
      ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamFaultService.java
  17. 15 7
      ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamService.java
  18. 4 4
      ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/TaskService.java
  19. 23 6
      ruoyi-sim/src/main/resources/mapper/sim/FaultMapper.xml

+ 20 - 0
ele6-catalyzer-ruoyi-vue/src/main/java/cn/ele6/catalyzer/ruoyi/vue/custom/Ele6RYBaseService.java

@@ -172,4 +172,24 @@ public abstract class Ele6RYBaseService {
     public String getUsername() {
         return getLoginUser().getUsername();
     }
+
+    /**
+     * enhance
+     *
+     * @param rows
+     * @return
+     */
+    public TableDataInfo<?> tableOk(final List<?> rows) {
+        return TableDataInfo.buildOk(rows);
+    }
+
+    /**
+     * enhance
+     *
+     * @param msg
+     * @return
+     */
+    public TableDataInfo<?> tableError(final String msg) {
+        return TableDataInfo.buildError(msg);
+    }
 }

+ 60 - 4
ele6-catalyzer-ruoyi-vue/src/main/java/cn/ele6/catalyzer/ruoyi/vue/enhance/TableDataInfo.java

@@ -1,24 +1,80 @@
 package cn.ele6.catalyzer.ruoyi.vue.enhance;
 
 import cn.ele6.catalyzer.ruoyi.vue.custom.Ele6RYResponse;
+import com.github.pagehelper.PageInfo;
+import com.ruoyi.common.constant.HttpStatus;
 import org.springframework.beans.BeanUtils;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * 同名类增强改造。
  */
-public class TableDataInfo extends com.ruoyi.common.core.page.TableDataInfo implements Serializable, Ele6RYResponse {
+public class TableDataInfo<T> extends com.ruoyi.common.core.page.TableDataInfo implements Serializable, Ele6RYResponse {
 
+    public static final String MSG_OK = "查询成功";
+    public static final long TOTAL_0 = 0L;
+
+    @SuppressWarnings({"rawtypes", "unchecked"})
+    public static <T> TableDataInfo<T> buildOk(final List<T> rows) {
+        return build(HttpStatus.SUCCESS, MSG_OK, rows, new PageInfo(rows).getTotal());
+    }
+
+    public static <T> TableDataInfo<T> buildError(final String msg) {
+        return build(HttpStatus.ERROR, msg, null, TOTAL_0);
+    }
+
+    public static <T> TableDataInfo<T> build(final int code, final String msg, final List<T> rows, final long total) {
+        TableDataInfo<T> t = new TableDataInfo<>();
+        t
+                .eSetCode(code)
+                .eSetMsg(msg)
+                .eSetRows(rows)
+                .eSetTotal(total);
+        return t;
+    }
+
+    public TableDataInfo<T> eSetCode(final int code) {
+        super.setCode(code);
+        return this;
+    }
+
+    public TableDataInfo<T> eSetMsg(final String msg) {
+        super.setMsg(msg);
+        return this;
+    }
+
+    public TableDataInfo<T> eSetRows(final List<T> rows) {
+        super.setRows(rows);
+        return this;
+    }
+
+    public TableDataInfo<T> eSetTotal(final long total) {
+        super.setTotal(total);
+        return this;
+    }
+
+    /**
+     * convert type.
+     *
+     * @param o
+     * @return
+     */
+    public static TableDataInfo<?> convertOldToNew(com.ruoyi.common.core.page.TableDataInfo o) {
+        TableDataInfo<?> t = new TableDataInfo<>();
+        BeanUtils.copyProperties(o, t);
+        return t;
+    }
 
     /**
-     * copy obj and convert type.
+     * convert type.
      *
      * @param o
      * @return
      */
-    public static TableDataInfo convert(com.ruoyi.common.core.page.TableDataInfo o) {
-        TableDataInfo t = new TableDataInfo();
+    public static com.ruoyi.common.core.page.TableDataInfo convertNewToOld(TableDataInfo<?> o) {
+        com.ruoyi.common.core.page.TableDataInfo t = new com.ruoyi.common.core.page.TableDataInfo();
         BeanUtils.copyProperties(o, t);
         return t;
     }

+ 156 - 65
pla-sim/01_SQL/02_table/sim_fault.sql

@@ -11,7 +11,7 @@
  Target Server Version : 80020 (8.0.20)
  File Encoding         : 65001
 
- Date: 19/12/2024 22:08:21
+ Date: 01/01/2025 18:38:53
 */
 
 SET NAMES utf8mb4;
@@ -24,8 +24,10 @@ 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 '' COMMENT '父故障ID',
+  `ref_type330_fault_id` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '关联的真实的/虚假的故障部位',
+  `ref_type4_fault_id` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '关联的排除方法',
+  `fault_type` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '故障类型:[1]:故障现象,[2]:可能原因,[3]:真实故障部位,[30]:虚假故障部位,[4]:排除方法,[5]:修复结论',
   `sim_type` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模拟器类型',
-  `fault_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '故障类型:\r\n1:故障现象\r\n2:故障现象的可能原因\r\n3:故障部位\r\n4:故障部位的排除方法\r\n5:修复结论',
   `fault_state` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '故障状态\r\n0:启用 \r\n5:禁用',
   `conflict_fault_ids` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '互斥所有故障ID逗号分割',
   `replace_part` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '是否是更换件 1:是 0:不是',
@@ -38,73 +40,162 @@ CREATE TABLE `sim_fault`  (
   `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
+  PRIMARY KEY (`fault_id`) USING BTREE,
+  INDEX `idx_sim_type_fault_type_fault_state`(`sim_type` ASC, `fault_type` ASC, `fault_state` ASC) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'sim-故障表' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of sim_fault
 -- ----------------------------
-INSERT INTO `sim_fault` VALUES ('000100010000', '000000000000', '0001', '1', '0', '', '0', '', '开机无响应', '', 1, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100010001', '000100010000', '0001', '3', '0', '', '1', '电源开关', '1.电源开关', '01', 1, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100010002', '000100010000', '0001', '3', '0', '', '1', 'DC/DC转换芯片', '2.DC/DC转换芯片', '02', 2, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100020000', '000000000000', '0001', '1', '0', '', '0', '', '开机后按抽气开关,微电机不工作', '', 2, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100020003', '000100020000', '0001', '3', '0', '', '1', '微电机', '3.微电机', '03', 3, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100020004', '000100020000', '0001', '3', '0', '', '1', 'Q2', '4.Q2', '04', 4, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100030000', '000000000000', '0001', '1', '0', '', '0', '', '抽气流量不足', '', 3, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100030005', '000100030000', '0001', '3', '0', '', '1', '滤网', '5.滤网', '05', 5, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100030006', '000100030000', '0001', '3', '0', '', '1', '调速电位器', '6.调速电位器', '06', 6, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100040000', '000000000000', '0001', '1', '0', '', '0', '', '开机后按下加热开关,加热灯不亮,也未加热', '', 4, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100040007', '000100040000', '0001', '3', '5', '', '1', '加热指示灯', '7.加热指示灯', '07', 7, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100040008', '000100040000', '0001', '3', '5', '', '1', '热敏开关', '8.热敏开关', '08', 8, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100050000', '000000000000', '0001', '1', '0', '', '0', '', '不能正常工作', '', 5, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100050009', '000100050000', '0001', '3', '5', '', '1', '外壳及零件', '9.外壳及零件', '09', 9, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100060000', '000000000000', '0001', '1', '0', '', '0', '', '电压低', '', 6, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000100060010', '000100060000', '0001', '3', '5', '', '1', '供电模块', '10.供电模块', '0A', 10, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200010000', '000000000000', '0002', '1', NULL, '', '0', '', '仪器无法开机', '', 1, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200010001', '000200010000', '0002', '3', NULL, '', '1', '', '1.薄膜开关FPC排线', '', 1, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200010002', '000200010000', '0002', '3', NULL, '', '1', '', '2.主控板开机电路', '', 2, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200020000', '000000000000', '0002', '1', NULL, '', '0', '', '蜂鸣器自检时,声音异常', '', 2, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200020003', '000200020000', '0002', '3', NULL, '', '0', '', '3.蜂鸣器出声口', '', 3, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200020004', '000200020000', '0002', '3', NULL, '', '0', '', '4.接口接线板', '', 4, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200030000', '000000000000', '0002', '1', NULL, '', '0', '', '仪器进入检测界面后,通入检测剂不报警', '', 3, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200030005', '000200030000', '0002', '3', NULL, '', '0', '', '5.检测剂', '', 5, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200030006', '000200030000', '0002', '3', NULL, '', '0', '', '6.主控板信号采集电路', '', 6, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200040000', '000000000000', '0002', '1', NULL, '', '0', '', '显示屏无显示', '', 4, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200040007', '000200040000', '0002', '3', NULL, '', '0', '', '7.主控板显示屏供电电路', '', 7, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200040008', '000200040000', '0002', '3', NULL, '', '0', '', '8.显示屏', '', 8, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200050000', '000000000000', '0002', '1', NULL, '', '0', '', '长时间不进入“检测中”', '', 5, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200050009', '000200050000', '0002', '3', NULL, '', '0', '', '9.干燥管', '', 9, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200050010', '000200050000', '0002', '3', NULL, '', '0', '', '10.维护管', '', 10, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200060000', '000000000000', '0002', '1', NULL, '', '0', '', '不能正常工作', '', 6, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200060011', '000200060000', '0002', '3', NULL, '', '0', '', '11.外壳及零件', '', 11, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200070000', '000000000000', '0002', '1', NULL, '', '0', '', '电压低', '', 7, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200070012', '000200070000', '0002', '3', NULL, '', '0', '', '12.供电模块', '', 12, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200080000', '000000000000', '0002', '1', NULL, '', '0', '', '无法开机', '', 8, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000200080001', '000200080000', '0002', '3', NULL, '', '0', '', '13.DC/DC', '', 13, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300010000', '000000000000', '0003', '1', NULL, '', '0', '', '仪器无法开机', '', 1, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300010001', '000300010000', '0003', '3', NULL, '', '0', '', '1.FFC排线', '', 1, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300010002', '000300010000', '0003', '3', NULL, '', '0', '', '2.汇总主控板', '', 2, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300020000', '000000000000', '0003', '1', NULL, '', '0', '', '开机后,显示屏无显示', '', 2, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300020003', '000300020000', '0003', '3', NULL, '', '0', '', '3.显控报警板', '', 3, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300020004', '000300020000', '0003', '3', NULL, '', '0', '', '4.显示屏', '', 4, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300030000', '000000000000', '0003', '1', NULL, '', '0', '', '检测状态下模拟剂不报警', '', 3, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300030005', '000300030000', '0003', '3', NULL, '', '0', '', '5.汇总主控板信号采集电路', '', 5, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300030006', '000300030000', '0003', '3', NULL, '', '0', '', '6.检测剂', '', 6, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300040000', '000000000000', '0003', '1', NULL, '', '0', '', '长时间不能进入检测状态', '', 4, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300040007', '000300040000', '0003', '3', NULL, '', '0', '', '7.干燥管', '', 7, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300040008', '000300040000', '0003', '3', NULL, '', '0', '', '8.维护管', '', 8, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300050000', '000000000000', '0003', '1', NULL, '', '0', '', '固液检测/气体检测模式切换失败', '', 5, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300050009', '000300050000', '0003', '3', NULL, '', '0', '', '9.固液检测单元与主控板连接线', '', 9, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300050010', '000300050000', '0003', '3', NULL, '', '0', '', '10.汇总主控板固液通信电路', '', 10, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300050011', '000300050000', '0003', '3', NULL, '', '0', '', '11.切换按键', '', 11, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300060000', '000000000000', '0003', '1', NULL, '', '0', '', '有毒有害气体检测模块不报警', '', 6, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300060012', '000300060000', '0003', '3', NULL, '', '0', '', '12.高压驱动板与汇总主控板连接线', '', 12, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300060013', '000300060000', '0003', '3', NULL, '', '0', '', '13.汇总主控板毒害模块通信电路', '', 13, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300070000', '000000000000', '0003', '1', NULL, '', '0', '', '不能正常工作', '', 7, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300070014', '000300070000', '0003', '3', NULL, '', '0', '', '14.外壳及零件', '', 14, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300080000', '000000000000', '0003', '1', NULL, '', '0', '', '电压低', '', 8, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300080015', '000300080000', '0003', '3', NULL, '', '0', '', '15.供电模块', '', 15, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300090000', '000000000000', '0003', '1', NULL, '', '0', '', '无法开机', '', 9, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_fault` VALUES ('000300090016', '000300090000', '0003', '3', NULL, '', '0', '', '16.DC/DC', '', 16, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100010000', '', '', '', '1', '0001', '0', '', '0', '', '开机无响应', '', 1, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100010001', '000100010000', '', '', '3', '0001', '0', '', '1', '电源开关', '电源开关', '01', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100010002', '000100010000', '', '', '3', '0001', '0', '', '1', 'DC/DC转换芯片', 'DC/DC转换芯片', '02', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100010003', '000100010000', '', '', '30', '0001', '0', '', '0', '', '电池', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100010004', '000100010000', '', '', '30', '0001', '0', '', '0', '', '电池座组件', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010001AA01', '000100010000', '000100010003', '00010001BB01', '2', '0001', '0', '', '0', '', '电池电量不足或损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010001AA02', '000100010000', '000100010004', '00010001BB02', '2', '0001', '0', '', '0', '', '电池座组件损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010001AA03', '000100010000', '000100010004', '00010001BB03', '2', '0001', '0', '', '0', '', '电池座组件插头未插好', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010001AA04', '000100010000', '000100010002', '00010001BB04', '2', '0001', '0', '', '0', '', '电路板DC/DC芯片损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010001AA05', '000100010000', '000100010001', '00010001BB05', '2', '0001', '0', '', '0', '', '电源开关组件损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010001AA06', '000100010000', '000100010004', '00010001BB06', '2', '0001', '0', '', '0', '', '电池座组件未插好', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010001BB01', '000100010000', '000100010003', '', '4', '0001', '0', '', '0', '', '更换电池', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010001BB02', '000100010000', '000100010004', '', '4', '0001', '0', '', '0', '', '更换电池座组件', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010001BB03', '000100010000', '000100010004', '', '4', '0001', '0', '', '0', '', '重新插拔电池座组件插头', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010001BB04', '000100010000', '000100010002', '', '4', '0001', '0', '', '0', '', '更换DC/DC芯片', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010001BB05', '000100010000', '000100010001', '', '4', '0001', '0', '', '0', '', '更换电源开关组件', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010001BB06', '000100010000', '000100010004', '', '4', '0001', '0', '', '0', '', '重新插拔电池座组件', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100020000', '', '', '', '1', '0001', '0', '', '0', '', '开机后按抽气开关,微电机不工作', '', 2, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100020003', '000100020000', '', '', '3', '0001', '0', '', '1', '微电机', '微电机', '03', 3, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100020004', '000100020000', '', '', '3', '0001', '0', '', '1', 'Q2', 'Q2', '04', 4, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100020005', '000100020000', '', '', '30', '0001', '0', '', '0', '', '抽气开关组件', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100020006', '000100020000', '', '', '30', '0001', '0', '', '0', '', '气泵电机', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100020007', '000100020000', '', '', '30', '0001', '0', '', '0', '', '气泵电机连线', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010002AA01', '000100020000', '', '00010002BB01', '2', '0001', '0', '', '0', '', '抽气开关组件损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010002AA02', '000100020000', '', '00010002BB02', '2', '0001', '0', '', '0', '', '抽气开关组件插头未插好', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010002AA03', '000100020000', '', '00010002BB03', '2', '0001', '0', '', '0', '', '气泵电机损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010002AA04', '000100020000', '', '00010002BB04', '2', '0001', '0', '', '0', '', '气泵电机连线插头与主电路板未插好', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010002AA05', '000100020000', '', '00010002BB04', '2', '0001', '0', '', '0', '', '气泵电机连线断路', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010002AA06', '000100020000', '', '00010002BB06', '2', '0001', '0', '', '0', '', '上场效应管Q2或其它元器件损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010002BB01', '000100020000', '', '', '4', '0001', '0', '', '0', '', '更换抽气开关组件', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010002BB02', '000100020000', '', '', '4', '0001', '0', '', '0', '', '重新插拔抽气开关组件插头', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010002BB03', '000100020000', '', '', '4', '0001', '0', '', '0', '', '更换气泵电机', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010002BB04', '000100020000', '', '', '4', '0001', '0', '', '0', '', '重新插拔气泵电机连线插头', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010002BB05', '000100020000', '', '', '4', '0001', '0', '', '0', '', '更换气泵电机连线', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010002BB06', '000100020000', '', '', '4', '0001', '0', '', '0', '', '更换场效应管Q2', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100030000', '', '', '', '1', '0001', '0', '', '0', '', '抽气流量不足', '', 3, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100030005', '000100030000', '', '', '3', '0001', '0', '', '1', '滤网', '滤网', '05', 5, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100030006', '000100030000', '', '', '3', '0001', '0', '', '1', '调速电位器', '调速电位器', '06', 6, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100030007', '000100030000', '', '', '30', '0001', '0', '', '0', '', '橡胶插座', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100030008', '000100030000', '', '', '30', '0001', '0', '', '0', '', '抽气开关组件', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100030009', '000100030000', '', '', '30', '0001', '0', '', '0', '', '进气管', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100030010', '000100030000', '', '', '30', '0001', '0', '', '0', '', '胶碗', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100030011', '000100030000', '', '', '30', '0001', '0', '', '0', '', '微电机', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100030012', '000100030000', '', '', '30', '0001', '0', '', '0', '', '活门片', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100030013', '000100030000', '', '', '30', '0001', '0', '', '0', '', '场效应管Q2', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100030014', '000100030000', '', '', '30', '0001', '0', '', '0', '', '电机与抽气泵偏心轴距', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003AA01', '000100030000', '000100030006', '00010003BB01', '2', '0001', '0', '', '0', '', '电位器调的太低', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003AA02', '000100030000', '', '00010003BB02', '2', '0001', '0', '', '0', '', '橡胶插座破损', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003AA03', '000100030000', '', '00010003BB03', '2', '0001', '0', '', '0', '', '抽气开关损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003AA04', '000100030000', '', '00010003BB04', '2', '0001', '0', '', '0', '', '滤网堵塞', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003AA05', '000100030000', '', '00010003BB05', '2', '0001', '0', '', '0', '', '进气管连接脱落或破损', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003AA06', '000100030000', '', '00010003BB06', '2', '0001', '0', '', '0', '', '胶碗破损或胶碗固定螺丝松动', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003AA07', '000100030000', '', '00010003BB07', '2', '0001', '0', '', '0', '', '微电机损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003AA08', '000100030000', '', '00010003BB08', '2', '0001', '0', '', '0', '', '活门片破损或缺失', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003AA09', '000100030000', '', '00010003BB09', '2', '0001', '0', '', '0', '', '电路板上控制微电机的场效应管Q2损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003AA10', '000100030000', '', '00010003BB10', '2', '0001', '0', '', '0', '', '电机与抽气泵偏心轴距离不恰当', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003BB01', '000100030000', '', '', '4', '0001', '0', '', '0', '', '调大电位器', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003BB02', '000100030000', '', '', '4', '0001', '0', '', '0', '', '更换橡胶插座', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003BB03', '000100030000', '', '', '4', '0001', '0', '', '0', '', '更换抽气开关组件', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003BB04', '000100030000', '', '', '4', '0001', '0', '', '0', '', '清理滤网', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003BB05', '000100030000', '', '', '4', '0001', '0', '', '0', '', '更换进气管', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003BB06', '000100030000', '', '', '4', '0001', '0', '', '0', '', '更换胶碗', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003BB07', '000100030000', '', '', '4', '0001', '0', '', '0', '', '更换微电机', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003BB08', '000100030000', '', '', '4', '0001', '0', '', '0', '', '更换活门片', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003BB09', '000100030000', '', '', '4', '0001', '0', '', '0', '', '更换场效应管Q2', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010003BB10', '000100030000', '', '', '4', '0001', '0', '', '0', '', '调整电机与抽气泵偏心轴距离', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100040000', '', '', '', '1', '0001', '0', '', '0', '', '开机后按下加热开关,加热灯不亮,也未加热', '', 4, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100040007', '000100040000', '', '', '3', '0001', '0', '', '1', '加热指示灯', '加热指示灯', '07', 7, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100040008', '000100040000', '', '', '3', '0001', '0', '', '1', '热敏开关', '热敏开关', '08', 8, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100040009', '000100040000', '', '', '', '', '0', '', '0', '', '加热开关组件', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100040010', '000100040000', '', '', '', '', '0', '', '0', '', '四线束', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100040011', '000100040000', '', '', '', '', '0', '', '0', '', '头罩内快插接头', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100040012', '000100040000', '', '', '', '', '0', '', '0', '', '加热线圈', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100040013', '000100040000', '', '', '', '', '0', '', '0', '', '场效应管Q3', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004AA01', '000100040000', '', '00010004BB01', '2', '0001', '0', '', '0', '', '加热开关组件损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004AA02', '000100040000', '', '00010004BB02', '2', '0001', '0', '', '0', '', '加热开关组件未插好', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004AA03', '000100040000', '', '00010004BB03', '2', '0001', '0', '', '0', '', '四线束插头松脱', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004AA04', '000100040000', '', '00010004BB04', '2', '0001', '0', '', '0', '', '四线束连线断路', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004AA05', '000100040000', '', '00010004BB05', '2', '0001', '0', '', '0', '', '头罩内快插接头松脱', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004AA06', '000100040000', '', '00010004BB06', '2', '0001', '0', '', '0', '', '热敏开关损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004AA07', '000100040000', '', '00010004BB07', '2', '0001', '0', '', '0', '', '加热线圈损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004AA08', '000100040000', '', '00010004BB08', '2', '0001', '0', '', '0', '', '加热线圈焊接导线脱焊', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004AA09', '000100040000', '', '00010004BB09', '2', '0001', '0', '', '0', '', '场效应管Q3或周边相关元器件损坏或脱焊', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004AA10', '000100040000', '', '00010004BB10', '2', '0001', '0', '', '0', '', '加热指示灯损坏', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004BB01', '000100040000', '', '', '4', '0001', '0', '', '0', '', '更换加热开关组件', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004BB02', '000100040000', '', '', '4', '0001', '0', '', '0', '', '重新插拔加热开关组件', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004BB03', '000100040000', '', '', '4', '0001', '0', '', '0', '', '重新插拔四线束插头', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004BB04', '000100040000', '', '', '4', '0001', '0', '', '0', '', '更换四线束连线', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004BB05', '000100040000', '', '', '4', '0001', '0', '', '0', '', '重新插拔头罩内快插接头', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004BB06', '000100040000', '', '', '4', '0001', '0', '', '0', '', '更换热敏开关', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004BB07', '000100040000', '', '', '4', '0001', '0', '', '0', '', '更换加热线圈', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004BB08', '000100040000', '', '', '4', '0001', '0', '', '0', '', '重新焊接加热线圈焊接导线', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004BB09', '000100040000', '', '', '4', '0001', '0', '', '0', '', '更换场效应管Q3', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('00010004BB10', '000100040000', '', '', '4', '0001', '0', '', '0', '', '更换加热指示灯', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100050000', '', '', '', '1', '0001', '0', '', '0', '', '不能正常工作', '', 5, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100050009', '000100050000', '', '', '3', '0001', '0', '', '1', '外壳及零件', '外壳及零件', '09', 9, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100060000', '', '', '', '1', '0001', '0', '', '0', '', '电压低', '', 6, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000100060010', '000100060000', '', '', '3', '0001', '0', '', '1', '供电模块', '10.供电模块', '0A', 10, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('0001FFFF0001', '', '', '', '5', '0001', '0', '', '0', '', 'type0001修复结论1', '', 1, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('0001FFFF0002', '', '', '', '5', '0001', '0', '', '0', '', 'type0001修复结论2', '', 2, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('0001FFFF0003', '', '', '', '5', '0001', '0', '', '0', '', 'type0001修复结论3', '', 3, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('0001FFFF0004', '', '', '', '5', '0001', '0', '', '0', '', 'type0001修复结论4', '', 4, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200010000', '', '', '', '1', '0002', '0', '', '0', '', '仪器无法开机', '', 1, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200010001', '000200010000', '', '', '3', '0002', '0', '', '1', '薄膜开关FPC排线', '1.薄膜开关FPC排线', '01', 1, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200010002', '000200010000', '', '', '3', '0002', '0', '', '1', '主控板开机电路', '2.主控板开机电路', '02', 2, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200020000', '', '', '', '1', '0002', '0', '', '0', '', '蜂鸣器自检时,声音异常', '', 2, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200020003', '000200020000', '', '', '3', '0002', '0', '', '1', '蜂鸣器出声口', '3.蜂鸣器出声口', '03', 3, NULL, NULL, NULL, NULL, '没有替换件');
+INSERT INTO `sim_fault` VALUES ('000200020004', '000200020000', '', '', '3', '0002', '0', '', '1', '接口接线板', '4.接口接线板', '04', 4, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200030000', '', '', '', '1', '0002', '0', '', '0', '', '仪器进入检测界面后,通入检测剂不报警', '', 3, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200030005', '000200030000', '', '', '3', '0002', '0', '', '1', '检测剂', '5.检测剂', '05', 5, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200030006', '000200030000', '', '', '3', '0002', '0', '', '1', '主控板信号采集电路', '6.主控板信号采集电路', '06', 6, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200040000', '', '', '', '1', '0002', '0', '', '0', '', '显示屏无显示', '', 4, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200040007', '000200040000', '', '', '3', '0002', '0', '', '1', '主控板显示屏供电电路', '7.主控板显示屏供电电路', '07', 7, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200040008', '000200040000', '', '', '3', '0002', '0', '', '1', '显示屏', '8.显示屏', '08', 8, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200050000', '', '', '', '1', '0002', '0', '', '0', '', '长时间不进入“检测中”', '', 5, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200050009', '000200050000', '', '', '3', '0002', '0', '', '1', '干燥管', '9.干燥管', '09', 9, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200050010', '000200050000', '', '', '3', '0002', '0', '', '1', '维护管', '10.维护管', '0A', 10, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200060000', '', '', '', '1', '0002', '0', '', '0', '', '不能正常工作', '', 6, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200060011', '000200060000', '', '', '3', '0002', '0', '', '1', '外壳及零件', '11.外壳及零件', '0B', 11, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200070000', '', '', '', '1', '0002', '0', '', '0', '', '电压低', '', 7, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000200070012', '000200070000', '', '', '3', '0002', '0', '', '1', '供电模块', '12.供电模块', '0C', 12, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('0002FFFF0001', '', '', '', '', '', '0', '', '0', '', 'type0002修复结论1', '', 1, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('0002FFFF0002', '', '', '', '', '', '0', '', '0', '', 'type0002修复结论2', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('0002FFFF0003', '', '', '', '', '', '0', '', '0', '', 'type0002修复结论3', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('0002FFFF0004', '', '', '', '', '', '0', '', '0', '', 'type0002修复结论4', '', 0, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300010000', '', '', '', '1', '0003', '0', '', '0', '', '仪器无法开机', '', 1, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300010001', '000300010000', '', '', '3', '0003', '0', '', '0', '', '1.FFC排线', '01', 1, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300010002', '000300010000', '', '', '3', '0003', '0', '', '0', '', '2.汇总主控板', '02', 2, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300020000', '', '', '', '1', '0003', '0', '', '0', '', '开机后,显示屏无显示', '', 2, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300020003', '000300020000', '', '', '3', '0003', '0', '', '0', '', '3.显控报警板', '03', 3, NULL, NULL, NULL, NULL, '还需要验证。');
+INSERT INTO `sim_fault` VALUES ('000300020004', '000300020000', '', '', '3', '0003', '0', '', '0', '', '4.显示屏', '04', 4, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300030000', '', '', '', '1', '0003', '0', '', '0', '', '检测状态下模拟剂不报警', '', 3, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300030005', '000300030000', '', '', '3', '0003', '0', '', '0', '', '5.汇总主控板信号采集电路', '05', 5, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300030006', '000300030000', '', '', '3', '0003', '0', '', '0', '', '6.检测剂', '06', 6, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300040000', '', '', '', '1', '0003', '0', '', '0', '', '长时间不能进入检测状态', '', 4, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300040007', '000300040000', '', '', '3', '0003', '0', '', '0', '', '7.干燥管', '07', 7, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300040008', '000300040000', '', '', '3', '0003', '0', '', '0', '', '8.维护管', '08', 8, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300050000', '', '', '', '1', '0003', '0', '', '0', '', '固液检测/气体检测模式切换失败', '', 5, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300050009', '000300050000', '', '', '3', '0003', '0', '', '0', '', '9.固液检测单元与主控板连接线', '09', 9, NULL, NULL, NULL, NULL, '还需要验证。');
+INSERT INTO `sim_fault` VALUES ('000300050010', '000300050000', '', '', '3', '0003', '0', '', '0', '', '10.汇总主控板固液通信电路', '0A', 10, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300050011', '000300050000', '', '', '3', '0003', '0', '', '0', '', '11.切换按键', '0B', 11, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300060000', '', '', '', '1', '0003', '0', '', '0', '', '有毒有害气体检测模块不报警', '', 6, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300060012', '000300060000', '', '', '3', '0003', '0', '', '0', '', '12.高压驱动板与汇总主控板连接线', '0C', 12, NULL, NULL, NULL, NULL, '还需要验证。');
+INSERT INTO `sim_fault` VALUES ('000300060013', '000300060000', '', '', '3', '0003', '0', '', '0', '', '13.汇总主控板毒害模块通信电路', '0D', 13, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300070000', '', '', '', '1', '0003', '0', '', '0', '', '不能正常工作', '', 7, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300070014', '000300070000', '', '', '3', '0003', '0', '', '0', '', '14.外壳及零件', '0E', 14, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300080000', '', '', '', '1', '0003', '0', '', '0', '', '电压低', '', 8, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300080015', '000300080000', '', '', '3', '0003', '0', '', '0', '', '15.供电模块', '0F', 15, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300090000', '', '', '', '1', '0003', '5', '', '0', '', '无法开机', '', 9, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_fault` VALUES ('000300090016', '000300090000', '', '', '3', '0003', '5', '', '0', '', '16.DC/DC', '', 16, NULL, NULL, NULL, NULL, NULL);
 
 SET FOREIGN_KEY_CHECKS = 1;

+ 6 - 0
ruoyi-sim/pom.xml

@@ -45,6 +45,12 @@
             <artifactId>hutool-all</artifactId>
             <version>5.8.21</version>
         </dependency>
+
+        <dependency>
+            <groupId>com.github.jsonzou</groupId>
+            <artifactId>jmockdata</artifactId>
+            <version>4.3.0</version>
+        </dependency>
     </dependencies>
 
     <properties>

+ 33 - 4
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/FaultController.java

@@ -97,12 +97,41 @@ public class FaultController extends BaseController {
     }
 
     // -------------------------------- tom add  --------------------------------
-    private static final Logger logger = LoggerFactory.getLogger(FaultController.class);
+    private static final Logger l = LoggerFactory.getLogger(FaultController.class);
 
-    // @PreAuthorize("@ss.hasPermi('sim:fault:listAllTreeViaSimType')")
     @GetMapping("/listAllTreeViaSimType/{simType}")
-    @ApiOperation("通过模拟器类型,查询故障列表。")
+    @ApiOperation("通过模拟器类型,[查询故障]列表。tree形式。")
     public AjaxResult listAllTreeViaSimType(@PathVariable(value = "simType") String simType) {
-        return faultService.listAllARTreeStyleBySimType(simType);
+        return faultService.listAllTreeStyleBySimType(simType);
+    }
+
+    @GetMapping("/listTypeGZBW/{simType}")
+    @ApiOperation("list某模拟器型号,所有[故障部位]基础数据。")
+    public AjaxResult listType3and30(@PathVariable(value = "simType") String simType) {
+        return faultService.listType3and30(simType);
+    }
+
+    @GetMapping("/listTypeGZXX/{simType}")
+    @ApiOperation("list某模拟器型号,所有[故障现象]基础数据。")
+    public AjaxResult listType1(@PathVariable(value = "simType") String simType) {
+        return faultService.listEnableByType(simType, Fault.Type.GZXX);
+    }
+
+    @GetMapping("/listTypeKNYY/{simType}")
+    @ApiOperation("list某模拟器型号,所有[可能原因]基础数据。")
+    public AjaxResult listType2(@PathVariable(value = "simType") String simType) {
+        return faultService.listEnableByType(simType, Fault.Type.KNYY);
+    }
+
+    @GetMapping("/listTypePCFF/{simType}")
+    @ApiOperation("list某模拟器型号,所有[排除方法]基础数据。")
+    public AjaxResult listType4(@PathVariable(value = "simType") String simType) {
+        return faultService.listEnableByType(simType, Fault.Type.PCFF);
+    }
+
+    @GetMapping("/listTypeXFJL/{simType}")
+    @ApiOperation("list某模拟器型号,所有[修复结论]基础数据。")
+    public AjaxResult listType5(@PathVariable(value = "simType") String simType) {
+        return faultService.listEnableByType(simType, Fault.Type.XFJL);
     }
 }

+ 26 - 43
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/RealExamCompRequestController.java

@@ -1,10 +1,8 @@
 package com.ruoyi.sim.controller;
 
 import java.util.List;
-import javax.servlet.http.HttpServletResponse;
 
 import com.ruoyi.sim.service.impl.RealExamCompRequestService;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -14,12 +12,9 @@ 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.RealExamCompRequest;
-import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
 
 /**
@@ -35,64 +30,52 @@ public class RealExamCompRequestController extends BaseController {
     private RealExamCompRequestService realExamCompRequestService;
 
     /**
-     * 查询考试更换件关联列表
+     * [学员]查询考试更换件列表
      */
-    @PreAuthorize("@ss.hasPermi('sim:real-exam-comp-request:list')")
-    @GetMapping("/list")
-    public TableDataInfo list(RealExamCompRequest realExamCompRequest) {
-        startPage();
-        List<RealExamCompRequest> list = realExamCompRequestService.selectRealExamCompRequestList(realExamCompRequest);
-        return getDataTable(list);
+    @GetMapping("/student/list/{examId}")
+    public TableDataInfo listByStudent(Long examId) {
+        return realExamCompRequestService.listByStudent(examId);
     }
 
     /**
-     * 导出考试更换件关联列表
+     * [教师]查询考试更换件列表
      */
-    @PreAuthorize("@ss.hasPermi('sim:real-exam-comp-request:export')")
-    @Log(title = "考试更换件关联", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, RealExamCompRequest realExamCompRequest) {
-        List<RealExamCompRequest> list = realExamCompRequestService.selectRealExamCompRequestList(realExamCompRequest);
-        ExcelUtil<RealExamCompRequest> util = new ExcelUtil<RealExamCompRequest>(RealExamCompRequest.class);
-        util.exportExcel(response, list, "考试更换件关联数据");
+    @GetMapping("/teacher/list/{examCollectionId}")
+    public TableDataInfo listByTeacher(Long examCollectionId) {
+        startPage();
+        List<RealExamCompRequest> list = realExamCompRequestService.listByTeacher(examCollectionId);
+        return getDataTable(list);
     }
 
     /**
-     * 获取考试更换件关联详细信息
+     * [学生]新增考试更换件
      */
-    @PreAuthorize("@ss.hasPermi('sim:real-exam-comp-request:query')")
-    @GetMapping(value = "/{relId}")
-    public AjaxResult getInfo(@PathVariable("relId") Long relId) {
-        return success(realExamCompRequestService.selectRealExamCompRequestByRelId(relId));
+    @PostMapping("/student")
+    public AjaxResult addByStudent(@RequestBody RealExamCompRequest realExamCompRequest) {
+        return realExamCompRequestService.addByStudent(realExamCompRequest);
     }
 
     /**
-     * 新增考试更换件关联
+     * [学生]删除考试更换件
      */
-    @PreAuthorize("@ss.hasPermi('sim:real-exam-comp-request:add')")
-    @Log(title = "考试更换件关联", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@RequestBody RealExamCompRequest realExamCompRequest) {
-        return toAjax(realExamCompRequestService.insertRealExamCompRequest(realExamCompRequest));
+    @DeleteMapping("/student/{relIds}")
+    public AjaxResult removeByStudent(@PathVariable Long[] relIds) {
+        return realExamCompRequestService.deleteByStudent(relIds);
     }
 
     /**
-     * 修改考试更换件关联
+     * [教师]已送考试更换件
      */
-    @PreAuthorize("@ss.hasPermi('sim:real-exam-comp-request:edit')")
-    @Log(title = "考试更换件关联", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@RequestBody RealExamCompRequest realExamCompRequest) {
-        return toAjax(realExamCompRequestService.updateRealExamCompRequest(realExamCompRequest));
+    @PutMapping("/teacher/sended/{relIds}")
+    public AjaxResult updateSended(@PathVariable Long[] relIds) {
+        return realExamCompRequestService.updateSendedByTeacher(relIds);
     }
 
     /**
-     * 删除考试更换件关联
+     * [教师]驳回考试更换件
      */
-    @PreAuthorize("@ss.hasPermi('sim:real-exam-comp-request:remove')")
-    @Log(title = "考试更换件关联", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{relIds}")
-    public AjaxResult remove(@PathVariable Long[] relIds) {
-        return toAjax(realExamCompRequestService.deleteRealExamCompRequestByRelIds(relIds));
+    @PutMapping("/teacher/turndown/{relIds}")
+    public AjaxResult updateTurnDown(@PathVariable Long[] relIds) {
+        return realExamCompRequestService.updateTurnDownByTeacher(relIds);
     }
 }

+ 73 - 29
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/Fault.java

@@ -12,10 +12,9 @@ import com.ruoyi.common.core.domain.BaseEntity;
  * 故障对象 sim_fault
  *
  * @author tom
- * @date 2024-12-15
+ * @date 2025-01-02
  */
 public class Fault extends BaseEntity implements Comparable<Fault> {
-
     private static final long serialVersionUID = 1L;
 
     /**
@@ -30,28 +29,33 @@ public class Fault extends BaseEntity implements Comparable<Fault> {
     private String parentFaultId;
 
     /**
-     * 模拟器类型
+     * 关联的真实的/虚假的故障部位
      */
-    @Excel(name = "模拟器类型")
-    private String simType;
+    @Excel(name = "关联的真实的/虚假的故障部位")
+    private String refType330FaultId;
 
     /**
-     * 故障类型:
-     * 1:故障现象
-     * 2:故障现象的可能原因
-     * 3:故障部位
-     * 4:故障部位的排除方法
-     * 5:修复结论
+     * 关联的排除方法
      */
-    @Excel(name = "故障类型")
+    @Excel(name = "关联的排除方法")
+    private String refType4FaultId;
+
+    /**
+     * 故障类型:[1]:故障现象,[2]:可能原因,[3]:真实故障部位,[30]:虚假故障部位,[4]:排除方法,[5]:修复结论
+     */
+    @Excel(name = "故障类型:[1]:故障现象,[2]:可能原因,[3]:真实故障部位,[30]:虚假故障部位,[4]:排除方法,[5]:修复结论")
     private String faultType;
 
     /**
-     * 故障状态
-     * 0:启用
-     * 5:禁用
+     * 模拟器类型
      */
-    @Excel(name = "故障状态")
+    @Excel(name = "模拟器类型")
+    private String simType;
+
+    /**
+     * 故障状态:[0]:启用,[5]:禁用
+     */
+    @Excel(name = "故障状态:[0]:启用,[5]:禁用")
     private String faultState;
 
     /**
@@ -61,9 +65,9 @@ public class Fault extends BaseEntity implements Comparable<Fault> {
     private String conflictFaultIds;
 
     /**
-     * 是否是更换件 1:是 0:不是
+     * 是否是更换件:[1]:是,[0]:不是
      */
-    @Excel(name = "是否是更换件 1:是 0:不是")
+    @Excel(name = "是否是更换件:[1]:是,[0]:不是")
     private String replacePart;
 
     /**
@@ -106,12 +110,20 @@ public class Fault extends BaseEntity implements Comparable<Fault> {
         return parentFaultId;
     }
 
-    public void setSimType(String simType) {
-        this.simType = simType;
+    public void setRefType330FaultId(String refType330FaultId) {
+        this.refType330FaultId = refType330FaultId;
     }
 
-    public String getSimType() {
-        return simType;
+    public String getRefType330FaultId() {
+        return refType330FaultId;
+    }
+
+    public void setRefType4FaultId(String refType4FaultId) {
+        this.refType4FaultId = refType4FaultId;
+    }
+
+    public String getRefType4FaultId() {
+        return refType4FaultId;
     }
 
     public void setFaultType(String faultType) {
@@ -122,6 +134,14 @@ public class Fault extends BaseEntity implements Comparable<Fault> {
         return faultType;
     }
 
+    public void setSimType(String simType) {
+        this.simType = simType;
+    }
+
+    public String getSimType() {
+        return simType;
+    }
+
     public void setFaultState(String faultState) {
         this.faultState = faultState;
     }
@@ -183,8 +203,10 @@ public class Fault extends BaseEntity implements Comparable<Fault> {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                 .append("faultId", getFaultId())
                 .append("parentFaultId", getParentFaultId())
-                .append("simType", getSimType())
+                .append("refType330FaultId", getRefType330FaultId())
+                .append("refType4FaultId", getRefType4FaultId())
                 .append("faultType", getFaultType())
+                .append("simType", getSimType())
                 .append("faultState", getFaultState())
                 .append("conflictFaultIds", getConflictFaultIds())
                 .append("replacePart", getReplacePart())
@@ -227,11 +249,30 @@ public class Fault extends BaseEntity implements Comparable<Fault> {
     }
 
     public interface Type {
-        String TYPE_GZXX = "1";
-        String TYPE_2 = "2";
-        String TYPE_GZBW = "3";
-        String TYPE_4 = "4";
-        String TYPE_5 = "5";
+        /**
+         * 故障现象
+         */
+        String GZXX = "1";
+        /**
+         * 可能原因
+         */
+        String KNYY = "2";
+        /**
+         * 真实故障部位
+         */
+        String REAL_GZBW = "3";
+        /**
+         * 虚假故障部位
+         */
+        String FAKE_GZBW = "30";
+        /**
+         * 排除方法
+         */
+        String PCFF = "4";
+        /**
+         * 修复结论
+         */
+        String XFJL = "5";
     }
 
     public interface State {
@@ -239,5 +280,8 @@ public class Fault extends BaseEntity implements Comparable<Fault> {
         String DISABLE = "5";
     }
 
-    public static String ROOT_FAULT_ID = "000000000000";
+    /**
+     * "" 空字符串。
+     */
+    public static String ROOT_FAULT_ID = "";
 }

+ 1 - 1
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/RealExamFaultVo.java → ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/RealExamFaultReportPart1Vo.java

@@ -3,7 +3,7 @@ package com.ruoyi.sim.domain.vo;
 import com.ruoyi.sim.domain.Fault;
 import com.ruoyi.sim.domain.RealExamFault;
 
-public class RealExamFaultVo extends RealExamFault {
+public class RealExamFaultReportPart1Vo extends RealExamFault {
 
     private boolean answerRight = false;
 

+ 40 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/RealExamFaultReportPart2Vo.java

@@ -0,0 +1,40 @@
+package com.ruoyi.sim.domain.vo;
+
+import com.ruoyi.sim.domain.Fault;
+
+import java.util.List;
+
+public class RealExamFaultReportPart2Vo {
+
+    private String faultType;
+    /**
+     * 合计扣分。
+     */
+    private int totalMinus;
+
+    private List<Fault> fList;
+
+    public String getFaultType() {
+        return faultType;
+    }
+
+    public void setFaultType(String faultType) {
+        this.faultType = faultType;
+    }
+
+    public int getTotalMinus() {
+        return totalMinus;
+    }
+
+    public void setTotalMinus(int totalMinus) {
+        this.totalMinus = totalMinus;
+    }
+
+    public List<Fault> getfList() {
+        return fList;
+    }
+
+    public void setfList(List<Fault> fList) {
+        this.fList = fList;
+    }
+}

+ 39 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/RealExamFaultReportPart3Vo.java

@@ -0,0 +1,39 @@
+package com.ruoyi.sim.domain.vo;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+public class RealExamFaultReportPart3Vo {
+
+    /**
+     * 合计扣分。
+     */
+    private int totalMinus;
+    /**
+     * 超时时间(分钟)
+     */
+    private int timeoutMinute;
+
+    public int getTotalMinus() {
+        return totalMinus;
+    }
+
+    public void setTotalMinus(int totalMinus) {
+        this.totalMinus = totalMinus;
+    }
+
+    public int getTimeoutMinute() {
+        return timeoutMinute;
+    }
+
+    public void setTimeoutMinute(int timeoutMinute) {
+        this.timeoutMinute = timeoutMinute;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this)
+                .append("totalMinus", totalMinus)
+                .append("timeoutMinute", timeoutMinute)
+                .toString();
+    }
+}

+ 44 - 5
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/StudentRealExamPostVo.java

@@ -1,14 +1,27 @@
 package com.ruoyi.sim.domain.vo;
 
 import com.ruoyi.sim.domain.RealExam;
+import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.util.List;
 
 public class StudentRealExamPostVo {
-
+    /**
+     * 包括最终成绩。
+     */
     private RealExam realExam;
-
-    private List<RealExamFaultVo> listPart1;
+    /**
+     * 1.排除故障。
+     */
+    private List<RealExamFaultReportPart1Vo> listPart1;
+    /**
+     * 2.修理维修报告
+     */
+    private List<RealExamFaultReportPart2Vo> listPart2;
+    /**
+     * 3.维修时间。
+     */
+    private RealExamFaultReportPart3Vo part3;
 
     public RealExam getRealExam() {
         return realExam;
@@ -18,11 +31,37 @@ public class StudentRealExamPostVo {
         this.realExam = realExam;
     }
 
-    public List<RealExamFaultVo> getListPart1() {
+    public List<RealExamFaultReportPart1Vo> getListPart1() {
         return listPart1;
     }
 
-    public void setListPart1(List<RealExamFaultVo> listPart1) {
+    public void setListPart1(List<RealExamFaultReportPart1Vo> listPart1) {
         this.listPart1 = listPart1;
     }
+
+    public List<RealExamFaultReportPart2Vo> getListPart2() {
+        return listPart2;
+    }
+
+    public void setListPart2(List<RealExamFaultReportPart2Vo> listPart2) {
+        this.listPart2 = listPart2;
+    }
+
+    public RealExamFaultReportPart3Vo getPart3() {
+        return part3;
+    }
+
+    public void setPart3(RealExamFaultReportPart3Vo part3) {
+        this.part3 = part3;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this)
+                .append("realExam", realExam)
+                .append("listPart1", listPart1)
+                .append("listPart2", listPart2)
+                .append("part3", part3)
+                .toString();
+    }
 }

+ 2 - 2
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/CommSendService.java

@@ -116,7 +116,7 @@ public class CommSendService {
                 Sim s = simService.selectSimBySimId(e.getSimId());
                 Fault f = faultService.selectFaultByFaultId(ref.getFaultId());
                 if (f != null &&
-                        Fault.Type.TYPE_GZBW.equals(f.getFaultType()) &&
+                        Fault.Type.REAL_GZBW.equals(f.getFaultType()) &&
                         Fault.State.ENABLE.equals(f.getFaultState())
                 ) {
                     readOneFaultResistance(s, ref, f, RealExamFault.State.LOOP_READ);
@@ -309,7 +309,7 @@ public class CommSendService {
         // todo:
         simService.listAllEnable().forEach(s -> {
             String simType = s.getSimType();
-            List<Fault> listF = faultService.listAllType3EnableBySimType(simType);
+            List<Fault> listF = faultService.listType3EnableBySimType(simType);
             listF.forEach(f -> {
                 clearOneFault(s, null, f);
             });

+ 67 - 11
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/FaultService.java

@@ -95,7 +95,7 @@ public class FaultService {
     @Autowired
     private SimService simService;
 
-    public boolean isEnable(String faultId) {
+    public boolean isEnable(final String faultId) {
         Fault q = new Fault();
         q.setFaultId(faultId);
         Fault f = selectFaultByFaultId(faultId);
@@ -136,15 +136,15 @@ public class FaultService {
         return selectFaultList(q);
     }
 
-    public List<Fault> listAllType3EnableBySimType(final String simType) {
+    public List<Fault> listType3EnableBySimType(final String simType) {
         Fault q = new Fault();
         q.setSimType(simType);
-        q.setFaultType(Fault.Type.TYPE_GZBW);
+        q.setFaultType(Fault.Type.REAL_GZBW);
         q.setFaultState(Fault.State.ENABLE);
         return selectFaultList(q);
     }
 
-    public List<Fault> listAllType1And3EnableBySimType(final String simType) {
+    public List<Fault> listType1And3EnableBySimType(final String simType) {
         List<Fault> list = new ArrayList<>();
         listAllEnable(simType)
                 .stream()
@@ -153,18 +153,18 @@ public class FaultService {
                         (Fault.State.ENABLE.equals(f.getFaultState()))
                 )
                 .filter(f ->
-                        (Fault.Type.TYPE_GZXX.equals(f.getFaultType()) || Fault.Type.TYPE_GZBW.equals(f.getFaultType()))
+                        (Fault.Type.GZXX.equals(f.getFaultType()) || Fault.Type.REAL_GZBW.equals(f.getFaultType()))
                 )
                 .forEach(list::add);
         return list;
     }
 
     /**
-     * 根据模拟器型号,查询故障列表tree
+     * 通过模拟器类型,[查询故障]列表。tree形式
      *
-     * @param simType
+     * @param simType 模拟器型号
      */
-    public AjaxResult listAllARTreeStyleBySimType(final String simType) {
+    public AjaxResult listAllTreeStyleBySimType(final String simType) {
         // check
         if (StringUtils.isEmpty(simType)) {
             return AjaxResult.error("simType empty!");
@@ -177,12 +177,68 @@ public class FaultService {
     }
 
     /**
+     * list某模拟器型号,所有[故障部位]基础数据。
+     *
+     * @param simType
+     * @return
+     */
+    public AjaxResult listType3and30(final String simType) {
+        // check
+        if (StringUtils.isEmpty(simType)) {
+            return AjaxResult.error("simType empty!");
+        }
+        if (!simService.checkSimTypeOk(simType)) {
+            return AjaxResult.error("simType value error!");
+        }
+        // do query.
+        List<Fault> list = new ArrayList<>();
+        Fault q3 = new Fault();
+        q3.setSimType(simType);
+        q3.setFaultState(Fault.State.ENABLE);
+        q3.setFaultType(Fault.Type.REAL_GZBW);
+        list.addAll(selectFaultList(q3));
+        Fault q30 = new Fault();
+        q30.setSimType(simType);
+        q30.setSimType(simType);
+        q30.setFaultState(Fault.State.ENABLE);
+        q30.setFaultType(Fault.Type.FAKE_GZBW);
+        list.addAll(selectFaultList(q30));
+        Collections.sort(list);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * list某模拟器型号,所有[故障现象]基础数据。
+     *
+     * @param simType
+     * @return
+     */
+    public AjaxResult listEnableByType(final String simType, final String faultType) {
+        // check
+        if (StringUtils.isEmpty(simType)) {
+            return AjaxResult.error("simType empty!");
+        }
+        if (!simService.checkSimTypeOk(simType)) {
+            return AjaxResult.error("simType value error!");
+        }
+        // do query.
+        List<Fault> list = new ArrayList<>();
+        Fault q = new Fault();
+        q.setSimType(simType);
+        q.setFaultState(Fault.State.ENABLE);
+        q.setFaultType(faultType);
+        list.addAll(selectFaultList(q));
+        return AjaxResult.success(list);
+    }
+
+
+    /**
      * 根据模拟器型号,查询故障列表tree。
      *
      * @param simType
      */
     public List<FaultTreeVo> listAllListTreeStyleBySimType(final String simType) {
-        List<Fault> list = listAllType1And3EnableBySimType(simType);
+        List<Fault> list = listType1And3EnableBySimType(simType);
         // 排序。按照faultId升序排序
         Collections.sort(list);
         List<FaultTreeVo> tempListNode = new ArrayList<>();
@@ -246,7 +302,7 @@ public class FaultService {
     }
 
     public boolean isType3(String faultId) {
-        return isType(faultId, Fault.Type.TYPE_GZBW);
+        return isType(faultId, Fault.Type.REAL_GZBW);
     }
 
     public static int COUNT_3 = 3;
@@ -263,7 +319,7 @@ public class FaultService {
      * @return
      */
     public List<Fault> randomEnable(final String simType, final int selectCount) {
-        List<Fault> list1 = listAllType3EnableBySimType(simType);
+        List<Fault> list1 = listType3EnableBySimType(simType);
         Set<Fault> set = new HashSet<>();
         for (int i = 0; i < selectCount; i++) {
             int index = RandomUtils.nextInt(0, list1.size() - i);

+ 0 - 1
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamCollectionService.java

@@ -1,6 +1,5 @@
 package com.ruoyi.sim.service.impl;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 

+ 44 - 1
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamCompRequestService.java

@@ -2,6 +2,9 @@ package com.ruoyi.sim.service.impl;
 
 import java.util.List;
 
+import cn.ele6.catalyzer.ruoyi.vue.custom.Ele6RYBaseService;
+import cn.ele6.catalyzer.ruoyi.vue.enhance.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -15,7 +18,7 @@ import com.ruoyi.sim.domain.RealExamCompRequest;
  * @date 2024-12-15
  */
 @Service
-public class RealExamCompRequestService {
+public class RealExamCompRequestService extends Ele6RYBaseService {
     @Autowired
     private RealExamCompRequestMapper realExamCompRequestMapper;
 
@@ -80,4 +83,44 @@ public class RealExamCompRequestService {
     public int deleteRealExamCompRequestByRelId(Long relId) {
         return realExamCompRequestMapper.deleteRealExamCompRequestByRelId(relId);
     }
+
+    // -------------------------------- tom add  --------------------------------
+
+    /**
+     * @param examId
+     * @return List<RealExamCompRequest>
+     */
+    public TableDataInfo listByStudent(Long examId) {
+        startPage();
+        RealExamCompRequest q = new RealExamCompRequest();
+        q.setExamId(examId);
+        List<RealExamCompRequest> list = selectRealExamCompRequestList(q);
+        // todo:
+        return getDataTable(list);
+    }
+
+    public List<RealExamCompRequest> listByTeacher(Long examCollectionId) {
+        RealExamCompRequest q = new RealExamCompRequest();
+        // todo:
+        q.setExamId(examCollectionId);
+        List<RealExamCompRequest> list = selectRealExamCompRequestList(q);
+        // todo:
+        return list;
+    }
+
+    public AjaxResult addByStudent(RealExamCompRequest realExamCompRequest) {
+        return AjaxResult.success();
+    }
+
+    public AjaxResult deleteByStudent(Long[] relIds) {
+        return AjaxResult.success();
+    }
+
+    public AjaxResult updateSendedByTeacher(Long[] relIds) {
+        return AjaxResult.success();
+    }
+
+    public AjaxResult updateTurnDownByTeacher(Long[] relIds) {
+        return AjaxResult.success();
+    }
 }

+ 24 - 4
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamFaultService.java

@@ -3,8 +3,11 @@ package com.ruoyi.sim.service.impl;
 import java.util.ArrayList;
 import java.util.List;
 
+import com.github.jsonzou.jmockdata.JMockData;
 import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.sim.domain.vo.RealExamFaultVo;
+import com.ruoyi.sim.domain.vo.RealExamFaultReportPart1Vo;
+import com.ruoyi.sim.domain.vo.RealExamFaultReportPart2Vo;
+import com.ruoyi.sim.domain.vo.RealExamFaultReportPart3Vo;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -111,6 +114,7 @@ public class RealExamFaultService {
 
     /**
      * reset real_exam_fault 表中关联数据
+     *
      * @param examId
      */
     @Transactional
@@ -232,15 +236,15 @@ public class RealExamFaultService {
         updateRealExamFault(f);
     }
 
-    public List<RealExamFaultVo> getReportListPart1(Long examId) {
+    public List<RealExamFaultReportPart1Vo> getReportListPart1(final Long examId) {
         RealExamFault q = new RealExamFault();
         q.setExamId(examId);
         q.setRefType(RealExamFault.Type.TYPE_2);
         q.setFlag(RealExamFault.Flag.YES);
         List<RealExamFault> list1 = selectRealExamFaultList(q);
-        List<RealExamFaultVo> list2 = new ArrayList<>();
+        List<RealExamFaultReportPart1Vo> list2 = new ArrayList<>();
         list1.forEach(ref -> {
-            RealExamFaultVo vo = new RealExamFaultVo();
+            RealExamFaultReportPart1Vo vo = new RealExamFaultReportPart1Vo();
             BeanUtils.copyProperties(ref, vo);
             vo.setFault(faultService.selectFaultByFaultId(ref.getFaultId()));
             list2.add(vo);
@@ -248,5 +252,21 @@ public class RealExamFaultService {
         return list2;
     }
 
+    public List<RealExamFaultReportPart2Vo> getReportListPart2(final Long examId) {
+        RealExamFaultReportPart2Vo r1 = JMockData.mock(RealExamFaultReportPart2Vo.class);
+        RealExamFaultReportPart2Vo r2 = JMockData.mock(RealExamFaultReportPart2Vo.class);
+        RealExamFaultReportPart2Vo r3 = JMockData.mock(RealExamFaultReportPart2Vo.class);
+        List<RealExamFaultReportPart2Vo> list = new ArrayList<>();
+        list.add(r1);
+        list.add(r2);
+        list.add(r3);
+        // todo:
+        return null;
+    }
 
+    public RealExamFaultReportPart3Vo getReportPart3(final Long examId) {
+        RealExamFaultReportPart3Vo r1 = JMockData.mock(RealExamFaultReportPart3Vo.class);
+        // todo:
+        return null;
+    }
 }

+ 15 - 7
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamService.java

@@ -6,6 +6,7 @@ import java.util.Objects;
 
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.sim.config.SimConfig;
 import com.ruoyi.sim.domain.*;
 import com.ruoyi.sim.domain.vo.RealExamVo;
 import com.ruoyi.sim.domain.vo.StudentRealExamIngVo;
@@ -108,6 +109,8 @@ public class RealExamService {
     private RealExamFaultService realExamFaultService;
     @Autowired
     private CommSendService commSendService;
+    @Autowired
+    private SimConfig simConfig;
 
 
     public List<RealExamVo> list(RealExam q) {
@@ -154,7 +157,7 @@ public class RealExamService {
     /**
      * [学生]进入考试。
      *
-     * @return
+     * @return RealExam
      */
     public AjaxResult studentEnterRealExam(Long examId) {
         RealExam re = selectRealExamByExamId(examId);
@@ -173,7 +176,7 @@ public class RealExamService {
      * [轮询][学生]准备考试界面。
      *
      * @param realExamId
-     * @return
+     * @return StudentRealExamPreVo
      */
     public AjaxResult studentLoopPrepareRealExam(Long realExamId) {
         l.info("studentLoopPrepareRealExam");
@@ -234,13 +237,16 @@ public class RealExamService {
         // 学生答题中可以再次进入。
         String examStatus = v.getRealExam().getExamStatus();
         String simStatus = v.getSim().getSimState();
-
         // 兜底
         {
             if (realExamFaultService.isAllType2StateXiaFa(v.getRealExam().getExamId())) {
                 updateOneState(v.getRealExam().getExamId(), RealExam.State.SIM_PREPARE_OK);
             }
         }
+        // 模拟器不通信。
+        if (!simConfig.isCommGlobal()) {
+            return true;
+        }
         if ((RealExam.State.SIM_PREPARE_OK.equals(examStatus) ||
                 RealExam.State.ANSWERING.equals(examStatus)) &&
                 Sim.State.ONLINE.equals(simStatus)
@@ -254,7 +260,7 @@ public class RealExamService {
      * [学生]开始考试
      *
      * @param examId
-     * @return
+     * @return RealExam
      */
     @Transactional
     public AjaxResult studentStartRealExam(Long examId) {
@@ -271,7 +277,7 @@ public class RealExamService {
      * [轮询][学生]正在考试界面。
      *
      * @param realExamId
-     * @return
+     * @return StudentRealExamIngVo
      */
     public AjaxResult studentLoopAnsweringRealExam(Long realExamId) {
         RealExam re = selectRealExamByExamId(realExamId);
@@ -290,7 +296,7 @@ public class RealExamService {
      * [学生]交卷
      *
      * @param examId
-     * @return
+     * @return RealExam
      */
     public AjaxResult studentSubmitRealExam(Long examId) {
         // 最后检查一下模拟器状态。
@@ -321,7 +327,7 @@ public class RealExamService {
      * [轮询][学生]结束考试界面。
      *
      * @param examId
-     * @return
+     * @return StudentRealExamPostVo
      */
     public AjaxResult studentLoopPostRealExam(Long examId) {
         RealExam re = selectRealExamByExamId(examId);
@@ -331,6 +337,8 @@ public class RealExamService {
         }
         vo.setRealExam(re);
         vo.setListPart1(realExamFaultService.getReportListPart1(examId));
+        vo.setListPart2(realExamFaultService.getReportListPart2(examId));
+        vo.setPart3(realExamFaultService.getReportPart3(examId));
         return AjaxResult.success(vo);
     }
 }

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

@@ -67,7 +67,7 @@ public class TaskService {
             if (o == null) {
                 continue;
             }
-            if (Fault.Type.TYPE_GZBW.equals(o.getFaultType())) {
+            if (Fault.Type.REAL_GZBW.equals(o.getFaultType())) {
                 TaskFault tf = o.getTaskFault();
                 TaskFault tfQ = taskFaultService.selectUniqueTaskFault(taskId, tf.getFaultId());
                 // 存在就设置上数据库中TaskFault值。
@@ -113,13 +113,13 @@ public class TaskService {
     public int getCountGZXX(long taskId) {
         return faultService.countType1ByType3(
                 taskFaultService.toFaultList(
-                        taskFaultService.listYesByFaultType(taskId, Fault.Type.TYPE_GZBW)
+                        taskFaultService.listYesByFaultType(taskId, Fault.Type.REAL_GZBW)
                 )
         );
     }
 
     public int getCountGZBW(long taskId) {
-        return taskFaultService.countYesByFaultType(taskId, Fault.Type.TYPE_GZBW);
+        return taskFaultService.countYesByFaultType(taskId, Fault.Type.REAL_GZBW);
     }
 
     @Transactional()
@@ -295,7 +295,7 @@ public class TaskService {
                 continue;
             }
             // 仅仅处理故障部位。
-            if (!Fault.Type.TYPE_GZBW.equals(ftv.getFaultType())) {
+            if (!Fault.Type.REAL_GZBW.equals(ftv.getFaultType())) {
                 continue;
             }
             TaskFault tf = ftv.getTaskFault();

+ 23 - 6
ruoyi-sim/src/main/resources/mapper/sim/FaultMapper.xml

@@ -7,8 +7,10 @@
     <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="refType330FaultId" column="ref_type3_30_fault_id"/>
+        <result property="refType4FaultId" column="ref_type4_fault_id"/>
         <result property="faultType" column="fault_type"/>
+        <result property="simType" column="sim_type"/>
         <result property="faultState" column="fault_state"/>
         <result property="conflictFaultIds" column="conflict_fault_ids"/>
         <result property="replacePart" column="replace_part"/>
@@ -26,8 +28,10 @@
     <sql id="selectFaultVo">
         select fault_id,
                parent_fault_id,
-               sim_type,
+               ref_type3_30_fault_id,
+               ref_type4_fault_id,
                fault_type,
+               sim_type,
                fault_state,
                conflict_fault_ids,
                replace_part,
@@ -47,8 +51,13 @@
         <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="refType330FaultId != null  and refType330FaultId != ''">and ref_type3_30_fault_id =
+                #{refType330FaultId}
+            </if>
+            <if test="refType4FaultId != null  and refType4FaultId != ''">and ref_type4_fault_id = #{refType4FaultId}
+            </if>
             <if test="faultType != null  and faultType != ''">and fault_type = #{faultType}</if>
+            <if test="simType != null  and simType != ''">and sim_type = #{simType}</if>
             <if test="faultState != null  and faultState != ''">and fault_state = #{faultState}</if>
             <if test="conflictFaultIds != null  and conflictFaultIds != ''">and conflict_fault_ids =
                 #{conflictFaultIds}
@@ -77,8 +86,10 @@
         <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="refType330FaultId != null and refType330FaultId != ''">ref_type3_30_fault_id,</if>
+            <if test="refType4FaultId != null and refType4FaultId != ''">ref_type4_fault_id,</if>
             <if test="faultType != null">fault_type,</if>
+            <if test="simType != null and simType != ''">sim_type,</if>
             <if test="faultState != null">fault_state,</if>
             <if test="conflictFaultIds != null and conflictFaultIds != ''">conflict_fault_ids,</if>
             <if test="replacePart != null">replace_part,</if>
@@ -95,8 +106,10 @@
         <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="refType330FaultId != null and refType330FaultId != ''">#{refType330FaultId},</if>
+            <if test="refType4FaultId != null and refType4FaultId != ''">#{refType4FaultId},</if>
             <if test="faultType != null">#{faultType},</if>
+            <if test="simType != null and simType != ''">#{simType},</if>
             <if test="faultState != null">#{faultState},</if>
             <if test="conflictFaultIds != null and conflictFaultIds != ''">#{conflictFaultIds},</if>
             <if test="replacePart != null">#{replacePart},</if>
@@ -116,8 +129,12 @@
         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="refType330FaultId != null and refType330FaultId != ''">ref_type3_30_fault_id =
+                #{refType330FaultId},
+            </if>
+            <if test="refType4FaultId != null and refType4FaultId != ''">ref_type4_fault_id = #{refType4FaultId},</if>
             <if test="faultType != null">fault_type = #{faultType},</if>
+            <if test="simType != null and simType != ''">sim_type = #{simType},</if>
             <if test="faultState != null">fault_state = #{faultState},</if>
             <if test="conflictFaultIds != null and conflictFaultIds != ''">conflict_fault_ids = #{conflictFaultIds},
             </if>