|
@@ -44,6 +44,8 @@ public class OpcDaTask extends TimerTask {
|
|
|
@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();
|
|
@@ -55,9 +57,86 @@ public class OpcDaTask extends TimerTask {
|
|
|
try {
|
|
|
Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
|
|
|
DataModel dm = map.get(itemId);
|
|
|
+ //读取的值
|
|
|
String valStr = val.get("value").toString();
|
|
|
- opcAsyncTask.addRawData(itemGroup.getId(), new RawData(dataSource.getId(), itemId, val.get("javaType").toString(), Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr,
|
|
|
- itemState.getTimestamp().getTime()));
|
|
|
+ //值对应取值的时间
|
|
|
+ Date time = itemState.getTimestamp().getTime();
|
|
|
+ //归属时间
|
|
|
+ String storageYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
+ String currentYmdh = DateUtil.dateChangeStr(time, "yyyy-MM-dd HH");
|
|
|
+ String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
|
|
|
+ if (Blank.isEmpty(storageYmdh)) {
|
|
|
+ redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh);
|
|
|
+
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ dataValueList.add(Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ dataValueTimeList.add(currentYmdhmss);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ } else {
|
|
|
+ if (DateUtil.strChangeDate(storageYmdh, "yyyy-MM-dd HH").getTime() == DateUtil.strChangeDate(currentYmdh, "yyyy-MM-dd HH").getTime()) {
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
+ if (dataValueObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueObject) {
|
|
|
+ dataValueList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dataValueList.add(Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
+ if (dataValueTimeObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueTimeObject) {
|
|
|
+ dataValueTimeList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dataValueTimeList.add(currentYmdhmss);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ } else {
|
|
|
+ String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
+
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
+ if (dataValueObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueObject) {
|
|
|
+ dataValueList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
+ if (dataValueTimeObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueTimeObject) {
|
|
|
+ dataValueTimeList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //存数据
|
|
|
+ RawData rawData = new RawData(dataSourceId, itemId, val.get("javaType").toString(), String.valueOf(dataValueList), String.valueOf(dataValueTimeList), String.valueOf(valueBelongTime), new Date());
|
|
|
+ opcAsyncTask.addRawData(id, rawData);
|
|
|
+
|
|
|
+ redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh);
|
|
|
+
|
|
|
+ dataValueList = new ArrayList<>();
|
|
|
+ dataValueList.add(Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ dataValueTimeList = new ArrayList<>();
|
|
|
+ dataValueTimeList.add(currentYmdhmss);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ }
|
|
|
+ }
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
@@ -66,7 +145,7 @@ public class OpcDaTask extends TimerTask {
|
|
|
}
|
|
|
access.bind();
|
|
|
while (true) {
|
|
|
- Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + itemGroup.getId());
|
|
|
+ Boolean flage = (Boolean) redisUtil.get(ConstantStr.ITEM_GROUP + id);
|
|
|
if (Blank.isEmpty(flage)) {
|
|
|
flage = false;
|
|
|
}
|
|
@@ -75,8 +154,11 @@ public class OpcDaTask extends TimerTask {
|
|
|
if (Blank.isNotEmpty(server)) {
|
|
|
server.dispose();
|
|
|
}
|
|
|
- redisUtil.del(ConstantStr.ITEM_GROUP + itemGroup.getId());
|
|
|
- itemGroupDao.runItemGroupById(itemGroup.getId(), ConstantStr.STOP_IT);
|
|
|
+ for (String itemId : itemIdList) {
|
|
|
+ redisUtil.del(ConstantStr.ITEM_GROUP + id + itemId);
|
|
|
+ }
|
|
|
+ redisUtil.del(ConstantStr.ITEM_GROUP + id);
|
|
|
+ itemGroupDao.runItemGroupById(id, ConstantStr.STOP_IT);
|
|
|
timer.cancel();
|
|
|
break;
|
|
|
}
|
|
@@ -93,19 +175,118 @@ public class OpcDaTask extends TimerTask {
|
|
|
public void changed(Item item, ItemState itemState) {
|
|
|
try {
|
|
|
Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
|
|
|
+ DataModel dm = map.get(itemId);
|
|
|
+ //读取的值
|
|
|
+ String valStr = val.get("value").toString();
|
|
|
+ //值对应取值的时间
|
|
|
+ Date time = itemState.getTimestamp().getTime();
|
|
|
+ //归属时间
|
|
|
+ String storageYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
+ String currentYmdh = DateUtil.dateChangeStr(time, "yyyy-MM-dd HH");
|
|
|
+ String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
|
|
|
if (Blank.isEmpty(valueMap)) {
|
|
|
valueMap = val;
|
|
|
- DataModel dm = map.get(itemId);
|
|
|
- String valStr = val.get("value").toString();
|
|
|
- opcAsyncTask.addRawData(itemGroup.getId(), new RawData(dataSource.getId(), itemId, val.get("javaType").toString(), Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr,
|
|
|
- date));
|
|
|
+
|
|
|
+ redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh);
|
|
|
+
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ dataValueList.add(Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ dataValueTimeList.add(currentYmdhmss);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
} else {
|
|
|
if (!valueMap.equals(val)) {
|
|
|
- valueMap = val;
|
|
|
- DataModel dm = map.get(itemId);
|
|
|
- String valStr = val.get("value").toString();
|
|
|
- opcAsyncTask.addRawData(itemGroup.getId(), new RawData(dataSource.getId(), itemId, val.get("javaType").toString(), Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr,
|
|
|
- itemState.getTimestamp().getTime()));
|
|
|
+ if (DateUtil.strChangeDate(storageYmdh, "yyyy-MM-dd HH").getTime() == DateUtil.strChangeDate(currentYmdh, "yyyy-MM-dd HH").getTime()) {
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
+ if (dataValueObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueObject) {
|
|
|
+ dataValueList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dataValueList.add(Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
+ if (dataValueTimeObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueTimeObject) {
|
|
|
+ dataValueTimeList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dataValueTimeList.add(currentYmdhmss);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ } else {
|
|
|
+ String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
+
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
+ if (dataValueObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueObject) {
|
|
|
+ dataValueList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
+ if (dataValueTimeObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueTimeObject) {
|
|
|
+ dataValueTimeList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //存数据
|
|
|
+ RawData rawData = new RawData(dataSourceId, itemId, val.get("javaType").toString(), String.valueOf(dataValueList), String.valueOf(dataValueTimeList), String.valueOf(valueBelongTime), new Date());
|
|
|
+ opcAsyncTask.addRawData(id, rawData);
|
|
|
+
|
|
|
+ redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh);
|
|
|
+
|
|
|
+ dataValueList = new ArrayList<>();
|
|
|
+ dataValueList.add(Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ dataValueTimeList = new ArrayList<>();
|
|
|
+ dataValueTimeList.add(currentYmdhmss);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (DateUtil.strChangeDate(storageYmdh, "yyyy-MM-dd HH").getTime() != DateUtil.strChangeDate(currentYmdh, "yyyy-MM-dd HH").getTime()) {
|
|
|
+ String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
+
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
+ if (dataValueObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueObject) {
|
|
|
+ dataValueList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
+ if (dataValueTimeObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueTimeObject) {
|
|
|
+ dataValueTimeList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ //存数据
|
|
|
+ RawData rawData = new RawData(dataSourceId, itemId, val.get("javaType").toString(), String.valueOf(dataValueList), String.valueOf(dataValueTimeList), String.valueOf(valueBelongTime), new Date());
|
|
|
+ opcAsyncTask.addRawData(id, rawData);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
@@ -143,16 +324,121 @@ public class OpcDaTask extends TimerTask {
|
|
|
try {
|
|
|
Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
|
|
|
DataModel dm = map.get(itemId);
|
|
|
+ //读取的值
|
|
|
String valStr = val.get("value").toString();
|
|
|
String dmData = Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr;
|
|
|
+ //值对应取值的时间
|
|
|
+ Date time = itemState.getTimestamp().getTime();
|
|
|
+ //归属时间
|
|
|
+ String storageYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
+ String currentYmdh = DateUtil.dateChangeStr(time, "yyyy-MM-dd HH");
|
|
|
+ String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
|
|
|
if (Blank.isNotEmpty(dmData)) {
|
|
|
if (Double.valueOf(dmData) >= Double.valueOf(itemGroup.getModeValue())) {
|
|
|
- opcAsyncTask.addRawData(itemGroup.getId(), new RawData(dataSource.getId(), itemId, val.get("javaType").toString(), dmData,
|
|
|
- date));
|
|
|
+ if (Blank.isEmpty(storageYmdh)) {
|
|
|
+ redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh);
|
|
|
+
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ dataValueList.add(dmData);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ dataValueTimeList.add(currentYmdhmss);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ } else {
|
|
|
+ if (DateUtil.strChangeDate(storageYmdh, "yyyy-MM-dd HH").getTime() == DateUtil.strChangeDate(currentYmdh, "yyyy-MM-dd HH").getTime()) {
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
+ if (dataValueObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueObject) {
|
|
|
+ dataValueList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dataValueList.add(Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
+ if (dataValueTimeObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueTimeObject) {
|
|
|
+ dataValueTimeList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dataValueTimeList.add(currentYmdhmss);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ } else {
|
|
|
+ String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
+
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
+ if (dataValueObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueObject) {
|
|
|
+ dataValueList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
+ if (dataValueTimeObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueTimeObject) {
|
|
|
+ dataValueTimeList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //存数据
|
|
|
+ RawData rawData = new RawData(dataSourceId, itemId, val.get("javaType").toString(), String.valueOf(dataValueList), String.valueOf(dataValueTimeList), String.valueOf(valueBelongTime), new Date());
|
|
|
+ opcAsyncTask.addRawData(id, rawData);
|
|
|
+
|
|
|
+ redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh);
|
|
|
+
|
|
|
+ dataValueList = new ArrayList<>();
|
|
|
+ dataValueList.add(Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ dataValueTimeList = new ArrayList<>();
|
|
|
+ dataValueTimeList.add(currentYmdhmss);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (Blank.isNotEmpty(storageYmdh)) {
|
|
|
+ if (DateUtil.strChangeDate(storageYmdh, "yyyy-MM-dd HH").getTime() != DateUtil.strChangeDate(currentYmdh, "yyyy-MM-dd HH").getTime()) {
|
|
|
+ String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
+
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
+ if (dataValueObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueObject) {
|
|
|
+ dataValueList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
+ if (dataValueTimeObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueTimeObject) {
|
|
|
+ dataValueTimeList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ //存数据
|
|
|
+ RawData rawData = new RawData(dataSourceId, itemId, val.get("javaType").toString(), String.valueOf(dataValueList), String.valueOf(dataValueTimeList), String.valueOf(valueBelongTime), new Date());
|
|
|
+ opcAsyncTask.addRawData(id, rawData);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- } else {
|
|
|
- opcAsyncTask.addRawData(itemGroup.getId(), new RawData(dataSource.getId(), itemId, val.get("javaType").toString(), "null",
|
|
|
- date));
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
@@ -189,16 +475,121 @@ public class OpcDaTask extends TimerTask {
|
|
|
try {
|
|
|
Map<String, Object> val = OpcDaUtil.getVal(itemState.getValue());
|
|
|
DataModel dm = map.get(itemId);
|
|
|
+ //读取的值
|
|
|
String valStr = val.get("value").toString();
|
|
|
String dmData = Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr;
|
|
|
+ //值对应取值的时间
|
|
|
+ Date time = itemState.getTimestamp().getTime();
|
|
|
+ //归属时间
|
|
|
+ String storageYmdh = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
+ String currentYmdh = DateUtil.dateChangeStr(time, "yyyy-MM-dd HH");
|
|
|
+ String currentYmdhmss = DateUtil.dateChangeStrYmdhmss(time);
|
|
|
if (Blank.isNotEmpty(dmData)) {
|
|
|
if (Double.valueOf(dmData) <= Double.valueOf(itemGroup.getModeValue())) {
|
|
|
- opcAsyncTask.addRawData(itemGroup.getId(), new RawData(dataSource.getId(), itemId, val.get("javaType").toString(), dmData,
|
|
|
- date));
|
|
|
+ if (Blank.isEmpty(storageYmdh)) {
|
|
|
+ redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh);
|
|
|
+
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ dataValueList.add(dmData);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ dataValueTimeList.add(currentYmdhmss);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ } else {
|
|
|
+ if (DateUtil.strChangeDate(storageYmdh, "yyyy-MM-dd HH").getTime() == DateUtil.strChangeDate(currentYmdh, "yyyy-MM-dd HH").getTime()) {
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
+ if (dataValueObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueObject) {
|
|
|
+ dataValueList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dataValueList.add(Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
+ if (dataValueTimeObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueTimeObject) {
|
|
|
+ dataValueTimeList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dataValueTimeList.add(currentYmdhmss);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ } else {
|
|
|
+ String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
+
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
+ if (dataValueObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueObject) {
|
|
|
+ dataValueList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
+ if (dataValueTimeObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueTimeObject) {
|
|
|
+ dataValueTimeList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //存数据
|
|
|
+ RawData rawData = new RawData(dataSourceId, itemId, val.get("javaType").toString(), String.valueOf(dataValueList), String.valueOf(dataValueTimeList), String.valueOf(valueBelongTime), new Date());
|
|
|
+ opcAsyncTask.addRawData(id, rawData);
|
|
|
+
|
|
|
+ redisUtil.set(ConstantStr.VALUE_BELONG_TIME + id + itemId, currentYmdh);
|
|
|
+
|
|
|
+ dataValueList = new ArrayList<>();
|
|
|
+ dataValueList.add(Blank.isNotEmpty(dm) ? MathUtil.quadricOperation(dm.getMathParameter(), dm.getOperationRule(), Double.valueOf(valStr)).toString() : valStr);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ dataValueTimeList = new ArrayList<>();
|
|
|
+ dataValueTimeList.add(currentYmdhmss);
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if (Blank.isNotEmpty(storageYmdh)) {
|
|
|
+ if (DateUtil.strChangeDate(storageYmdh, "yyyy-MM-dd HH").getTime() != DateUtil.strChangeDate(currentYmdh, "yyyy-MM-dd HH").getTime()) {
|
|
|
+ String valueBelongTime = String.valueOf(redisUtil.get(ConstantStr.VALUE_BELONG_TIME + id + itemId));
|
|
|
+
|
|
|
+ List<String> dataValueList = new ArrayList<>();
|
|
|
+ Object dataValueObject = redisUtil.get(ConstantStr.DATA_VALUE + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueObject)) {
|
|
|
+ if (dataValueObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueObject) {
|
|
|
+ dataValueList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE + id + itemId, dataValueList);
|
|
|
+
|
|
|
+ List<String> dataValueTimeList = new ArrayList<>();
|
|
|
+ Object dataValueTimeObject = redisUtil.get(ConstantStr.DATA_VALUE_TIME + id + itemId);
|
|
|
+ if (Blank.isNotEmpty(dataValueTimeObject)) {
|
|
|
+ if (dataValueTimeObject instanceof ArrayList<?>) {
|
|
|
+ for (Object o : (List<?>) dataValueTimeObject) {
|
|
|
+ dataValueTimeList.add((String) o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ redisUtil.set(ConstantStr.DATA_VALUE_TIME + id + itemId, dataValueTimeList);
|
|
|
+ //存数据
|
|
|
+ RawData rawData = new RawData(dataSourceId, itemId, val.get("javaType").toString(), String.valueOf(dataValueList), String.valueOf(dataValueTimeList), String.valueOf(valueBelongTime), new Date());
|
|
|
+ opcAsyncTask.addRawData(id, rawData);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- } else {
|
|
|
- opcAsyncTask.addRawData(itemGroup.getId(), new RawData(dataSource.getId(), itemId, val.get("javaType").toString(), "null",
|
|
|
- date));
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|