Browse Source

no message

xiuwei 1 năm trước cách đây
mục cha
commit
7e270d0024

+ 26 - 26
backend/src/main/java/com/jiayue/pfr/service/alg/listener/AgcLockListener.java

@@ -1,25 +1,21 @@
 package com.jiayue.pfr.service.alg.listener;
 
 import com.jiayue.pfr.backenum.ActionResetEnum;
+import com.jiayue.pfr.backenum.TunnelStatus;
+import com.jiayue.pfr.container.ProtocolTunnelContainer;
 import com.jiayue.pfr.entity.BizYaoData;
 import com.jiayue.pfr.service.alg.BizYaoDataService;
+import com.jiayue.pfr.tunnelworker.BaseProtocolTunnel;
+import com.jiayue.pfr.tunnelworker.gathers.iml.Iec104TcpDataGather;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
-import wei.yigulu.iec104.apdumodel.Apdu;
-import wei.yigulu.iec104.apdumodel.Asdu;
-import wei.yigulu.iec104.asdudataframe.SingleBooleanCommand;
-import wei.yigulu.iec104.asdudataframe.typemodel.IeSingleBooleanCommand;
-import wei.yigulu.iec104.asdudataframe.typemodel.IecDataInterface;
-import wei.yigulu.iec104.asdudataframe.typemodel.InformationBodyAddress;
-import wei.yigulu.iec104.nettyconfig.Iec104MasterBuilder;
-import wei.yigulu.iec104.util.CommandWaiter;
-import wei.yigulu.iec104.util.SendAndReceiveNumUtil;
 import wei.yigulu.iec104.util.SendCommandHelper;
-import wei.yigulu.netty.AbstractMasterBuilder;
+
 
 /**
  * 给AGC闭锁
@@ -33,48 +29,52 @@ public class AgcLockListener implements ApplicationListener<AgcEvent> {
 
     @Autowired
     BizYaoDataService bizYaoDataService;
-//    @Autowired
-//    Iec104MasterBuilder agc104MasterBuilder;
+    // @Autowired
+    // Iec104MasterBuilder agc104MasterBuilder;
 
     @Async
     @Override
     public void onApplicationEvent(AgcEvent agcEvent) {
         Object obj = agcEvent.getSource();
         BizYaoData bizYaoData = agcEvent.getBizYaoData();
-        if (obj.toString().equals(ActionResetEnum.ACTION.getCode())){
+        if (obj.toString().equals(ActionResetEnum.ACTION.getCode())) {
             // 动作
             fLogger.info("AGC闭锁开始");
             boolean bsBoolean = false;
-            try {
-//                bsBoolean = SendCommandHelper.sendBooleanCommand(agc104MasterBuilder, 0, 1, 25089, true);
-            } catch (Exception e) {
-                throw new RuntimeException(e);
+            BaseProtocolTunnel tunnel = ProtocolTunnelContainer.getInstance().getTunnel(12);
+            if (tunnel instanceof Iec104TcpDataGather) {
+                try {
+                    if (TunnelStatus.ABLE_STATUS.contains(tunnel.getTunnelStatus())) {
+                        bsBoolean = SendCommandHelper.sendBooleanCommand(
+                                ((Iec104TcpDataGather) tunnel).getMasterBuilder(), 0, 1, 25089, true);
+                    }
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
             }
 
-            if (bsBoolean){
+            if (bsBoolean) {
                 bizYaoData.setAgcLock("0");
                 bizYaoDataService.update(bizYaoData);
                 fLogger.info("AGC闭锁成功");
-            }
-            else {
+            } else {
                 fLogger.info("AGC闭锁失败");
             }
-        }
-        else if (obj.toString().equals(ActionResetEnum.RESET.getCode())){
+        } else if (obj.toString().equals(ActionResetEnum.RESET.getCode())) {
             boolean bsBoolean = false;
             try {
-//                bsBoolean = SendCommandHelper.sendBooleanCommand(agc104MasterBuilder, 0, 1, 25089, false);
+                // bsBoolean = SendCommandHelper.sendBooleanCommand(agc104MasterBuilder, 0, 1,
+                // 25089, false);
             } catch (Exception e) {
                 throw new RuntimeException(e);
             }
 
-            if (bsBoolean){
+            if (bsBoolean) {
                 // 复归
                 bizYaoData.setAgcLock("1");
                 bizYaoDataService.update(bizYaoData);
                 fLogger.info("AGC解锁成功");
-            }
-            else {
+            } else {
                 fLogger.info("AGC解锁失败");
             }
         }

+ 4 - 0
backend/src/main/java/com/jiayue/pfr/tunnelworker/gathers/iml/Iec104TcpDataGather.java

@@ -12,6 +12,9 @@ import com.jiayue.pfr.logger.TunnelLoggerFactory;
 import com.jiayue.pfr.tunnelworker.BaseProtocolTunnel;
 import com.jiayue.pfr.tunnelworker.gathers.DataGatherInterface;
 import com.jiayue.pfr.tunnelworker.workassist.SingleThreadPoolExecutorUtil;
+
+import lombok.Getter;
+
 import org.joda.time.DateTime;
 import wei.yigulu.iec104.nettyconfig.Iec104HSMasterBuilder;
 import wei.yigulu.iec104.util.SendDataFrameHelper;
@@ -33,6 +36,7 @@ public class Iec104TcpDataGather extends BaseProtocolTunnel<Gather104TcpTunnelIn
   /**
    * 104的master 客户端
    */
+  @Getter
   private Iec104HSMasterBuilder masterBuilder;
 
   /**