Ver código fonte

后台动态定时器修改为使用quartz框架,并修改打印,报表,数据组定时器任务的执行方式

zhoupeng 1 ano atrás
pai
commit
ecb59436c5

+ 0 - 3
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/service/impl/ItemGroupServiceImpl.java

@@ -44,9 +44,6 @@ public class ItemGroupServiceImpl implements ItemGroupService {
     private RedisUtil redisUtil;
 
     @Autowired
-    CronTaskRegister cronTaskRegister;
-
-    @Autowired
     private DataSourceDao dataSourceDao;
 
     @Autowired

+ 1 - 4
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/service/impl/PrintServiceImpl.java

@@ -35,9 +35,6 @@ public class PrintServiceImpl implements PrintService {
     private ReportTableDao reportTableDao;
 
     @Autowired
-    CronTaskRegister cronTaskRegister;
-
-    @Autowired
     private QuartzService quartzService;
 
     @Override
@@ -85,7 +82,7 @@ public class PrintServiceImpl implements PrintService {
         }
         String cronId = print.getCronId();
         printDao.runAutoPrintById(print.getId(), ConstantStr.STOP_IT);
-        cronTaskRegister.removeCronTask(cronId);
+        quartzService.deleteTask(cronId);
         return Result.ok("打印任务停止成功");
     }
 

+ 0 - 4
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/service/impl/ReportTableServiceImpl.java

@@ -42,10 +42,6 @@ public class ReportTableServiceImpl implements ReportTableService {
     @Autowired
     private RedisUtil redisUtil;
 
-    //引入定时器注册类
-    @Resource
-    CronTaskRegister cronTaskRegister;
-
     @Autowired
     private ReportTableTask reportTableTask;
 

+ 0 - 372
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/OpcDaChangeTask1.java

@@ -1,372 +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.util.OpcDaUtil;
-import com.example.opc_da.util.RedisUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.jinterop.dcom.common.JIException;
-import org.openscada.opc.lib.da.Item;
-import org.openscada.opc.lib.da.*;
-
-import java.math.BigDecimal;
-import java.util.*;
-
-import static com.example.opc_da.util.OpcDaUtil.getVal;
-
-@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[] items;
-
-    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[] 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() {
-        Integer id = itemGroup.getId();
-        Integer dataSourceId = dataSource.getId();
-        Integer readModeType = itemGroup.getReadModeType();
-        Double modeValue = itemGroup.getModeValue();
-        Server server = OpcDaUtil.createServer(dataSource);
-        Long index = 0L;
-        AutoReconnectController autoReconnectController = new AutoReconnectController(server);
-        AutoReconnectListener listener = new AutoReconnectListener() {
-            private int trueCount = 0;
-            private int flaseCount = 0;
-
-            @Override
-            public void stateChanged(AutoReconnectState state) {
-                if (state.equals(AutoReconnectState.CONNECTED)) {
-                    redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, true);
-                    if (trueCount != 0) {
-                        messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
-                                "服务重新连接成功",
-                                ConstantStr.NO_READ));
-                        //通过传入的数据组id,将同一数据源的所有数据组,都设置为一样的状态
-                        opcAsyncTask.changeSameDataSourceState(id, ConstantStr.START_UP);
-//                        itemGroupDao.stopItemGroupById(id, ConstantStr.START_UP);
-                    }
-                    trueCount++;
-                }
-                if (state.equals(AutoReconnectState.DISCONNECTED)) {
-                    Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                    if (Blank.isEmpty(flage)) {
-                        flage = false;
-                    }
-                    if (flage) {
-                        if (flaseCount != 0) {
-                            //通过redis控制不要一直添加报警消息
-                            Boolean connectFlage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id);
-                            if (Blank.isEmpty(connectFlage)) {
-                                connectFlage = false;
-                            }
-                            if (connectFlage) {
-                                messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                        itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                                        "服务断开,马上进行重新连接",
-                                        ConstantStr.NO_READ));
-                                redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, false);
-                            }
-                            //通过传入的数据组id,将同一数据源的所有数据组,都设置为一样的状态
-                            opcAsyncTask.changeSameDataSourceState(id, ConstantStr.EXCEPT_STOP_UP);
-//                            itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-                        }
-                    }
-                    flaseCount++;
-                }
-            }
-        };
-        autoReconnectController.addListener(listener);
-        try {
-            server.connect();
-        } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            autoReconnectController.connect();
-        }
-        String sqlCurrentYmdh = "";
-        Group group = null;
-        Item[] itemArr = null;
-        try {
-            while (true) {
-                if (Blank.isNotEmpty(server.getServerState())) {
-                    group = server.addGroup();
-                    Map<String, Item> itemResult = group.addItems(items);
-                    Set itemSet = new HashSet(itemResult.values());
-                    itemArr = new Item[itemSet.size()];
-                    itemSet.toArray(itemArr);
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            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));
-                opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                if (Blank.isNotEmpty(group) && Blank.isNotEmpty(server)) {
-                    try {
-                        server.removeGroup(group, true);
-                    } catch (JIException ex) {
-                        System.err.println("删除组失败");
-                        ex.printStackTrace();
-                    }
-                }
-                if (Blank.isNotEmpty(autoReconnectController)) {
-                    autoReconnectController.removeListener(listener);
-                    autoReconnectController.disconnect();
-                }
-                if (Blank.isNotEmpty(server)) {
-                    server.dispose();
-                }
-                itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                cronTaskRegister.removeCronTask(cronId);
-                timer.cancel();
-            }
-        }
-
-        System.out.println("===========1开始读取数据======" + group);
-        while (true) {
-            try {
-                Thread.sleep(1000);
-//                try {
-                if (Blank.isNotEmpty(server.getServerState()) && Blank.isNotEmpty(group)) {
-                    System.out.println("===========1开始读取数据");
-//                        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);
-
-                    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(autoReconnectController)) {
-                            autoReconnectController.removeListener(listener);
-                            autoReconnectController.disconnect();
-                        }
-                        if (Blank.isNotEmpty(server)) {
-                            try {
-                                server.removeGroup(group, true);
-                            } catch (JIException ex) {
-                                System.err.println("删除组失败");
-                                ex.printStackTrace();
-                            }
-                            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(autoReconnectController)) {
-                            autoReconnectController.removeListener(listener);
-                            autoReconnectController.disconnect();
-                        }
-                        if (Blank.isNotEmpty(server)) {
-                            try {
-                                server.removeGroup(group, true);
-                            } catch (JIException ex) {
-                                System.err.println("删除组失败");
-                                ex.printStackTrace();
-                            }
-                            server.dispose();
-                        }
-
-                        timer.cancel();
-                        break;
-                    }
-                    try {
-                        Map<Item, ItemState> resultMap = group.read(true, itemArr);
-                        index++;
-                        System.out.println("读取到的数据大小:" + resultMap.size());
-                        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;
-                                    redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id, currentYmdh, ConstantStr.TWO_HOUR);
-                                }
-                            }
-                            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, currentYmdh, new Date());
-                                        if (Blank.isEmpty(oldValue)) {
-                                            cursorRawDataList.add(cursorRawData);
-                                        } else {
-                                            if ((MathUtil.isMeetChange((BigDecimal) oldValue,
-                                                    dmData, new BigDecimal(modeValue), readModeType))) {
-                                                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(autoReconnectController)) {
-                                autoReconnectController.removeListener(listener);
-                                autoReconnectController.disconnect();
-                            }
-                            if (Blank.isNotEmpty(server)) {
-                                try {
-                                    server.removeGroup(group, true);
-                                } catch (JIException ex) {
-                                    System.err.println("删除组失败");
-                                    ex.printStackTrace();
-                                }
-                                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) {
-//                        //执行组装数据库的数据,以及生成驱动报表
-//                        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();
-//                        }
-//                        if (Blank.isNotEmpty(autoReconnectController)) {
-//                            autoReconnectController.removeListener(listener);
-//                            autoReconnectController.disconnect();
-//                        }
-//                        itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-//                        cronTaskRegister.removeCronTask(cronId);
-//                        timer.cancel();
-//                    }
-//                }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-
-    }
-}

