|
@@ -7,6 +7,7 @@ import com.example.opc_common.entity.*;
|
|
|
import com.example.opc_common.util.Blank;
|
|
|
import com.example.opc_common.util.ConstantStr;
|
|
|
import com.example.opc_common.util.DateUtil;
|
|
|
+import com.example.opc_common.util.JavaTypeUtil;
|
|
|
import com.example.opc_ua.dao.RawDataDao;
|
|
|
import com.example.opc_ua.dao.ReportTableDao;
|
|
|
import com.example.opc_ua.util.OpcUaUtil;
|
|
@@ -50,11 +51,11 @@ public class OpcAsyncTask {
|
|
|
/**
|
|
|
* 新增一条临时数据
|
|
|
*
|
|
|
- * @param rawData
|
|
|
+ * @param cursorRawData
|
|
|
*/
|
|
|
- public void addTempRawData(RawData rawData) {
|
|
|
- if (Blank.isNotEmpty(rawData)) {
|
|
|
- rawDataDao.addTempRawData(rawData);
|
|
|
+ public void addCursorRawData(CursorRawData cursorRawData) {
|
|
|
+ if (Blank.isNotEmpty(cursorRawData)) {
|
|
|
+ rawDataDao.addCursorRawData(cursorRawData);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -131,68 +132,81 @@ public class OpcAsyncTask {
|
|
|
|
|
|
public void packageRawDataList(List<Item> itemList, Integer dataSourceId, String sqlCurrentYmdh) {
|
|
|
try {
|
|
|
- Thread.sleep(5000);
|
|
|
+ Thread.sleep(3000);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
-
|
|
|
if (Blank.isNotEmpty(itemList)) {
|
|
|
- Item item1 = itemList.get(0);
|
|
|
- Integer itemGroupId = item1.getItemGroupId();
|
|
|
- Integer remainder = itemGroupId % ConstantStr.SUB_TABLE_NUM;
|
|
|
- for (Item item : itemList) {
|
|
|
- RawData oldRawData = rawDataDao.getRawDataList(item, remainder, dataSourceId, sqlCurrentYmdh);
|
|
|
- List<RawData> rawDataList = rawDataDao.getTempRawDataList(item, dataSourceId, sqlCurrentYmdh);
|
|
|
- if (Blank.isNotEmpty(rawDataList)) {
|
|
|
- RawData rawData1 = rawDataList.get(0);
|
|
|
- String itemName = rawData1.getItemName();
|
|
|
- String dataType = rawData1.getDataType();
|
|
|
- if (dataType.equals("boolean")) {
|
|
|
- List<Boolean> dataList = Blank.isNotEmpty(oldRawData) ? new ArrayList<>(Arrays.asList(JSON.parseObject(oldRawData.getDataValue(), Boolean[].class))) : new ArrayList<>();
|
|
|
- List<String> dataTimeList = Blank.isNotEmpty(oldRawData) ? new ArrayList<>(Arrays.asList(JSON.parseObject(oldRawData.getDataValueTime(), String[].class))) : new ArrayList<>();
|
|
|
- for (RawData rawData : rawDataList) {
|
|
|
- dataList.add(JSON.parseObject(rawData.getDataValue(), Boolean.class));
|
|
|
- dataTimeList.add(rawData.getDataValueTime());
|
|
|
- }
|
|
|
-// RawData rawData = new RawData(itemGroupId, dataSourceId, itemName, dataType, JSON.toJSONString(dataList),
|
|
|
-// JSON.toJSONString(dataTimeList), sqlCurrentYmdh, new Date());
|
|
|
-// if (Blank.isEmpty(oldRawData)) {
|
|
|
-// rawDataDao.addRawData(remainder, rawData);
|
|
|
-// } else {
|
|
|
-// rawDataDao.updateRawData(remainder, rawData);
|
|
|
-// }
|
|
|
- } else {
|
|
|
- List<String> dataTimeList = Blank.isNotEmpty(oldRawData) ? new ArrayList<>(Arrays.asList(JSON.parseObject(oldRawData.getDataValueTime(), String[].class))) : new ArrayList<>();
|
|
|
- try {
|
|
|
- List<BigDecimal> dataList = Blank.isNotEmpty(oldRawData) ? new ArrayList<>(Arrays.asList(JSON.parseObject(oldRawData.getDataValue(), BigDecimal[].class))) : new ArrayList<>();
|
|
|
- for (RawData rawData : rawDataList) {
|
|
|
- BigDecimal bigDecimal = JSON.parseObject(rawData.getDataValue(), BigDecimal.class);
|
|
|
- dataList.add(bigDecimal);
|
|
|
- dataTimeList.add(rawData.getDataValueTime());
|
|
|
+ Item item_ = itemList.get(0);
|
|
|
+ Integer itemGroupId = item_.getItemGroupId();
|
|
|
+ int remainder = itemGroupId % ConstantStr.SUB_TABLE_NUM;
|
|
|
+ //获取原始数据表中,满足记录的数据
|
|
|
+ List<Long> indexList = rawDataDao.getMeetIndexList(itemGroupId, dataSourceId, itemList, sqlCurrentYmdh, ConstantStr.NOT_MEET_CHANGE);
|
|
|
+ if (Blank.isNotEmpty(indexList)) {
|
|
|
+ for (Item item : itemList) {
|
|
|
+ //从临时表中获取相应的数据
|
|
|
+ List<CursorRawData> cursorRawDataList = rawDataDao.getCursorRawDataList(item, dataSourceId, sqlCurrentYmdh, indexList);
|
|
|
+ if (Blank.isNotEmpty(cursorRawDataList)) {
|
|
|
+ CursorRawData cursorRawData_ = cursorRawDataList.get(0);
|
|
|
+ String itemName = cursorRawData_.getItemName();
|
|
|
+ String dataType = cursorRawData_.getDataType();
|
|
|
+ if (dataType.toLowerCase().equals("boolean")) {
|
|
|
+ List<Boolean> dataList = new ArrayList<>();
|
|
|
+ List<String> dataTimeList = new ArrayList<>();
|
|
|
+ List<Long> dataIndexList = new ArrayList<>();
|
|
|
+ List<Integer> isMeetChangeList = new ArrayList<>();
|
|
|
+ for (CursorRawData cursorRawData : cursorRawDataList) {
|
|
|
+ dataList.add(JSON.parseObject(cursorRawData.getDataValue(), Boolean.class));
|
|
|
+ dataTimeList.add(cursorRawData.getDataValueTime());
|
|
|
+ dataIndexList.add(cursorRawData.getDataIndex());
|
|
|
+ isMeetChangeList.add(cursorRawData.getIsMeetChange());
|
|
|
}
|
|
|
-// RawData rawData = new RawData(itemGroupId, dataSourceId, itemName, dataType, JSON.toJSONString(dataList),
|
|
|
-// JSON.toJSONString(dataTimeList), sqlCurrentYmdh, new Date());
|
|
|
-// if (Blank.isEmpty(oldRawData)) {
|
|
|
-// rawDataDao.addRawData(remainder, rawData);
|
|
|
-// } else {
|
|
|
-// rawDataDao.updateRawData(remainder, rawData);
|
|
|
-// }
|
|
|
- } catch (Exception e) {
|
|
|
- List<String> dataList = Blank.isNotEmpty(oldRawData) ? new ArrayList<>(Arrays.asList(JSON.parseObject(oldRawData.getDataValue(), String[].class))) : new ArrayList<>();
|
|
|
- for (RawData rawData : rawDataList) {
|
|
|
- dataList.add(rawData.getDataValue());
|
|
|
- dataTimeList.add(rawData.getDataValueTime());
|
|
|
+ RawData rawData = new RawData(itemGroupId, dataSourceId, itemName, dataType, JSON.toJSONString(dataList),
|
|
|
+ JSON.toJSONString(dataTimeList), JSON.toJSONString(dataIndexList), sqlCurrentYmdh, JSON.toJSONString(isMeetChangeList), new Date());
|
|
|
+ rawDataDao.addRawData(remainder, rawData);
|
|
|
+ } else {
|
|
|
+ try {
|
|
|
+ List<BigDecimal> dataList = new ArrayList<>();
|
|
|
+ List<String> dataTimeList = new ArrayList<>();
|
|
|
+ List<Long> dataIndexList = new ArrayList<>();
|
|
|
+ List<Integer> isMeetChangeList = new ArrayList<>();
|
|
|
+ for (CursorRawData cursorRawData : cursorRawDataList) {
|
|
|
+ dataList.add(JSON.parseObject(cursorRawData.getDataValue(), BigDecimal.class));
|
|
|
+ dataTimeList.add(cursorRawData.getDataValueTime());
|
|
|
+ dataIndexList.add(cursorRawData.getDataIndex());
|
|
|
+ isMeetChangeList.add(cursorRawData.getIsMeetChange());
|
|
|
+ }
|
|
|
+ RawData rawData = new RawData(itemGroupId, dataSourceId, itemName, dataType, JSON.toJSONString(dataList),
|
|
|
+ JSON.toJSONString(dataTimeList), JSON.toJSONString(dataIndexList), sqlCurrentYmdh, JSON.toJSONString(isMeetChangeList), new Date());
|
|
|
+ rawDataDao.addRawData(remainder, rawData);
|
|
|
+ } catch (Exception e) {
|
|
|
+ List<String> dataList = new ArrayList<>();
|
|
|
+ List<String> dataTimeList = new ArrayList<>();
|
|
|
+ List<Long> dataIndexList = new ArrayList<>();
|
|
|
+ List<Integer> isMeetChangeList = new ArrayList<>();
|
|
|
+ for (CursorRawData cursorRawData : cursorRawDataList) {
|
|
|
+ dataList.add(cursorRawData.getDataValue());
|
|
|
+ dataTimeList.add(cursorRawData.getDataValueTime());
|
|
|
+ dataIndexList.add(cursorRawData.getDataIndex());
|
|
|
+ isMeetChangeList.add(cursorRawData.getIsMeetChange());
|
|
|
+ }
|
|
|
+ RawData rawData = new RawData(itemGroupId, dataSourceId, itemName, dataType, JSON.toJSONString(dataList),
|
|
|
+ JSON.toJSONString(dataTimeList), JSON.toJSONString(dataIndexList), sqlCurrentYmdh, JSON.toJSONString(isMeetChangeList), new Date());
|
|
|
+ rawDataDao.addRawData(remainder, rawData);
|
|
|
}
|
|
|
-// RawData rawData = new RawData(itemGroupId, dataSourceId, itemName, dataType, JSON.toJSONString(dataList),
|
|
|
-// JSON.toJSONString(dataTimeList), sqlCurrentYmdh, new Date());
|
|
|
-// if (Blank.isEmpty(oldRawData)) {
|
|
|
-// rawDataDao.addRawData(remainder, rawData);
|
|
|
-// } else {
|
|
|
-// rawDataDao.updateRawData(remainder, rawData);
|
|
|
-// }
|
|
|
}
|
|
|
}
|
|
|
- rawDataDao.delRawDataList(rawDataList, sqlCurrentYmdh);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //删除临时表中的相应的数据
|
|
|
+ rawDataDao.delCursorRawDataList(itemGroupId, dataSourceId, sqlCurrentYmdh);
|
|
|
+
|
|
|
+ //如果有事件驱动报表,则生成事件驱动报表
|
|
|
+ for (Item item : itemList) {
|
|
|
+ Integer tableReportId = item.getTableReportId();
|
|
|
+ if (Blank.isNotEmpty(tableReportId)) {
|
|
|
+ eventTable(tableReportId, dataSourceId, itemList, sqlCurrentYmdh);
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -219,89 +233,65 @@ public class OpcAsyncTask {
|
|
|
/**
|
|
|
* 事件驱动报表异步添加数据
|
|
|
*/
|
|
|
- public void eventTable(Integer dataSourceId, List<Item> itemList, String sqlCurrentYmdh) {
|
|
|
- try {
|
|
|
- Thread.sleep(5000);
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- Integer tableReportId = null;
|
|
|
- if (Blank.isNotEmpty(itemList)) {
|
|
|
- for (Item item : itemList) {
|
|
|
-// if (Blank.isNotEmpty(item.getEventMode()) && Blank.isNotEmpty(item.getEventValue()) && Blank.isNotEmpty(item.getTableReportId())) {
|
|
|
-// tableReportId = item.getTableReportId();
|
|
|
-// break;
|
|
|
-// }
|
|
|
- }
|
|
|
- }
|
|
|
- if (Blank.isEmpty(tableReportId)) {
|
|
|
- return;
|
|
|
- }
|
|
|
+ public void eventTable(Integer tableReportId,Integer dataSourceId, List<Item> itemList, String sqlCurrentYmdh) {
|
|
|
ReportTable reportTable = reportTableDao.getReportTableById(tableReportId);
|
|
|
String reportTableData = reportTable.getReportTableData();
|
|
|
JSONObject jsonObject = JSONObject.parseObject(reportTableData);
|
|
|
JSONArray objects = new JSONArray();
|
|
|
if (Blank.isNotEmpty(itemList)) {
|
|
|
+ Integer remainder = itemList.get(0).getItemGroupId() % ConstantStr.SUB_TABLE_NUM;
|
|
|
for (int i = 0; i < itemList.size(); i++) {
|
|
|
- List<RawData> rawDataList = rawDataDao.getEventRawDataList(itemList.get(i), dataSourceId, sqlCurrentYmdh);
|
|
|
- if (Blank.isNotEmpty(rawDataList)) {
|
|
|
+ RawData rawData = rawDataDao.getRawDataList(itemList.get(i), remainder, dataSourceId, sqlCurrentYmdh);
|
|
|
+ if (Blank.isNotEmpty(rawData)) {
|
|
|
JSONObject jsonObject1 = new JSONObject();
|
|
|
- RawData rawData = rawDataList.get(0);
|
|
|
String dataType = rawData.getDataType();
|
|
|
if (dataType.toLowerCase().equals("boolean")) {
|
|
|
- List<Boolean> dataList = new ArrayList<>();
|
|
|
- List<String> dataTimeList = new ArrayList<>();
|
|
|
- for (RawData rawData1 : rawDataList) {
|
|
|
- dataList.add(JSON.parseObject(rawData1.getDataValue(), Boolean.class));
|
|
|
- dataTimeList.add(rawData1.getDataValueTime());
|
|
|
- }
|
|
|
+ List<Boolean> dataList = JavaTypeUtil.objChangeListBool(rawData.getDataValue());
|
|
|
+ List<String> dataTimeList = JavaTypeUtil.objChangeListStr(rawData.getDataValueTime());
|
|
|
+ List<Long> dataIndexList = JavaTypeUtil.objChangeListLong(rawData.getDataIndex());
|
|
|
jsonObject1.put("itemGroupId", rawData.getItemGroupId());
|
|
|
jsonObject1.put("itemGroupName", itemList.get(i).getItemGroupName());
|
|
|
jsonObject1.put("itemName", itemList.get(i).getItemName());
|
|
|
jsonObject1.put("describe", Blank.isEmpty(itemList.get(i).getDescribe()) ? itemList.get(i).getItemName() : itemList.get(i).getDescribe());
|
|
|
jsonObject1.put("dataList", dataList);
|
|
|
jsonObject1.put("dataTimeList", dataTimeList);
|
|
|
+ jsonObject1.put("dataIndexList", dataIndexList);
|
|
|
objects.set(i, jsonObject1);
|
|
|
} else {
|
|
|
try {
|
|
|
- List<BigDecimal> dataList = new ArrayList<>();
|
|
|
- List<String> dataTimeList = new ArrayList<>();
|
|
|
- for (RawData rawData1 : rawDataList) {
|
|
|
- dataList.add(JSON.parseObject(rawData1.getDataValue(), BigDecimal.class));
|
|
|
- dataTimeList.add(rawData1.getDataValueTime());
|
|
|
- }
|
|
|
+ List<BigDecimal> dataList = JavaTypeUtil.objChangeListBig(rawData.getDataValue());
|
|
|
+ List<String> dataTimeList = JavaTypeUtil.objChangeListStr(rawData.getDataValueTime());
|
|
|
+ List<Long> dataIndexList = JavaTypeUtil.objChangeListLong(rawData.getDataIndex());
|
|
|
jsonObject1.put("itemGroupId", rawData.getItemGroupId());
|
|
|
jsonObject1.put("itemGroupName", itemList.get(i).getItemGroupName());
|
|
|
jsonObject1.put("itemName", itemList.get(i).getItemName());
|
|
|
jsonObject1.put("describe", Blank.isEmpty(itemList.get(i).getDescribe()) ? itemList.get(i).getItemName() : itemList.get(i).getDescribe());
|
|
|
jsonObject1.put("dataList", dataList);
|
|
|
jsonObject1.put("dataTimeList", dataTimeList);
|
|
|
+ jsonObject1.put("dataIndexList", dataIndexList);
|
|
|
objects.set(i, jsonObject1);
|
|
|
} catch (Exception e) {
|
|
|
- List<String> dataList = new ArrayList<>();
|
|
|
- List<String> dataTimeList = new ArrayList<>();
|
|
|
- for (RawData rawData1 : rawDataList) {
|
|
|
- dataList.add(rawData1.getDataValue());
|
|
|
- dataTimeList.add(rawData1.getDataValueTime());
|
|
|
- }
|
|
|
+ List<String> dataList = JavaTypeUtil.objChangeListStr(rawData.getDataValue());
|
|
|
+ List<String> dataTimeList = JavaTypeUtil.objChangeListStr(rawData.getDataValueTime());
|
|
|
+ List<Long> dataIndexList = JavaTypeUtil.objChangeListLong(rawData.getDataIndex());
|
|
|
jsonObject1.put("itemGroupId", rawData.getItemGroupId());
|
|
|
jsonObject1.put("itemGroupName", itemList.get(i).getItemGroupName());
|
|
|
jsonObject1.put("itemName", itemList.get(i).getItemName());
|
|
|
jsonObject1.put("describe", Blank.isEmpty(itemList.get(i).getDescribe()) ? itemList.get(i).getItemName() : itemList.get(i).getDescribe());
|
|
|
jsonObject1.put("dataList", dataList);
|
|
|
jsonObject1.put("dataTimeList", dataTimeList);
|
|
|
+ jsonObject1.put("dataIndexList", dataIndexList);
|
|
|
objects.set(i, jsonObject1);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- rawDataDao.delEventRawDataList(itemList.get(i), dataSourceId, sqlCurrentYmdh);
|
|
|
}
|
|
|
}
|
|
|
jsonObject.put("eventTables", objects);
|
|
|
ReportTable reportTable1 = new ReportTable();
|
|
|
reportTable1.setTableTemplateId(reportTable.getTableTemplateId());
|
|
|
reportTable1.setUserId(reportTable.getUserId());
|
|
|
- reportTable1.setReportTableName(reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"));
|
|
|
+ reportTable1.setReportTableName(reportTable.getReportTableName() + "_" + (Blank.isNotEmpty(itemList) ? itemList.get(0).getItemGroupName() : "") + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"));
|
|
|
reportTable1.setReportTableData(jsonObject.toJSONString());
|
|
|
reportTable1.setReportValueFormat(reportTable.getReportValueFormat());
|
|
|
reportTable1.setIsAutoReport(ConstantStr.EVENT_GENERATE_REPORT);
|