Parcourir la source

Merge branch 'master' of http://116.63.33.55/git/read_opc

Zt il y a 1 an
Parent
commit
8953f41507

+ 4 - 4
chaunyi_opc/opc_common/src/main/java/com/example/opc_common/util/DateUtil.java

@@ -334,22 +334,22 @@ public class DateUtil {
 
     public static int timeDifference(Date startTime, Date endTime, String pattern, Integer bucketValue) {
         if (pattern.length() == 10) {
-            if (((endTime.getTime() - startTime.getTime()) / (bucketValue * 24 * 60 * 60 * 1000)) == 0) {
+            if (((endTime.getTime() - startTime.getTime()) % (bucketValue * 24 * 60 * 60 * 1000)) == 0) {
                 return (int) ((endTime.getTime() - startTime.getTime()) / (bucketValue * 24 * 60 * 60 * 1000));
             }
             return (int) ((endTime.getTime() - startTime.getTime()) / (bucketValue * 24 * 60 * 60 * 1000)) + 1;
         } else if (pattern.length() == 13) {
-            if (((endTime.getTime() - startTime.getTime()) / (bucketValue * 60 * 60 * 1000)) == 0) {
+            if (((endTime.getTime() - startTime.getTime()) % (bucketValue * 60 * 60 * 1000)) == 0) {
                 return (int) ((endTime.getTime() - startTime.getTime()) / (bucketValue * 60 * 60 * 1000));
             }
             return (int) ((endTime.getTime() - startTime.getTime()) / (bucketValue * 60 * 60 * 1000)) + 1;
         } else if (pattern.length() == 16) {
-            if (((endTime.getTime() - startTime.getTime()) / (bucketValue * 60 * 1000)) == 0) {
+            if (((endTime.getTime() - startTime.getTime()) % (bucketValue * 60 * 1000)) == 0) {
                 return (int) ((endTime.getTime() - startTime.getTime()) / (bucketValue * 60 * 1000));
             }
             return (int) ((endTime.getTime() - startTime.getTime()) / (bucketValue * 60 * 1000)) + 1;
         } else if (pattern.length() == 19) {
-            if (((endTime.getTime() - startTime.getTime()) / (bucketValue * 1000)) == 0) {
+            if (((endTime.getTime() - startTime.getTime()) % (bucketValue * 1000)) == 0) {
                 return (int) ((endTime.getTime() - startTime.getTime()) / (bucketValue * 1000));
             }
             return (int) ((endTime.getTime() - startTime.getTime()) / (bucketValue * 1000)) + 1;

+ 1 - 1
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/impl/ChartServiceImpl.java

@@ -180,7 +180,7 @@ public class ChartServiceImpl implements ChartService {
                                         orgList.add(orgRawList.get(k));
                                         list.add(rawList.get(k));
                                     }
-                                    if (time > endTimeTime) {
+                                    if (time >= endTimeTime) {
                                         break;
                                     }
                                 }

+ 0 - 310
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaChangeTask1.java

@@ -1,310 +0,0 @@
-package com.example.opc_da.task;
-
-import com.alibaba.fastjson.JSON;
-import com.example.opc_common.entity.*;
-import com.example.opc_common.util.Blank;
-import com.example.opc_common.util.ConstantStr;
-import com.example.opc_common.util.DateUtil;
-import com.example.opc_common.util.MathUtil;
-import com.example.opc_da.dao.ItemGroupDao;
-import com.example.opc_da.dao.MessageNoticeDao;
-import com.example.opc_da.dynamicSchedule.CronTaskRegister;
-import com.example.opc_da.util.OpcDaUtil;
-import com.example.opc_da.util.RedisUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.openscada.opc.dcom.da.OPCSERVERSTATE;
-import org.openscada.opc.lib.da.Item;
-import org.openscada.opc.lib.da.*;
-
-import java.math.BigDecimal;
-import java.util.*;
-
-@Slf4j
-public class OpcDaChangeTask1 extends TimerTask {
-
-    private final RedisUtil redisUtil;
-
-    private final OpcAsyncTask opcAsyncTask;
-
-    private final String cronId;
-
-    private final CronTaskRegister cronTaskRegister;
-
-    private final ItemGroupDao itemGroupDao;
-
-    private final MessageNoticeDao messageNoticeDao;
-
-    private final Timer timer;
-
-    private final ItemGroup itemGroup;
-
-    private final DataSource dataSource;
-
-    private final Map<String, DataModel> map;
-
-    private final List<com.example.opc_common.entity.Item> itemList;
-
-    private final String timeFormat;
-
-    private final Long endTime;
-
-    public OpcDaChangeTask1(RedisUtil redisUtil,
-                            OpcAsyncTask opcAsyncTask,
-                            String cronId,
-                            CronTaskRegister cronTaskRegister,
-                            ItemGroupDao itemGroupDao,
-                            MessageNoticeDao messageNoticeDao,
-                            Timer timer,
-                            ItemGroup itemGroup,
-                            DataSource dataSource,
-                            Map<String, DataModel> map,
-                            List<com.example.opc_common.entity.Item> itemList,
-                            String timeFormat,
-                            Long endTime) {
-        this.redisUtil = redisUtil;
-        this.opcAsyncTask = opcAsyncTask;
-        this.cronId = cronId;
-        this.cronTaskRegister = cronTaskRegister;
-        this.itemGroupDao = itemGroupDao;
-        this.messageNoticeDao = messageNoticeDao;
-        this.timer = timer;
-        this.itemGroup = itemGroup;
-        this.dataSource = dataSource;
-        this.map = map;
-        this.itemList = itemList;
-        this.timeFormat = timeFormat;
-        this.endTime = endTime;
-    }
-
-    @Override
-    public void run() {
-        Server server = OpcDaUtil.createServer(dataSource);
-        Integer id = itemGroup.getId();
-        Integer readModeType = itemGroup.getReadModeType();
-        Double modeValue = itemGroup.getModeValue();
-        Integer dataSourceId = dataSource.getId();
-        SyncAccess access = null;
-        try {
-            server.connect();
-            server.addStateListener(connected -> {
-                if (!connected) {
-                    messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                            itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                            "服务断开,马山进行重新连接",
-                            ConstantStr.NO_READ));
-                    Timer listenerTimer = new Timer();
-                    listenerTimer.schedule(new TimerTask() {
-                        private int sum = 0;
-
-                        @Override
-                        public void run() {
-                            try {
-                                sum++;
-                                if (sum > 3) {
-                                    redisUtil.set(ConstantStr.ITEM_GROUP + id, false);
-                                    messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                            itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接失败",
-                                            "3次服务重新连接失败",
-                                            ConstantStr.NO_READ));
-                                    listenerTimer.cancel();
-                                }
-                                server.connect();
-                                if (Blank.isNotEmpty(server.getServerState()) && server.getServerState().getServerState() == OPCSERVERSTATE.OPC_STATUS_RUNNING) {
-                                    messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                            itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
-                                            "服务重新连接成功",
-                                            ConstantStr.NO_READ));
-                                    listenerTimer.cancel();
-                                }
-                            } catch (Exception e) {
-                                redisUtil.set(ConstantStr.ITEM_GROUP + id, false);
-                                String message = OpcDaUtil.genException(e.getMessage());
-                                messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                        itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接失败",
-                                        message,
-                                        ConstantStr.NO_READ));
-                                listenerTimer.cancel();
-                            }
-                        }
-                    }, 10000);
-                }
-            });
-        } catch (Exception e) {
-            String message = OpcDaUtil.genException(e.getMessage());
-            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-                    message,
-                    ConstantStr.NO_READ));
-            if (Blank.isNotEmpty(server)) {
-                server.dispose();
-            }
-            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.EXCEPT_STOP_UP);
-            cronTaskRegister.removeCronTask(cronId);
-            timer.cancel();
-        }
-        try {
-            access = new SyncAccess(server, 500);
-            for (com.example.opc_common.entity.Item item : itemList) {
-                String itemId = item.getItemReadName();
-                access.addItem(itemId, new DataCallback() {
-                    private BigDecimal oldValue;
-                    private String sqlCurrentYmdh = "";
-                    private Long index = 0L;
-                    private Long timeStamp = 0L;
-
-                    @Override
-                    public void changed(Item item1, ItemState itemState) {
-                        index++;
-                        try {
-                            Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
-                            DataModel dm = map.get(itemId);
-                            //读取的值
-                            String javaType = String.valueOf(val.get("javaType"));
-                            Object value = val.get("value");
-                            //值对应取值的时间
-                            Date time = itemState.getTimestamp().getTime();
-                            long time1 = time.getTime();
-                            String currentYmdh = DateUtil.dateChangeStr(time, timeFormat);
-                            String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
-                            if (Blank.isEmpty(sqlCurrentYmdh)) {
-                                sqlCurrentYmdh = currentYmdh;
-                                timeStamp = time1;
-                                redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id, currentYmdh, ConstantStr.TWO_HOUR);
-                            } else {
-                                //如果上次时间戳和这次时间戳相等,说明值未发生变化,不需要进行下面的操作
-                                if (timeStamp == time1) {
-                                    return;
-                                }
-                                if (!sqlCurrentYmdh.equals(currentYmdh)) {
-                                    //组装相应的原始数据
-                                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                                    redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id, currentYmdh, ConstantStr.TWO_HOUR);
-                                    sqlCurrentYmdh = currentYmdh;
-                                    timeStamp = time1;
-                                }
-                            }
-                            if (javaType.toLowerCase().equals("boolean")) {
-                                Boolean dmData = JSON.parseObject(value.toString(), Boolean.class);
-                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(dmData), JSON.toJSONString(dmData),
-                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                opcAsyncTask.addCursorRawData(cursorRawData);
-                            } else {
-                                try {
-                                    BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
-                                    BigDecimal dmData = Blank.isNotEmpty(dm) ?
-                                            MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
-                                            bigDecimal;
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                            currentYmdhmss, index, currentYmdh,
-                                            Blank.isEmpty(oldValue) ? ConstantStr.IS_RECORD : MathUtil.isMeetChange(oldValue,
-                                                    dmData, new BigDecimal(modeValue), readModeType), new Date());
-                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                    oldValue = dmData;
-                                } catch (Exception e) {
-                                    String valueStr = value.toString();
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, valueStr, "".equals(valueStr) ? ConstantStr.STRING_EMPTY : valueStr,
-                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                }
-                            }
-                        } catch (Exception e) {
-                            //执行组装数据库的原始数据
-                            opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                            redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-
-                            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行停止",
-                                    e.getMessage(),
-                                    ConstantStr.NO_READ));
-                            if (Blank.isNotEmpty(server)) {
-                                server.dispose();
-                            }
-                            itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-                            cronTaskRegister.removeCronTask(cronId);
-                            timer.cancel();
-                        }
-                    }
-                });
-            }
-            access.bind();
-            while (true) {
-                Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                if (Blank.isEmpty(flage)) {
-                    flage = false;
-                }
-                if (!access.isActive()) {
-                    //执行组装数据库的数据,以及生成驱动报表
-                    String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                    messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                            itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-                            "服务异常停止了",
-                            ConstantStr.NO_READ));
-                    if (Blank.isNotEmpty(access)) {
-                        access.clear();
-                    }
-                    if (Blank.isNotEmpty(server)) {
-                        server.dispose();
-                    }
-                    itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-                    cronTaskRegister.removeCronTask(cronId);
-                    redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                    timer.cancel();
-                    break;
-                }
-                if (!flage) {
-                    //执行组装数据库的数据,以及生成驱动报表
-                    String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                    if (Blank.isNotEmpty(access)) {
-                        access.clear();
-                    }
-                    if (Blank.isNotEmpty(server)) {
-                        server.dispose();
-                    }
-                    cronTaskRegister.removeCronTask(cronId);
-                    redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                    timer.cancel();
-                    break;
-                }
-                if (System.currentTimeMillis() >= endTime) {
-                    //执行组装数据库的数据,以及生成驱动报表
-                    String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-
-                    if (Blank.isNotEmpty(access)) {
-                        access.clear();
-                    }
-                    if (Blank.isNotEmpty(server)) {
-                        server.dispose();
-                    }
-                    timer.cancel();
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-            if (Blank.isEmpty(flage)) {
-                flage = false;
-            }
-            if (!flage) {
-                //执行组装数据库的数据,以及生成驱动报表
-                String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                if (Blank.isNotEmpty(access)) {
-                    access.clear();
-                }
-                if (Blank.isNotEmpty(server)) {
-                    server.dispose();
-                }
-                itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.EXCEPT_STOP_UP);
-                cronTaskRegister.removeCronTask(cronId);
-                timer.cancel();
-            }
-        }
-    }
-}

