ソースを参照

FZD04B电池舱盖没有关闭,请关闭后重试。

tom 2 週間 前
コミット
18a80bc4fc

+ 1 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/constant/FaultIdConst.java

@@ -19,6 +19,7 @@ public interface FaultIdConst {
         String F07 = "0001GZBW0007";
         String F08 = "0001GZBW0008";
         String F09 = "0001GZBW0009";
+        String F0A = "0001GZBW000A";
     }
 
     /**

+ 9 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/SimMsg.java

@@ -5,6 +5,7 @@ import java.util.Objects;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.sim.service.impl.CommParseUtils;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
@@ -280,6 +281,14 @@ public class SimMsg extends BaseEntity {
         return null;
     }
 
+    public String getReceiveSubContentData() {
+        return CommParseUtils.receiveSubContentData(this);
+    }
+
+    public boolean isReceiveContentDataBlank() {
+        return CommParseUtils.isReceiveContentDataBlank(this);
+    }
+
     public interface Result {
         /**
          * 默认空值。

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

@@ -273,7 +273,7 @@ public class CommCheckService {
         SimMsg smS = commBuildService.buildSendMsgReadSimType(sim.getSimNum());
         SimMsg smR = commSendService.send(smS, seat, sim, retryTotalCount, commStrategy.getSleepShort());
         if (StringUtils.isNotBlank(smR.getReceiveMsg())) {
-            final String content = CommParseUtils.subContentData(smR);
+            final String content = CommParseUtils.receiveSubContentData(smR);
             switch (targetSimType) {
                 case Sim.TYPE_0001 -> {
                     if (content.startsWith(CommConst.TYPE_0001_SN_PREFIX) && content.endsWith(sim.getSimNum())) {

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

@@ -1,6 +1,7 @@
 package com.ruoyi.sim.service.impl;
 
 
+import com.ruoyi.sim.constant.CommConst;
 import com.ruoyi.sim.domain.SimMsg;
 import org.apache.commons.lang3.StringUtils;
 
@@ -16,16 +17,16 @@ public class CommParseUtils {
      * @param
      * @return "01 02 03 04"
      */
