Browse Source

完善debugClearAllFaultBySeatId

tom 2 months ago
parent
commit
58ec6163ae

+ 6 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/HardwareCommDebugController.java

@@ -63,6 +63,12 @@ public class HardwareCommDebugController extends BaseController {
         return success(commSendService.debugClearOneFault(seatId, bindHardwareMsg));
     }
 
+    /**
+     * 新版使用seatId
+     *
+     * @param seatId
+     * @return
+     */
     @GetMapping(value = "/debugClearAllFaultBySimNum/{seatId}")
     @ApiOperation("debug通过simNum清除一台模拟器所有故障")
     public AjaxResult debugClearAllFaultBySimNum(@PathVariable("seatId") final Long seatId) {

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

@@ -145,21 +145,25 @@ public class CommCheckService {
                 l.info("座号[{}]上发现模拟器[{}]", seat.getSeatNum(), sim.getSimNum());
             }
             // 更新SimId
-            seatService.updateSimIdBySeatNum(seat.getSeatNum(), sim.getSimId());
+            seatService.updateCurrentSimIdBySeatNum(seat.getSeatNum(), sim.getSimId());
             // 更新Sim状态
             simService.updateSimStateBySimId(sim.getSimId(), Sim.State.ONLINE);
-
+            // 查询出最新的Sim对象
+            sim = simService.uniqueBySimNum(simNum);
+            //
             String msgTemp = "座号[{0}]-模拟器[{1}]型[{2}]在线";
             String msg = MessageFormat.format(msgTemp, seat.getSeatNum(), Sim.TYPE_NAME_MAP.get(sim.getSimType()), sim.getSimNum());
-            return AjaxResult.success(msg);
+            // 成功的话,Obj为Sim对象。
+            return AjaxResult.success(msg, sim);
         } else if (Objects.equals(result, SimMsg.Result.RECEIVE_CHECK_FAIL)) {
             return AjaxResult.error("失败,报文回复异常。");
         } else if (Objects.equals(result, SimMsg.Result.READ_TIMEOUT_EXCEPTION)) {
             // 更新SimId
-            seatService.updateSimIdBySeatNum(seat.getSeatNum(), Sim.ID_0);
+            seatService.updateCurrentSimIdBySeatNum(seat.getSeatNum(), Sim.ID_0);
             String msgTemp = "座号[{0}]-没有连接任何接模拟器,检查线缆连接和线缆开关";
             String msg = MessageFormat.format(msgTemp, seat.getSeatNum());
-            return AjaxResult.success(msg);
+            // 失败的话,Obj为空。
+            return AjaxResult.success(msg, null);
         }
         return AjaxResult.error("失败");
     }

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

@@ -133,7 +133,7 @@ public class CommSendService {
         }
         //
         Seat seat = seatService.selectSeatBySeatId(seatId);