+ 0 - 318
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaChangeTask2.java

@@ -1,318 +0,0 @@
-package com.example.opc_da.task;
-
-import com.alibaba.fastjson.JSON;
-import com.example.opc_common.entity.*;
-import com.example.opc_common.util.Blank;
-import com.example.opc_common.util.ConstantStr;
-import com.example.opc_common.util.DateUtil;
-import com.example.opc_common.util.MathUtil;
-import com.example.opc_da.dao.ItemGroupDao;
-import com.example.opc_da.dao.MessageNoticeDao;
-import com.example.opc_da.dynamicSchedule.CronTaskRegister;
-import com.example.opc_da.util.OpcDaUtil;
-import com.example.opc_da.util.RedisUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.openscada.opc.dcom.da.OPCSERVERSTATE;
-import org.openscada.opc.lib.da.Item;
-import org.openscada.opc.lib.da.*;
-
-import java.math.BigDecimal;
-import java.util.*;
-
-@Slf4j
-public class OpcDaChangeTask2 extends TimerTask {
-
-    private final RedisUtil redisUtil;
-
-    private final OpcAsyncTask opcAsyncTask;
-
-    private final String cronId;
-
-    private final CronTaskRegister cronTaskRegister;
-
-    private final ItemGroupDao itemGroupDao;
-
-    private final MessageNoticeDao messageNoticeDao;
-
-    private final Timer timer;
-
-    private final ItemGroup itemGroup;
-
-    private final DataSource dataSource;
-
-    private final Map<String, DataModel> map;
-
-    private final List<com.example.opc_common.entity.Item> itemList;
-
-    private final String timeFormat;
-
-    private final Long endTime;
-
-    public OpcDaChangeTask2(RedisUtil redisUtil,
-                            OpcAsyncTask opcAsyncTask,
-                            String cronId,
-                            CronTaskRegister cronTaskRegister,
-                            ItemGroupDao itemGroupDao,
-                            MessageNoticeDao messageNoticeDao,
-                            Timer timer,
-                            ItemGroup itemGroup,
-                            DataSource dataSource,
-                            Map<String, DataModel> map,
-                            List<com.example.opc_common.entity.Item> itemList,
-                            String timeFormat,
-                            Long endTime) {
-        this.redisUtil = redisUtil;
-        this.opcAsyncTask = opcAsyncTask;
-        this.cronId = cronId;
-        this.cronTaskRegister = cronTaskRegister;
-        this.itemGroupDao = itemGroupDao;
-        this.messageNoticeDao = messageNoticeDao;
-        this.timer = timer;
-        this.itemGroup = itemGroup;
-        this.dataSource = dataSource;
-        this.map = map;
-        this.itemList = itemList;
-        this.timeFormat = timeFormat;
-        this.endTime = endTime;
-    }
-
-    @Override
-    public void run() {
-        Server server = OpcDaUtil.createServer(dataSource);
-        Integer id = itemGroup.getId();
-        Integer readModeType = itemGroup.getReadModeType();
-        Double modeValue = itemGroup.getModeValue();
-        Integer dataSourceId = dataSource.getId();
-        SyncAccess access = null;
-        try {
-            server.connect();
-            server.addStateListener(connected -> {
-                if (!connected) {
-                    messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                            itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                            "服务断开,马山进行重新连接",
-                            ConstantStr.NO_READ));
-                    Timer listenerTimer = new Timer();
-                    listenerTimer.schedule(new TimerTask() {
-                        @Override
-                        public void run() {
-                            try {
-                                server.connect();
-                                if (Blank.isNotEmpty(server.getServerState()) && server.getServerState().getServerState() == OPCSERVERSTATE.OPC_STATUS_RUNNING) {
-                                    messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                            itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
-                                            "服务重新连接成功",
-                                            ConstantStr.NO_READ));
-                                    listenerTimer.cancel();
-                                }
-                            } catch (Exception e) {
-//                                redisUtil.set(ConstantStr.ITEM_GROUP + id, false);
-//                                String message = OpcDaUtil.genException(e.getMessage());
-//                                messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-//                                        itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接失败",
-//                                        message,
-//                                        ConstantStr.NO_READ));
-//                                listenerTimer.cancel();
-                            }
-                        }
-                    }, 60000);
-                }
-            });
-        } catch (Exception e) {
-            String message = OpcDaUtil.genException(e.getMessage());
-            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-                    message,
-                    ConstantStr.NO_READ));
-            if (Blank.isNotEmpty(server)) {
-                server.dispose();
-            }
-            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.EXCEPT_STOP_UP);
-            cronTaskRegister.removeCronTask(cronId);
-            timer.cancel();
-        }
-        try {
-            access = new SyncAccess(server, 500);
-            for (com.example.opc_common.entity.Item item : itemList) {
-                String itemId = item.getItemReadName();
-                access.addItem(itemId, new DataCallback() {
-                    private BigDecimal oldValue;
-                    private String sqlCurrentYmdh = "";
-                    private Long index = 0L;
-
-                    @Override
-                    public void changed(Item item1, ItemState itemState) {
-                        index++;
-                        try {
-                            Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
-                            DataModel dm = map.get(itemId);
-                            //读取的值
-                            String javaType = String.valueOf(val.get("javaType"));
-                            Object value = val.get("value");
-                            //值对应取值的时间
-                            Date time = itemState.getTimestamp().getTime();
-                            String currentYmdh = DateUtil.dateChangeStr(time, timeFormat);
-                            String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
-                            if (Blank.isEmpty(sqlCurrentYmdh)) {
-                                sqlCurrentYmdh = currentYmdh;
-                                redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id, currentYmdh, ConstantStr.TWO_HOUR);
-                            } else {
-                                if (!sqlCurrentYmdh.equals(currentYmdh)) {
-                                    //组装相应的原始数据
-                                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                                    redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id, currentYmdh, ConstantStr.TWO_HOUR);
-                                    sqlCurrentYmdh = currentYmdh;
-                                }
-                            }
-                            String valueStr = value.toString();
-                            if (javaType.toLowerCase().equals("boolean")) {
-                                Boolean data = JSON.parseObject(valueStr, Boolean.class);
-                                if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE) && dm.getOperationRule().equals(valueStr)) {
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(data), dm.getReplacingValue(),
-                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                } else {
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(data), JSON.toJSONString(data),
-                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                }
-                            } else {
-                                try {
-                                    BigDecimal bigDecimal = JSON.parseObject(valueStr, BigDecimal.class);
-                                    if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE) && dm.getOperationRule().equals(valueStr)) {
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), dm.getReplacingValue(),
-                                                currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                        opcAsyncTask.addCursorRawData(cursorRawData);
-                                    } else {
-                                        BigDecimal dmData = Blank.isNotEmpty(dm) ?
-                                                MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
-                                                bigDecimal;
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                currentYmdhmss, index, currentYmdh,
-                                                Blank.isEmpty(oldValue) ? ConstantStr.IS_RECORD : MathUtil.isMeetChange(oldValue,
-                                                        dmData, new BigDecimal(modeValue), readModeType), new Date());
-                                        opcAsyncTask.addCursorRawData(cursorRawData);
-                                        oldValue = dmData;
-                                    }
-//                                    BigDecimal dmData = Blank.isNotEmpty(dm) ?
-//                                            MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
-//                                            bigDecimal;
-//                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-//                                            currentYmdhmss, index, currentYmdh,
-//                                            Blank.isEmpty(oldValue) ? ConstantStr.IS_RECORD : MathUtil.isMeetChange(oldValue,
-//                                                    dmData, new BigDecimal(modeValue), readModeType), new Date());
-//                                    opcAsyncTask.addCursorRawData(cursorRawData);
-//                                    oldValue = dmData;
-                                } catch (Exception e) {
-                                    if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE) && dm.getOperationRule().equals(valueStr)) {
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, valueStr, dm.getReplacingValue(),
-                                                currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                        opcAsyncTask.addCursorRawData(cursorRawData);
-                                    } else {
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, valueStr, "".equals(valueStr) ? ConstantStr.STRING_EMPTY : valueStr,
-                                                currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                        opcAsyncTask.addCursorRawData(cursorRawData);
-                                    }
-                                }
-                            }
-                        } catch (Exception e) {
-                            //执行组装数据库的原始数据
-                            opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                            redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-
-                            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行停止",
-                                    e.getMessage(),
-                                    ConstantStr.NO_READ));
-                            if (Blank.isNotEmpty(server)) {
-                                server.dispose();
-                            }
-                            itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-                            cronTaskRegister.removeCronTask(cronId);
-                            timer.cancel();
-                        }
-                    }
-                });
-            }
-            access.bind();
-            while (true) {
-                Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                if (Blank.isEmpty(flage)) {
-                    flage = false;
-                }
-//                if (!access.isActive()) {
-//                    //执行组装数据库的数据,以及生成驱动报表
-//                    String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-//                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-//                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-//                    messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-//                            itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-//                            "服务异常停止了",
-//                            ConstantStr.NO_READ));
-//                    if (Blank.isNotEmpty(access)) {
-//                        access.clear();
-//                    }
-//                    if (Blank.isNotEmpty(server)) {
-//                        server.dispose();
-//                    }
-//                    itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-//                    cronTaskRegister.removeCronTask(cronId);
-//                    redisUtil.del(ConstantStr.ITEM_GROUP + id);
-//                    timer.cancel();
-//                    break;
-//                }
-                if (!flage) {
-                    //执行组装数据库的数据,以及生成驱动报表
-                    String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                    if (Blank.isNotEmpty(access)) {
-                        access.clear();
-                    }
-                    if (Blank.isNotEmpty(server)) {
-                        server.dispose();
-                    }
-                    cronTaskRegister.removeCronTask(cronId);
-                    redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                    timer.cancel();
-                    break;
-                }
-                if (System.currentTimeMillis() >= endTime) {
-                    //执行组装数据库的数据,以及生成驱动报表
-                    String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-
-                    if (Blank.isNotEmpty(access)) {
-                        access.clear();
-                    }
-                    if (Blank.isNotEmpty(server)) {
-                        server.dispose();
-                    }
-                    timer.cancel();
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-            if (Blank.isEmpty(flage)) {
-                flage = false;
-            }
-            if (!flage) {
-                //执行组装数据库的数据,以及生成驱动报表
-                String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                if (Blank.isNotEmpty(access)) {
-                    access.clear();
-                }
-                if (Blank.isNotEmpty(server)) {
-                    server.dispose();
-                }
-                itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.EXCEPT_STOP_UP);
-                cronTaskRegister.removeCronTask(cronId);
-                timer.cancel();
-            }
-        }
-    }
-}

+ 0 - 330
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaChangeTask3.java

