zhoupeng 1 年之前
父节点
当前提交
0c7e030736

+ 4 - 0
cqcy-ei/cqcy-ei-da/pom.xml

@@ -71,6 +71,10 @@
             <artifactId>hutool-all</artifactId>
         </dependency>
         <dependency>
+            <groupId>com.cronutils</groupId>
+            <artifactId>cron-utils</artifactId>
+        </dependency>
+        <dependency>
             <groupId>com.auth0</groupId>
             <artifactId>java-jwt</artifactId>
         </dependency>

+ 21 - 26
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/Test.java

@@ -23,32 +23,27 @@ public class Test {
 
     public static void main(String[] args) throws UnknownHostException, AlreadyConnectedException, JIException {
         DataSource dataSource = new DataSource();
-//        dataSource.setClsId(OpcDaDriverEnum.PAS300.getValue());
-//        dataSource.setIpAddress("192.168.1.99");
-//        dataSource.setClsId(OpcDaDriverEnum.YOKOGAWA.getValue());
-//        dataSource.setIpAddress("192.168.1.24");
-//        dataSource.setClsId(OpcDaDriverEnum.OPCIFIX.getValue());
-//        dataSource.setIpAddress("192.168.1.111");
-//        dataSource.setClsId(OpcDaDriverEnum.KEPSERVER.getValue());
-        dataSource.setIpAddress("192.168.0.5");
+        DataSource dataSource1 = new DataSource();
+        DataSource dataSource2 = new DataSource();
+        dataSource.setClsId("75D00BBB-DDA5-11D1-B944-9E614D000000");
+        dataSource.setIpAddress("192.168.1.99");
         dataSource.setIpUserName("administrator");
-        dataSource.setIpPassword("jd123456");
-//        String itemStr = "";
-//        String itemName1 = "AI";
-//        String itemName2 = "AV";
-//        String itemStr = "FCS0101";
-//        String itemName1 = "AA";
-//        String itemName2 = "PV";
-//        String itemStr = "FIX!@AI";
-//        String itemName1 = "TEST";
-//        String itemName2 = "F_CV";
-        String itemStr = "通道 1!@设备 1";
-        String itemName1 = "_System";
-        String itemName2 = " _Description ";
-        Server server = OpcDaUtil.createServer(dataSource);
-        server.connect();
+        dataSource.setIpPassword("asdf");
+        dataSource1.setClsId("75d00bbb-dda5-11d1-b944-9e614d000000");
+        dataSource1.setIpAddress("192.168.1.99");
+        dataSource1.setIpUserName("administrator");
+        dataSource1.setIpPassword("asdf");
+        dataSource2.setClsId("3c5702a2-eb8e-11d4-83a4-00105a984cbd");
+        dataSource2.setIpAddress("192.168.1.111");
+        dataSource2.setIpUserName("administrator");
+        dataSource2.setIpPassword("asdf");
+//        Server server = OpcDaUtil.createServer(dataSource);
+//        Server server1 = OpcDaUtil.createServer(dataSource1);
+        Server server2 = OpcDaUtil.createServer(dataSource2);
+//        server.connect();
+//        server1.connect();
+        server2.connect();
 //        test1(server,itemStr,itemName1,itemName2);
-        test2(server,itemStr,itemName1,itemName2);
     }
 
     public static void test1(Server server, String itemStr, String itemName1, String itemName2) throws JIException {
@@ -73,7 +68,7 @@ public class Test {
         System.out.println("-----" + (System.currentTimeMillis() - l) + "ms");
         System.out.println("--------------");
         System.out.println(mapList.size());
-        mapList.forEach(map->{
+        mapList.forEach(map -> {
             System.out.println(map.toString());
         });
     }
@@ -89,7 +84,7 @@ public class Test {
         System.out.println("-----" + (System.currentTimeMillis() - l) + "ms");
         System.out.println("--------------");
         System.out.println(browse.toString());
-        browse.forEach(e->{
+        browse.forEach(e -> {
             System.out.println(e);
         });
     }

+ 12 - 14
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/TestUtil.java

@@ -1,22 +1,20 @@
 package com.example.opc_da.task;
 
-import com.example.opc_common.entity.DataSource;
-import com.example.opc_da.util.OpcDaUtil;
-import org.jinterop.dcom.common.JIException;
-import org.openscada.opc.lib.common.AlreadyConnectedException;
-import org.openscada.opc.lib.da.Server;
+import com.example.opc_common.util.DateUtil;
+import com.example.opc_da.util.CronUtil;
 
-import java.net.UnknownHostException;
+import java.util.Date;
 
 public class TestUtil {
-    public static void main(String... args) throws InterruptedException, UnknownHostException, AlreadyConnectedException, JIException {
-        DataSource dataSource = new DataSource();
-        dataSource.setClsId("7BC0CC8E-482C-47CA-ABDC-0FE7F9C6E729");
-        dataSource.setIpAddress("192.168.0.5");
-        dataSource.setIpUserName("administrator");
-        dataSource.setIpPassword("jd123456");
-        Server server = OpcDaUtil.createServer(dataSource);
-        server.connect();
+    public static void main(String[] args) {
+
+        String cron = "0 0/5 * * * ?";
+        Integer type = 2;
+        String newCron = CronUtil.genNextCron(cron, type);
+        System.out.println(newCron);
+        Date timeAfter = CronUtil.getTimeAfter(newCron, new Date());
+        String itemId = DateUtil.dateChangeStrYmdhms(timeAfter);
+        System.out.println(itemId);
     }
 
 

+ 53 - 0
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/util/CronUtil.java

@@ -1,5 +1,8 @@
 package com.example.opc_da.util;
 
+import com.example.opc_common.enums.ResultEnum;
+import com.example.opc_common.exception.CustomException;
+import com.example.opc_common.util.DateUtil;
 import org.quartz.CronExpression;
 
 import java.util.Date;
@@ -68,5 +71,55 @@ public class CronUtil {
         return new Date(date.getTime() + getTimeBefore(cron, new Date()).getTime() - getTimeAfter(cron, date).getTime());
     }
 
+    /**
+     * 通过传入的当前cron,和设置的类型,生成下次执行的cron
+     *
+     * @param cron
+     * @param type 1每n秒执行一次,2每n分执行一次,3每n时执行一次,4在每天的HH-mm-ss执行,5在每月的n日,HH-mm-ss执行
+     * @return
+     */
+    public static String genNextCron(String cron, Integer type) {
+        String[] s = cron.split(" ");
+        //得到下一次执行时间
+        Date timeAfter = CronUtil.getTimeAfter(cron, new Date());
+        //获取当次任务,定时器执行的时间
+        Date timeBefore = CronUtil.getTimeBefore(cron, timeAfter);
+        //推到定时器下一次时间
+        switch (type) {
+            case 1:
+                String[] split1 = s[0].split("/");
+                String cycle1 = split1[1];
+                Date date1 = new Date(timeBefore.getTime() + 1000 * (Integer.valueOf(cycle1)));
+                DateUtil.dateChangeStrYmdhms(date1);
+                int hours1 = date1.getHours();
+                int minutes1 = date1.getMinutes();
+                int seconds1 = date1.getSeconds();
+                return "" + seconds1 + "/" + cycle1 + " " + minutes1 + " " + hours1 + " * *?";
+            case 2:
+                String[] split2 = s[1].split("/");
+                String cycle2 = split2[1];
+                Date date2 = new Date(timeBefore.getTime() + 1000 * 60 * (Integer.valueOf(cycle2)));
+                DateUtil.dateChangeStrYmdhms(date2);
+                int hours2 = date2.getHours();
+                int minutes2 = date2.getMinutes();
+                int seconds2 = date2.getSeconds();
+                return "" + seconds2 + " " + minutes2 + "/" + cycle2 + " " + hours2 + " * *?";
+            case 3:
+                String[] split3 = s[1].split("/");
+                String cycle3 = split3[1];
+                Date date3 = new Date(timeBefore.getTime() + 1000 * 60 * 60 * (Integer.valueOf(cycle3)));
+                DateUtil.dateChangeStrYmdhms(date3);
+                int hours3 = date3.getHours();
+                int minutes3 = date3.getMinutes();
+                int seconds3 = date3.getSeconds();
+                return "" + seconds3 + " " + minutes3 + " " + hours3 + "/" + cycle3 + " * *?";
+            case 4:
+            case 5:
+                return cron;
+        }
+        throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), ResultEnum.REQUEST_WRONGPARAMS.getRespMsg());
+
+    }
+
 
 }

+ 6 - 0
cqcy-ei/pom.xml

@@ -30,6 +30,7 @@
         <websocket-version>2.3.4.RELEASE</websocket-version>
         <fastjson-version>1.2.83</fastjson-version>
         <hutool-version>5.5.2</hutool-version>
+        <cron-version>9.2.0</cron-version>
         <jwt-version>3.8.2</jwt-version>
         <quartz-version>2.3.2</quartz-version>
         <pool2-version>2.8.1</pool2-version>
@@ -65,6 +66,11 @@
                 <version>${hutool-version}</version>
             </dependency>
             <dependency>
+                <groupId>com.cronutils</groupId>
+                <artifactId>cron-utils</artifactId>
+                <version>${cron-version}</version>
+            </dependency>
+            <dependency>
                 <groupId>com.auth0</groupId>
                 <artifactId>java-jwt</artifactId>
                 <version>${jwt-version}</version>