pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -149,3 +149,10 @@ - /sso/sso - /remote/comRes/receive - /wx/comRes/receive #自动统计配置 auto-statistics: #月统计 month: startDay: 1 startHour: 0 startMinute: 5 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkRtuDealCommandResponse.java
@@ -58,69 +58,91 @@ if(obj instanceof DataCd97Vo){ DataCd97Vo vo = (DataCd97Vo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd98Vo){ DataCd98Vo vo = (DataCd98Vo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd92Vo){ DataCd92Vo vo = (DataCd92Vo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd93Vo){ DataCd93Vo vo = (DataCd93Vo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd3AAnd6AVo){ DataCd3AAnd6AVo vo = (DataCd3AAnd6AVo)obj ; po.setResultText(vo.comLog(code)); log.info("----------------------------------\n" + vo.comLog(code)); }else if(obj instanceof DataCd3BAnd6BVo){ DataCd3BAnd6BVo vo = (DataCd3BAnd6BVo)obj ; po.setResultText(vo.comLog(code)); log.info("----------------------------------\n" + vo.comLog(code)); }else if(obj instanceof DataCd3BAnd6BVo){ DataCd3CAnd65Vo vo = (DataCd3CAnd65Vo)obj ; po.setResultText(vo.comLog(code)); log.info("----------------------------------\n" + vo.comLog(code)); }else if(obj instanceof DataCd3DVo){ DataCd3DVo vo = (DataCd3DVo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd3EVo){ DataCd3EVo vo = (DataCd3EVo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd5EVo){ DataCd5EVo vo = (DataCd5EVo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd6CVo){ DataCd6CVo vo = (DataCd6CVo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd10Vo){ DataCd10Vo vo = (DataCd10Vo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd21Vo){ DataCd21Vo vo = (DataCd21Vo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd36Vo){ DataCd36Vo vo = (DataCd36Vo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd37And67Vo){ DataCd37And67Vo vo = (DataCd37And67Vo)obj ; po.setResultText(vo.comLog(code)); log.info("----------------------------------\n" + vo.comLog(code)); }else if(obj instanceof DataCd38And68Vo){ DataCd38And68Vo vo = (DataCd38And68Vo)obj ; po.setResultText(vo.comLog(code)); log.info("----------------------------------\n" + vo.comLog(code)); }else if(obj instanceof DataCd39And69Vo){ DataCd39And69Vo vo = (DataCd39And69Vo)obj ; po.setResultText(vo.comLog(code)); log.info("----------------------------------\n" + vo.comLog(code)); }else if(obj instanceof DataCd51Vo){ DataCd51Vo vo = (DataCd51Vo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd66Vo){ DataCd66Vo vo = (DataCd66Vo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd71Vo){ DataCd71Vo vo = (DataCd71Vo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCd99Vo){ DataCd99Vo vo = (DataCd99Vo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); }else if(obj instanceof DataCdA0Vo){ DataCdA0Vo vo = (DataCdA0Vo)obj ; po.setResultText(vo.comLog()); log.info("----------------------------------\n" + vo.comLog()); } return po ; } pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/Server.java
@@ -92,6 +92,7 @@ // /////////////// // 基础配置 ServerProperties.rtuAddr = conf.getSetAttrTxt(doc, "config.base", "rtuAddr", null, false, null); ServerProperties.onlyOneHeartBeat = conf.getSetAttrBoolean(doc, "config.base", "onlyOneHeartBeat", null, null); ServerProperties.icCardAddr = conf.getSetAttrTxt(doc, "config.base", "icCardAddr", null, false, null); ServerProperties.icCardNo = conf.getSetAttrTxt(doc, "config.base", "icCardNo", null, false, null); pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/ServerProperties.java
@@ -7,6 +7,7 @@ */ public class ServerProperties { public static String rtuAddr ; public static Boolean onlyOneHeartBeat ; public static String icCardAddr ; public static String icCardNo ; } pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/p206V1_0_0/RtuP206V1_0_0Ctrl.java
@@ -1,6 +1,7 @@ package com.dy.pipIrrMwTestRtu.p206V1_0_0; import com.dy.common.webUtil.BaseResponse; import com.dy.pipIrrMwTestRtu.tcpClient.upData.UpCd38; import com.dy.pipIrrMwTestRtu.tcpClient.upData.UpCd83Close; import com.dy.pipIrrMwTestRtu.tcpClient.upData.UpCd83Open; import com.dy.pipIrrMwTestRtu.tcpClient.upData.UpCd84; @@ -23,11 +24,13 @@ @GetMapping(path = "test") public BaseResponse<String> test(String com) { if(com.equals("83Open")){ UpCd83Open.upCd83Data(); UpCd83Open.upData(); }else if(com.equals("83Close")){ UpCd83Close.upCd83Data(); UpCd83Close.upData(); }else if(com.equals("84")){ UpCd84.upCd84Data(); UpCd84.upData(); }else if(com.equals("38")){ UpCd38.upData(); } BaseResponse<String> rt = new BaseResponse<String>() ; rt.setCode("001") ; pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/TcpClUnit.java
@@ -108,13 +108,22 @@ new Thread(new Runnable(){ @Override public void run() { while(true){ if(ServerProperties.onlyOneHeartBeat){ try { UpHeartBeat.upCd02Data(ServerProperties.rtuAddr); Thread.sleep(30000L); //Thread.sleep(30000000L); }catch (Exception e){ continue; } }else{ while(true){ try { UpHeartBeat.upCd02Data(ServerProperties.rtuAddr); Thread.sleep(30000L); //Thread.sleep(30000000L); }catch (Exception e){ continue; } } } } pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd38.java
New file @@ -0,0 +1,80 @@ package com.dy.pipIrrMwTestRtu.tcpClient.upData; import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; import com.dy.common.util.ByteUtil; import com.dy.common.util.DateTime; import com.dy.pipIrrMwTestRtu.ServerProperties; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** * @Author: liurunyu * @Date: 2024/7/22 15:01 * @Description */ public class UpCd38 extends UpData { private static final Logger log = LogManager.getLogger(UpCd38.class); public static void upData() { try { if (UpData.session != null && UpData.session.isConnected()) { byte[] bs = createData(ServerProperties.rtuAddr); UpData.upSend(bs); } else { log.error("未连接通信中间件,不能发送数据"); } } catch (Exception e) { log.error("向通信中间件发送数据产生异常", e); } } /** * 构造数据 * * @return 字节数组 * @throws Exception 异常 */ private static byte[] createData(String rtuAddr) throws Exception { byte[] bytes = creatHead(rtuAddr, "38", (byte)0xB0); byte[] bs = new byte[1] ; bs[0] = (byte)0x00 ;//报警金额高位 bytes = ByteUtil.bytesMerge(bytes, bs) ; bs = new byte[1] ; ByteUtil.int2BCD_LE(40, bs, 0); bytes = ByteUtil.bytesMerge(bytes, bs) ; bs = new byte[1] ;//秒钟 ByteUtil.int2BCD_LE(Integer.parseInt(DateTime.ss()), bs, 0); bytes = ByteUtil.bytesMerge(bytes, bs) ; bs = new byte[1] ;//分钟 ByteUtil.int2BCD_LE(Integer.parseInt(DateTime.mm()), bs, 0); bytes = ByteUtil.bytesMerge(bytes, bs) ; bs = new byte[1] ;//时钟 ByteUtil.int2BCD_LE(Integer.parseInt(DateTime.HH()), bs, 0); bytes = ByteUtil.bytesMerge(bytes, bs) ; bs = new byte[1] ;//日 ByteUtil.int2BCD_LE(Integer.parseInt(DateTime.dd()), bs, 0); bytes = ByteUtil.bytesMerge(bytes, bs) ; bs = new byte[]{(byte)0x0A} ;// bytes = ByteUtil.bytesMerge(bytes, bs) ; GlCreate.createLen(bytes);//长度放字节数组中 byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中 bytes = ByteUtil.bytesMerge(bytes, bsTail) ; return bytes ; } } pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Close.java
@@ -15,7 +15,7 @@ private static final Logger log = LogManager.getLogger(UpCd83Close.class); public static void upCd83Data() { public static void upData() { try { if (UpData.session != null && UpData.session.isConnected()) { byte[] bs = createData(ServerProperties.rtuAddr); pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Open.java
@@ -16,7 +16,7 @@ private static final Logger log = LogManager.getLogger(UpCd83Open.class); public static void upCd83Data() { public static void upData() { try { if (UpData.session != null && UpData.session.isConnected()) { byte[] bs = createData(ServerProperties.rtuAddr); pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd84.java
@@ -15,7 +15,7 @@ private static final Logger log = LogManager.getLogger(UpCd84.class); public static void upCd84Data() { public static void upData() { try { if (UpData.session != null && UpData.session.isConnected()) { byte[] bs = createData(ServerProperties.rtuAddr); @@ -30,7 +30,7 @@ /** * 构造心跳数据 * 构造数据 * * @return 字节数组 * @throws Exception 异常 pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/Config.xml
@@ -2,7 +2,7 @@ <config> <server name="RTU模拟器" showStartInfo="true" company="http://www.dyjs.com"/> <base rtuAddr="532328059995" icCardAddr="3B7D1E1A" icCardNo="61181622830147821"></base> <base rtuAddr="532328059995" onlyOneHeartBeat="true" icCardAddr="3B7D1E1A" icCardNo="61181622830147821"></base> <!-- --> <tcpCl mwServerIp="127.0.0.1" mwServerPort="60000" connectTimeout="3000" /> <tcpCl mwServerIp="192.168.40.182" mwServerPort="60000" connectTimeout="3000" /> </config> pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/listeners/StatisticsMonthListener.java
New file @@ -0,0 +1,59 @@ package com.dy.pipIrrStatistics.listeners; /** * @Author: liurunyu * @Date: 2024/7/22 14:39 * @Description */ import com.dy.common.util.ConfigXml; import com.dy.common.webListener.ConfigListener; import org.jdom2.Document; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.ApplicationListener; import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; import java.net.URL; /** * 监听器,实现功能:在系统启动时初始化,向数据库中插入数据 * 本监听器不能采用ServletContextListener方式,因为Servlet上下文Context创建后 * Spring容器并没有创建完,而本类中用了Spring容器中的Bean,即*Dao 。 * 所以采用了Spring事件监听器来实现 */ @Component public class StatisticsMonthListener implements ApplicationListener<ApplicationReadyEvent> { @Value("${auto-statistics.month.startDay: 1}") private Integer startDay ;//月统计开始日期 @Value("${auto-statistics.month.startHour: 0}") private Integer startHour ;//月统计开始小时 @Value("${auto-statistics.month.startMinute: 5}") private Integer startMinute ;//月统计开始分钟 /** * SpringBoot容器已经准备好了 * @param event 事件 */ @Override public void onApplicationEvent(@NonNull ApplicationReadyEvent event) { try { //等1秒,等待com.alibaba.druid.pool.DruidDataSource实始化完成 Thread.sleep(1000L); } catch (InterruptedException e) { e.printStackTrace(); }finally { this.start(event); } } /** * 实始化 */ private void start(ApplicationReadyEvent event){ } }