@@ -1,330 +0,0 @@
-package com.example.opc_da.task;
-
-import com.alibaba.fastjson.JSON;
-import com.example.opc_common.entity.*;
-import com.example.opc_common.util.Blank;
-import com.example.opc_common.util.ConstantStr;
-import com.example.opc_common.util.DateUtil;
-import com.example.opc_common.util.MathUtil;
-import com.example.opc_da.dao.ItemGroupDao;
-import com.example.opc_da.dao.MessageNoticeDao;
-import com.example.opc_da.dynamicSchedule.CronTaskRegister;
-import com.example.opc_da.util.OpcDaUtil;
-import com.example.opc_da.util.RedisUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.openscada.opc.dcom.da.OPCSERVERSTATE;
-import org.openscada.opc.lib.da.Item;
-import org.openscada.opc.lib.da.*;
-
-import java.math.BigDecimal;
-import java.util.*;
-
-@Slf4j
-public class OpcDaChangeTask3 extends TimerTask {
-
-    private final RedisUtil redisUtil;
-
-    private final OpcAsyncTask opcAsyncTask;
-
-    private final String cronId;
-
-    private final CronTaskRegister cronTaskRegister;
-
-    private final ItemGroupDao itemGroupDao;
-
-    private final MessageNoticeDao messageNoticeDao;
-
-    private final Timer timer;
-
-    private final ItemGroup itemGroup;
-
-    private final DataSource dataSource;
-
-    private final Map<String, DataModel> map;
-
-    private final List<com.example.opc_common.entity.Item> itemList;
-
-    private final String timeFormat;
-
-    private final Map<String, List<TableTemplate>> ttMap;
-
-    private final Long endTime;
-
-    public OpcDaChangeTask3(RedisUtil redisUtil,
-                            OpcAsyncTask opcAsyncTask,
-                            String cronId,
-                            CronTaskRegister cronTaskRegister,
-                            ItemGroupDao itemGroupDao,
-                            MessageNoticeDao messageNoticeDao,
-                            Timer timer,
-                            ItemGroup itemGroup,
-                            DataSource dataSource,
-                            Map<String, DataModel> map,
-                            List<com.example.opc_common.entity.Item> itemList,
-                            String timeFormat,
-                            Map<String, List<TableTemplate>> ttMap,
-                            Long endTime) {
-        this.redisUtil = redisUtil;
-        this.opcAsyncTask = opcAsyncTask;
-        this.cronId = cronId;
-        this.cronTaskRegister = cronTaskRegister;
-        this.itemGroupDao = itemGroupDao;
-        this.messageNoticeDao = messageNoticeDao;
-        this.timer = timer;
-        this.itemGroup = itemGroup;
-        this.dataSource = dataSource;
-        this.map = map;
-        this.itemList = itemList;
-        this.timeFormat = timeFormat;
-        this.ttMap = ttMap;
-        this.endTime = endTime;
-    }
-
-    @Override
-    public void run() {
-        Server server = OpcDaUtil.createServer(dataSource);
-        Integer id = itemGroup.getId();
-        Integer readModeType = itemGroup.getReadModeType();
-        Double modeValue = itemGroup.getModeValue();
-        Integer dataSourceId = dataSource.getId();
-        SyncAccess access = null;
-        try {
-            server.connect();
-            server.addStateListener(connected -> {
-                if (!connected) {
-                    Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                    if (Blank.isEmpty(flage)) {
-                        flage = false;
-                    }
-                    if (flage) {
-                        messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                                "服务断开,马上进行重新连接",
-                                ConstantStr.NO_READ));
-                        itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-                        Timer listenerTimer = new Timer();
-                        listenerTimer.schedule(new TimerTask() {
-                            @Override
-                            public void run() {
-                                try {
-                                    server.connect();
-                                    if (Blank.isNotEmpty(server.getServerState()) && server.getServerState().getServerState() == OPCSERVERSTATE.OPC_STATUS_RUNNING) {
-                                        messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                                itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
-                                                "服务重新连接成功",
-                                                ConstantStr.NO_READ));
-                                        itemGroupDao.stopItemGroupById(id, ConstantStr.START_UP);
-                                        listenerTimer.cancel();
-                                    }
-                                } catch (Exception e) {
-//                                redisUtil.set(ConstantStr.ITEM_GROUP + id, false);
-//                                String message = OpcDaUtil.genException(e.getMessage());
-//                                messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-//                                        itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接失败",
-//                                        message,
-//                                        ConstantStr.NO_READ));
-//                                listenerTimer.cancel();
-                                }
-                            }
-                        }, 60000);
-                    }
-                }
-            });
-        } catch (Exception e) {
-            String message = OpcDaUtil.genException(e.getMessage());
-            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-                    message,
-                    ConstantStr.NO_READ));
-            if (Blank.isNotEmpty(server)) {
-                server.dispose();
-            }
-            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-            cronTaskRegister.removeCronTask(cronId);
-            timer.cancel();
-        }
-        try {
-            access = new SyncAccess(server, 500);
-            for (com.example.opc_common.entity.Item item : itemList) {
-                String itemId = item.getItemReadName();
-                access.addItem(itemId, new DataCallback() {
-                    private BigDecimal oldValue;
-                    private String sqlCurrentYmdh = "";
-                    private Long index = 0L;
-
-                    @Override
-                    public void changed(Item item1, ItemState itemState) {
-                        index++;
-                        try {
-                            Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
-                            DataModel dm = map.get(itemId);
-                            //读取的值
-                            String javaType = String.valueOf(val.get("javaType"));
-                            Object value = val.get("value");
-                            //值对应取值的时间
-                            Date time = itemState.getTimestamp().getTime();
-                            String currentYmdh = DateUtil.dateChangeStr(time, timeFormat);
-                            String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
-                            if (Blank.isEmpty(sqlCurrentYmdh)) {
-                                sqlCurrentYmdh = currentYmdh;
-                                redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id, currentYmdh, ConstantStr.TWO_HOUR);
-                            } else {
-                                if (!sqlCurrentYmdh.equals(currentYmdh)) {
-                                    //组装相应的原始数据
-                                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                                    redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id, currentYmdh, ConstantStr.TWO_HOUR);
-                                    sqlCurrentYmdh = currentYmdh;
-                                }
-                            }
-                            String valueStr = value.toString();
-                            if (javaType.toLowerCase().equals("boolean")) {
-                                Boolean data = JSON.parseObject(valueStr, Boolean.class);
-                                if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE) && dm.getOperationRule().equals(valueStr)) {
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(data), dm.getReplacingValue(),
-                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                } else {
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(data), JSON.toJSONString(data),
-                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                }
-                            } else {
-                                try {
-                                    BigDecimal bigDecimal = JSON.parseObject(valueStr, BigDecimal.class);
-                                    if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE) && dm.getOperationRule().equals(valueStr)) {
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), dm.getReplacingValue(),
-                                                currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                        opcAsyncTask.addCursorRawData(cursorRawData);
-                                    } else {
-                                        BigDecimal dmData = Blank.isNotEmpty(dm) ?
-                                                MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
-                                                bigDecimal;
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                currentYmdhmss, index, currentYmdh,
-                                                Blank.isEmpty(oldValue) ? ConstantStr.IS_RECORD : MathUtil.isMeetChange(oldValue,
-                                                        dmData, new BigDecimal(modeValue), readModeType), new Date());
-                                        opcAsyncTask.addCursorRawData(cursorRawData);
-                                        oldValue = dmData;
-                                    }
-//                                    BigDecimal dmData = Blank.isNotEmpty(dm) ?
-//                                            MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
-//                                            bigDecimal;
-//                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-//                                            currentYmdhmss, index, currentYmdh,
-//                                            Blank.isEmpty(oldValue) ? ConstantStr.IS_RECORD : MathUtil.isMeetChange(oldValue,
-//                                                    dmData, new BigDecimal(modeValue), readModeType), new Date());
-//                                    opcAsyncTask.addCursorRawData(cursorRawData);
-//                                    oldValue = dmData;
-                                } catch (Exception e) {
-                                    if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE) && dm.getOperationRule().equals(valueStr)) {
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, valueStr, dm.getReplacingValue(),
-                                                currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                        opcAsyncTask.addCursorRawData(cursorRawData);
-                                    } else {
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, valueStr, "".equals(valueStr) ? ConstantStr.STRING_EMPTY : valueStr,
-                                                currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                        opcAsyncTask.addCursorRawData(cursorRawData);
-                                    }
-                                }
-                            }
-                        } catch (Exception e) {
-                            //执行组装数据库的原始数据
-                            opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                            redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-
-                            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行停止",
-                                    e.getMessage(),
-                                    ConstantStr.NO_READ));
-                            if (Blank.isNotEmpty(server)) {
-                                server.dispose();
-                            }
-                            itemGroupDao.stopItemGroupById(id, ConstantStr.STOP_IT);
-                            cronTaskRegister.removeCronTask(cronId);
-                            timer.cancel();
-                        }
-                    }
-                });
-            }
-            access.bind();
-            while (true) {
-                Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                if (Blank.isEmpty(flage)) {
-                    flage = false;
-                }
-//                if (!access.isActive()) {
-//                    //执行组装数据库的数据,以及生成驱动报表
-//                    String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-//                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-//                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-//                    messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-//                            itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-//                            "服务异常停止了",
-//                            ConstantStr.NO_READ));
-//                    if (Blank.isNotEmpty(access)) {
-//                        access.clear();
-//                    }
-//                    if (Blank.isNotEmpty(server)) {
-//                        server.dispose();
-//                    }
-//                    itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-//                    cronTaskRegister.removeCronTask(cronId);
-//                    redisUtil.del(ConstantStr.ITEM_GROUP + id);
-//                    timer.cancel();
-//                    break;
-//                }
-                if (!flage) {
-                    //执行组装数据库的数据,以及生成驱动报表
-                    String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                    if (Blank.isNotEmpty(access)) {
-                        access.clear();
-                    }
-                    if (Blank.isNotEmpty(server)) {
-                        server.dispose();
-                    }
-                    cronTaskRegister.removeCronTask(cronId);
-                    redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                    timer.cancel();
-                    break;
-                }
-                if (System.currentTimeMillis() >= endTime) {
-                    //执行组装数据库的数据,以及生成驱动报表
-                    String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-
-                    if (Blank.isNotEmpty(access)) {
-                        access.clear();
-                    }
-                    if (Blank.isNotEmpty(server)) {
-                        server.dispose();
-                    }
-                    timer.cancel();
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-            if (Blank.isEmpty(flage)) {
-                flage = false;
-            }
-            if (!flage) {
-                //执行组装数据库的数据,以及生成驱动报表
-                String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                if (Blank.isNotEmpty(access)) {
-                    access.clear();
-                }
-                if (Blank.isNotEmpty(server)) {
-                    server.dispose();
-                }
-                itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                cronTaskRegister.removeCronTask(cronId);
-                timer.cancel();
-            }
-        }
-    }
-}

+ 0 - 291
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaChangeTask4.java

