|
@@ -9,7 +9,7 @@ import com.example.opc_common.enums.OpcDaDriverEnum;
|
|
|
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_da.dao.MessageNoticeDao;
|
|
|
+import com.example.opc_common.util.JavaTypeUtil;
|
|
|
import com.example.opc_da.dao.RawDataDao;
|
|
|
import com.example.opc_da.dao.ReportTableDao;
|
|
|
import com.example.opc_da.util.OpcDaUtil;
|
|
@@ -27,16 +27,15 @@ import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
-import java.util.*;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
|
|
|
@Component
|
|
|
@Async("threadPoolTaskExecutor")
|
|
|
@Slf4j
|
|
|
public class OpcAsyncTask {
|
|
|
|
|
|
- private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
|
|
|
-
|
|
|
@Resource
|
|
|
private RawDataDao rawDataDao;
|
|
|
|
|
@@ -49,102 +48,100 @@ public class OpcAsyncTask {
|
|
|
@Autowired
|
|
|
private ReportTableDao reportTableDao;
|
|
|
|
|
|
- @Autowired
|
|
|
- private MessageNoticeDao messageNoticeDao;
|
|
|
-
|
|
|
@Value("${opc_ua_server.address}")
|
|
|
private String opcUaUrl;
|
|
|
|
|
|
/**
|
|
|
* 新增一条临时数据
|
|
|
*
|
|
|
- * @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);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public synchronized void packageRawDataList(List<Item> itemList, Integer dataSourceId, String sqlCurrentYmdh) {
|
|
|
try {
|
|
|
- Thread.sleep(5000);
|
|
|
+ Thread.sleep(3000);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
- log.info("我进行了数据组装,归属时间为{}", sqlCurrentYmdh);
|
|
|
+// log.info("我进行了数据组装,归属时间为{}", sqlCurrentYmdh);
|
|
|
if (Blank.isNotEmpty(itemList)) {
|
|
|
- Item item = itemList.get(0);
|
|
|
- Integer itemGroupId = item.getItemGroupId();
|
|
|
+ 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(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());
|
|
|
-// }
|
|
|
-// 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), sqlCurrentYmdh, new Date());
|
|
|
-// if (Blank.isEmpty(oldRawData)) {
|
|
|
-// rawDataDao.addRawData(remainder, rawData);
|
|
|
-// } else {
|
|
|
-// rawDataDao.updateRawData(remainder, rawData);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// rawDataDao.delRawDataList(rawDataList, sqlCurrentYmdh);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
- }
|
|
|
+ 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), 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //删除临时表中的相应的数据
|
|
|
+ rawDataDao.delCursorRawDataList(itemGroupId, dataSourceId, sqlCurrentYmdh);
|
|
|
|
|
|
- public void addEventRawData(EventRawData eventRawData) {
|
|
|
- if (Blank.isNotEmpty(eventRawData)) {
|
|
|
- rawDataDao.addEventRawData(eventRawData);
|
|
|
+ //如果有事件驱动报表,则生成事件驱动报表
|
|
|
+ for (Item item : itemList) {
|
|
|
+ Integer tableReportId = item.getTableReportId();
|
|
|
+ if (Blank.isNotEmpty(tableReportId)) {
|
|
|
+ eventTable(tableReportId, dataSourceId, itemList, sqlCurrentYmdh);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -211,55 +208,23 @@ 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;
|
|
|
- Item eventItem = null;
|
|
|
- if (Blank.isNotEmpty(itemList)) {
|
|
|
- for (Item item : itemList) {
|
|
|
- if (Blank.isNotEmpty(item.getTableReportId())) {
|
|
|
- tableReportId = item.getTableReportId();
|
|
|
- eventItem = item;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- List<Long> eventRawDataIndexList = rawDataDao.getEventRawDataIndexList(eventItem, dataSourceId, sqlCurrentYmdh);
|
|
|
- if (Blank.isNotEmpty(itemList)) {
|
|
|
- for (Item item : itemList) {
|
|
|
- rawDataDao.delEventRawDataListByIndex(item, dataSourceId, sqlCurrentYmdh, eventRawDataIndexList);
|
|
|
- }
|
|
|
- }
|
|
|
- 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<EventRawData> eventRawDataList = rawDataDao.getEventRawDataList(itemList.get(i), dataSourceId, sqlCurrentYmdh);
|
|
|
- if (Blank.isNotEmpty(eventRawDataList)) {
|
|
|
+ RawData rawData = rawDataDao.getRawDataList(itemList.get(i), remainder, dataSourceId, sqlCurrentYmdh);
|
|
|
+ if (Blank.isNotEmpty(rawData)) {
|
|
|
JSONObject jsonObject1 = new JSONObject();
|
|
|
- EventRawData eventRawData = eventRawDataList.get(0);
|
|
|
- String dataType = eventRawData.getDataType();
|
|
|
+ String dataType = rawData.getDataType();
|
|
|
if (dataType.toLowerCase().equals("boolean")) {
|
|
|
- List<Boolean> dataList = new ArrayList<>();
|
|
|
- List<String> dataTimeList = new ArrayList<>();
|
|
|
- List<Long> dataIndexList = new ArrayList<>();
|
|
|
- List<Integer> idList = new ArrayList<>();
|
|
|
- for (EventRawData eventRawData1 : eventRawDataList) {
|
|
|
- dataList.add(JSON.parseObject(eventRawData1.getDataValue(), Boolean.class));
|
|
|
- dataTimeList.add(eventRawData1.getDataValueTime());
|
|
|
-// dataIndexList.add(eventRawData1.getItemIndex());
|
|
|
- idList.add(eventRawData1.getId());
|
|
|
- }
|
|
|
- jsonObject1.put("itemGroupId", eventRawData.getItemGroupId());
|
|
|
+ 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());
|
|
@@ -267,20 +232,12 @@ public class OpcAsyncTask {
|
|
|
jsonObject1.put("dataTimeList", dataTimeList);
|
|
|
jsonObject1.put("dataIndexList", dataIndexList);
|
|
|
objects.set(i, jsonObject1);
|
|
|
- rawDataDao.delEventRawDataList(idList);
|
|
|
} else {
|
|
|
try {
|
|
|
- List<BigDecimal> dataList = new ArrayList<>();
|
|
|
- List<String> dataTimeList = new ArrayList<>();
|
|
|
- List<Long> dataIndexList = new ArrayList<>();
|
|
|
- List<Integer> idList = new ArrayList<>();
|
|
|
- for (EventRawData eventRawData1 : eventRawDataList) {
|
|
|
- dataList.add(JSON.parseObject(eventRawData1.getDataValue(), BigDecimal.class));
|
|
|
- dataTimeList.add(eventRawData1.getDataValueTime());
|
|
|
-// dataIndexList.add(eventRawData1.getItemIndex());
|
|
|
- idList.add(eventRawData1.getId());
|
|
|
- }
|
|
|
- jsonObject1.put("itemGroupId", eventRawData.getItemGroupId());
|
|
|
+ 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());
|
|
@@ -288,19 +245,11 @@ public class OpcAsyncTask {
|
|
|
jsonObject1.put("dataTimeList", dataTimeList);
|
|
|
jsonObject1.put("dataIndexList", dataIndexList);
|
|
|
objects.set(i, jsonObject1);
|
|
|
- rawDataDao.delEventRawDataList(idList);
|
|
|
} catch (Exception e) {
|
|
|
- List<String> dataList = new ArrayList<>();
|
|
|
- List<String> dataTimeList = new ArrayList<>();
|
|
|
- List<Long> dataIndexList = new ArrayList<>();
|
|
|
- List<Integer> idList = new ArrayList<>();
|
|
|
- for (EventRawData eventRawData1 : eventRawDataList) {
|
|
|
- dataList.add(eventRawData1.getDataValue());
|
|
|
- dataTimeList.add(eventRawData1.getDataValueTime());
|
|
|
-// dataIndexList.add(eventRawData1.getItemIndex());
|
|
|
- idList.add(eventRawData1.getId());
|
|
|
- }
|
|
|
- jsonObject1.put("itemGroupId", eventRawData.getItemGroupId());
|
|
|
+ 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());
|
|
@@ -308,7 +257,6 @@ public class OpcAsyncTask {
|
|
|
jsonObject1.put("dataTimeList", dataTimeList);
|
|
|
jsonObject1.put("dataIndexList", dataIndexList);
|
|
|
objects.set(i, jsonObject1);
|
|
|
- rawDataDao.delEventRawDataList(idList);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -318,7 +266,7 @@ public class OpcAsyncTask {
|
|
|
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);
|