| package com.dy.simRtu202404.tcpClient; | 
|   | 
| import com.dy.simRtu202404.ServerProperties; | 
| import com.dy.simRtu202404.tcpClient.upData.UpData; | 
| import com.dy.simRtu202404.tcpClient.upData.UpHeartBeat; | 
| import com.dy.simRtu202404.tcpClient.upData.UpOpenCloseValve; | 
| import org.apache.logging.log4j.LogManager; | 
| import org.apache.logging.log4j.Logger; | 
| import org.apache.mina.core.session.IoSession; | 
|   | 
| /** | 
|  * @Author: liurunyu | 
|  * @Date: 2025/2/26 14:39 | 
|  * @Description | 
|  */ | 
| public class Worker { | 
|   | 
|     private static final Logger log = LogManager.getLogger(TcpClUnit.class) ; | 
|   | 
|     protected static IoSession session ; | 
|   | 
|     private static Worker instance = new Worker() ; | 
|   | 
|     private static Integer UpHeartBeatTimes = 0 ; | 
|     private static boolean isOpenValve = false ; | 
|     private static boolean isCloseValve = false ; | 
|     private static Integer OpenedCount = 0 ; | 
|     private static Integer ClosedCount = 0 ; | 
|   | 
|     private Worker(){ | 
|     } | 
|   | 
|     public static Worker getInstance(IoSession session){ | 
|         Worker.session = session ; | 
|         return instance ; | 
|     } | 
|   | 
|     public void doWork(){ | 
|         UpData.setSession(Starter.session); | 
|         new Thread(new Runnable(){ | 
|             @Override | 
|             public void run() { | 
|                 while(true){ | 
|                     try { | 
|                         reportData() ; | 
|                         Thread.sleep(1000L); | 
|                     }catch (Exception e){ | 
|                         continue; | 
|                     } | 
|                 } | 
|             } | 
|         }).start(); | 
|     } | 
|     private void reportData() throws Exception{ | 
|         UpHeartBeat.upCd02Data(ServerProperties.rtuAddr); | 
|         UpHeartBeatTimes += 1 ; | 
|   | 
|         Thread.sleep(10000L); | 
|   | 
|         if(UpHeartBeatTimes == 2){ | 
|             UpHeartBeatTimes = 0 ; | 
|             if(ServerProperties.type == 1){ | 
|                 if(!isOpenValve){ | 
|                     UpOpenCloseValve.upCd84Data(ServerProperties.rtuAddr); | 
|                     isOpenValve = true ; | 
|                 } | 
|             } | 
|   | 
|             if(ServerProperties.type == 2){ | 
|                 if(!isCloseValve){ | 
|                     UpOpenCloseValve.upCd85Data(ServerProperties.rtuAddr); | 
|                     isCloseValve = true ; | 
|                 } | 
|             } | 
|   | 
|             if(ServerProperties.type == 3){ | 
|                 if(!isOpenValve){ | 
|                     UpOpenCloseValve.upCd84Data(ServerProperties.rtuAddr); | 
|                     isOpenValve = true ; | 
|                 } | 
|                 OpenedCount += 1 ; | 
|                 if(OpenedCount == 10){ | 
|                     OpenedCount = 0 ; | 
|                     if(!isCloseValve){ | 
|                         UpOpenCloseValve.upCd85Data(ServerProperties.rtuAddr); | 
|                         isCloseValve = true ; | 
|                     } | 
|                 } | 
|             } | 
|   | 
|             if(ServerProperties.type == 4){ | 
|                 if(!isOpenValve && !isCloseValve){ | 
|                     //初次 | 
|                     UpOpenCloseValve.upCd84Data(ServerProperties.rtuAddr); | 
|                     isOpenValve = true ; | 
|                     isCloseValve = false ; | 
|                 }else{ | 
|                     if(isOpenValve){ | 
|                         OpenedCount += 1 ; | 
|                     } | 
|                     if(OpenedCount == 10){ | 
|                         OpenedCount = 0 ; | 
|                         UpOpenCloseValve.upCd85Data(ServerProperties.rtuAddr); | 
|                         isOpenValve = false ; | 
|                         isCloseValve = true ; | 
|                     } | 
|   | 
|                     if(isCloseValve){ | 
|                         ClosedCount += 1 ; | 
|                     } | 
|                     if(ClosedCount == 10){ | 
|                         ClosedCount = 0 ; | 
|                         UpOpenCloseValve.upCd84Data(ServerProperties.rtuAddr); | 
|                         isOpenValve = true ; | 
|                         isCloseValve = false ; | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|     } | 
| } |