@@ -1,291 +0,0 @@
-package com.example.opc_da.task;
-
-import com.alibaba.fastjson.JSON;
-import com.example.opc_common.entity.*;
-import com.example.opc_common.util.Blank;
-import com.example.opc_common.util.ConstantStr;
-import com.example.opc_common.util.DateUtil;
-import com.example.opc_common.util.MathUtil;
-import com.example.opc_da.dao.ItemGroupDao;
-import com.example.opc_da.dao.MessageNoticeDao;
-import com.example.opc_da.dynamicSchedule.CronTaskRegister;
-import com.example.opc_da.util.OpcDaUtil;
-import com.example.opc_da.util.RedisUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.openscada.opc.dcom.da.OPCSERVERSTATE;
-import org.openscada.opc.dcom.da.OPCSERVERSTATUS;
-import org.openscada.opc.lib.da.Group;
-import org.openscada.opc.lib.da.Item;
-import org.openscada.opc.lib.da.ItemState;
-import org.openscada.opc.lib.da.Server;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicReference;
-
-import static com.example.opc_da.util.OpcDaUtil.getVal;
-
-@Slf4j
-public class OpcDaChangeTask4 extends TimerTask {
-
-    private final RedisUtil redisUtil;
-
-    private final OpcAsyncTask opcAsyncTask;
-
-    private final String cronId;
-
-    private final CronTaskRegister cronTaskRegister;
-
-    private final ItemGroupDao itemGroupDao;
-
-    private final MessageNoticeDao messageNoticeDao;
-
-    private final Timer timer;
-
-    private final ItemGroup itemGroup;
-
-    private final DataSource dataSource;
-
-    private final Map<String, DataModel> map;
-
-    private final List<com.example.opc_common.entity.Item> itemList;
-
-    private final String[] items;
-
-    private final String timeFormat;
-
-    private final Long endTime;
-
-    public OpcDaChangeTask4(RedisUtil redisUtil,
-                            OpcAsyncTask opcAsyncTask,
-                            String cronId,
-                            CronTaskRegister cronTaskRegister,
-                            ItemGroupDao itemGroupDao,
-                            MessageNoticeDao messageNoticeDao,
-                            Timer timer,
-                            ItemGroup itemGroup,
-                            DataSource dataSource,
-                            Map<String, DataModel> map,
-                            List<com.example.opc_common.entity.Item> itemList,
-                            String[] items,
-                            String timeFormat,
-                            Long endTime) {
-        this.redisUtil = redisUtil;
-        this.opcAsyncTask = opcAsyncTask;
-        this.cronId = cronId;
-        this.cronTaskRegister = cronTaskRegister;
-        this.itemGroupDao = itemGroupDao;
-        this.messageNoticeDao = messageNoticeDao;
-        this.timer = timer;
-        this.itemGroup = itemGroup;
-        this.dataSource = dataSource;
-        this.map = map;
-        this.itemList = itemList;
-        this.items = items;
-        this.timeFormat = timeFormat;
-        this.endTime = endTime;
-    }
-
-    @Override
-    public void run() {
-        Server server = OpcDaUtil.createServer(dataSource);
-        Integer id = itemGroup.getId();
-        Integer readModeType = itemGroup.getReadModeType();
-        Double modeValue = itemGroup.getModeValue();
-        Integer dataSourceId = dataSource.getId();
-        try {
-            AtomicReference<Long> index = new AtomicReference<>(0L);
-            server.connect();
-            server.addStateListener(connected -> {
-                if (!connected) {
-                    Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                    if (Blank.isEmpty(flage)) {
-                        flage = false;
-                    }
-                    if (flage) {
-                        messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                                "服务断开,马上进行重新连接",
-                                ConstantStr.NO_READ));
-                        itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-                        Timer listenerTimer = new Timer();
-                        listenerTimer.schedule(new TimerTask() {
-                            @Override
-                            public void run() {
-                                try {
-                                    server.connect();
-                                    if (Blank.isNotEmpty(server.getServerState()) && server.getServerState().getServerState() == OPCSERVERSTATE.OPC_STATUS_RUNNING) {
-                                        messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                                itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
-                                                "服务重新连接成功",
-                                                ConstantStr.NO_READ));
-                                        itemGroupDao.stopItemGroupById(id, ConstantStr.START_UP);
-                                        listenerTimer.cancel();
-                                    }
-                                } catch (Exception e) {
-//                                redisUtil.set(ConstantStr.ITEM_GROUP + id, false);
-//                                String message = OpcDaUtil.genException(e.getMessage());
-//                                messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-//                                        itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接失败",
-//                                        message,
-//                                        ConstantStr.NO_READ));
-//                                listenerTimer.cancel();
-                                }
-                            }
-                        }, 60000);
-                    }
-                }else{
-                    try {
-                        Group group = server.addGroup();
-                        Map<String, Item> itemResult = group.addItems(items);
-                        Set itemSet = new HashSet(itemResult.values());
-                        Item[] itemArr = new Item[itemSet.size()];
-                        itemSet.toArray(itemArr);
-                        String sqlCurrentYmdh = "";
-                        while (true) {
-                            Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                            if (Blank.isEmpty(flage)) {
-                                flage = false;
-                            }
-                            if (!flage) {
-                                //执行组装数据库的数据,以及生成驱动报表
-                                sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                                if (Blank.isNotEmpty(sqlCurrentYmdh)) {
-                                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                                }
-                                redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                                if (Blank.isNotEmpty(server)) {
-                                    server.dispose();
-                                }
-                                cronTaskRegister.removeCronTask(cronId);
-                                redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                                timer.cancel();
-                                break;
-                            }
-                            if (System.currentTimeMillis() >= endTime) {
-                                //执行组装数据库的数据,以及生成驱动报表
-                                sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                                if (Blank.isNotEmpty(sqlCurrentYmdh)) {
-                                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                                }
-                                redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                                if (Blank.isNotEmpty(server)) {
-                                    server.dispose();
-                                }
-                                timer.cancel();
-                                break;
-                            }
-                            try {
-                                Thread.sleep(1000);
-                                OPCSERVERSTATUS serverState = server.getServerState();
-                                if (Blank.isEmpty(serverState)){
-                                    break;
-                                }
-                                Map<Item, ItemState> resultMap = group.read(true, itemArr);
-                                index.getAndSet(index.get() + 1);
-                                List<CursorRawData> cursorRawDataList = new ArrayList<>();
-                                for (Item key : resultMap.keySet()) {
-                                    String keyId = key.getId();
-                                    ItemState itemMap = resultMap.get(key);
-                                    Map<String, Object> val = getVal(itemMap.getValue());
-                                    String javaType = val.get("javaType").toString();
-                                    Object value = val.get("value");
-                                    Date time = itemMap.getTimestamp().getTime();
-                                    String currentYmdh = DateUtil.dateChangeStr(time, timeFormat);
-                                    String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
-                                    if (Blank.isEmpty(sqlCurrentYmdh)) {
-                                        sqlCurrentYmdh = currentYmdh;
-                                        redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id, currentYmdh, ConstantStr.TWO_HOUR);
-                                    } else {
-                                        if (!sqlCurrentYmdh.equals(currentYmdh)) {
-                                            //组装相应的原始数据
-                                            opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                                            sqlCurrentYmdh = currentYmdh;
-                                        }
-                                    }
-                                    if (!javaType.toLowerCase().equals("boolean")) {
-                                        try {
-                                            DataModel dm = map.get(keyId);
-                                            if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)
-                                                    && dm.getOperationRule().equals(value.toString())) {
-
-                                            } else {
-                                                BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
-                                                BigDecimal dmData = Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm, bigDecimal) : bigDecimal;
-                                                Object oldValue = redisUtil.get(ConstantStr.VALUE + id + keyId);
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, bigDecimal.toString(), dmData.toString(),
-                                                        currentYmdhmss, index.get(), currentYmdh,
-                                                        ConstantStr.IS_RECORD, new Date());
-                                                if (Blank.isEmpty(oldValue)) {
-                                                    cursorRawDataList.add(cursorRawData);
-                                                } else {
-                                                    if ((MathUtil.isMeetChange((BigDecimal) oldValue,
-                                                            dmData, new BigDecimal(modeValue), readModeType)).equals(ConstantStr.IS_RECORD)) {
-                                                        cursorRawDataList.add(cursorRawData);
-                                                    }
-                                                }
-                                                redisUtil.set(ConstantStr.VALUE + id + keyId, dmData, ConstantStr.TWO_HOUR);
-                                            }
-                                        } catch (Exception e) {
-
-                                        }
-                                    }
-                                }
-                                if (Blank.isNotEmpty(cursorRawDataList)) {
-                                    opcAsyncTask.addCursorRawDataList(cursorRawDataList);
-                                    cursorRawDataList = new ArrayList<>();
-                                }
-                            } catch (Exception e) {
-                                flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                                if (Blank.isEmpty(flage)) {
-                                    flage = false;
-                                }
-                                if (!flage) {
-                                    //执行组装数据库的数据,以及生成驱动报表
-                                    sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                                    if (Blank.isNotEmpty(server)) {
-                                        server.dispose();
-                                    }
-                                    itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                                    cronTaskRegister.removeCronTask(cronId);
-                                    timer.cancel();
-                                }
-                            }
-                        }
-                    } catch (Exception e) {
-                        Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                        if (Blank.isEmpty(flage)) {
-                            flage = false;
-                        }
-                        if (!flage) {
-                            //执行组装数据库的数据,以及生成驱动报表
-                            String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                            opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                            redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                            if (Blank.isNotEmpty(server)) {
-                                server.dispose();
-                            }
-                            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                            cronTaskRegister.removeCronTask(cronId);
-                            timer.cancel();
-                        }
-                    }
-                }
-            });
-        } catch (Exception e) {
-            String message = OpcDaUtil.genException(e.getMessage());
-            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-                    message,
-                    ConstantStr.NO_READ));
-            if (Blank.isNotEmpty(server)) {
-                server.dispose();
-            }
-            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-            cronTaskRegister.removeCronTask(cronId);
-            timer.cancel();
-        }
-    }
-}

+ 0 - 352
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaExceedTask2.java