+ 0 - 452
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/OpcDaExceedTask1.java

@@ -1,452 +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.util.OpcDaUtil;
-import com.example.opc_da.util.RedisUtil;
-import org.jinterop.dcom.common.JIException;
-import org.openscada.opc.lib.da.*;
-
-import java.math.BigDecimal;
-import java.util.*;
-
-import static com.example.opc_da.util.OpcDaUtil.getVal;
-
-public class OpcDaExceedTask1 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;
-
-    private final Map<Integer, ReportTable> reportTableMap;
-
-    private final Long endTime;
-
-    public OpcDaExceedTask1(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, 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.reportTableMap = reportTableMap;
-        this.endTime = endTime;
-    }
-
-    @Override
-    public void run() {
-        Integer id = itemGroup.getId();
-        Integer dataSourceId = dataSource.getId();
-        Integer eventMode = itemGroup.getEventMode();
-        Double modeValue = itemGroup.getModeValue();
-        Server server = OpcDaUtil.createServer(dataSource);
-        String driverItem = OpcDaUtil.getDriverItem(itemList);
-        Long index = 0L;
-        AutoReconnectController autoReconnectController = new AutoReconnectController(server);
-        AutoReconnectListener listener = new AutoReconnectListener() {
-            private int trueCount = 0;
-            private int flaseCount = 0;
-
-            @Override
-            public void stateChanged(AutoReconnectState state) {
-                if (state.equals(AutoReconnectState.CONNECTED)) {
-                    redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, true);
-                    if (trueCount != 0) {
-                        messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
-                                "服务重新连接成功",
-                                ConstantStr.NO_READ));
-                        //通过传入的数据组id,将同一数据源的所有数据组,都设置为一样的状态
-                        opcAsyncTask.changeSameDataSourceState(id, ConstantStr.START_UP);
-//                        itemGroupDao.stopItemGroupById(id, ConstantStr.START_UP);
-                    }
-                    trueCount++;
-                }
-                if (state.equals(AutoReconnectState.DISCONNECTED)) {
-                    Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                    if (Blank.isEmpty(flage)) {
-                        flage = false;
-                    }
-                    if (flage) {
-                        if (flaseCount != 0) {
-                            //通过redis控制不要一直添加报警消息
-                            Boolean connectFlage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id);
-                            if (Blank.isEmpty(connectFlage)) {
-                                connectFlage = false;
-                            }
-                            if (connectFlage) {
-                                messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                        itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                                        "服务断开,马上进行重新连接",
-                                        ConstantStr.NO_READ));
-                                redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, false);
-                            }
-                            //通过传入的数据组id,将同一数据源的所有数据组,都设置为一样的状态
-                            opcAsyncTask.changeSameDataSourceState(id, ConstantStr.EXCEPT_STOP_UP);
-//                            itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-                        }
-                    }
-                    flaseCount++;
-                }
-            }
-        };
-        autoReconnectController.addListener(listener);
-        try {
-            server.connect();
-        } catch (Exception e) {
-            e.printStackTrace();
-
-        } finally {
-            autoReconnectController.connect();
-        }
-        Group group = null;
-        org.openscada.opc.lib.da.Item[] itemArr = null;
-        try {
-            while (true) {
-                if (Blank.isNotEmpty(server.getServerState())) {
-                    group = server.addGroup();
-                    Map<String, org.openscada.opc.lib.da.Item> itemResult = group.addItems(items);
-                    Set itemSet = new HashSet(itemResult.values());
-                    itemArr = new org.openscada.opc.lib.da.Item[itemSet.size()];
-                    itemSet.toArray(itemArr);
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-            if (Blank.isEmpty(flage)) {
-                flage = false;
-            }
-            if (!flage) {
-                if (Blank.isNotEmpty(group) && Blank.isNotEmpty(server)) {
-                    try {
-                        server.removeGroup(group, true);
-                    } catch (JIException ex) {
-                        System.err.println("删除组失败");
-                        ex.printStackTrace();
-                    }
-                }
-                if (Blank.isNotEmpty(autoReconnectController)) {
-                    autoReconnectController.removeListener(listener);
-                    autoReconnectController.disconnect();
-                }
-                if (Blank.isNotEmpty(server)) {
-                    server.dispose();
-                }
-                itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                cronTaskRegister.removeCronTask(cronId);
-                timer.cancel();
-            }
-        }
-        while (true) {
-            try {
-                Thread.sleep(1000);
-//                try {
-                if (Blank.isNotEmpty(server.getServerState()) && Blank.isNotEmpty(group)) {
-
-                    Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                    if (Blank.isEmpty(flage)) {
-                        flage = false;
-                    }
-                    if (!flage) {
-                        if (Blank.isNotEmpty(autoReconnectController)) {
-                            autoReconnectController.removeListener(listener);
-                            autoReconnectController.disconnect();
-                        }
-                        if (Blank.isNotEmpty(server)) {
-                            try {
-                                server.removeGroup(group, true);
-                            } catch (JIException ex) {
-                                System.err.println("删除组失败");
-                                ex.printStackTrace();
-                            }
-                            server.dispose();
-                        }
-                        cronTaskRegister.removeCronTask(cronId);
-                        redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                        timer.cancel();
-                        break;
-                    }
-                    if (System.currentTimeMillis() >= endTime) {
-                        if (Blank.isNotEmpty(autoReconnectController)) {
-                            autoReconnectController.removeListener(listener);
-                            autoReconnectController.disconnect();
-                        }
-                        if (Blank.isNotEmpty(server)) {
-                            try {
-                                server.removeGroup(group, true);
-                            } catch (JIException ex) {
-                                System.err.println("删除组失败");
-                                ex.printStackTrace();
-                            }
-                            server.dispose();
-                        }
-                        timer.cancel();
-                        break;
-                    }
-                    try {
-                        Map<org.openscada.opc.lib.da.Item, ItemState> resultMap = group.read(true, itemArr);
-                        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.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)) {
-                                String valueStr = value.toString();
-                                String dataValue = DataModel.valueReplace(dm, valueStr);
-                                if (keyId.equals(driverItem)) {
-                                    try {
-                                        BigDecimal dmData = new BigDecimal(dataValue);
-                                        BigDecimal bigDecimal1 = new BigDecimal(modeValue);
-                                        if (eventMode == ConstantStr.EVENT_MODEL_EXCEED) {
-                                            if (dmData.compareTo(bigDecimal1) == 1) {
-                                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valueStr, dmData.toString(),
-                                                        currentYmdhmss, index, currentYmdh, 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, valueStr, dmData.toString(),
-                                                        currentYmdhmss, index, currentYmdh, 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, valueStr, dmData.toString(),
-                                                        currentYmdhmss, index, currentYmdh, 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, valueStr, dmData.toString(),
-                                                            currentYmdhmss, index, currentYmdh, 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, valueStr, dmData.toString(),
-                                                            currentYmdhmss, index, currentYmdh, 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);
-                                        }
-                                    } catch (Exception e) {
-                                        CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valueStr, dataValue,
-                                                currentYmdhmss, index, currentYmdh, new Date());
-                                        cursorRawDataList.add(cursorRawData);
-                                    }
-                                } else {
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valueStr, dataValue,
-                                            currentYmdhmss, index, currentYmdh, new Date());
-                                    cursorRawDataList.add(cursorRawData);
-                                }
-                            } else {
-                                if (javaType.toLowerCase().equals("boolean")) {
-                                    String valueStr = value.toString();
-                                    CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valueStr, valueStr,
-                                            currentYmdhmss, index, currentYmdh, 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, currentYmdh, 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, currentYmdh, 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, currentYmdh, 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, currentYmdh, 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, currentYmdh, 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, currentYmdh, 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, currentYmdh, new Date());
-                                            cursorRawDataList.add(cursorRawData);
-                                        } else {
-                                            CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, "null", "null",
-                                                    currentYmdhmss, index, currentYmdh, new Date());
-                                            cursorRawDataList.add(cursorRawData);
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                        if (Blank.isNotEmpty(cursorRawDataList)) {
-                            opcAsyncTask.packageEventTable(cursorRawDataList, tableTemplates, reportTableMap);
-                            cursorRawDataList = new ArrayList<>();
-                        }
-                    } catch (Exception e) {
-                        flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                        if (Blank.isEmpty(flage)) {
-                            flage = false;
-                        }
-                        if (!flage) {
-                            if (Blank.isNotEmpty(autoReconnectController)) {
-                                autoReconnectController.removeListener(listener);
-                                autoReconnectController.disconnect();
-                            }
-                            if (Blank.isNotEmpty(server)) {
-                                try {
-                                    server.removeGroup(group, true);
-                                } catch (JIException ex) {
-                                    System.err.println("删除组失败");
-                                    ex.printStackTrace();
-                                }
-                                server.dispose();
-                            }
-                            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                            cronTaskRegister.removeCronTask(cronId);
-                            timer.cancel();
-                        }
-                    }
-                }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
-}

