1
0

3 Revīzijas 7bc6795263 ... 09766cbae4

Autors SHA1 Ziņojums Datums
  tom 09766cbae4 添加事务。 1 nedēļu atpakaļ
  tom e87b3abd4b checkOneSimStateActive方法可能会改变模拟器的状态。 1 nedēļu atpakaļ
  tom 4e90fe7daf 不允许关闭定时循环。 1 nedēļu atpakaļ

+ 6 - 4
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/ConfigController.java

@@ -27,10 +27,12 @@ public class ConfigController {
             SimDebugConfig.CHECK_REPLACE_EMPTY = Boolean.valueOf(value);
             return AjaxResult.success(SimDebugConfig.CHECK_REPLACE_EMPTY);
         }
-        if (SimDebugConfig.KEY_SCHEDULED_CONNECT.equals(key.toUpperCase())) {
-            SimDebugConfig.SCHEDULED_CONNECT = Boolean.valueOf(value);
-            return AjaxResult.success(SimDebugConfig.SCHEDULED_CONNECT);
-        }
+        // 不允许关闭定时循环。
+
+//        if (SimDebugConfig.KEY_SCHEDULED_CONNECT.equals(key.toUpperCase())) {
+//            SimDebugConfig.SCHEDULED_CONNECT = Boolean.valueOf(value);
+//            return AjaxResult.success(SimDebugConfig.SCHEDULED_CONNECT);
+//        }
         return AjaxResult.error("no match key.");
     }
 

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

@@ -133,6 +133,7 @@ public class CommSendService {
                 return arE3;
             }
         }
+        s = simService.uniqueBySimNum(simNum);
         // todo: aj改造
         readOneSimAtLastByDebug(s);
         return AjaxResult.success("成功读取!");
@@ -254,13 +255,18 @@ public class CommSendService {
      * @param s
      * @return
      */
-    public AjaxResult checkOneSimStateActive(final Sim s) {
+    public AjaxResult checkOneSimStateActive(Sim s) {
+        long simId = s.getSimId();
+        // 这句可能会调整模拟器状态
         checkOneSimState(s, true);
+        //
+        s = simService.selectSimBySimId(simId);
         // 如果模拟器离线
-        if (s == null || !Sim.State.ONLINE.equals(s.getSimState())) {
+        if (s != null && Sim.State.ONLINE.equals(s.getSimState())) {
+            return AjaxResult.success();
+        } else {
             return AjaxResult.error("未连接模拟器,请检查连接!");
         }
-        return AjaxResult.success();
     }
 
     /**
@@ -415,21 +421,22 @@ public class CommSendService {
      * @return
      */
     public AjaxResult debugClearAllFaultBySimNum(final String simNum) {
-        Sim s = simService.uniqueBySimNum(simNum);
+        Sim s1 = simService.uniqueBySimNum(simNum);
         {
-            AjaxResult arE3 = checkOneSimStateActive(s);
+            AjaxResult arE3 = checkOneSimStateActive(s1);
             if (arE3.isError()) {
                 return arE3;
             }
         }
-        if (s == null) {
+        s1 = simService.uniqueBySimNum(simNum);
+        if (s1 == null) {
             return AjaxResult.error("清除失败,对应simNum模拟器不存在!");
         }
-        if (!Sim.State.ONLINE.equals(s.getSimState())) {
+        if (!Sim.State.ONLINE.equals(s1.getSimState())) {
             return AjaxResult.error("清除失败,模拟器尚未在线!");
         }
         List<SimMsg> list = new ArrayList<>();
-        for (String b : getGZBWBySimType(s.getSimType())) {
+        for (String b : getGZBWBySimType(s1.getSimType())) {
             SimMsg sm = debugClearOneFault(simNum, b);
             list.add(sm);
             if (sm != null && !sm.getOk()) {
@@ -528,6 +535,7 @@ public class CommSendService {
         // 打开socket
         {
             AjaxResult ar1 = openSocket();
+            l.info("ar1 = {}", ar1);
             if (ar1.isError()) {
                 return ar1;
             }
@@ -539,6 +547,7 @@ public class CommSendService {
                 return arE3;
             }
         }
+        s = simService.uniqueBySimNum(simNum);
         // Step 2
         // msg判断,是否含有"故障部位"字符串
         {

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

@@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.sim.mapper.DebugFaultMapper;
 import com.ruoyi.sim.domain.DebugFault;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 调试故障Service业务层处理
@@ -102,6 +103,7 @@ public class DebugFaultService {
         return null;
     }
 
+    @Transactional
     public int deleteAll() {
         DebugFault q = new DebugFault();
         List<DebugFault> list = selectDebugFaultList(q);

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

@@ -314,6 +314,7 @@ public class RealExamService {
                 return arE3;
             }
         }
+        s = simService.selectSimBySimId(re.getSimId());
         // Step 2 读取对应一台模拟器 所有故障部位值。检查模拟器所有的 真实的 故障部位 是否异常 或者 空值。特殊的故障部位要单独判断。
         if (SimDebugConfig.CHECK_REPLACE_EMPTY) {
             AjaxResult arE2 = commSendService.readOneSimAllFaultCheck(s);
@@ -445,6 +446,7 @@ public class RealExamService {
                 return arE3;
             }
         }
+        s = simService.selectSimBySimId(re.getSimId());
         // 最后读取一下模拟器电阻值。
         commSendService.readOneExamAtLast(re);
         if (realExamFaultService.isType2ExamPrepareSubmitOk(re.getExamId())) {

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

@@ -7,11 +7,14 @@ import java.util.Objects;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import com.ruoyi.sim.mapper.SimMapper;
 import com.ruoyi.sim.domain.Sim;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 模拟器Service业务层处理
@@ -198,6 +201,9 @@ public class SimService {
         return Sim.STATE_SET.contains(simState);
     }
 
+    private static final Logger l = LoggerFactory.getLogger(SimService.class);
+
+    @Transactional
     public int updateSimStateBySimId(Long simId, String simState) {
         // check
         if (checkState(simState)) {