@@ -1,352 +0,0 @@
-package com.example.opc_da.task;
-
-import com.alibaba.fastjson.JSON;
-import com.example.opc_common.entity.*;
-import com.example.opc_common.util.Blank;
-import com.example.opc_common.util.ConstantStr;
-import com.example.opc_common.util.DateUtil;
-import com.example.opc_common.util.MathUtil;
-import com.example.opc_da.dao.ItemGroupDao;
-import com.example.opc_da.dao.MessageNoticeDao;
-import com.example.opc_da.dynamicSchedule.CronTaskRegister;
-import com.example.opc_da.util.OpcDaUtil;
-import com.example.opc_da.util.RedisUtil;
-import org.openscada.opc.dcom.da.OPCSERVERSTATE;
-import org.openscada.opc.lib.da.Item;
-import org.openscada.opc.lib.da.*;
-
-import java.math.BigDecimal;
-import java.util.*;
-
-public class OpcDaExceedTask2 extends TimerTask {
-
-    private final RedisUtil redisUtil;
-
-    private final OpcAsyncTask opcAsyncTask;
-
-    private final String cronId;
-
-    private final CronTaskRegister cronTaskRegister;
-
-    private final ItemGroupDao itemGroupDao;
-
-    private final MessageNoticeDao messageNoticeDao;
-
-    private final Timer timer;
-
-    private final ItemGroup itemGroup;
-
-    private final DataSource dataSource;
-
-    private final Map<String, DataModel> map;
-
-    private final List<com.example.opc_common.entity.Item> itemList;
-
-    private final String timeFormat;
-
-    private final Long endTime;
-
-    public OpcDaExceedTask2(RedisUtil redisUtil,
-                            OpcAsyncTask opcAsyncTask,
-                            String cronId,
-                            CronTaskRegister cronTaskRegister,
-                            ItemGroupDao itemGroupDao,
-                            MessageNoticeDao messageNoticeDao,
-                            Timer timer,
-                            ItemGroup itemGroup,
-                            DataSource dataSource,
-                            Map<String, DataModel> map,
-                            List<com.example.opc_common.entity.Item> itemList,
-                            String timeFormat,
-                            Long endTime) {
-        this.redisUtil = redisUtil;
-        this.opcAsyncTask = opcAsyncTask;
-        this.cronId = cronId;
-        this.cronTaskRegister = cronTaskRegister;
-        this.itemGroupDao = itemGroupDao;
-        this.messageNoticeDao = messageNoticeDao;
-        this.timer = timer;
-        this.itemGroup = itemGroup;
-        this.dataSource = dataSource;
-        this.map = map;
-        this.itemList = itemList;
-        this.timeFormat = timeFormat;
-        this.endTime = endTime;
-    }
-
-    @Override
-    public void run() {
-        Server server = OpcDaUtil.createServer(dataSource);
-        Integer id = itemGroup.getId();
-        Integer eventMode = itemGroup.getEventMode();
-        Double modeValue = itemGroup.getModeValue();
-        Integer dataSourceId = dataSource.getId();
-        SyncAccess access = null;
-        try {
-            server.connect();
-            server.addStateListener(connected -> {
-                if (!connected) {
-                    messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                            itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                            "服务断开,马山进行重新连接",
-                            ConstantStr.NO_READ));
-                    Timer listenerTimer = new Timer();
-                    listenerTimer.schedule(new TimerTask() {
-                        @Override
-                        public void run() {
-                            try {
-                                server.connect();
-                                if (Blank.isNotEmpty(server.getServerState()) && server.getServerState().getServerState() == OPCSERVERSTATE.OPC_STATUS_RUNNING) {
-                                    messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                            itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
-                                            "服务重新连接成功",
-                                            ConstantStr.NO_READ));
-                                    listenerTimer.cancel();
-                                }
-                            } catch (Exception e) {
-//                                redisUtil.set(ConstantStr.ITEM_GROUP + id, false);
-//                                String message = OpcDaUtil.genException(e.getMessage());
-//                                messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-//                                        itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接失败",
-//                                        message,
-//                                        ConstantStr.NO_READ));
-//                                listenerTimer.cancel();
-                            }
-                        }
-                    }, 60000);
-                }
-            });
-        }catch (Exception e){
-            String message = OpcDaUtil.genException(e.getMessage());
-            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-                    message,
-                    ConstantStr.NO_READ));
-            if (Blank.isNotEmpty(server)) {
-                server.dispose();
-            }
-            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.EXCEPT_STOP_UP);
-            cronTaskRegister.removeCronTask(cronId);
-            timer.cancel();
-        }
-        try {
-            access = new SyncAccess(server, 500);
-            for (com.example.opc_common.entity.Item item : itemList) {
-                String itemId = item.getItemReadName();
-                Integer isDriverItem = item.getIsDriverItem();
-                access.addItem(itemId, new DataCallback() {
-                    private Long index = 0L;
-                    private BigDecimal oldValue;
-
-                    @Override
-                    public void changed(Item item1, ItemState itemState) {
-                        index++;
-                        try {
-                            Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
-                            DataModel dm = map.get(itemId);
-
-                            //读取的值
-                            Object value = val.get("value");
-                            String javaType = String.valueOf(val.get("javaType"));
-                            //值对应取值的时间
-                            Date time = itemState.getTimestamp().getTime();
-                            //归属时间
-                            String currentYmdh = DateUtil.dateChangeStr(time, timeFormat);
-                            String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
-                            if (isDriverItem.equals(ConstantStr.IS_DRIVER_ITEM)) {
-                                if (index % 20 == 0) {
-                                    opcAsyncTask.packageEventTable(itemList, dataSourceId, index - 1);
-                                    redisUtil.set(ConstantStr.INDEX + id, index, ConstantStr.TWO_HOUR);
-                                }
-                            }
-                            if (javaType.toLowerCase().equals("boolean")) {
-                                Boolean dmData = JSON.parseObject(value.toString(), Boolean.class);
-                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(dmData), JSON.toJSONString(dmData),
-                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                opcAsyncTask.addCursorRawData(cursorRawData);
-                            } else {
-                                try {
-                                    BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
-                                    BigDecimal dmData = Blank.isNotEmpty(dm) ?
-                                            MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
-                                            bigDecimal;
-                                    if (isDriverItem.equals(ConstantStr.IS_DRIVER_ITEM)) {
-                                        BigDecimal bigDecimal1 = new BigDecimal(modeValue);
-                                        if (eventMode == ConstantStr.EVENT_MODEL_EXCEED) {
-                                            if (dmData.compareTo(bigDecimal1) == 1) {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            } else {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            }
-                                        } else if (eventMode == ConstantStr.EVENT_MODEL_LOWER) {
-                                            if (dmData.compareTo(bigDecimal1) == -1) {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            } else {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            }
-                                        } else if (eventMode == ConstantStr.EVENT_MODEL_EQUAL) {
-                                            if (dmData.compareTo(bigDecimal1) == 0) {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            } else {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            }
-                                        } else if (eventMode == ConstantStr.EVENT_TRENDS_EXCEED) {
-                                            if (oldValue.compareTo(bigDecimal1) != 1) {
-                                                if (dmData.compareTo(bigDecimal1) == 1) {
-                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                            currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                                } else {
-                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                                }
-                                            } else {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            }
-                                            oldValue = dmData;
-                                        } else if (eventMode == ConstantStr.EVENT_TRENDS_LOWER) {
-                                            if (oldValue.compareTo(bigDecimal1) != -1) {
-                                                if (dmData.compareTo(bigDecimal1) == -1) {
-                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                            currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                                } else {
-                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                                }
-                                            } else {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            }
-                                            oldValue = dmData;
-                                        }
-                                    } else {
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                        opcAsyncTask.addCursorRawData(cursorRawData);
-                                    }
-                                } catch (Exception e) {
-                                    String valueStr = value.toString();
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, valueStr, "".equals(valueStr) ? ConstantStr.STRING_EMPTY : valueStr,
-                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                }
-                            }
-                        } catch (Exception e) {
-                            opcAsyncTask.packageEventTable(itemList, dataSourceId, index);
-                            redisUtil.del(ConstantStr.INDEX + id);
-
-                            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-                                    e.getMessage(),
-                                    ConstantStr.NO_READ));
-                            e.printStackTrace();
-                            if (Blank.isNotEmpty(server)) {
-                                server.dispose();
-                            }
-                            itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-                            cronTaskRegister.removeCronTask(cronId);
-                            redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                            timer.cancel();
-                        }
-                    }
-                });
-            }
-            access.bind();
-            while (true) {
-                Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                if (Blank.isEmpty(flage)) {
-                    flage = false;
-                }
-//                if (!access.isActive()) {
-//                    Long index = Long.valueOf(String.valueOf(redisUtil.get(ConstantStr.INDEX + id)));
-//                    opcAsyncTask.packageEventTable(itemList, dataSourceId, index);
-//                    redisUtil.del(ConstantStr.INDEX + id);
-//
-//                    messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-//                            itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-//                            "服务异常停止了",
-//                            ConstantStr.NO_READ));
-//                    if (Blank.isNotEmpty(access)) {
-//                        access.clear();
-//                    }
-//                    if (Blank.isNotEmpty(server)) {
-//                        server.dispose();
-//                    }
-//                    itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-//                    cronTaskRegister.removeCronTask(cronId);
-//                    redisUtil.del(ConstantStr.ITEM_GROUP + id);
-//                    timer.cancel();
-//                    break;
-//                }
-                if (!flage) {
-                    Long index = Long.valueOf(String.valueOf(redisUtil.get(ConstantStr.INDEX + id)));
-                    opcAsyncTask.packageEventTable(itemList, dataSourceId, index);
-                    redisUtil.del(ConstantStr.INDEX + id);
-
-                    if (Blank.isNotEmpty(access)) {
-                        access.clear();
-                    }
-                    if (Blank.isNotEmpty(server)) {
-                        server.dispose();
-                    }
-                    cronTaskRegister.removeCronTask(cronId);
-                    redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                    timer.cancel();
-                    break;
-                }
-                if (System.currentTimeMillis() >= endTime) {
-                    Long index = Long.valueOf(String.valueOf(redisUtil.get(ConstantStr.INDEX + id)));
-                    opcAsyncTask.packageEventTable(itemList, dataSourceId, index);
-                    redisUtil.del(ConstantStr.INDEX + id);
-
-                    if (Blank.isNotEmpty(access)) {
-                        access.clear();
-                    }
-                    if (Blank.isNotEmpty(server)) {
-                        server.dispose();
-                    }
-                    timer.cancel();
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-            if (Blank.isEmpty(flage)) {
-                flage = false;
-            }
-            if (!flage) {
-                //执行组装数据库的数据,以及生成驱动报表
-                String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                if (Blank.isNotEmpty(access)) {
-                    access.clear();
-                }
-                if (Blank.isNotEmpty(server)) {
-                    server.dispose();
-                }
-                itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.EXCEPT_STOP_UP);
-                cronTaskRegister.removeCronTask(cronId);
-                timer.cancel();
-            }
-        }
-    }
-}

+ 0 - 360
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaExceedTask3.java