+ 0 - 414
cqcy-ei/cqcy-ei-da/src/main/java/com/example/opc_da/task/OpcDaFrequencyTask1.java

@@ -1,414 +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.util.OpcDaUtil;
-import com.example.opc_da.util.RedisUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.jinterop.dcom.common.JIException;
-import org.openscada.opc.lib.da.Item;
-import org.openscada.opc.lib.da.*;
-
-import java.math.BigDecimal;
-import java.util.*;
-
-import static com.example.opc_da.util.OpcDaUtil.getVal;
-
-@Slf4j
-public class OpcDaFrequencyTask1 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 OpcDaFrequencyTask1(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);
-        Long index = 0L;
-        AutoReconnectController autoReconnectController = new AutoReconnectController(server);
-        AutoReconnectListener listener = new AutoReconnectListener() {
-            private int trueCount = 0;
-            private int flaseCount = 0;
-
-            @Override
-            public void stateChanged(AutoReconnectState state) {
-                if (state.equals(AutoReconnectState.CONNECTED)) {
-                    redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, true);
-                    if (trueCount != 0) {
-                        messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务重新连接成功",
-                                "服务重新连接成功",
-                                ConstantStr.NO_READ));
-                        //通过传入的数据组id,将同一数据源的所有数据组,都设置为一样的状态
-                        opcAsyncTask.changeSameDataSourceState(id, ConstantStr.START_UP);
-//                        itemGroupDao.stopItemGroupById(id, ConstantStr.START_UP);
-                    }
-                    trueCount++;
-                }
-                if (state.equals(AutoReconnectState.DISCONNECTED)) {
-                    Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
-                    if (Blank.isEmpty(flage)) {
-                        flage = false;
-                    }
-                    if (flage) {
-                        if (flaseCount != 0) {
-                            //通过redis控制不要一直添加报警消息
-                            Boolean connectFlage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id);
-                            if (Blank.isEmpty(connectFlage)) {
-                                connectFlage = false;
-                            }
-                            if (connectFlage) {
-                                messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
-                                        itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "服务断开",
-                                        "服务断开,马上进行重新连接",
-                                        ConstantStr.NO_READ));
-                                redisUtil.set(ConstantStr.ITEM_GROUP + ConstantStr.CONNECT_STATE + id, false);
-                            }
-                            //通过传入的数据组id,将同一数据源的所有数据组,都设置为一样的状态
-                            opcAsyncTask.changeSameDataSourceState(id, ConstantStr.EXCEPT_STOP_UP);
-//                            itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
-                        }
-                    }
-                    flaseCount++;
-                }
-            }
-        };
-        autoReconnectController.addListener(listener);
-        try {
-            server.connect();
-        } catch (Exception e) {
-            e.printStackTrace();
-
-        } finally {
-            autoReconnectController.connect();
-        }
-        String sqlCurrentYmdh = "";
-        Group group = null;
-        Item[] itemArr = null;
-        try {
-            while (true) {
-                if (Blank.isNotEmpty(server.getServerState())) {
-                    group = server.addGroup();
-                    Map<String, Item> itemResult = group.addItems(items);
-                    Set itemSet = new HashSet(itemResult.values());
-                    itemArr = new Item[itemSet.size()];
-                    itemSet.toArray(itemArr);
-                    break;
-                }
-            }
-
-        } catch (Exception e) {
-            e.printStackTrace();
-            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));
-                opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-                redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-                if (Blank.isNotEmpty(group) && Blank.isNotEmpty(server)) {
-                    try {
-                        server.removeGroup(group, true);
-                    } catch (JIException ex) {
-                        System.err.println("删除组失败");
-                        ex.printStackTrace();
-                    }
-                }
-                if (Blank.isNotEmpty(autoReconnectController)) {
-                    autoReconnectController.removeListener(listener);
-                    autoReconnectController.disconnect();
-                }
-                if (Blank.isNotEmpty(server)) {
-                    server.dispose();
-                }
-                itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                cronTaskRegister.removeCronTask(cronId);
-                redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                timer.cancel();
-            }
-        }
-        int count = (int) (Math.round(itemGroup.getModeValue() * 1000));
-        while (true) {
-            try {
-                Thread.sleep(count);
-//                try {
-                if (Blank.isNotEmpty(server.getServerState()) && Blank.isNotEmpty(group)) {
-//                        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);
-
-                    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);
-                        //重连服务摧毁,必须在server之前,不然server摧毁时,会被监听器执行一次
-                        if (Blank.isNotEmpty(autoReconnectController)) {
-                            autoReconnectController.removeListener(listener);
-                            autoReconnectController.disconnect();
-                        }
-                        if (Blank.isNotEmpty(server)) {
-                            try {
-                                server.removeGroup(group, true);
-                            } catch (JIException ex) {
-                                System.err.println("删除组失败");
-                                ex.printStackTrace();
-                            }
-                            server.dispose();
-                        }
-                        itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                        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(autoReconnectController)) {
-                            autoReconnectController.removeListener(listener);
-                            autoReconnectController.disconnect();
-                        }
-                        if (Blank.isNotEmpty(server)) {
-                            try {
-                                server.removeGroup(group, true);
-                            } catch (JIException ex) {
-                                System.err.println("删除组失败");
-                                ex.printStackTrace();
-                            }
-                            server.dispose();
-                        }
-                        timer.cancel();
-                        break;
-                    }
-                    try {
-                        Map<Item, ItemState> resultMap = group.read(true, itemArr);
-                        index++;
-                        List<CursorRawData> cursorRawDataList = new ArrayList<>();
-                        List<Map<String, Object>> mapList = new ArrayList<>();
-                        for (Item key : resultMap.keySet()) {
-                            Map<String, Object> map1 = new HashMap<>();
-                            map1.put("item", key);
-                            map1.put("time", resultMap.get(key).getTimestamp().getTime().getTime());
-                            map1.put("itemState", resultMap.get(key));
-                            mapList.add(map1);
-                        }
-                        Collections.sort(mapList, new Comparator<Map<String, Object>>() {
-                            @Override
-                            public int compare(Map<String, Object> o1, Map<String, Object> o2) {
-                                return ((Long) o1.get("time")).compareTo((Long) o2.get("time"));
-                            }
-                        });
-                        for (Map<String, Object> map1 : mapList) {
-                            Item item = (Item) map1.get("item");
-                            String keyId = item.getId();
-                            ItemState itemState = (ItemState) map1.get("itemState");
-                            Map<String, Object> val = getVal(itemState.getValue());
-                            String javaType = val.get("javaType").toString();
-                            Object value = val.get("value");
-                            Date time = itemState.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;
-                                    redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id, currentYmdh, ConstantStr.TWO_HOUR);
-                                }
-                            }
-                            if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)) {
-                                String valueStr = value.toString();
-                                CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valueStr, DataModel.valueReplace(dm, valueStr),
-                                        currentYmdhmss, index, currentYmdh, 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, currentYmdh, 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, currentYmdh, new Date());
-                                        cursorRawDataList.add(cursorRawData);
-                                    } catch (Exception e) {
-                                        e.printStackTrace();
-                                        if (Blank.isNotEmpty(value)) {
-                                            String valStr = value.toString();
-                                            CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, valStr, valStr,
-                                                    currentYmdhmss, index, currentYmdh, new Date());
-                                            cursorRawDataList.add(cursorRawData);
-                                        } else {
-                                            CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, "null", "null",
-                                                    currentYmdhmss, index, currentYmdh, new Date());
-                                            cursorRawDataList.add(cursorRawData);
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                        if (Blank.isNotEmpty(cursorRawDataList)) {
-                            opcAsyncTask.addCursorRawDataList(cursorRawDataList);
-                            opcAsyncTask.packDeviceTable(cursorRawDataList, tableTemplates, ttIdMap, itemReadMap, reportTableMap, index);
-                            cursorRawDataList = new ArrayList<>();
-                        }
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        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(autoReconnectController)) {
-                                autoReconnectController.removeListener(listener);
-                                autoReconnectController.disconnect();
-                            }
-                            if (Blank.isNotEmpty(server)) {
-                                try {
-                                    server.removeGroup(group, true);
-                                } catch (JIException ex) {
-                                    System.err.println("删除组失败");
-                                    ex.printStackTrace();
-                                }
-                                server.dispose();
-                            }
-                            itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-                            cronTaskRegister.removeCronTask(cronId);
-                            redisUtil.del(ConstantStr.ITEM_GROUP + id);
-                            timer.cancel();
-                            break;
-                        }
-                    }
-                }
-//                } catch (Exception e) {
-//                    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));
-//                        opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
-//                        redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
-//                        if (Blank.isNotEmpty(server)) {
-//                            server.dispose();
-//                        }
-//                        if (Blank.isNotEmpty(autoReconnectController)) {
-//                            autoReconnectController.removeListener(listener);
-//                            autoReconnectController.disconnect();
-//                        }
-//                        itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
-//                        cronTaskRegister.removeCronTask(cronId);
-//                        timer.cancel();
-//                        break;
-//                    }
-//                }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
-}