|
@@ -18,6 +18,8 @@ import org.openscada.opc.lib.da.*;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
|
|
|
+import static com.example.opc_da.util.OpcDaUtil.getVal;
|
|
|
+
|
|
|
public class OpcDaExceedTask extends TimerTask {
|
|
|
|
|
|
private final RedisUtil redisUtil;
|
|
@@ -42,6 +44,8 @@ public class OpcDaExceedTask extends TimerTask {
|
|
|
|
|
|
private final List<com.example.opc_common.entity.Item> itemList;
|
|
|
|
|
|
+ private final String[] items;
|
|
|
+
|
|
|
private final String timeFormat;
|
|
|
|
|
|
private final Long endTime;
|
|
@@ -57,6 +61,7 @@ public class OpcDaExceedTask extends TimerTask {
|
|
|
DataSource dataSource,
|
|
|
Map<String, DataModel> map,
|
|
|
List<com.example.opc_common.entity.Item> itemList,
|
|
|
+ String[] items,
|
|
|
String timeFormat,
|
|
|
Long endTime) {
|
|
|
this.redisUtil = redisUtil;
|
|
@@ -70,6 +75,7 @@ public class OpcDaExceedTask extends TimerTask {
|
|
|
this.dataSource = dataSource;
|
|
|
this.map = map;
|
|
|
this.itemList = itemList;
|
|
|
+ this.items = items;
|
|
|
this.timeFormat = timeFormat;
|
|
|
this.endTime = endTime;
|
|
|
}
|
|
@@ -81,7 +87,7 @@ public class OpcDaExceedTask extends TimerTask {
|
|
|
Integer eventMode = itemGroup.getEventMode();
|
|
|
Double modeValue = itemGroup.getModeValue();
|
|
|
Integer dataSourceId = dataSource.getId();
|
|
|
- SyncAccess access = null;
|
|
|
+ String driverItem = OpcDaUtil.getDriverItem(itemList);
|
|
|
try {
|
|
|
server.connect();
|
|
|
server.addStateListener(connected -> {
|
|
@@ -138,201 +144,189 @@ public class OpcDaExceedTask extends TimerTask {
|
|
|
timer.cancel();
|
|
|
}
|
|
|
try {
|
|
|
- access = new SyncAccess(server, 500);
|
|
|
- for (com.example.opc_common.entity.Item item : itemList) {
|
|
|
- String itemId = item.getItemReadName();
|
|
|
- Integer isDriverItem = item.getIsDriverItem();
|
|
|
- access.addItem(itemId, new DataCallback() {
|
|
|
- private Long index = 0L;
|
|
|
- private BigDecimal oldValue;
|
|
|
+ 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);
|
|
|
+ Long index = 0L;
|
|
|
+ while (true) {
|
|
|
+ Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
|
|
|
+ if (Blank.isEmpty(flage)) {
|
|
|
+ flage = false;
|
|
|
+ }
|
|
|
+ if (!flage) {
|
|
|
+ //执行组装数据库的数据,以及生成驱动报表
|
|
|
+ opcAsyncTask.packageEventTable(itemList, dataSourceId, index - 1);
|
|
|
|
|
|
- @Override
|
|
|
- public void changed(Item item1, ItemState itemState) {
|
|
|
- index++;
|
|
|
- try {
|
|
|
- Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
|
|
|
- DataModel dm = map.get(itemId);
|
|
|
+ redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
|
|
|
+ if (Blank.isNotEmpty(server)) {
|
|
|
+ server.dispose();
|
|
|
+ }
|
|
|
+ cronTaskRegister.removeCronTask(cronId);
|
|
|
+ redisUtil.del(ConstantStr.ITEM_GROUP + id);
|
|
|
+ timer.cancel();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (System.currentTimeMillis() >= endTime) {
|
|
|
+ //执行组装数据库的数据,以及生成驱动报表
|
|
|
+ opcAsyncTask.packageEventTable(itemList, dataSourceId, index - 1);
|
|
|
|
|
|
- //读取的值
|
|
|
- Object value = val.get("value");
|
|
|
- String javaType = String.valueOf(val.get("javaType"));
|
|
|
- //值对应取值的时间
|
|
|
- Date time = itemState.getTimestamp().getTime();
|
|
|
- //归属时间
|
|
|
- String currentYmdh = DateUtil.dateChangeStr(time, timeFormat);
|
|
|
- String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
|
|
|
- if (isDriverItem.equals(ConstantStr.IS_DRIVER_ITEM)) {
|
|
|
- if (index % 20 == 0) {
|
|
|
- opcAsyncTask.packageEventTable(itemList, dataSourceId, index - 1);
|
|
|
- redisUtil.set(ConstantStr.INDEX + id, index, ConstantStr.TWO_HOUR);
|
|
|
- }
|
|
|
- }
|
|
|
- if (javaType.toLowerCase().equals("boolean")) {
|
|
|
- Boolean dmData = JSON.parseObject(value.toString(), Boolean.class);
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(dmData), JSON.toJSONString(dmData),
|
|
|
- currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
|
|
|
+ if (Blank.isNotEmpty(server)) {
|
|
|
+ server.dispose();
|
|
|
+ }
|
|
|
+ timer.cancel();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Thread.sleep(1000);
|
|
|
+ index++;
|
|
|
+ redisUtil.set(ConstantStr.INDEX + id, index);
|
|
|
+ Map<org.openscada.opc.lib.da.Item, ItemState> resultMap = group.read(true, itemArr);
|
|
|
+ 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);
|
|
|
+ DataModel dm = map.get(keyId);
|
|
|
+ if (keyId.equals(driverItem) && (index % 20 == 0)) {
|
|
|
+ opcAsyncTask.packageEventTable(itemList, dataSourceId, index - 1);
|
|
|
+ }
|
|
|
+ if (javaType.toLowerCase().equals("boolean")) {
|
|
|
+ if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)
|
|
|
+ && dm.getOperationRule().equals(value.toString())) {
|
|
|
+ CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), dm.getReplacingValue(),
|
|
|
+ currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
|
|
|
+ cursorRawDataList.add(cursorRawData);
|
|
|
} else {
|
|
|
- try {
|
|
|
+ CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), JSON.toJSONString(value),
|
|
|
+ currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
|
|
|
+ cursorRawDataList.add(cursorRawData);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ try {
|
|
|
+ if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)
|
|
|
+ && dm.getOperationRule().equals(value.toString())) {
|
|
|
+ CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), dm.getReplacingValue(),
|
|
|
+ currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
|
|
|
+ cursorRawDataList.add(cursorRawData);
|
|
|
+ } else {
|
|
|
BigDecimal bigDecimal = JSON.parseObject(value.toString(), BigDecimal.class);
|
|
|
BigDecimal dmData = Blank.isNotEmpty(dm) ?
|
|
|
MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), bigDecimal) :
|
|
|
bigDecimal;
|
|
|
- if (isDriverItem.equals(ConstantStr.IS_DRIVER_ITEM)) {
|
|
|
+ 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, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
+ CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ cursorRawDataList.add(cursorRawData);
|
|
|
} else {
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
- currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ cursorRawDataList = new ArrayList<>();
|
|
|
+ break;
|
|
|
}
|
|
|
} else if (eventMode == ConstantStr.EVENT_MODEL_LOWER) {
|
|
|
if (dmData.compareTo(bigDecimal1) == -1) {
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
+ CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ cursorRawDataList.add(cursorRawData);
|
|
|
} else {
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
- currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ cursorRawDataList = new ArrayList<>();
|
|
|
+ break;
|
|
|
}
|
|
|
} else if (eventMode == ConstantStr.EVENT_MODEL_EQUAL) {
|
|
|
if (dmData.compareTo(bigDecimal1) == 0) {
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
+ CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ cursorRawDataList.add(cursorRawData);
|
|
|
} else {
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
- currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ cursorRawDataList = new ArrayList<>();
|
|
|
+ break;
|
|
|
}
|
|
|
} else if (eventMode == ConstantStr.EVENT_TRENDS_EXCEED) {
|
|
|
- if (oldValue.compareTo(bigDecimal1) != 1) {
|
|
|
+ if (((BigDecimal) redisUtil.get(ConstantStr.VALUE + id + keyId)).compareTo(bigDecimal1) != 1) {
|
|
|
if (dmData.compareTo(bigDecimal1) == 1) {
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
+ CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ cursorRawDataList.add(cursorRawData);
|
|
|
} else {
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
- currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ cursorRawDataList = new ArrayList<>();
|
|
|
+ break;
|
|
|
}
|
|
|
} else {
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
- currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ cursorRawDataList = new ArrayList<>();
|
|
|
+ break;
|
|
|
}
|
|
|
- oldValue = dmData;
|
|
|
+ redisUtil.set(ConstantStr.VALUE + id + keyId, dmData, ConstantStr.TWO_HOUR);
|
|
|
} else if (eventMode == ConstantStr.EVENT_TRENDS_LOWER) {
|
|
|
- if (oldValue.compareTo(bigDecimal1) != -1) {
|
|
|
+ if (((BigDecimal) redisUtil.get(ConstantStr.VALUE + id + keyId)).compareTo(bigDecimal1) != -1) {
|
|
|
if (dmData.compareTo(bigDecimal1) == -1) {
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
+ CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ cursorRawDataList.add(cursorRawData);
|
|
|
} else {
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
- currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ cursorRawDataList = new ArrayList<>();
|
|
|
+ break;
|
|
|
}
|
|
|
} else {
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
- currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ cursorRawDataList = new ArrayList<>();
|
|
|
+ break;
|
|
|
}
|
|
|
- oldValue = dmData;
|
|
|
+ redisUtil.set(ConstantStr.VALUE + id + keyId, dmData, ConstantStr.TWO_HOUR);
|
|
|
}
|
|
|
} else {
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
- currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(bigDecimal), JSON.toJSONString(dmData),
|
|
|
+ currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
|
|
|
+ cursorRawDataList.add(cursorRawData);
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
- String valueStr = value.toString();
|
|
|
- CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, itemId, javaType, valueStr, "".equals(valueStr) ? ConstantStr.STRING_EMPTY : valueStr,
|
|
|
- currentYmdhmss, index, currentYmdh, ConstantStr.NOT_RECORD, new Date());
|
|
|
- opcAsyncTask.addCursorRawData(cursorRawData);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ if (Blank.isNotEmpty(value)) {
|
|
|
+ if (Blank.isNotEmpty(dm) && dm.getModelType().equals(ConstantStr.VALUE_REPLACE)
|
|
|
+ && dm.getOperationRule().equals(value.toString())) {
|
|
|
+ CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), dm.getReplacingValue(),
|
|
|
+ currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
|
|
|
+ cursorRawDataList.add(cursorRawData);
|
|
|
+ } else {
|
|
|
+ CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, JSON.toJSONString(value), JSON.toJSONString(value),
|
|
|
+ currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
|
|
|
+ cursorRawDataList.add(cursorRawData);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ CursorRawData cursorRawData = new CursorRawData(id, dataSourceId, keyId, javaType, "null", "null",
|
|
|
+ currentYmdhmss, index, currentYmdh, ConstantStr.IS_RECORD, new Date());
|
|
|
+ cursorRawDataList.add(cursorRawData);
|
|
|
}
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
- opcAsyncTask.packageEventTable(itemList, dataSourceId, index);
|
|
|
- redisUtil.del(ConstantStr.INDEX + id);
|
|
|
-
|
|
|
- messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
|
|
|
- itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
|
|
|
- e.getMessage(),
|
|
|
- ConstantStr.NO_READ));
|
|
|
- e.printStackTrace();
|
|
|
- if (Blank.isNotEmpty(server)) {
|
|
|
- server.dispose();
|
|
|
- }
|
|
|
- itemGroupDao.stopItemGroupById(id, ConstantStr.STOP_IT);
|
|
|
- cronTaskRegister.removeCronTask(cronId);
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id);
|
|
|
- timer.cancel();
|
|
|
}
|
|
|
}
|
|
|
- });
|
|
|
- }
|
|
|
- access.bind();
|
|
|
- while (true) {
|
|
|
- Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
|
|
|
- if (Blank.isEmpty(flage)) {
|
|
|
- flage = false;
|
|
|
- }
|
|
|
-// if (!access.isActive()) {
|
|
|
-// Long index = Long.valueOf(String.valueOf(redisUtil.get(ConstantStr.INDEX + id)));
|
|
|
-// opcAsyncTask.packageEventTable(itemList, dataSourceId, index);
|
|
|
-// redisUtil.del(ConstantStr.INDEX + id);
|
|
|
-//
|
|
|
-// messageNoticeDao.addMessageNotice(new MessageNotice(itemGroup.getUserId(),
|
|
|
-// itemGroup.getGroupName() + DateUtil.dateChangeStrYmdhms(new Date()) + "运行失败",
|
|
|
-// "服务异常停止了",
|
|
|
-// ConstantStr.NO_READ));
|
|
|
-// if (Blank.isNotEmpty(access)) {
|
|
|
-// access.clear();
|
|
|
-// }
|
|
|
-// if (Blank.isNotEmpty(server)) {
|
|
|
-// server.dispose();
|
|
|
-// }
|
|
|
-// itemGroupDao.stopItemGroupById(id, ConstantStr.EXCEPT_STOP_UP);
|
|
|
-// cronTaskRegister.removeCronTask(cronId);
|
|
|
-// redisUtil.del(ConstantStr.ITEM_GROUP + id);
|
|
|
-// timer.cancel();
|
|
|
-// break;
|
|
|
-// }
|
|
|
- if (!flage) {
|
|
|
- Long index = Long.valueOf(String.valueOf(redisUtil.get(ConstantStr.INDEX + id)));
|
|
|
- opcAsyncTask.packageEventTable(itemList, dataSourceId, index);
|
|
|
- redisUtil.del(ConstantStr.INDEX + id);
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(access)) {
|
|
|
- access.clear();
|
|
|
- }
|
|
|
- if (Blank.isNotEmpty(server)) {
|
|
|
- server.dispose();
|
|
|
+ if (Blank.isNotEmpty(cursorRawDataList)) {
|
|
|
+ opcAsyncTask.addCursorRawDataList(cursorRawDataList);
|
|
|
+ cursorRawDataList = new ArrayList<>();
|
|
|
}
|
|
|
- cronTaskRegister.removeCronTask(cronId);
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + id);
|
|
|
- timer.cancel();
|
|
|
- break;
|
|
|
- }
|
|
|
- if (System.currentTimeMillis() >= endTime) {
|
|
|
- Long index = Long.valueOf(String.valueOf(redisUtil.get(ConstantStr.INDEX + id)));
|
|
|
- opcAsyncTask.packageEventTable(itemList, dataSourceId, index);
|
|
|
- redisUtil.del(ConstantStr.INDEX + id);
|
|
|
-
|
|
|
- if (Blank.isNotEmpty(access)) {
|
|
|
- access.clear();
|
|
|
+ } catch (Exception e) {
|
|
|
+ flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
|
|
|
+ if (Blank.isEmpty(flage)) {
|
|
|
+ flage = false;
|
|
|
}
|
|
|
- if (Blank.isNotEmpty(server)) {
|
|
|
- server.dispose();
|
|
|
+ if (!flage) {
|
|
|
+ //执行组装数据库的数据,以及生成驱动报表
|
|
|
+ opcAsyncTask.packageEventTable(itemList, dataSourceId, index);
|
|
|
+ redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
|
|
|
+ if (Blank.isNotEmpty(server)) {
|
|
|
+ server.dispose();
|
|
|
+ }
|
|
|
+ itemGroupDao.stopItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
|
|
|
+ cronTaskRegister.removeCronTask(cronId);
|
|
|
+ timer.cancel();
|
|
|
}
|
|
|
- timer.cancel();
|
|
|
- break;
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
@@ -342,12 +336,9 @@ public class OpcDaExceedTask extends TimerTask {
|
|
|
}
|
|
|
if (!flage) {
|
|
|
//执行组装数据库的数据,以及生成驱动报表
|
|
|
- String sqlCurrentYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id));
|
|
|
- opcAsyncTask.packageRawDataList(itemList, dataSourceId, sqlCurrentYmdh);
|
|
|
+ Long index = (Long) redisUtil.get(ConstantStr.INDEX + id);
|
|
|
+ opcAsyncTask.packageEventTable(itemList, dataSourceId, index - 1);
|
|
|
redisUtil.del(ConstantStr.VALUE_BELONG_TIME + id);
|
|
|
- if (Blank.isNotEmpty(access)) {
|
|
|
- access.clear();
|
|
|
- }
|
|
|
if (Blank.isNotEmpty(server)) {
|
|
|
server.dispose();
|
|
|
}
|