@@ -1,360 +0,0 @@
-package com.example.opc_da.task;
-
-import com.alibaba.fastjson.JSON;
-import com.example.opc_common.entity.*;
-import com.example.opc_common.util.Blank;
-import com.example.opc_common.util.ConstantStr;
-import com.example.opc_common.util.DateUtil;
-import com.example.opc_common.util.MathUtil;
-import com.example.opc_da.dao.ItemGroupDao;
-import com.example.opc_da.dao.MessageNoticeDao;
-import com.example.opc_da.dynamicSchedule.CronTaskRegister;
-import com.example.opc_da.util.OpcDaUtil;
-import com.example.opc_da.util.RedisUtil;
-import org.openscada.opc.dcom.da.OPCSERVERSTATE;
-import org.openscada.opc.lib.da.Item;
-import org.openscada.opc.lib.da.*;
-
-import java.math.BigDecimal;
-import java.util.*;
-
-public class OpcDaExceedTask3 extends TimerTask {
-
-    private final RedisUtil redisUtil;
-
-    private final OpcAsyncTask opcAsyncTask;
-
-    private final String cronId;
-
-    private final CronTaskRegister cronTaskRegister;
-
-    private final ItemGroupDao itemGroupDao;
-
-    private final MessageNoticeDao messageNoticeDao;
-
-    private final Timer timer;
-
-    private final ItemGroup itemGroup;
-
-    private final DataSource dataSource;
-
-    private final Map<String, DataModel> map;
-
-    private final List<com.example.opc_common.entity.Item> itemList;
-
-    private final String timeFormat;
-
-    private final Long endTime;
-
-    public OpcDaExceedTask3(RedisUtil redisUtil,
-                            OpcAsyncTask opcAsyncTask,
-                            String cronId,
-                            CronTaskRegister cronTaskRegister,
-                            ItemGroupDao itemGroupDao,
-                            MessageNoticeDao messageNoticeDao,
-                            Timer timer,
-                            ItemGroup itemGroup,
-                            DataSource dataSource,
-                            Map<String, DataModel> map,
-                            List<com.example.opc_common.entity.Item> itemList,
-                            String timeFormat,
-                            Long endTime) {
-        this.redisUtil = redisUtil;
-        this.opcAsyncTask = opcAsyncTask;
-        this.cronId = cronId;
-        this.cronTaskRegister = cronTaskRegister;
-        this.itemGroupDao = itemGroupDao;
-        this.messageNoticeDao = messageNoticeDao;
-        this.timer = timer;
-        this.itemGroup = itemGroup;
-        this.dataSource = dataSource;
-        this.map = map;
-        this.itemList = itemList;
-        this.timeFormat = timeFormat;
-        this.endTime = endTime;
-    }
-
-    @Override
-    public void run() {
-        Server server = OpcDaUtil.createServer(dataSource);
-        Integer id = itemGroup.getId();
-        Integer eventMode = itemGroup.getEventMode();
-        Double modeValue = itemGroup.getModeValue();
-        Integer dataSourceId = dataSource.getId();
-        SyncAccess access = null;
-        try {
-            server.connect();
-            server.addStateListener(connected -> {
-                if (!connected) {
-                    Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                    if (Blank.isEmpty(flage)) {
-                        flage = false;
-                    }
-                    if (flage) {
-                        messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                                "服务断开,马上进行重新连接",
-                                ConstantStr.NO_READ));
-                        itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-                        Timer listenerTimer = new Timer();
-                        listenerTimer.schedule(new TimerTask() {
-                            @Override
-                            public void run() {
-                                try {
-                                    server.connect();
-                                    if (Blank.isNotEmpty(server.getServerState()) && server.getServerState().getServerState() == OPCSERVERSTATE.OPC_STATUS_RUNNING) {
-                                        messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                                itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
-                                                "服务重新连接成功",
-                                                ConstantStr.NO_READ));
-                                        itemGroupDao.stopItemGroupById(id, ConstantStr.START_UP);
-                                        listenerTimer.cancel();
-                                    }
-                                } catch (Exception e) {
-//                                redisUtil.set(ConstantStr.ITEM_GROUP + id, false);
-//                                String message = OpcDaUtil.genException(e.getMessage());
-//                                messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-//                                        itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接失败",
-//                                        message,
-//                                        ConstantStr.NO_READ));
-//                                listenerTimer.cancel();
-                                }
-                            }
-                        }, 60000);
-                    }
-                }
-            });
-        } catch (Exception e) {
-            String message = OpcDaUtil.genException(e.getMessage());
-            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-                    message,
-                    ConstantStr.NO_READ));
-            if (Blank.isNotEmpty(server)) {
-                server.dispose();
-            }
-            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-            cronTaskRegister.removeCronTask(cronId);
-            timer.cancel();
-        }
-        try {
-            access = new SyncAccess(server, 500);
-            for (com.example.opc_common.entity.Item item : itemList) {
-                String itemId = item.getItemReadName();
-                Integer isDriverItem = item.getIsDriverItem();
-                access.addItem(itemId, new DataCallback() {
-                    private Long index = 0L;
-                    private BigDecimal oldValue;
-
-                    @Override
-                    public void changed(Item item1, ItemState itemState) {
-                        index++;
-                        try {
-                            Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
-                            DataModel dm = map.get(itemId);
-
-                            //读取的值
-                            Object value = val.get("value");
-                            String javaType = String.valueOf(val.get("javaType"));
-                            //值对应取值的时间
-                            Date time = itemState.getTimestamp().getTime();
-                            //归属时间
-                            String currentYmdh = DateUtil.dateChangeStr(time, timeFormat);
-                            String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
-                            if (isDriverItem.equals(ConstantStr.IS_DRIVER_ITEM)) {
-                                if (index % 20 == 0) {
-                                    opcAsyncTask.packageEventTable(itemList, dataSourceId, index - 1);
-                                    redisUtil.set(ConstantStr.INDEX + id, index, ConstantStr.TWO_HOUR);
-                                }
-                            }
-                            if (javaType.toLowerCase().equals("boolean")) {
-                                Boolean dmData = JSON.parseObject(value.toString(), Boolean.class);
-                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(dmData), JSON.toJSONString(dmData),
-                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                opcAsyncTask.addCursorRawData(cursorRawData);
-                            } else {
-                                try {
-                                    BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
-                                    BigDecimal dmData = Blank.isNotEmpty(dm) ?
-                                            MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
-                                            bigDecimal;
-                                    if (isDriverItem.equals(ConstantStr.IS_DRIVER_ITEM)) {
-                                        BigDecimal bigDecimal1 = new BigDecimal(modeValue);
-                                        if (eventMode == ConstantStr.EVENT_MODEL_EXCEED) {
-                                            if (dmData.compareTo(bigDecimal1) == 1) {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            } else {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            }
-                                        } else if (eventMode == ConstantStr.EVENT_MODEL_LOWER) {
-                                            if (dmData.compareTo(bigDecimal1) == -1) {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            } else {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            }
-                                        } else if (eventMode == ConstantStr.EVENT_MODEL_EQUAL) {
-                                            if (dmData.compareTo(bigDecimal1) == 0) {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            } else {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            }
-                                        } else if (eventMode == ConstantStr.EVENT_TRENDS_EXCEED) {
-                                            if (oldValue.compareTo(bigDecimal1) != 1) {
-                                                if (dmData.compareTo(bigDecimal1) == 1) {
-                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                            currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                                } else {
-                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                                }
-                                            } else {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            }
-                                            oldValue = dmData;
-                                        } else if (eventMode == ConstantStr.EVENT_TRENDS_LOWER) {
-                                            if (oldValue.compareTo(bigDecimal1) != -1) {
-                                                if (dmData.compareTo(bigDecimal1) == -1) {
-                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                            currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                                } else {
-                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                                }
-                                            } else {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                        currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                opcAsyncTask.addCursorRawData(cursorRawData);
-                                            }
-                                            oldValue = dmData;
-                                        }
-                                    } else {
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
-                                                currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                        opcAsyncTask.addCursorRawData(cursorRawData);
-                                    }
-                                } catch (Exception e) {
-                                    String valueStr = value.toString();
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, valueStr, "".equals(valueStr) ? ConstantStr.STRING_EMPTY : valueStr,
-                                            currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                    opcAsyncTask.addCursorRawData(cursorRawData);
-                                }
-                            }
-                        } catch (Exception e) {
-                            opcAsyncTask.packageEventTable(itemList, dataSourceId, index);
-                            redisUtil.del(ConstantStr.INDEX + id);
-
-                            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-                                    e.getMessage(),
-                                    ConstantStr.NO_READ));
-                            e.printStackTrace();
-                            if (Blank.isNotEmpty(server)) {
-                                server.dispose();
-                            }
-                            itemGroupDao.stopItemGroupById(id, ConstantStr.STOP_IT);
-                            cronTaskRegister.removeCronTask(cronId);
-                            redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                            timer.cancel();
-                        }
-                    }
-                });
-            }
-            access.bind();
-            while (true) {
-                Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                if (Blank.isEmpty(flage)) {
-                    flage = false;
-                }
-//                if (!access.isActive()) {
-//                    Long index = Long.valueOf(String.valueOf(redisUtil.get(ConstantStr.INDEX + id)));
-//                    opcAsyncTask.packageEventTable(itemList, dataSourceId, index);
-//                    redisUtil.del(ConstantStr.INDEX + id);
-//
-//                    messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-//                            itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-//                            "服务异常停止了",
-//                            ConstantStr.NO_READ));
-//                    if (Blank.isNotEmpty(access)) {
-//                        access.clear();
-//                    }
-//                    if (Blank.isNotEmpty(server)) {
-//                        server.dispose();
-//                    }
-//                    itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-//                    cronTaskRegister.removeCronTask(cronId);
-//                    redisUtil.del(ConstantStr.ITEM_GROUP + id);
-//                    timer.cancel();
-//                    break;
-//                }
-                if (!flage) {
-                    Long index = Long.valueOf(String.valueOf(redisUtil.get(ConstantStr.INDEX + id)));
-                    opcAsyncTask.packageEventTable(itemList, dataSourceId, index);
-                    redisUtil.del(ConstantStr.INDEX + id);
-
-                    if (Blank.isNotEmpty(access)) {
-                        access.clear();
-                    }
-                    if (Blank.isNotEmpty(server)) {
-                        server.dispose();
-                    }
-                    cronTaskRegister.removeCronTask(cronId);
-                    redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                    timer.cancel();
-                    break;
-                }
-                if (System.currentTimeMillis() >= endTime) {
-                    Long index = Long.valueOf(String.valueOf(redisUtil.get(ConstantStr.INDEX + id)));
-                    opcAsyncTask.packageEventTable(itemList, dataSourceId, index);
-                    redisUtil.del(ConstantStr.INDEX + id);
-
-                    if (Blank.isNotEmpty(access)) {
-                        access.clear();
-                    }
-                    if (Blank.isNotEmpty(server)) {
-                        server.dispose();
-                    }
-                    timer.cancel();
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-            if (Blank.isEmpty(flage)) {
-                flage = false;
-            }
-            if (!flage) {
-                //执行组装数据库的数据,以及生成驱动报表
-                String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                if (Blank.isNotEmpty(access)) {
-                    access.clear();
-                }
-                if (Blank.isNotEmpty(server)) {
-                    server.dispose();
-                }
-                itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                cronTaskRegister.removeCronTask(cronId);
-                timer.cancel();
-            }
-        }
-    }
-}

+ 0 - 342
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaExceedTask4.java

