|
@@ -1,1844 +0,0 @@
|
|
|
-package com.example.opc_da.task;
|
|
|
-
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
-import com.example.opc_common.entity.*;
|
|
|
-import com.example.opc_common.enums.ResultEnum;
|
|
|
-import com.example.opc_common.exception.CustomException;
|
|
|
-import com.example.opc_common.util.*;
|
|
|
-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.openscada.opc.lib.da.Item;
|
|
|
-import org.openscada.opc.lib.da.*;
|
|
|
-
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.util.*;
|
|
|
-
|
|
|
-public class OpcDaTask extends TimerTask {
|
|
|
-
|
|
|
- private final RedisUtil redisUtil;
|
|
|
-
|
|
|
- private final OpcAsyncTask opcAsyncTask;
|
|
|
-
|
|
|
- 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;
|
|
|
-
|
|
|
- public OpcDaTask(RedisUtil redisUtil,
|
|
|
- OpcAsyncTask opcAsyncTask,
|
|
|
- ItemGroupDao itemGroupDao,
|
|
|
- MessageNoticeDao messageNoticeDao,
|
|
|
- Timer timer,
|
|
|
- ItemGroup itemGroup,
|
|
|
- DataSource dataSource,
|
|
|
- Map<String, DataModel> map,
|
|
|
- List<com.example.opc_common.entity.Item> itemList, String timeFormat) {
|
|
|
- this.redisUtil = redisUtil;
|
|
|
- this.opcAsyncTask = opcAsyncTask;
|
|
|
- this.itemGroupDao = itemGroupDao;
|
|
|
- this.messageNoticeDao = messageNoticeDao;
|
|
|
- this.timer = timer;
|
|
|
- this.itemGroup = itemGroup;
|
|
|
- this.dataSource = dataSource;
|
|
|
- this.map = map;
|
|
|
- this.itemList = itemList;
|
|
|
- this.timeFormat = timeFormat;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- Server server = OpcDaUtil.createServer(dataSource);
|
|
|
- Integer id = itemGroup.getId();
|
|
|
- Integer dataSourceId = dataSource.getId();
|
|
|
- try {
|
|
|
- if (itemGroup.getReadMode() == ConstantStr.ON_FREQUENCY) {
|
|
|
- server.connect();
|
|
|
- SyncAccess access = new SyncAccess(server, itemGroup.getModeValue() * 1000);
|
|
|
-// AccessBase access = new Async20Access(server, itemGroup.getModeValue() ,true);
|
|
|
- for (com.example.opc_common.entity.Item item : itemList) {
|
|
|
- String itemId = item.getItemReadName();
|
|
|
- Integer eventMode = item.getEventMode();
|
|
|
- Integer eventValue = item.getEventValue();
|
|
|
- Integer tableReportId = item.getTableReportId();
|
|
|
- access.addItem(itemId, new DataCallback() {
|
|
|
- private long timeLong = 0;
|
|
|
-
|
|
|
- @Override
|
|
|
- public void changed(Item item, ItemState itemState) {
|
|
|
- try {
|
|
|
- Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
|
|
|
- DataModel dm = map.get(itemId);
|
|
|
- //读取的值
|
|
|
- String javaType = String.valueOf(val.get("javaType"));
|
|
|
- redisUtil.set(ConstantStr.JAVA_TYPE + id + itemId, javaType, ConstantStr.TWO_HOUR);
|
|
|
- Object value = val.get("value");
|
|
|
- //值对应取值的时间
|
|
|
- Date time = itemState.getTimestamp().getTime();
|
|
|
- long time1 = time.getTime();
|
|
|
- if (timeLong == time1) {
|
|
|
- redisUtil.set(ConstantStr.ITEM_GROUP + id, false, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- timeLong = time1;
|
|
|
- //归属时间
|
|
|
- String storageYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
- String currentYmdh = DateUtil.dateChangeStr(time, timeFormat);
|
|
|
- String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
|
|
|
- //如果redis中存储的年月日时的时间为空,说明还未进行数据的保存
|
|
|
- if (javaType.toLowerCase().equals("boolean")) {
|
|
|
- if (Blank.isEmpty(storageYmdh)) {
|
|
|
- //将当前时间(归属时间)的年月日时存入redis
|
|
|
- redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- //将此时读取的数据,用集合的方式存入到redis中
|
|
|
- List<Boolean> dataValueList = new ArrayList<>();
|
|
|
- dataValueList.add(JSON.parseObject(value.toString(), Boolean.class));
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- //将此时server中读取的时间,存入到redis中
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- } else {
|
|
|
- //如果redis中存入的归属时间不为空,进行判断,如果现在获取的时间==redis中存入的归属时间,则认定此时的数据,为同一小时的数据,将原来的数据取出,并添加
|
|
|
- if (DateUtil.strChangeDate(storageYmdh, timeFormat).getTime() == DateUtil.strChangeDate(currentYmdh, timeFormat).getTime()) {
|
|
|
- List<Boolean> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBool(dataValueObject);
|
|
|
- }
|
|
|
- dataValueList.add(JSON.parseObject(value.toString(), Boolean.class));
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- } else {
|
|
|
- //如果当时获取的时间!=redis中存入的归属时间,则将redis中存入的归属时间和数据存入到数据库,redis中存入新的一个小时的数据
|
|
|
- String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
-
|
|
|
- List<Boolean> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBool(dataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- dataValueList = new ArrayList<>();
|
|
|
- dataValueList.add(JSON.parseObject(value.toString(), Boolean.class));
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- dataValueTimeList = new ArrayList<>();
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (Blank.isEmpty(storageYmdh)) {
|
|
|
- //将当前时间(归属时间)的年月日时存入redis
|
|
|
- redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- //将此时读取的数据,用集合的方式存入到redis中
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
|
|
|
- BigDecimal dmData = Blank.isNotEmpty(dm) ?
|
|
|
- MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
|
|
|
- bigDecimal;
|
|
|
- dataValueList.add(dmData);
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- } else if (eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == -1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- } catch (Exception e) {
|
|
|
- List<String> dataValueList = new ArrayList<>();
|
|
|
- dataValueList.add(value.toString());
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
-
|
|
|
- //将此时server中读取的时间,存入到redis中
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- } else {
|
|
|
- //如果redis中存入的归属时间不为空,进行判断,如果现在获取的时间==redis中存入的归属时间,则认定此时的数据,为同一小时的数据,将原来的数据取出,并添加
|
|
|
- if (DateUtil.strChangeDate(storageYmdh, timeFormat).getTime() == DateUtil.strChangeDate(currentYmdh, timeFormat).getTime()) {
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
|
|
|
- BigDecimal dmData = Blank.isNotEmpty(dm) ?
|
|
|
- MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
|
|
|
- bigDecimal;
|
|
|
- dataValueList.add(dmData);
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- } else if (eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == -1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- } catch (Exception e) {
|
|
|
- List<String> dataValueList = new ArrayList<>();
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListStr(dataValueObject);
|
|
|
- }
|
|
|
- dataValueList.add(value.toString());
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- } else {
|
|
|
- //如果当时获取的时间!=redis中存入的归属时间,则将redis中存入的归属时间和数据存入到数据库,redis中存入新的一个小时的数据
|
|
|
- String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
-
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- dataValueList = new ArrayList<>();
|
|
|
- BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
|
|
|
- BigDecimal dmData = Blank.isNotEmpty(dm) ?
|
|
|
- MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
|
|
|
- bigDecimal;
|
|
|
- dataValueList.add(dmData);
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- eventDataValueList = new ArrayList<>();
|
|
|
- eventDataValueTimeList = new ArrayList<>();
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- } else if (eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- eventDataValueList = new ArrayList<>();
|
|
|
- eventDataValueTimeList = new ArrayList<>();
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- } catch (Exception e) {
|
|
|
- List<String> dataValueList = new ArrayList<>();
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListStr(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- dataValueList = new ArrayList<>();
|
|
|
- dataValueList.add(value.toString());
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
-
|
|
|
- redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- dataValueTimeList = new ArrayList<>();
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- //存入已有的数据
|
|
|
- String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
-
|
|
|
- String javaType = String.valueOf(redisUtil.get(ConstantStr.JAVA_TYPE + id + itemId));
|
|
|
- if (javaType.toLowerCase().equals("boolean")) {
|
|
|
- List<Boolean> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBool(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
- } else {
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED) ||
|
|
|
- eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e1) {
|
|
|
- List<String> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListStr(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
- }
|
|
|
- }
|
|
|
- messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
|
|
|
- itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
|
|
|
- e.getMessage(),
|
|
|
- ConstantStr.NO_READ));
|
|
|
- if (Blank.isNotEmpty(server)) {
|
|
|
- server.dispose();
|
|
|
- }
|
|
|
- for (com.example.opc_common.entity.Item item_ : itemList) {
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id + item_.getItemReadName());
|
|
|
- }
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id);
|
|
|
- itemGroupDao.runItemGroupById(id, ConstantStr.STOP_IT);
|
|
|
- timer.cancel();
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- access.bind();
|
|
|
- while (true) {
|
|
|
- Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
|
|
|
- if (Blank.isEmpty(flage)) {
|
|
|
- flage = false;
|
|
|
- }
|
|
|
- if (!flage) {
|
|
|
- //存已经存入redis中的数据
|
|
|
- for (com.example.opc_common.entity.Item item : itemList) {
|
|
|
- String itemId = item.getItemReadName();
|
|
|
- Integer eventMode = item.getEventMode();
|
|
|
- Integer eventValue = item.getEventValue();
|
|
|
- Integer tableReportId = item.getTableReportId();
|
|
|
- String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
-
|
|
|
- String javaType = String.valueOf(redisUtil.get(ConstantStr.JAVA_TYPE + id + itemId));
|
|
|
- if (javaType.toLowerCase().equals("boolean")) {
|
|
|
- List<Boolean> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBool(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
- } else {
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED) ||
|
|
|
- eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e1) {
|
|
|
- List<String> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListStr(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
- }
|
|
|
- }
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id + itemId);
|
|
|
- }
|
|
|
-
|
|
|
- messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
|
|
|
- itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行停止",
|
|
|
- "请刷新检查组的运行状态",
|
|
|
- ConstantStr.NO_READ));
|
|
|
- access.unbind();
|
|
|
- if (Blank.isNotEmpty(server)) {
|
|
|
- server.dispose();
|
|
|
- }
|
|
|
-
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id);
|
|
|
- itemGroupDao.runItemGroupById(id, ConstantStr.STOP_IT);
|
|
|
- timer.cancel();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- } else if (itemGroup.getReadMode() == ConstantStr.ON_CHANGE) {
|
|
|
- server.connect();
|
|
|
- SyncAccess access = new SyncAccess(server, 1000);
|
|
|
- for (com.example.opc_common.entity.Item item : itemList) {
|
|
|
- String itemId = item.getItemReadName();
|
|
|
- Integer eventMode = item.getEventMode();
|
|
|
- Integer eventValue = item.getEventValue();
|
|
|
- Integer tableReportId = item.getTableReportId();
|
|
|
- access.addItem(itemId, new DataCallback() {
|
|
|
- private Map<String, Object> valueMap;
|
|
|
- private long timeLong = 0;
|
|
|
-
|
|
|
- @Override
|
|
|
- public void changed(Item item, ItemState itemState) {
|
|
|
- try {
|
|
|
- Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
|
|
|
- DataModel dm = map.get(itemId);
|
|
|
- //读取的值
|
|
|
- String javaType = String.valueOf(val.get("javaType"));
|
|
|
- redisUtil.set(ConstantStr.JAVA_TYPE + id + itemId, javaType, ConstantStr.TWO_HOUR);
|
|
|
- Object value = val.get("value");
|
|
|
- //值对应取值的时间
|
|
|
- Date time = itemState.getTimestamp().getTime();
|
|
|
- long time1 = time.getTime();
|
|
|
- if (timeLong == time1) {
|
|
|
- redisUtil.set(ConstantStr.ITEM_GROUP + id, false, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- timeLong = time1;
|
|
|
- //归属时间
|
|
|
- String storageYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
- String currentYmdh = DateUtil.dateChangeStr(time, timeFormat);
|
|
|
- String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
|
|
|
- //最开始读值的时候,没得数据,则将读取出来的数据赋值给valueMap
|
|
|
- if (Blank.isEmpty(valueMap)) {
|
|
|
- valueMap = val;
|
|
|
-
|
|
|
- redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh);
|
|
|
-
|
|
|
- if (javaType.toLowerCase().equals("boolean")) {
|
|
|
- List<Boolean> dataValueList = new ArrayList<>();
|
|
|
- dataValueList.add(JSON.parseObject(value.toString(), Boolean.class));
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- } else {
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
|
|
|
- BigDecimal dmData = Blank.isNotEmpty(dm) ?
|
|
|
- MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
|
|
|
- bigDecimal;
|
|
|
- dataValueList.add(dmData);
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- } else if (eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == -1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- } catch (Exception e) {
|
|
|
- List<String> dataValueList = new ArrayList<>();
|
|
|
- dataValueList.add(value.toString());
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- } else {
|
|
|
- //如果时间相等,时间还在同一个小时中
|
|
|
- if (DateUtil.strChangeDate(storageYmdh, timeFormat).getTime() == DateUtil.strChangeDate(currentYmdh, timeFormat).getTime()) {
|
|
|
- //如果上次的值和这次读的值不等,则将数据存入到redis中
|
|
|
- if (!valueMap.equals(val)) {
|
|
|
- if (javaType.toLowerCase().equals("boolean")) {
|
|
|
- List<Boolean> dataValueList = new ArrayList<>();
|
|
|
- dataValueList.add(JSON.parseObject(value.toString(), Boolean.class));
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- } else {
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
|
|
|
- BigDecimal dmData = Blank.isNotEmpty(dm) ?
|
|
|
- MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
|
|
|
- bigDecimal;
|
|
|
- dataValueList.add(dmData);
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- } else if (eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == -1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- } catch (Exception e) {
|
|
|
- List<String> dataValueList = new ArrayList<>();
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListStr(dataValueObject);
|
|
|
- }
|
|
|
- dataValueList.add(value.toString());
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- valueMap = val;
|
|
|
- }
|
|
|
- } else {
|
|
|
- //如果时间不在同一个小时中了,将redis中已经存在的值保存到数据库,新的重新存入到redis中
|
|
|
- String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
-
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (javaType.toLowerCase().equals("boolean")) {
|
|
|
- List<Boolean> dataValueList = new ArrayList<>();
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBool(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- dataValueList = new ArrayList<>();
|
|
|
- dataValueList.add(JSON.parseObject(value.toString(), Boolean.class));
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- } else {
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- dataValueList = new ArrayList<>();
|
|
|
- BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
|
|
|
- BigDecimal dmData = Blank.isNotEmpty(dm) ?
|
|
|
- MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
|
|
|
- bigDecimal;
|
|
|
- dataValueList.add(dmData);
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- eventDataValueList = new ArrayList<>();
|
|
|
- eventDataValueTimeList = new ArrayList<>();
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- } else if (eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- eventDataValueList = new ArrayList<>();
|
|
|
- eventDataValueTimeList = new ArrayList<>();
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- } catch (Exception e) {
|
|
|
- List<String> dataValueList = new ArrayList<>();
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListStr(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- dataValueList = new ArrayList<>();
|
|
|
- dataValueList.add(value.toString());
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- dataValueTimeList = new ArrayList<>();
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- //存入已有的数据
|
|
|
- String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
-
|
|
|
- String javaType = String.valueOf(redisUtil.get(ConstantStr.JAVA_TYPE + id + itemId));
|
|
|
- if (javaType.toLowerCase().equals("boolean")) {
|
|
|
- List<Boolean> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBool(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
- } else {
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED) ||
|
|
|
- eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e1) {
|
|
|
- List<String> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListStr(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- 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();
|
|
|
- }
|
|
|
- for (com.example.opc_common.entity.Item item_ : itemList) {
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id + item_.getItemReadName());
|
|
|
- }
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id);
|
|
|
- itemGroupDao.runItemGroupById(id, ConstantStr.STOP_IT);
|
|
|
- timer.cancel();
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- access.bind();
|
|
|
- while (true) {
|
|
|
- Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + itemGroup.getId());
|
|
|
- if (Blank.isEmpty(flage)) {
|
|
|
- flage = false;
|
|
|
- }
|
|
|
- if (!flage) {
|
|
|
- //存已经存入redis中的数据
|
|
|
- for (com.example.opc_common.entity.Item item : itemList) {
|
|
|
- String itemId = item.getItemReadName();
|
|
|
- Integer eventMode = item.getEventMode();
|
|
|
- Integer eventValue = item.getEventValue();
|
|
|
- Integer tableReportId = item.getTableReportId();
|
|
|
- String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
-
|
|
|
- String javaType = String.valueOf(redisUtil.get(ConstantStr.JAVA_TYPE + id + itemId));
|
|
|
- if (javaType.toLowerCase().equals("boolean")) {
|
|
|
- List<Boolean> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBool(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
- } else {
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED) ||
|
|
|
- eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e1) {
|
|
|
- List<String> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListStr(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
- }
|
|
|
- }
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id + itemId);
|
|
|
- }
|
|
|
-
|
|
|
- messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
|
|
|
- itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行停止",
|
|
|
- "请刷新检查组的运行状态",
|
|
|
- ConstantStr.NO_READ));
|
|
|
- access.unbind();
|
|
|
- if (Blank.isNotEmpty(server)) {
|
|
|
- server.dispose();
|
|
|
- }
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + itemGroup.getId());
|
|
|
- itemGroupDao.runItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
|
|
|
- timer.cancel();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- } else if (itemGroup.getReadMode() == ConstantStr.EXCEED_SET_VALUE) {
|
|
|
- server.connect();
|
|
|
- SyncAccess access = new SyncAccess(server, 1000);
|
|
|
- for (com.example.opc_common.entity.Item item : itemList) {
|
|
|
- String itemId = item.getItemReadName();
|
|
|
- Integer eventMode = item.getEventMode();
|
|
|
- Integer eventValue = item.getEventValue();
|
|
|
- Integer tableReportId = item.getTableReportId();
|
|
|
- access.addItem(itemId, new DataCallback() {
|
|
|
- private long timeLong = 0;
|
|
|
-
|
|
|
- @Override
|
|
|
- public void changed(Item item, ItemState itemState) {
|
|
|
- try {
|
|
|
- Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
|
|
|
- DataModel dm = map.get(itemId);
|
|
|
- BigDecimal bigModeValue = new BigDecimal(itemGroup.getModeValue());
|
|
|
-
|
|
|
- //读取的值
|
|
|
- Object value = val.get("value");
|
|
|
- String javaType = String.valueOf(val.get("javaType"));
|
|
|
- redisUtil.set(ConstantStr.JAVA_TYPE + id + itemId, javaType, ConstantStr.TWO_HOUR);
|
|
|
- //值对应取值的时间
|
|
|
- Date time = itemState.getTimestamp().getTime();
|
|
|
- long time1 = time.getTime();
|
|
|
- if (timeLong == time1) {
|
|
|
- redisUtil.set(ConstantStr.ITEM_GROUP + id, false, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- timeLong = time1;
|
|
|
- //归属时间
|
|
|
- String storageYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
- String currentYmdh = DateUtil.dateChangeStr(time, timeFormat);
|
|
|
- String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
|
|
|
- //只判断能转换为BigDecimal类型的
|
|
|
- if (!javaType.toLowerCase().equals("boolean")) {
|
|
|
- try {
|
|
|
- BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
|
|
|
- BigDecimal dmData = Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) : bigDecimal;
|
|
|
- if (Blank.isEmpty(storageYmdh)) {
|
|
|
- if (dmData.compareTo(bigModeValue) == 1) {
|
|
|
- redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- dataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- } else if (eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == -1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (DateUtil.strChangeDate(storageYmdh, timeFormat).getTime() == DateUtil.strChangeDate(currentYmdh, timeFormat).getTime()) {
|
|
|
- if (dmData.compareTo(bigModeValue) == 1) {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- dataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- } else if (eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == -1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
-
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- eventDataValueList = new ArrayList<>();
|
|
|
- eventDataValueTimeList = new ArrayList<>();
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- } else if (eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- eventDataValueList = new ArrayList<>();
|
|
|
- eventDataValueTimeList = new ArrayList<>();
|
|
|
- if (dmData.compareTo(bigEventValue) == -1) {
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- dataValueList = new ArrayList<>();
|
|
|
- dataValueTimeList = new ArrayList<>();
|
|
|
- if (dmData.compareTo(bigModeValue) == 1) {
|
|
|
- dataValueList.add(dmData);
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh, ConstantStr.TWO_HOUR);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- //存入已有的数据
|
|
|
- String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
-
|
|
|
- String javaType = String.valueOf(redisUtil.get(ConstantStr.JAVA_TYPE + id + itemId));
|
|
|
- if (!javaType.toLowerCase().equals("boolean")) {
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED) ||
|
|
|
- eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e1) {
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- 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();
|
|
|
- }
|
|
|
- for (com.example.opc_common.entity.Item item_ : itemList) {
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id + item_.getItemReadName());
|
|
|
- }
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id);
|
|
|
- itemGroupDao.runItemGroupById(id, ConstantStr.STOP_IT);
|
|
|
- timer.cancel();
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- access.bind();
|
|
|
- while (true) {
|
|
|
- Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + itemGroup.getId());
|
|
|
- if (Blank.isEmpty(flage)) {
|
|
|
- flage = false;
|
|
|
- }
|
|
|
- if (!flage) {
|
|
|
- //存已经存入redis中的数据
|
|
|
- for (com.example.opc_common.entity.Item item : itemList) {
|
|
|
- String itemId = item.getItemReadName();
|
|
|
- Integer eventMode = item.getEventMode();
|
|
|
- Integer eventValue = item.getEventValue();
|
|
|
- Integer tableReportId = item.getTableReportId();
|
|
|
- String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
-
|
|
|
- String javaType = String.valueOf(redisUtil.get(ConstantStr.JAVA_TYPE + id + itemId));
|
|
|
- if (!javaType.toLowerCase().equals("boolean")) {
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED) ||
|
|
|
- eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e1) {
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id + itemId);
|
|
|
- }
|
|
|
-
|
|
|
- messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
|
|
|
- itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行停止",
|
|
|
- "请刷新检查组的运行状态",
|
|
|
- ConstantStr.NO_READ));
|
|
|
- access.unbind();
|
|
|
- if (Blank.isNotEmpty(server)) {
|
|
|
- server.dispose();
|
|
|
- }
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + itemGroup.getId());
|
|
|
- itemGroupDao.runItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
|
|
|
- timer.cancel();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- } else if (itemGroup.getReadMode() == ConstantStr.LOWER_SET_VALUE) {
|
|
|
- server.connect();
|
|
|
- SyncAccess access = new SyncAccess(server, 1000);
|
|
|
- for (com.example.opc_common.entity.Item item : itemList) {
|
|
|
- String itemId = item.getItemReadName();
|
|
|
- Integer eventMode = item.getEventMode();
|
|
|
- Integer eventValue = item.getEventValue();
|
|
|
- Integer tableReportId = item.getTableReportId();
|
|
|
- access.addItem(itemId, new DataCallback() {
|
|
|
- private long timeLong = 0;
|
|
|
-
|
|
|
- @Override
|
|
|
- public void changed(Item item, ItemState itemState) {
|
|
|
- try {
|
|
|
- Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
|
|
|
- DataModel dm = map.get(itemId);
|
|
|
- BigDecimal bigModeValue = new BigDecimal(itemGroup.getModeValue());
|
|
|
-
|
|
|
- //读取的值
|
|
|
- Object value = val.get("value");
|
|
|
- String javaType = String.valueOf(val.get("javaType"));
|
|
|
- redisUtil.set(ConstantStr.JAVA_TYPE + id + itemId, javaType, ConstantStr.TWO_HOUR);
|
|
|
- //值对应取值的时间
|
|
|
- Date time = itemState.getTimestamp().getTime();
|
|
|
- long time1 = time.getTime();
|
|
|
- if (timeLong == time1) {
|
|
|
- redisUtil.set(ConstantStr.ITEM_GROUP + id, false, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- timeLong = time1;
|
|
|
- //归属时间
|
|
|
- String storageYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
- String currentYmdh = DateUtil.dateChangeStr(time, timeFormat);
|
|
|
- String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
|
|
|
- //只判断能转换为BigDecimal类型的
|
|
|
- if (!javaType.toLowerCase().equals("boolean")) {
|
|
|
- try {
|
|
|
- BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
|
|
|
- BigDecimal dmData = Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) : bigDecimal;
|
|
|
- if (Blank.isEmpty(storageYmdh)) {
|
|
|
- if (dmData.compareTo(bigModeValue) == -1) {
|
|
|
- redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- dataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- } else if (eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == -1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (DateUtil.strChangeDate(storageYmdh, timeFormat).getTime() == DateUtil.strChangeDate(currentYmdh, timeFormat).getTime()) {
|
|
|
- if (dmData.compareTo(bigModeValue) == -1) {
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- dataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- } else if (eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- if (dmData.compareTo(bigEventValue) == -1) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
-
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- eventDataValueList = new ArrayList<>();
|
|
|
- eventDataValueTimeList = new ArrayList<>();
|
|
|
- if (dmData.compareTo(bigEventValue) == 1) {
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- } else if (eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- eventDataValueList = new ArrayList<>();
|
|
|
- eventDataValueTimeList = new ArrayList<>();
|
|
|
- if (dmData.compareTo(bigEventValue) == -1) {
|
|
|
- eventDataValueList.add(dmData);
|
|
|
- eventDataValueTimeList.add(currentYmdhmss);
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE + id + itemId, eventDataValueList, ConstantStr.TWO_HOUR);
|
|
|
- redisUtil.set(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId, eventDataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- dataValueList = new ArrayList<>();
|
|
|
- dataValueTimeList = new ArrayList<>();
|
|
|
- if (dmData.compareTo(bigModeValue) == -1) {
|
|
|
- dataValueList.add(dmData);
|
|
|
- dataValueTimeList.add(currentYmdhmss);
|
|
|
- }
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList, ConstantStr.TWO_HOUR);
|
|
|
- redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh, ConstantStr.TWO_HOUR);
|
|
|
- redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- //存入已有的数据
|
|
|
- String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
-
|
|
|
- String javaType = String.valueOf(redisUtil.get(ConstantStr.JAVA_TYPE + id + itemId));
|
|
|
- if (!javaType.toLowerCase().equals("boolean")) {
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)||
|
|
|
- eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e1) {
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- 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();
|
|
|
- }
|
|
|
- for (com.example.opc_common.entity.Item item_ : itemList) {
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id + item_.getItemReadName());
|
|
|
- }
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id);
|
|
|
- itemGroupDao.runItemGroupById(id, ConstantStr.STOP_IT);
|
|
|
- timer.cancel();
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- access.bind();
|
|
|
- while (true) {
|
|
|
- Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + itemGroup.getId());
|
|
|
- if (Blank.isEmpty(flage)) {
|
|
|
- flage = false;
|
|
|
- }
|
|
|
- if (!flage) {
|
|
|
- //存已经存入redis中的数据
|
|
|
- for (com.example.opc_common.entity.Item item : itemList) {
|
|
|
- String itemId = item.getItemReadName();
|
|
|
- Integer eventMode = item.getEventMode();
|
|
|
- Integer eventValue = item.getEventValue();
|
|
|
- Integer tableReportId = item.getTableReportId();
|
|
|
- String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
-
|
|
|
- List<String> dataValueTimeList = new ArrayList<>();
|
|
|
- Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
- dataValueTimeList = JavaTypeUtil.objChangeListStr(dataValueTimeObject);
|
|
|
- }
|
|
|
-
|
|
|
- String javaType = String.valueOf(redisUtil.get(ConstantStr.JAVA_TYPE + id + itemId));
|
|
|
- if (!javaType.toLowerCase().equals("boolean")) {
|
|
|
- try {
|
|
|
- List<BigDecimal> dataValueList = new ArrayList<>();
|
|
|
- Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
- dataValueList = JavaTypeUtil.objChangeListBig(dataValueObject);
|
|
|
- }
|
|
|
- //存数据
|
|
|
- RawData rawData = new RawData(dataSourceId,
|
|
|
- itemId,
|
|
|
- javaType,
|
|
|
- JSON.toJSONString(dataValueList),
|
|
|
- String.valueOf(dataValueTimeList),
|
|
|
- String.valueOf(valueBelongTime),
|
|
|
- new Date());
|
|
|
- opcAsyncTask.addRawData(id, rawData);
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(eventMode) && Blank.isNotEmpty(eventValue) && Blank.isNotEmpty(tableReportId)) {
|
|
|
- BigDecimal bigEventValue = new BigDecimal(eventValue);
|
|
|
- if (eventMode.equals(ConstantStr.EVENT_MODEL_EXCEED)||
|
|
|
- eventMode.equals(ConstantStr.EVENT_MODEL_LOWER)) {
|
|
|
- List<BigDecimal> eventDataValueList = new ArrayList<>();
|
|
|
- Object eventDataValueObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueObject)) {
|
|
|
- eventDataValueList = JavaTypeUtil.objChangeListBig(eventDataValueObject);
|
|
|
- }
|
|
|
-
|
|
|
- List<String> eventDataValueTimeList = new ArrayList<>();
|
|
|
- Object eventDataValueTimeObject = redisUtil.get(ConstantStr.EVENT_DATA_VALUE_TIME + id + itemId);
|
|
|
- if (Blank.isNotEmpty(eventDataValueTimeObject)) {
|
|
|
- eventDataValueTimeList = JavaTypeUtil.objChangeListStr(eventDataValueTimeObject);
|
|
|
- }
|
|
|
- opcAsyncTask.addEventTable(tableReportId, eventDataValueList, eventDataValueTimeList);
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (Exception e1) {
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id + itemId);
|
|
|
- }
|
|
|
-
|
|
|
- messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
|
|
|
- itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行停止",
|
|
|
- "请刷新检查组的运行状态",
|
|
|
- ConstantStr.NO_READ));
|
|
|
- access.unbind();
|
|
|
- if (Blank.isNotEmpty(server)) {
|
|
|
- server.dispose();
|
|
|
- }
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + itemGroup.getId());
|
|
|
- itemGroupDao.runItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
|
|
|
- timer.cancel();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前未适配其他类型的读取模式");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- String message = e.getMessage();
|
|
|
- String messageContent = "";
|
|
|
- if (message.contains("0x00000005")) {
|
|
|
- messageContent = "账号或密码错误";
|
|
|
- } else if (message.contains("0x8001FFFF") || message.contains("Index 16 out of bounds for length 16")) {
|
|
|
- messageContent = "ip连接不可用";
|
|
|
- } else {
|
|
|
- messageContent = e.getMessage();
|
|
|
- }
|
|
|
- messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
|
|
|
- itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
|
|
|
- messageContent,
|
|
|
- ConstantStr.NO_READ));
|
|
|
- redisUtil.convertAndSend(ConstantStr.ITEM_GROUP, Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "组" + itemGroup.getGroupName() + "运行异常,错误信息为:" + messageContent));
|
|
|
- if (Blank.isNotEmpty(server)) {
|
|
|
- server.dispose();
|
|
|
- }
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + itemGroup.getId());
|
|
|
- itemGroupDao.runItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
|
|
|
- timer.cancel();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-}
|