-        Sim sim = gggSimBySeatId(seatId);
+        Sim sim = getSimBySeatIdNewVer(seatId);
         {
             AjaxResult arE3 = checkOneSimStateActive(seat);
             if (arE3.isError()) {
@@ -279,7 +279,7 @@ public class CommSendService {
             return ar1;
         }
         // 重新最新模拟器。
-        Sim sim = gggSimBySeatId(seat.getSeatId());
+        Sim sim = getSimBySeatIdNewVer(seat.getSeatId());
         // 如果模拟器离线
         if (sim != null && Sim.State.ONLINE.equals(sim.getSimState())) {
             return AjaxResult.success();
@@ -348,7 +348,7 @@ public class CommSendService {
         // todo:
         // 根据Seat数据遍历
         seatService.listAllEnable().forEach(seat -> {
-            Sim sim = gggSimBySeatId(seat.getSeatId());
+            Sim sim = getSimBySeatIdNewVer(seat.getSeatId());
             String simType = sim.getSimType();
             List<Fault> listF = faultService.listType3EnableBySimType(simType);
             listF.forEach(f -> {
@@ -365,7 +365,7 @@ public class CommSendService {
      */
     public SimMsg debugReadSimType(final Long seatId) {
         Seat seat = seatService.selectSeatBySeatId(seatId);
-        Sim sim = gggSimBySeatId(seatId);
+        Sim sim = getSimBySeatIdNewVer(seatId);
         SimMsg sm = commBuildService.buildSendMsgReadSimType(sim.getSimNum());
         return send(sm, seat, sim, CommConst.RETRY_COUNT_0, commStrategy.getSleepShort());
     }
@@ -379,7 +379,7 @@ public class CommSendService {
      */
     public SimMsg debugClearOneFault(final Long seatId, final String bindHardwareMsg) {
         Seat seat = seatService.selectSeatBySeatId(seatId);
-        Sim sim = gggSimBySeatId(seatId);
+        Sim sim = getSimBySeatIdNewVer(seatId);
         SimMsg sm = commBuildService.buildSendMsgClearFault(sim.getSimNum(), bindHardwareMsg);
         return send(sm, seat, sim, RETRY_COUNT_CLEAR_ONE_FAULT, commStrategy.getSleepLong());
     }
@@ -401,31 +401,30 @@ public class CommSendService {
      */
     @Transactional
     public AjaxResult debugClearAllFaultBySeatId(final Long seatId) {
-        Seat seat = seatService.selectSeatBySeatId(seatId);
-        Sim sim = gggSimBySeatId(seatId);
-        // todo:
         {
-            AjaxResult arE3 = checkOneSimStateActive(seat);
-            if (arE3.isError()) {
-                return arE3;
+            AjaxResult ar = debugCheckSeatId(seatId);
+            if (ar.isError()) {
+                return ar;
             }
         }
-        sim = simService.uniqueBySimNum(sim.getSimNum());
+        debugFaultService.deleteAll();
+        Seat seat = seatService.selectSeatBySeatId(seatId);
+        Sim sim = getSimBySeatIdNewVer(seatId);
         if (sim == null) {
-            return AjaxResult.error("清除失败,对应simNum模拟器不存在!");
+            return AjaxResult.error("清除失败,模拟器不存在!请检查模拟器线缆连接,模拟器线缆开关!");
         }
+        sim = simService.selectSimBySimId(sim.getSimId());
         if (!Sim.State.ONLINE.equals(sim.getSimState())) {
             return AjaxResult.error("清除失败,模拟器尚未在线!");
         }
         List<SimMsg> list = new ArrayList<>();
         for (String b : getGZBWBySimType(sim.getSimType())) {
             SimMsg sm = debugClearOneFault(seatId, b);
+            if (sm != null && !Objects.equals(sm.getResult(), SimMsg.Result.SUCCESS)) {
+                AjaxResult.success("清除失败!");
+            }
             list.add(sm);
-//            if (sm != null && !sm.isOk()) {
-//
-//            }
         }
-        debugFaultService.deleteAll();
         return AjaxResult.success("清除成功,清除当前模拟器所有故障!");
     }
 
@@ -473,7 +472,7 @@ public class CommSendService {
     public SimMsg debugWriteOneFault(final Long seatId,
                                      final String bindHardwareMsg) {
         Seat seat = seatService.selectSeatBySeatId(seatId);
-        Sim sim = gggSimBySeatId(seatId);
+        Sim sim = getSimBySeatIdNewVer(seatId);
         SimMsg sm = commBuildService.buildSendMsgWriteFault(sim.getSimNum(), bindHardwareMsg);
         return send(sm, seat, sim, RETRY_COUNT_WRITE_ONE_FAULT, commStrategy.getSleepLong());
     }
@@ -487,7 +486,7 @@ public class CommSendService {
      */
     public List<SimMsg> debugWriteAllFault(final Long seatId) {
         List<SimMsg> list = new ArrayList<>();
-        Sim sim = gggSimBySeatId(seatId);
+        Sim sim = getSimBySeatIdNewVer(seatId);
         String simType = sim.getSimType();
         for (String bind : getGZBWBySimType(simType)) {
             list.add(debugWriteOneFault(seatId, bind));
@@ -506,17 +505,24 @@ public class CommSendService {
      */
     @Transactional
     public AjaxResult debugWriteSelectedFaultBySimNum(final Long seatId, final String[] faultIds, final Boolean checkReplace) {
-        //
-        l.info("faultIds.length = {}", faultIds.length);
+        // Check:seatId有效性
         {
-            int deleteCount = debugFaultService.deleteAll();
-            l.info("deleteCount = {}", deleteCount);
+            AjaxResult ar = debugCheckSeatId(seatId);
+            if (ar.isError()) {
+                return ar;
+            }
         }
-        // check faultIds 有效性
-
+        // Check:faultIds有效性
+        {
+            if (faultIds == null || faultIds.length == 0) {
+                return AjaxResult.error("下发故障数据为空!");
+            }
+        }
+        // 删除调试表故障数据。
+        debugFaultService.deleteAll();
         //
         Seat seat = seatService.selectSeatBySeatId(seatId);
-        Sim sim = gggSimBySeatId(seatId);
+        Sim sim = getSimBySeatIdNewVer(seatId);
         // check sim
         // 打开socket
         {
@@ -559,6 +565,28 @@ public class CommSendService {
         return AjaxResult.success("下发故障流程执行成功!");
     }
 
+    /**
+     * debug校验seatId
+     *
+     * @param seatId
+     * @return
+     */
+    public AjaxResult debugCheckSeatId(final Long seatId) {
+        if (seatId == null || seatId <= 0) {
+            return AjaxResult.error("座次信息不正确!");
+        }
+        Seat seat = seatService.selectSeatBySeatId(seatId);
+        if (seat == null) {
+            return AjaxResult.error("座次信息不存在!");
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * debug扫描所有座次模拟器
+     *
+     * @return
+     */
     public AjaxResult debugScanAllSeat() {
         List<ScanSeatVo> list = new ArrayList<>();
         seatService.listAllEnable().forEach(seat -> {
@@ -731,7 +759,7 @@ public class CommSendService {
     public SimMsg debugReadOneFaultResistance(final Long seatId,
                                               final String bindHardwareMsg) {
         Seat seat = seatService.selectSeatBySeatId(seatId);
-        Sim sim = gggSimBySeatId(seatId);
+        Sim sim = getSimBySeatIdNewVer(seatId);
         SimMsg sm = commBuildService.buildSendMsgReadFaultResistance(sim.getSimNum(), bindHardwareMsg);
         return send(sm, seat, null, RETRY_COUNT_0, commStrategy.getSleepShort());
     }
@@ -743,7 +771,7 @@ public class CommSendService {
      * @return
      */
     public List<SimMsg> debugReadAllFaultResistance(final Long seatId) {
-        Sim sim = gggSimBySeatId(seatId);
+        Sim sim = getSimBySeatIdNewVer(seatId);
         List<SimMsg> list = new ArrayList<>();
         String simType = simService.uniqueBySimNum(sim.getSimNum()).getSimType();
         for (String b : getGZBWBySimType(simType)) {
@@ -966,19 +994,19 @@ public class CommSendService {
     }
 
     /**
-     * todo:不存在部分数据
+     * checkOneSeatState 包装调用。
      *
      * @param seatId
-     * @return
+     * @return 可能为空
      */
-    public Sim gggSimBySeatId(Long seatId) {
+    public Sim getSimBySeatIdNewVer(Long seatId) {
         Seat seat = seatService.selectSeatBySeatId(seatId);
-        AjaxResult ar01 = commCheckService.checkOneSeatState(seat, true);
-        if (ar01.isSuccess()) {
-            Long simId = seatService.selectSeatBySeatId(seatId).getCurrentSimId();
-            return simService.selectSimBySimId(simId);
+        // 执行在线监测。
+        AjaxResult ar = commCheckService.checkOneSeatState(seat, true);
+        if (ar != null) {
+            return (Sim) ar.get(AjaxResult.DATA_TAG);
         } else {
-            throw new IllegalArgumentException("error gggSimBySeatId");
+            return null;
         }
     }
 

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

@@ -3,7 +3,6 @@ package com.ruoyi.sim.service.impl;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
-import java.util.Spliterator;
 
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
@@ -365,7 +364,7 @@ public class RealExamService {
             if (ar.isError()) {
                 // todo:重复
                 // 更新SimId
-                seatService.updateSimIdBySeatNum(seat.getSeatNum(), Seat.ID_0);
+                seatService.updateCurrentSimIdBySeatNum(seat.getSeatNum(), Seat.ID_0);
                 // 更新SocketState
                 seatService.updateSocketStateBySeatNum(seat.getSeatNum(), Seat.SocketState.OFFLINE);
                 return ar;
@@ -569,7 +568,7 @@ public class RealExamService {
             if (ar.isError()) {
                 // todo:重复
                 // 更新SimId
-                seatService.updateSimIdBySeatNum(seatStart.getSeatNum(), Seat.ID_0);
+                seatService.updateCurrentSimIdBySeatNum(seatStart.getSeatNum(), Seat.ID_0);
                 // 更新SocketState
                 seatService.updateSocketStateBySeatNum(seatStart.getSeatNum(), Seat.SocketState.OFFLINE);
                 return ar;

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

@@ -12,9 +12,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.sim.mapper.SeatMapper;
 import com.ruoyi.sim.domain.Seat;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 座Service业务层处理
@@ -177,7 +174,7 @@ public class SeatService {
         }
     }
 
-    public void updateSimIdBySeatNum(final Integer seatNum, final Long simId) {
+    public void updateCurrentSimIdBySeatNum(final Integer seatNum, final Long simId) {
         Seat f = uniqueBySeatNum(seatNum);
         f.setCurrentSimId(simId);
         updateSeat(f);