@@ -1,342 +0,0 @@
-package com.example.opc_da.task;
-
-import com.alibaba.fastjson.JSON;
-import com.example.opc_common.entity.*;
-import com.example.opc_common.util.Blank;
-import com.example.opc_common.util.ConstantStr;
-import com.example.opc_common.util.DateUtil;
-import com.example.opc_common.util.MathUtil;
-import com.example.opc_da.dao.ItemGroupDao;
-import com.example.opc_da.dao.MessageNoticeDao;
-import com.example.opc_da.dynamicSchedule.CronTaskRegister;
-import com.example.opc_da.util.OpcDaUtil;
-import com.example.opc_da.util.RedisUtil;
-import org.openscada.opc.dcom.da.OPCSERVERSTATE;
-import org.openscada.opc.dcom.da.OPCSERVERSTATUS;
-import org.openscada.opc.lib.da.Group;
-import org.openscada.opc.lib.da.ItemState;
-import org.openscada.opc.lib.da.Server;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicReference;
-
-import static com.example.opc_da.util.OpcDaUtil.getVal;
-
-public class OpcDaExceedTask4 extends TimerTask {
-
-    private final RedisUtil redisUtil;
-
-    private final OpcAsyncTask opcAsyncTask;
-
-    private final String cronId;
-
-    private final CronTaskRegister cronTaskRegister;
-
-    private final ItemGroupDao itemGroupDao;
-
-    private final MessageNoticeDao messageNoticeDao;
-
-    private final Timer timer;
-
-    private final ItemGroup itemGroup;
-
-    private final DataSource dataSource;
-
-    private final Map<String, DataModel> map;
-
-    private final List<Item> itemList;
-
-    private final String[] items;
-
-    private final String timeFormat;
-
-    private final Long endTime;
-
-    public OpcDaExceedTask4(RedisUtil redisUtil,
-                            OpcAsyncTask opcAsyncTask,
-                            String cronId,
-                            CronTaskRegister cronTaskRegister,
-                            ItemGroupDao itemGroupDao,
-                            MessageNoticeDao messageNoticeDao,
-                            Timer timer,
-                            ItemGroup itemGroup,
-                            DataSource dataSource,
-                            Map<String, DataModel> map,
-                            List<Item> itemList,
-                            String[] items,
-                            String timeFormat,
-                            Long endTime) {
-        this.redisUtil = redisUtil;
-        this.opcAsyncTask = opcAsyncTask;
-        this.cronId = cronId;
-        this.cronTaskRegister = cronTaskRegister;
-        this.itemGroupDao = itemGroupDao;
-        this.messageNoticeDao = messageNoticeDao;
-        this.timer = timer;
-        this.itemGroup = itemGroup;
-        this.dataSource = dataSource;
-        this.map = map;
-        this.itemList = itemList;
-        this.items = items;
-        this.timeFormat = timeFormat;
-        this.endTime = endTime;
-    }
-
-    @Override
-    public void run() {
-        Server server = OpcDaUtil.createServer(dataSource);
-        Integer id = itemGroup.getId();
-        Integer eventMode = itemGroup.getEventMode();
-        Double modeValue = itemGroup.getModeValue();
-        Integer dataSourceId = dataSource.getId();
-        String driverItem = OpcDaUtil.getDriverItem(itemList);
-        try {
-            AtomicReference<Long> index = new AtomicReference<>(0L);
-            server.connect();
-            server.addStateListener(connected -> {
-                if (!connected) {
-                    Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                    if (Blank.isEmpty(flage)) {
-                        flage = false;
-                    }
-                    if (flage) {
-                        messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                                "服务断开,马上进行重新连接",
-                                ConstantStr.NO_READ));
-                        itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-                        Timer listenerTimer = new Timer();
-                        listenerTimer.schedule(new TimerTask() {
-                            @Override
-                            public void run() {
-                                try {
-                                    server.connect();
-                                    if (Blank.isNotEmpty(server.getServerState()) && server.getServerState().getServerState() == OPCSERVERSTATE.OPC_STATUS_RUNNING) {
-                                        messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                                itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
-                                                "服务重新连接成功",
-                                                ConstantStr.NO_READ));
-                                        itemGroupDao.stopItemGroupById(id, ConstantStr.START_UP);
-                                        listenerTimer.cancel();
-                                    }
-                                } catch (Exception e) {
-//                                redisUtil.set(ConstantStr.ITEM_GROUP + id, false);
-//                                String message = OpcDaUtil.genException(e.getMessage());
-//                                messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-//                                        itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接失败",
-//                                        message,
-//                                        ConstantStr.NO_READ));
-//                                listenerTimer.cancel();
-                                }
-                            }
-                        }, 60000);
-                    }
-                }else{
-                    try {
-                        Group group = server.addGroup();
-                        Map<String, org.openscada.opc.lib.da.Item> itemResult = group.addItems(items);
-                        Set itemSet = new HashSet(itemResult.values());
-                        org.openscada.opc.lib.da.Item[] itemArr = new org.openscada.opc.lib.da.Item[itemSet.size()];
-                        itemSet.toArray(itemArr);
-                        while (true) {
-                            Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                            if (Blank.isEmpty(flage)) {
-                                flage = false;
-                            }
-                            if (!flage) {
-                                //执行组装数据库的数据,以及生成驱动报表
-                                opcAsyncTask.packageEventTable(itemList, dataSourceId, index.get() - 1L);
-
-                                redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                                if (Blank.isNotEmpty(server)) {
-                                    server.dispose();
-                                }
-                                cronTaskRegister.removeCronTask(cronId);
-                                redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                                timer.cancel();
-                                break;
-                            }
-                            if (System.currentTimeMillis() >= endTime) {
-                                //执行组装数据库的数据,以及生成驱动报表
-                                opcAsyncTask.packageEventTable(itemList, dataSourceId, index.get() - 1L);
-
-                                redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                                if (Blank.isNotEmpty(server)) {
-                                    server.dispose();
-                                }
-                                timer.cancel();
-                                break;
-                            }
-                            try {
-                                Thread.sleep(1000);
-                                OPCSERVERSTATUS serverState = server.getServerState();
-                                if (Blank.isEmpty(serverState)){
-                                    break;
-                                }
-                                Map<org.openscada.opc.lib.da.Item, ItemState> resultMap = group.read(true, itemArr);
-                                index.getAndSet(index.get() + 1);
-                                List<CursorRawData> cursorRawDataList = new ArrayList<>();
-                                for (org.openscada.opc.lib.da.Item key : resultMap.keySet()) {
-                                    String keyId = key.getId();
-                                    ItemState itemMap = resultMap.get(key);
-                                    Map<String, Object> val = getVal(itemMap.getValue());
-                                    String javaType = val.get("javaType").toString();
-                                    Object value = val.get("value");
-                                    Date time = itemMap.getTimestamp().getTime();
-                                    String currentYmdh = DateUtil.dateChangeStr(time, timeFormat);
-                                    String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
-                                    DataModel dm = map.get(keyId);
-                                    if (keyId.equals(driverItem) && (index.get() % 20 == 0)) {
-                                        opcAsyncTask.packageEventTable(itemList, dataSourceId, index.get() - 1L);
-                                    }
-                                    if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)) {
-                                        String valStr = value.toString();
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valStr, DataModel.valueReplace(dm, valStr),
-                                                currentYmdhmss, index.get(), currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                        cursorRawDataList.add(cursorRawData);
-                                    } else {
-                                        if (javaType.toLowerCase().equals("boolean")) {
-                                            String varStr = value.toString();
-                                            CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, varStr,varStr,
-                                                    currentYmdhmss, index.get(), currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                            cursorRawDataList.add(cursorRawData);
-                                        } else {
-                                            try {
-                                                BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
-                                                BigDecimal dmData = Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm, bigDecimal) : bigDecimal;
-                                                if (keyId.equals(driverItem)) {
-                                                    BigDecimal bigDecimal1 = new BigDecimal(modeValue);
-                                                    if (eventMode == ConstantStr.EVENT_MODEL_EXCEED) {
-                                                        if (dmData.compareTo(bigDecimal1) == 1) {
-                                                            CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, bigDecimal.toString(), dmData.toString(),
-                                                                    currentYmdhmss, index.get(), currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                            cursorRawDataList.add(cursorRawData);
-                                                        } else {
-                                                            cursorRawDataList = new ArrayList<>();
-                                                            break;
-                                                        }
-                                                    } else if (eventMode == ConstantStr.EVENT_MODEL_LOWER) {
-                                                        if (dmData.compareTo(bigDecimal1) == -1) {
-                                                            CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, bigDecimal.toString(), dmData.toString(),
-                                                                    currentYmdhmss, index.get(), currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                            cursorRawDataList.add(cursorRawData);
-                                                        } else {
-                                                            cursorRawDataList = new ArrayList<>();
-                                                            break;
-                                                        }
-                                                    } else if (eventMode == ConstantStr.EVENT_MODEL_EQUAL) {
-                                                        if (dmData.compareTo(bigDecimal1) == 0) {
-                                                            CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, bigDecimal.toString(), dmData.toString(),
-                                                                    currentYmdhmss, index.get(), currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                            cursorRawDataList.add(cursorRawData);
-                                                        } else {
-                                                            cursorRawDataList = new ArrayList<>();
-                                                            break;
-                                                        }
-                                                    } else if (eventMode == ConstantStr.EVENT_TRENDS_EXCEED) {
-                                                        if (((BigDecimal) redisUtil.get(ConstantStr.VALUE + id + keyId)).compareTo(bigDecimal1) != 1) {
-                                                            if (dmData.compareTo(bigDecimal1) == 1) {
-                                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, bigDecimal.toString(), dmData.toString(),
-                                                                        currentYmdhmss, index.get(), currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                                cursorRawDataList.add(cursorRawData);
-                                                            } else {
-                                                                cursorRawDataList = new ArrayList<>();
-                                                                break;
-                                                            }
-                                                        } else {
-                                                            cursorRawDataList = new ArrayList<>();
-                                                            break;
-                                                        }
-                                                        redisUtil.set(ConstantStr.VALUE + id + keyId, dmData, ConstantStr.TWO_HOUR);
-                                                    } else if (eventMode == ConstantStr.EVENT_TRENDS_LOWER) {
-                                                        if (((BigDecimal) redisUtil.get(ConstantStr.VALUE + id + keyId)).compareTo(bigDecimal1) != -1) {
-                                                            if (dmData.compareTo(bigDecimal1) == -1) {
-                                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, bigDecimal.toString(), dmData.toString(),
-                                                                        currentYmdhmss, index.get(), currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                                cursorRawDataList.add(cursorRawData);
-                                                            } else {
-                                                                cursorRawDataList = new ArrayList<>();
-                                                                break;
-                                                            }
-                                                        } else {
-                                                            cursorRawDataList = new ArrayList<>();
-                                                            break;
-                                                        }
-                                                        redisUtil.set(ConstantStr.VALUE + id + keyId, dmData, ConstantStr.TWO_HOUR);
-                                                    }
-                                                } else {
-                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, bigDecimal.toString(), dmData.toString(),
-                                                            currentYmdhmss, index.get(), currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                    cursorRawDataList.add(cursorRawData);
-                                                }
-                                            } catch (Exception e) {
-                                                if (Blank.isNotEmpty(value)) {
-                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), JSON.toJSONString(value),
-                                                            currentYmdhmss, index.get(), currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                    cursorRawDataList.add(cursorRawData);
-                                                } else {
-                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, "null", "null",
-                                                            currentYmdhmss, index.get(), currentYmdh, ConstantStr.NOT_RECORD, new Date());
-                                                    cursorRawDataList.add(cursorRawData);
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                                if (Blank.isNotEmpty(cursorRawDataList)) {
-                                    opcAsyncTask.addCursorRawDataList(cursorRawDataList);
-                                    cursorRawDataList = new ArrayList<>();
-                                }
-                            } catch (Exception e) {
-                                flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                                if (Blank.isEmpty(flage)) {
-                                    flage = false;
-                                }
-                                if (!flage) {
-                                    //执行组装数据库的数据,以及生成驱动报表
-                                    opcAsyncTask.packageEventTable(itemList, dataSourceId, index.get());
-                                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                                    if (Blank.isNotEmpty(server)) {
-                                        server.dispose();
-                                    }
-                                    itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                                    cronTaskRegister.removeCronTask(cronId);
-                                    timer.cancel();
-                                }
-                            }
-                        }
-                    } catch (Exception e) {
-                        Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                        if (Blank.isEmpty(flage)) {
-                            flage = false;
-                        }
-                        if (!flage) {
-                            //执行组装数据库的数据,以及生成驱动报表
-                            opcAsyncTask.packageEventTable(itemList, dataSourceId, index.get() - 1L);
-                            redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                            if (Blank.isNotEmpty(server)) {
-                                server.dispose();
-                            }
-                            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                            cronTaskRegister.removeCronTask(cronId);
-                            timer.cancel();
-                        }
-                    }
-                }
-            });
-        } catch (Exception e) {
-            String message = OpcDaUtil.genException(e.getMessage());
-            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
-                    message,
-                    ConstantStr.NO_READ));
-            if (Blank.isNotEmpty(server)) {
-                server.dispose();
-            }
-            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-            cronTaskRegister.removeCronTask(cronId);
-            timer.cancel();
-        }
-    }
-}

+ 0 - 290
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaFrequencyTask5.java