-    public static String subContentData(SimMsg sm) {
+    public static String receiveSubContentData(SimMsg sm) {
         if (StringUtils.isBlank(sm.getReceiveMsg())) {
             throw new IllegalArgumentException("模拟器回复为空!");
         }
         return StringUtils.substring(sm.getReceiveMsg(), 10, 18);
     }
 
-    public static boolean isContentDataBlank(SimMsg sm) {
-        String contentData = subContentData(sm);
-        return StringUtils.isNotBlank(contentData) && StringUtils.equals(contentData, "00000000");
+    public static boolean isReceiveContentDataBlank(SimMsg sm) {
+        String contentData = receiveSubContentData(sm);
+        return StringUtils.isBlank(contentData) || StringUtils.equals(contentData, CommConst.BLANK_CONTENT);
     }
 
     public static String subSimNum(String msg) {

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

@@ -57,7 +57,7 @@ public class CommReceiveService {
         // check
 
         //
-        String faultQuestionValue = CommParseUtils.subContentData(sm);
+        String faultQuestionValue = CommParseUtils.receiveSubContentData(sm);
         // todo:
         if (StringUtils.isBlank(faultQuestionValue)) {
             l.warn("faultQuestionValue is empty!");
@@ -109,7 +109,7 @@ public class CommReceiveService {
     public void setFaultAnswerValue(SimMsg sm, Sim sim, RealExamFault reF, Fault fault, String refState) {
         // check
         //
-        String faultAnswerValue = CommParseUtils.subContentData(sm);
+        String faultAnswerValue = CommParseUtils.receiveSubContentData(sm);
         // todo:
         if (StringUtils.isBlank(faultAnswerValue)) {
             l.warn("faultAnswerValue is empty!");
@@ -144,18 +144,18 @@ public class CommReceiveService {
 
 
     /**
-     * 开始考试+开始训练+开始练习 的 故障部位 检查。
+     * 考试、训练、练习 的 故障部位 开始检查。
      * <p>
      *
      * @param vo
      * @return AjaxResult obj Vo对象 checkOk = true 表示检查成功,否则失败。
      */
-    public AjaxResult getOneFaultCheck(FaultCheckVo vo) {
+    public AjaxResult getOneFaultStartCheck(FaultCheckVo vo) {
         l.info("getOneFaultCheck vo = {}", vo);
         SimMsg sm = vo.getSimMsgReceive();
         Sim s = vo.getSim();
         Fault f = vo.getFault();
-        String checkValue = CommParseUtils.subContentData(sm);
+        String checkValue = CommParseUtils.receiveSubContentData(sm);
         if (s == null) {
             return AjaxResult.error("没有对应模拟器!");
         }
@@ -201,7 +201,7 @@ public class CommReceiveService {
             }
         }
         // 非空判断
-        if (BLANK_CONTENT.equals(checkValue)) {
+        if (StringUtils.equals(checkValue, BLANK_CONTENT)) {
             String eMsg = "[" + f.getReplaceName() + "]可换件异常;<br>";
             l.info(eMsg);
             vo.setErrorMsg(eMsg);

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

@@ -1,5 +1,6 @@
 package com.ruoyi.sim.service.impl;
 
+import cn.hutool.core.map.MapUtil;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.sim.config.SimConfig;
@@ -10,7 +11,6 @@ import com.ruoyi.sim.domain.vo.FaultCheckVo;
 import com.ruoyi.sim.domain.vo.ScanSeatVo;
 import com.ruoyi.sim.domain.vo.SimSocketParamVo;
 import com.ruoyi.sim.util.SimDateUtil;
-import org.apache.commons.collections4.SetUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.LoggerFactory;
 import org.slf4j.Logger;
@@ -802,6 +802,42 @@ public class CommSendService {
         return AjaxResult.success("所有故障部位检查没有问题。");
     }
 
+    public AjaxResult readOneSimAllFaultSubmitCheck(final Seat seat, final Sim sim) {
+        String simType = sim.getSimType();
+        if (StringUtils.equals(simType, Sim.TYPE_0001)) {
+            Map<String, SimMsg> mapE = new HashMap<>();
+            Fault q = new Fault();
+            q.setFaultType(Fault.Type.REAL_GZBW);
+            q.setSimType(simType);
+            List<Fault> listF = faultService.selectFaultList(q);
+            for (Fault oneF : listF) {
+                FaultCheckVo voOne = new FaultCheckVo();
+                voOne.setSeat(seat);
+                voOne.setSim(sim);
+                voOne.setFault(oneF);
+                AjaxResult ar = readOneSimOneFaultStartSimpleCheck(voOne);
+                FaultCheckVo vo = (FaultCheckVo) (Objects.requireNonNull(ar).get(AjaxResult.DATA_TAG));
+                if (vo != null && vo.getSimMsgReceive().isReceiveContentDataBlank()) {
+                    mapE.put(vo.getFault().getFaultId(), vo.getSimMsgReceive());
+                    l.info("put key = {}", vo.getFault().getFaultId());
+                }
+            }
+            if (
+                    mapE.containsKey(FaultIdConst.T0001.F01) &&
+                            mapE.containsKey(FaultIdConst.T0001.F02) &&
+                            mapE.containsKey(FaultIdConst.T0001.F03) &&
+                            mapE.containsKey(FaultIdConst.T0001.F04) &&
+                            mapE.containsKey(FaultIdConst.T0001.F06) &&
+                            mapE.containsKey(FaultIdConst.T0001.F07) &&
+                            mapE.containsKey(FaultIdConst.T0001.F08) &&
+                            mapE.containsKey(FaultIdConst.T0001.F0A)
+            ) {
+                return AjaxResult.error("模拟器FZD04B电池舱盖没有关闭,请关闭后重试。");
+            }
+        }
+        return AjaxResult.success("所有故障部位检查没有问题。");
+    }
+
     private String buildKeyType0003(String bindHardwareMsg) {
         return buildKey(Sim.TYPE_0003, bindHardwareMsg);
     }
@@ -853,7 +889,7 @@ public class CommSendService {
      * @return
      */
     public AjaxResult readOneSimOneFaultStartSimpleCheck(FaultCheckVo vo) {
-        l.info("readOneSimOneFaultCheck vo = {}", vo);
+        l.info("readOneSimOneFaultStartSimpleCheck vo = {}", vo);
         SimMsg smS = commBuildService.buildSendMsgReadFaultResistance(vo.getSim().getSimNum(), vo.getFault().getBindHardwareMsg());
         SimMsg smR = send(smS, vo.getSeat(), vo.getSim(), RETRY_COUNT_CHECK_ONE_FAULT, commStrategy.getSleepLong());
         if (smR.isResultNotOk()) {
@@ -870,7 +906,7 @@ public class CommSendService {
         // set send and receive msg.
         vo.setSimMsgSend(smS);
         vo.setSimMsgReceive(smR);
-        return simReceiveService.getOneFaultCheck(vo);
+        return simReceiveService.getOneFaultStartCheck(vo);
     }
 
     /**

+ 8 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamService.java

@@ -701,6 +701,14 @@ public class RealExamService {
 
         // Check:检查换学生端交卷的情况。
 
+        // Check:交卷报文信息检查
+        {
+            Sim sim = simService.selectSimBySimId(re.getSimId());
+            AjaxResult ar =  commSendService.readOneSimAllFaultSubmitCheck(seatNow, sim);
+            if (ar.isError()) {
+                return ar;
+            }
+        }
         // Step:最后读取一下模拟器电阻值。
         commSendService.readOneExamAtLast(re);
         // Check:检查最后读取电阻值的有效性。