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 ; } } } } } }