@@ -1,290 +0,0 @@
-package com.example.opc_da.task;
-
-import com.alibaba.fastjson.JSON;
-import com.example.opc_common.entity.*;
-import com.example.opc_common.util.Blank;
-import com.example.opc_common.util.ConstantStr;
-import com.example.opc_common.util.DateUtil;
-import com.example.opc_common.util.MathUtil;
-import com.example.opc_da.dao.ItemGroupDao;
-import com.example.opc_da.dao.MessageNoticeDao;
-import com.example.opc_da.dynamicSchedule.CronTaskRegister;
-import com.example.opc_da.util.OpcDaUtil;
-import com.example.opc_da.util.RedisUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.openscada.opc.dcom.da.OPCSERVERSTATUS;
-import org.openscada.opc.lib.da.*;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicReference;
-
-import static com.example.opc_da.util.OpcDaUtil.getVal;
-
-@Slf4j
-public class OpcDaFrequencyTask5 extends TimerTask {
-
-    private final RedisUtil redisUtil;
-
-    private final OpcAsyncTask opcAsyncTask;
-
-    private final String cronId;
-
-    private final CronTaskRegister cronTaskRegister;
-
-    private final ItemGroupDao itemGroupDao;
-
-    private final MessageNoticeDao messageNoticeDao;
-
-    private final Timer timer;
-
-    private final ItemGroup itemGroup;
-
-    private final DataSource dataSource;
-
-    private final Map<String, DataModel> map;
-
-    private final List<com.example.opc_common.entity.Item> itemList;
-
-    private final String[] items;
-
-    private final String timeFormat;
-
-    private final List<TableTemplate> tableTemplates;
-
-    Map<Integer, Map<String, TableTemplateTableItem>> ttIdMap;
-
-    Map<Integer, String> itemReadMap;
-
-    private final Map<Integer, ReportTable> reportTableMap;
-
-    private final Long endTime;
-
-    public OpcDaFrequencyTask5(RedisUtil redisUtil,
-                               OpcAsyncTask opcAsyncTask,
-                               String cronId,
-                               CronTaskRegister cronTaskRegister,
-                               ItemGroupDao itemGroupDao,
-                               MessageNoticeDao messageNoticeDao,
-                               Timer timer,
-                               ItemGroup itemGroup,
-                               DataSource dataSource,
-                               Map<String, DataModel> map,
-                               List<com.example.opc_common.entity.Item> itemList,
-                               String[] items,
-                               String timeFormat,
-                               List<TableTemplate> tableTemplates,
-                               Map<Integer, Map<String, TableTemplateTableItem>> ttIdMap,
-                               Map<Integer, String> itemReadMap,
-                               Map<Integer, ReportTable> reportTableMap,
-                               Long endTime) {
-        this.redisUtil = redisUtil;
-        this.opcAsyncTask = opcAsyncTask;
-        this.cronId = cronId;
-        this.cronTaskRegister = cronTaskRegister;
-        this.itemGroupDao = itemGroupDao;
-        this.messageNoticeDao = messageNoticeDao;
-        this.timer = timer;
-        this.itemGroup = itemGroup;
-        this.dataSource = dataSource;
-        this.map = map;
-        this.itemList = itemList;
-        this.items = items;
-        this.timeFormat = timeFormat;
-        this.tableTemplates = tableTemplates;
-        this.ttIdMap = ttIdMap;
-        this.itemReadMap = itemReadMap;
-        this.reportTableMap = reportTableMap;
-        this.endTime = endTime;
-    }
-
-    @Override
-    public void run() {
-        Integer id = itemGroup.getId();
-        Integer dataSourceId = dataSource.getId();
-        Server server = OpcDaUtil.createServer(dataSource);
-        AtomicReference<Long> index = new AtomicReference<>(0L);
-        AutoReconnectController autoReconnectController = new AutoReconnectController(server);
-        autoReconnectController.addListener(new AutoReconnectListener() {
-            @Override
-            public void stateChanged(AutoReconnectState state) {
-                if (state.equals(AutoReconnectState.CONNECTED)) {
-                    if (index.get() != 0) {
-                        log.info("-----" + "重连成功");
-                        messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
-                                "服务重新连接成功",
-                                ConstantStr.NO_READ));
-                        itemGroupDao.stopItemGroupById(id, ConstantStr.START_UP);
-                    }
-                    try {
-                        Group group = server.addGroup();
-                        Map<String, org.openscada.opc.lib.da.Item> itemResult = group.addItems(items);
-                        Set itemSet = new HashSet(itemResult.values());
-                        org.openscada.opc.lib.da.Item[] itemArr = new org.openscada.opc.lib.da.Item[itemSet.size()];
-                        itemSet.toArray(itemArr);
-                        String sqlCurrentYmdh = "";
-                        int count = (int) (Math.round(itemGroup.getModeValue() * 1000));
-                        while (true) {
-                            Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                            if (Blank.isEmpty(flage)) {
-                                flage = false;
-                            }
-                            if (!flage) {
-                                //执行组装数据库的数据,以及生成驱动报表
-                                sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                                if (Blank.isNotEmpty(sqlCurrentYmdh)) {
-                                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                                }
-                                redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                                if (Blank.isNotEmpty(server)) {
-                                    server.dispose();
-                                }
-                                cronTaskRegister.removeCronTask(cronId);
-                                redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                                timer.cancel();
-                                break;
-                            }
-                            if (System.currentTimeMillis() >= endTime) {
-                                //执行组装数据库的数据,以及生成驱动报表
-                                sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                                if (Blank.isNotEmpty(sqlCurrentYmdh)) {
-                                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                                }
-                                redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                                if (Blank.isNotEmpty(server)) {
-                                    server.dispose();
-                                }
-                                timer.cancel();
-                                break;
-                            }
-                            try {
-                                Thread.sleep(count);
-                                OPCSERVERSTATUS serverState = server.getServerState();
-                                if (Blank.isEmpty(serverState)) {
-                                    break;
-                                }
-                                Map<org.openscada.opc.lib.da.Item, ItemState> resultMap = group.read(true, itemArr);
-                                index.getAndSet(index.get() + 1);
-                                log.info("-----" + index);
-                                List<CursorRawData> cursorRawDataList = new ArrayList<>();
-                                for (org.openscada.opc.lib.da.Item key : resultMap.keySet()) {
-                                    String keyId = key.getId();
-                                    ItemState itemMap = resultMap.get(key);
-                                    Map<String, Object> val = getVal(itemMap.getValue());
-                                    String javaType = val.get("javaType").toString();
-                                    Object value = val.get("value");
-                                    Date time = itemMap.getTimestamp().getTime();
-                                    String currentYmdh = DateUtil.dateChangeStr(time, timeFormat);
-                                    String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
-                                    DataModel dm = map.get(keyId);
-                                    if (Blank.isEmpty(sqlCurrentYmdh)) {
-                                        sqlCurrentYmdh = currentYmdh;
-                                        redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id, currentYmdh, ConstantStr.TWO_HOUR);
-                                    } else {
-                                        if (!sqlCurrentYmdh.equals(currentYmdh)) {
-                                            //组装相应的原始数据
-                                            opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                                            sqlCurrentYmdh = currentYmdh;
-                                        }
-                                    }
-                                    if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)) {
-                                        String valStr = val.toString();
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valStr, DataModel.valueReplace(dm, valStr),
-                                                currentYmdhmss, index.get(), currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                        cursorRawDataList.add(cursorRawData);
-                                    } else {
-                                        if (javaType.toLowerCase().equals("boolean")) {
-                                            CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, value.toString(), value.toString(),
-                                                    currentYmdhmss, index.get(), currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                            cursorRawDataList.add(cursorRawData);
-                                        } else {
-                                            try {
-                                                BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
-                                                BigDecimal dmData = Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm, bigDecimal) : bigDecimal;
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, value.toString(), dmData.toString(),
-                                                        currentYmdhmss, index.get(), currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                cursorRawDataList.add(cursorRawData);
-                                            } catch (Exception e) {
-                                                if (Blank.isNotEmpty(value)) {
-                                                    String valStr = value.toString();
-                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valStr, valStr,
-                                                            currentYmdhmss, index.get(), currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                    cursorRawDataList.add(cursorRawData);
-                                                } else {
-                                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, "null", "null",
-                                                            currentYmdhmss, index.get(), currentYmdh, ConstantStr.IS_RECORD, new Date());
-                                                    cursorRawDataList.add(cursorRawData);
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                                if (Blank.isNotEmpty(cursorRawDataList)) {
-                                    opcAsyncTask.addCursorRawDataList(cursorRawDataList);
-                                    opcAsyncTask.packDeviceTable(cursorRawDataList, tableTemplates, ttIdMap, itemReadMap, reportTableMap, index.get());
-                                    cursorRawDataList = new ArrayList<>();
-                                }
-                            } catch (Exception e) {
-                                flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                                if (Blank.isEmpty(flage)) {
-                                    flage = false;
-                                }
-                                if (!flage) {
-                                    //执行组装数据库的数据,以及生成驱动报表
-                                    sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                                    opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                                    redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                                    if (Blank.isNotEmpty(server)) {
-                                        server.dispose();
-                                    }
-                                    itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                                    cronTaskRegister.removeCronTask(cronId);
-                                    timer.cancel();
-                                }
-                            }
-                        }
-                    } catch (Exception e) {
-                        Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                        if (Blank.isEmpty(flage)) {
-                            flage = false;
-                        }
-                        if (!flage) {
-                            //执行组装数据库的数据,以及生成驱动报表
-                            String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
-                            opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                            redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                            if (Blank.isNotEmpty(server)) {
-                                server.dispose();
-                            }
-                            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                            cronTaskRegister.removeCronTask(cronId);
-                            timer.cancel();
-                        }
-                    }
-                } else {
-                    log.info("-----" + "服务断开,准备重连"+index.get());
-                    Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                    if (Blank.isEmpty(flage)) {
-                        flage = false;
-                    }
-                    if (flage) {
-                        if (index.get() != 0) {
-                            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                                    "服务断开,马上进行重新连接",
-                                    ConstantStr.NO_READ));
-                            itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-                        }
-                    }
-                }
-            }
-        });
-        try {
-            server.connect();
-        } catch (Exception e) {
-
-        }
-        autoReconnectController.connect();
-    }
-}

+ 0 - 149
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaFrequencyTask6.java

@@ -1,149 +0,0 @@
-package com.example.opc_da.task;
-
-import com.example.opc_common.entity.*;
-import com.example.opc_common.util.Blank;
-import com.example.opc_common.util.ConstantStr;
-import com.example.opc_common.util.DateUtil;
-import com.example.opc_da.dao.ItemGroupDao;
-import com.example.opc_da.dao.MessageNoticeDao;
-import com.example.opc_da.dynamicSchedule.CronTaskRegister;
-import com.example.opc_da.util.OpcDaUtil;
-import com.example.opc_da.util.RedisUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.openscada.opc.lib.da.AutoReconnectController;
-import org.openscada.opc.lib.da.AutoReconnectListener;
-import org.openscada.opc.lib.da.AutoReconnectState;
-import org.openscada.opc.lib.da.Server;
-
-import java.util.*;
-import java.util.concurrent.atomic.AtomicReference;
-
-@Slf4j
-public class OpcDaFrequencyTask6 extends TimerTask {
-
-    private final RedisUtil redisUtil;
-
-     static AutoReconnectState status;
-
-    private final OpcAsyncTask opcAsyncTask;
-
-    private final String cronId;
-
-    private final CronTaskRegister cronTaskRegister;
-
-    private final ItemGroupDao itemGroupDao;
-
-    private final MessageNoticeDao messageNoticeDao;
-
-    private final Timer timer;
-
-    private final ItemGroup itemGroup;
-
-    private final DataSource dataSource;
-
-    private final Map<String, DataModel> map;
-
-    private final List<Item> itemList;
-
-    private final String[] items;
-
-    private final String timeFormat;
-
-    private final List<TableTemplate> tableTemplates;
-
-    Map<Integer, Map<String, TableTemplateTableItem>> ttIdMap;
-
-    Map<Integer, String> itemReadMap;
-
-    private final Map<Integer, ReportTable> reportTableMap;
-
-    private final Long endTime;
-
-    public OpcDaFrequencyTask6(RedisUtil redisUtil,
-                               OpcAsyncTask opcAsyncTask,
-                               String cronId,
-                               CronTaskRegister cronTaskRegister,
-                               ItemGroupDao itemGroupDao,
-                               MessageNoticeDao messageNoticeDao,
-                               Timer timer,
-                               ItemGroup itemGroup,
-                               DataSource dataSource,
-                               Map<String, DataModel> map,
-                               List<Item> itemList,
-                               String[] items,
-                               String timeFormat,
-                               List<TableTemplate> tableTemplates,
-                               Map<Integer, Map<String, TableTemplateTableItem>> ttIdMap,
-                               Map<Integer, String> itemReadMap,
-                               Map<Integer, ReportTable> reportTableMap,
-                               Long endTime) {
-        this.redisUtil = redisUtil;
-        this.opcAsyncTask = opcAsyncTask;
-        this.cronId = cronId;
-        this.cronTaskRegister = cronTaskRegister;
-        this.itemGroupDao = itemGroupDao;
-        this.messageNoticeDao = messageNoticeDao;
-        this.timer = timer;
-        this.itemGroup = itemGroup;
-        this.dataSource = dataSource;
-        this.map = map;
-        this.itemList = itemList;
-        this.items = items;
-        this.timeFormat = timeFormat;
-        this.tableTemplates = tableTemplates;
-        this.ttIdMap = ttIdMap;
-        this.itemReadMap = itemReadMap;
-        this.reportTableMap = reportTableMap;
-        this.endTime = endTime;
-    }
-
-    @Override
-    public void run() {
-        Integer id = itemGroup.getId();
-        Integer dataSourceId = dataSource.getId();
-        Server server = OpcDaUtil.createServer(dataSource);
-        AtomicReference<Long> index = new AtomicReference<>(0L);
-        AutoReconnectController autoReconnectController = new AutoReconnectController(server);
-        autoReconnectController.addListener(new AutoReconnectListener() {
-            @Override
-            public void stateChanged(AutoReconnectState state) {
-                status = state;
-                log.info("-----" + state);
-                if (state.equals(AutoReconnectState.CONNECTED)) {
-                    if (index.get() != 0) {
-                        log.info("-----" + "重连成功");
-                        messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
-                                "服务重新连接成功",
-                                ConstantStr.NO_READ));
-                        itemGroupDao.stopItemGroupById(id, ConstantStr.START_UP);
-                    }
-
-                } else {
-                    Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                    if (Blank.isEmpty(flage)) {
-                        flage = false;
-                    }
-                    if (flage) {
-                        if (index.get() != 0) {
-                            messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                    itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                                    "服务断开,马上进行重新连接",
-                                    ConstantStr.NO_READ));
-                            itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-                        }
-                    }
-                }
-            }
-        });
-        try {
-            server.connect();
-        } catch (Exception e) {
-
-        }
-        autoReconnectController.connect();
-        while (true){
-            System.out.println(status);
-        }
-    }
-}

+ 3 - 3
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/ReportTask.java

@@ -68,7 +68,7 @@ public class ReportTask {
                     orgList.add(orgRawList.get(j));
                     list.add(rawList.get(j));
                 }
-                if (time > endTimeTime) {
+                if (time >= endTimeTime) {
                     break;
                 }
             }
@@ -190,7 +190,7 @@ public class ReportTask {
                     orgList.add(orgRawList.get(j));
                     list.add(RawList.get(j));
                 }
-                if (time > endTimeTime) {
+                if (time >= endTimeTime) {
                     break;
                 }
             }
@@ -312,7 +312,7 @@ public class ReportTask {
                     orgList.add(orgRawList.get(j));
                     list.add(RawList.get(j));
                 }
-                if (time > endTimeTime) {
+                if (time >= endTimeTime) {
                     break;
                 }
             }