3 Commits 7bc6795263 ... 09766cbae4

Tác giả SHA1 Thông báo Ngày
  tom 09766cbae4 添加事务。 10 tháng trước cách đây
  tom e87b3abd4b checkOneSimStateActive方法可能会改变模拟器的状态。 10 tháng trước cách đây
  tom 4e90fe7daf 不允许关闭定时循环。 10 tháng trước cách đây

+ 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)) {