Переглянути джерело

Merge branch 'master' of http://116.63.33.55/git/read_opc

FinalYu 1 рік тому
батько
коміт
cc84e17319
26 змінених файлів з 383 додано та 314 видалено
  1. 4 0
      chaunyi_opc/opc_common/src/main/java/com/example/opc_common/entity/Item.java
  2. 5 10
      chaunyi_opc/opc_common/src/main/java/com/example/opc_common/entity/ReportTable.java
  3. 17 0
      chaunyi_opc/opc_common/src/main/java/com/example/opc_common/entity/ReportTableItem.java
  4. 4 0
      chaunyi_opc/opc_common/src/main/java/com/example/opc_common/entity/TableTemplateTableItem.java
  5. 2 16
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/config/InitRunner.java
  6. 2 2
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/controller/ChartController.java
  7. 8 15
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/controller/DataSourceController.java
  8. 10 10
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/controller/ReportTableController.java
  9. 1 1
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/dao/ItemGroupDao.java
  10. 3 1
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/dao/ReportTableDao.java
  11. 2 2
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/DataSourceService.java
  12. 1 1
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/ReportTableService.java
  13. 17 30
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/impl/DataSourceServiceImpl.java
  14. 1 1
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/impl/ItemGroupServiceImpl.java
  15. 126 73
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/impl/ReportTableServiceImpl.java
  16. 4 4
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/impl/SystemServiceImpl.java
  17. 41 78
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcAsyncTask.java
  18. 2 2
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaTask.java
  19. 3 3
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/ReportTableTask.java
  20. 40 6
      chaunyi_opc/opc_da/src/main/java/com/example/opc_da/util/OpcDaUtil.java
  21. 3 2
      chaunyi_opc/opc_da/src/main/resources/mapper/ChartDao.xml
  22. 16 6
      chaunyi_opc/opc_da/src/main/resources/mapper/ItemGroupDao.xml
  23. 34 20
      chaunyi_opc/opc_da/src/main/resources/mapper/ReportTableDao.xml
  24. 1 17
      chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/config/InitRunner.java
  25. 9 9
      chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/task/OpcAsyncTask.java
  26. 27 5
      chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/util/OpcUaUtil.java

+ 4 - 0
chaunyi_opc/opc_common/src/main/java/com/example/opc_common/entity/Item.java

@@ -18,6 +18,10 @@ public class Item implements Serializable {
      */
     private Integer itemGroupId;
     /**
+     * 启动状态:0停用,1启用,虚拟字段,用于返回
+     */
+    private Integer runState;
+    /**
      * 项名称
      */
     private String itemName;

+ 5 - 10
chaunyi_opc/opc_common/src/main/java/com/example/opc_common/entity/ReportTable.java

@@ -21,10 +21,6 @@ public class ReportTable extends BaseSchedule implements Serializable {
      */
     private Integer reportTableType;
     /**
-     * 0取原始值,1取计算值
-     */
-    private Integer valueType;
-    /**
      * 报表模板id(必填)
      */
     private Integer tableTemplateId;
@@ -71,31 +67,30 @@ public class ReportTable extends BaseSchedule implements Serializable {
 
     List<ReportTableItem> reportTableItemList = new ArrayList<>();
 
-    List<ReportChart> reportChartList=new ArrayList<>();
+    List<ReportChart> reportChartList = new ArrayList<>();
 
     @Tolerate
     public ReportTable() {
 
     }
 
-    public ReportTable(Integer reportTableType, Integer valueType, Integer tableTemplateId,
+    public ReportTable(Integer reportTableType, Integer tableTemplateId,
                        String userId, String reportTableName, String reportTableData,
-                       Integer currentNum, Integer version) {
+                       Integer currentNum, Integer version, Date createTime) {
         this.reportTableType = reportTableType;
-        this.valueType = valueType;
         this.tableTemplateId = tableTemplateId;
         this.userId = userId;
         this.reportTableName = reportTableName;
         this.reportTableData = reportTableData;
         this.currentNum = currentNum;
         this.version = version;
+        this.createTime = createTime;
     }
 
-    public ReportTable(Integer reportTableType, Integer valueType, Integer tableTemplateId,
+    public ReportTable(Integer reportTableType, Integer tableTemplateId,
                        String userId, String reportTableName, String reportTableData,
                        Integer version, Date createTime) {
         this.reportTableType = reportTableType;
-        this.valueType = valueType;
         this.tableTemplateId = tableTemplateId;
         this.userId = userId;
         this.reportTableName = reportTableName;

+ 17 - 0
chaunyi_opc/opc_common/src/main/java/com/example/opc_common/entity/ReportTableItem.java

@@ -25,6 +25,10 @@ public class ReportTableItem implements Serializable {
      */
     private String itemName;
     /**
+     * 0取原始值,1取计算值
+     */
+    private Integer valueType;
+    /**
      * 横坐标,x轴
      */
     private Integer xaxis;
@@ -57,6 +61,19 @@ public class ReportTableItem implements Serializable {
 
     }
 
+    public ReportTableItem(Integer reportTableId, Integer itemId, Integer valueType, Integer xaxis, Integer yaxis,
+                           String standby, String valueList, String valueTimeList, String valueIndexList) {
+        this.reportTableId = reportTableId;
+        this.itemId = itemId;
+        this.valueType = valueType;
+        this.xaxis = xaxis;
+        this.yaxis = yaxis;
+        this.standby = standby;
+        this.valueList = valueList;
+        this.valueTimeList = valueTimeList;
+        this.valueIndexList = valueIndexList;
+    }
+
     public ReportTableItem(Integer reportTableId, Integer itemId, Integer xaxis, Integer yaxis,
                            String standby, String valueList, String valueTimeList, String valueIndexList) {
         this.reportTableId = reportTableId;

+ 4 - 0
chaunyi_opc/opc_common/src/main/java/com/example/opc_common/entity/TableTemplateTableItem.java

@@ -49,6 +49,10 @@ public class TableTemplateTableItem implements Serializable {
      */
     private Integer valueTakingMode;
     /**
+     * 0取原始值,1取计算值
+     */
+    private Integer valueType;
+    /**
      * 时段类型0天,1时,2分,3秒(必填)
      */
     private Integer bucketType;

+ 2 - 16
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/config/InitRunner.java

@@ -1,11 +1,9 @@
 package com.example.opc_da.config;
 
-import com.example.opc_common.entity.DataSource;
 import com.example.opc_common.entity.Item;
 import com.example.opc_common.entity.ItemGroup;
 import com.example.opc_common.util.Blank;
 import com.example.opc_common.util.ConstantStr;
-import com.example.opc_common.util.OpcUtil;
 import com.example.opc_da.dao.DataSourceDao;
 import com.example.opc_da.dao.ItemGroupDao;
 import com.example.opc_da.dao.RawDataDao;
@@ -38,18 +36,6 @@ public class InitRunner {
 
     @PostConstruct
     public void initData() {
-        //将ua和da的树,加载到redis中去
-        List<DataSource> dataSourceList = dataSourceDao.getAllDataSource(null);
-        if (Blank.isNotEmpty(dataSourceList)) {
-            for (DataSource dataSource : dataSourceList) {
-                if (OpcUtil.isOpcDa(dataSource.getDataSourceTypeKey())) {
-                    if (Blank.isEmpty(dataSource.getIpAddress(), dataSource.getIpUserName(), dataSource.getClsId())) {
-                        log.info("ip地址,账号,opc驱动都不能为空");
-                    }
-                    opcAsyncTask.opcDaGetTree(dataSource);
-                }
-            }
-        }
 
         //组装系统挂了没有组装的数据
         List<Integer> itemGroupIdList = rawDataDao.getRawDataGroupIdList();
@@ -59,7 +45,7 @@ public class InitRunner {
                 if (Blank.isNotEmpty(itemGroup)) {
                     if (itemGroup.getReadMode().equals(ConstantStr.EXCEED_SET_VALUE)) {
                         Integer dataSourceId = itemGroup.getDataSourceId();
-                        List<Item> itemList = itemGroupDao.getBasicItemList(itemGroupId, ConstantStr.BASIC_ATTRIBUTES);
+                        List<Item> itemList = itemGroupDao.getAttributesItemList(itemGroupId, ConstantStr.BASIC_ATTRIBUTES);
                         Long dataIndex = itemGroupDao.getMaxIndex(itemGroupId, dataSourceId);
                         if (Blank.isNotEmpty(dataIndex)) {
                             opcAsyncTask.packageEventTable(itemList, dataSourceId, dataIndex);
@@ -68,7 +54,7 @@ public class InitRunner {
                         List<String> belongTimeList = rawDataDao.getRawDataBelongTime(itemGroupId);
                         if (Blank.isNotEmpty(belongTimeList)) {
                             for (int i = 0; i < belongTimeList.size(); i++) {
-                                List<Item> itemList = itemGroupDao.getBasicItemList(itemGroupId, ConstantStr.BASIC_ATTRIBUTES);
+                                List<Item> itemList = itemGroupDao.getAttributesItemList(itemGroupId, ConstantStr.BASIC_ATTRIBUTES);
                                 Integer dataSourceId = itemGroup.getDataSourceId();
                                 opcAsyncTask.packageRawDataList1(itemList, dataSourceId, belongTimeList.get(i));
                             }

+ 2 - 2
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/controller/ChartController.java

@@ -77,7 +77,7 @@ public class ChartController {
      */
     @GetMapping("/getChartById")
     @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.MAINCHART, OperationEnum = OperationEnum.SELECT)
-    public Result getChartById(@PathVariable Integer id) {
+    public Result getChartById(Integer id) {
         if (Blank.isEmpty(id)) {
             return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "统计图id不能为空");
         }
@@ -92,7 +92,7 @@ public class ChartController {
      */
     @PostMapping("/delChartById")
     @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.MAINCHART, OperationEnum = OperationEnum.DELETE)
-    public Result delChartById(@PathVariable Integer id) {
+    public Result delChartById(Integer id) {
         if (Blank.isEmpty(id)) {
             return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "统计图id不能为空");
         }

+ 8 - 15
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/controller/DataSourceController.java

@@ -106,21 +106,6 @@ public class DataSourceController {
     }
 
     /**
-     * 获取数据源下的tree
-     *
-     * @param id
-     * @return
-     */
-    @GetMapping("/getDataSourceItemTree/{id}")
-    @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.DATASOURCE, OperationEnum = OperationEnum.SELECT)
-    public Result getDataSourceItemTree(@PathVariable Integer id) {
-        if (Blank.isEmpty(id)) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), ResultEnum.REQUEST_WRONGPARAMS.getRespMsg());
-        }
-        return dataSourceService.getDataSourceItemTree(id);
-    }
-
-    /**
      * 根据itemStr字符串,获取下级的所有item
      *
      * @param id      数据源id
@@ -136,6 +121,14 @@ public class DataSourceController {
         return dataSourceService.getNextAllItem(id, itemStr);
     }
 
+    @GetMapping("/readItemValue")
+    public Result readItemValue(Integer id, String itemStr){
+        if (Blank.isEmpty(id)) {
+            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "数据源不能为空");
+        }
+        return dataSourceService.readItemValue(id, itemStr);
+    }
+
     /**
      * 通过id删除数据源配置
      *

+ 10 - 10
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/controller/ReportTableController.java

@@ -55,7 +55,7 @@ public class ReportTableController {
     }
 
     /**
-     * 添加报表模板
+     * 添加报表模板,同时生成相应的报表
      *
      * @param tableTemplate
      * @return
@@ -63,7 +63,8 @@ public class ReportTableController {
     @PostMapping("/addTableTemplate")
     @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.TABLETEMPLATE, OperationEnum = OperationEnum.ADD)
     public Result addTableTemplate(@RequestBody TableTemplate tableTemplate) {
-        if (Blank.isEmpty(tableTemplate, tableTemplate.getTemplateName(), tableTemplate.getTemplateType(), tableTemplate.getTemplateData())) {
+        if (Blank.isEmpty(tableTemplate, tableTemplate.getTemplateName(), tableTemplate.getTemplateType(),
+                tableTemplate.getTemplateData())) {
             return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "模板名称,类型不能为空");
         }
         return reportTableService.addTableTemplate(tableTemplate);
@@ -80,7 +81,7 @@ public class ReportTableController {
     public Result updateTableTemplate(@RequestBody TableTemplate tableTemplate) {
         if (Blank.isEmpty(tableTemplate, tableTemplate.getId(), tableTemplate.getTemplateName(),
                 tableTemplate.getTemplateData(), tableTemplate.getVersion())) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "模板id、名称、数据、版本不能为空");
+            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "模板id、名称、取值类型、数据、版本不能为空");
         }
         return reportTableService.updateTableTemplate(tableTemplate);
     }
@@ -154,7 +155,7 @@ public class ReportTableController {
     @PostMapping("/addReportTable")
     @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.REPORTTABLE, OperationEnum = OperationEnum.ADD)
     public Result addReportTable(@RequestBody ReportTable reportTable) {
-        if (Blank.isEmpty(reportTable, reportTable.getReportTableType(), reportTable.getValueType(), reportTable.getTableTemplateId(),
+        if (Blank.isEmpty(reportTable, reportTable.getReportTableType(), reportTable.getTableTemplateId(),
                 reportTable.getReportTableName(), reportTable.getReportTableData())) {
             return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "报表类型、取值类型、模板、名称、内容不能为空");
         }
@@ -224,17 +225,16 @@ public class ReportTableController {
     /**
      * 自动报表启动停止
      *
-     * @param id
-     * @param runState 0停止,1启动
+     * @param reportTable
      * @return
      */
     @PostMapping("/runAutoTableById")
     @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.REPORTTABLE, OperationEnum = OperationEnum.UPDATE)
-    public Result runAutoTableById(Integer id, Integer runState) {
-        if (Blank.isEmpty(id, runState)) {
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "id和运行状态不能为空");
+    public Result runAutoTableById(@RequestBody ReportTable reportTable) {
+        if (Blank.isEmpty(reportTable, reportTable.getId(), reportTable.getStartTime(), reportTable.getEndTime(), reportTable.getCron(), reportTable.getRunState())) {
+            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "开始、结束时间、定时器表达式、启停状态不能为空");
         }
-        return reportTableService.runAutoTableById(id, runState);
+        return reportTableService.runAutoTableById(reportTable);
     }
 
     /**

+ 1 - 1
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/dao/ItemGroupDao.java

@@ -57,5 +57,5 @@ public interface ItemGroupDao {
 
     Integer updateItemByName(Item item);
 
-    List<Item> getBasicItemList(Integer itemGroupId, Integer itemType);
+    List<Item> getAttributesItemList(Integer itemGroupId, Integer itemType);
 }

+ 3 - 1
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/dao/ReportTableDao.java

@@ -103,7 +103,7 @@ public interface ReportTableDao {
 
     List<ReportTableItem> getTableItemListById(Integer tableId);
 
-    Integer runAutoTableById(Integer id, Integer runState);
+    Integer runAutoTableById(ReportTable reportTable);
 
     Integer delTableItem(Integer tableId);
 
@@ -126,4 +126,6 @@ public interface ReportTableDao {
     Integer addReportChartItem(List<ReportChartItem> reportChartItemList);
 
     List<DataSource> getChartDataSource(Integer id);
+
+    Integer stopAutoTableById(Integer reportTableId, Integer runState);
 }

+ 2 - 2
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/DataSourceService.java

@@ -19,8 +19,6 @@ public interface DataSourceService {
 
     Result delDataSourceById(Integer id);
 
-    Result getDataSourceItemTree(Integer id);
-
     Result getDaAllDriver(DataSource dataSource);
 
     Result getNextAllItem(Integer id, String itemStr);
@@ -40,4 +38,6 @@ public interface DataSourceService {
     Result getDbItemByDid(Integer driverId);
 
     Result delDriverBasicItem(Integer id);
+
+    Result readItemValue(Integer id, String itemStr);
 }

+ 1 - 1
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/ReportTableService.java

@@ -42,5 +42,5 @@ public interface ReportTableService {
 
     Result getAutoChReportTable(Integer page, Integer limit, Integer autoTableId, String reportTableName);
 
-    Result runAutoTableById(Integer id, Integer runState);
+    Result runAutoTableById(ReportTable reportTable);
 }

+ 17 - 30
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/impl/DataSourceServiceImpl.java

@@ -74,7 +74,6 @@ public class DataSourceServiceImpl implements DataSourceService {
             if (dataSourceDao.addDataSource(dataSource) <= 0) {
                 return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "添加数据源配置失败");
             }
-            opcAsyncTask.opcGetTree(dataSource);
             return Result.ok("添加数据源配置成功");
         } else {
             DataSource isExistDataSource = dataSourceDao.getDataSourceByNameNoId(dataSource.getId(), userId, dataSource.getDataSourceName());
@@ -84,7 +83,6 @@ public class DataSourceServiceImpl implements DataSourceService {
             if (dataSourceDao.updateDataSource(dataSource) <= 0) {
                 return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "修改数据源配置失败");
             }
-            opcAsyncTask.opcGetTree(dataSource);
             return Result.ok("修改数据源配置成功");
         }
     }
@@ -148,7 +146,18 @@ public class DataSourceServiceImpl implements DataSourceService {
     }
 
     @Override
-    public Result getDataSourceItemTree(Integer id) {
+    public Result getDaAllDriver(DataSource dataSource) {
+        dataSource = DataSource.convertPassword(dataSource);
+        DataSourceType dataSourceType = dataSourceDao.getDataSourceTypeById(dataSource.getTypeId());
+        if (OpcUtil.isOpcDa(dataSourceType.getDataSourceTypeKey())) {
+            return Result.ok(OpcDaUtil.getDaAllDriver(dataSource));
+        } else {
+            throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "获取驱动只支持opcDa类型");
+        }
+    }
+
+    @Override
+    public Result getNextAllItem(Integer id, String itemStr) {
         DataSource dataSource = dataSourceDao.getDataSourceById(id);
         if (Blank.isEmpty(dataSource)) {
             return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "没有此数据源配置,请刷新");
@@ -167,41 +176,19 @@ public class DataSourceServiceImpl implements DataSourceService {
                     return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "选择不匿名方式,需要填写账号");
                 }
             }
-            return restTemplate.postForObject(opcUaUrl + "/dataSource/getDataSourceItemTree", new HttpEntity<>(dataSource, new HttpHeaders()), Result.class);
+            return restTemplate.postForObject(opcUaUrl + "/dataSource/getNextAllItem?id=" + id + "&itemStr=" + itemStr, new HttpEntity<>(null, new HttpHeaders()), Result.class);
         } else if (OpcUtil.isOpcDa(dataSourceTypeKey)) {
             if (Blank.isEmpty(dataSource.getIpAddress(), dataSource.getIpUserName(), dataSource.getClsId())) {
                 return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "ip地址,账号,opc驱动都不能为空");
             }
-//            return OpcDaUtil.opcDaGetTree(dataSource);
-            Object objectTree = redisUtil.get(ConstantStr.DATA_SOURCE_TREE + id);
-            if (Blank.isNotEmpty(objectTree)) {
-                List<JSONObject> jsonObjects = JSON.parseObject(String.valueOf(objectTree), List.class);
-                opcAsyncTask.opcDaGetTree(dataSource);
-                return Result.ok(jsonObjects);
-            } else {
-                Result result = OpcDaUtil.opcDaGetTree(dataSource);
-                List<JSONObject> dataList = JSON.parseObject(String.valueOf(result.getData()), List.class);
-                redisUtil.set(ConstantStr.DATA_SOURCE_TREE + id, String.valueOf(dataList));
-                return result;
-            }
+            return OpcDaUtil.getNextAllItem(dataSource, itemStr);
         } else {
             throw new CustomException(ResultEnum.SERVER_ERROR.getRespCode(), "目前还没有此种类型的连接方式");
         }
     }
 
     @Override
-    public Result getDaAllDriver(DataSource dataSource) {
-        dataSource = DataSource.convertPassword(dataSource);
-        DataSourceType dataSourceType = dataSourceDao.getDataSourceTypeById(dataSource.getTypeId());
-        if (OpcUtil.isOpcDa(dataSourceType.getDataSourceTypeKey())) {
-            return Result.ok(OpcDaUtil.getDaAllDriver(dataSource));
-        } else {
-            throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "获取驱动只支持opcDa类型");
-        }
-    }
-
-    @Override
-    public Result getNextAllItem(Integer id, String itemStr) {
+    public Result readItemValue(Integer id, String itemStr) {
         DataSource dataSource = dataSourceDao.getDataSourceById(id);
         if (Blank.isEmpty(dataSource)) {
             return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "没有此数据源配置,请刷新");
@@ -220,12 +207,12 @@ public class DataSourceServiceImpl implements DataSourceService {
                     return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "选择不匿名方式,需要填写账号");
                 }
             }
-            return restTemplate.postForObject(opcUaUrl + "/dataSource/getNextAllItem", new HttpEntity<>(dataSource, new HttpHeaders()), Result.class);
+            return restTemplate.postForObject(opcUaUrl + "/dataSource/getNextAllItem?id=" + id + "&itemStr=" + itemStr, new HttpEntity<>(null, new HttpHeaders()), Result.class);
         } else if (OpcUtil.isOpcDa(dataSourceTypeKey)) {
             if (Blank.isEmpty(dataSource.getIpAddress(), dataSource.getIpUserName(), dataSource.getClsId())) {
                 return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "ip地址,账号,opc驱动都不能为空");
             }
-            return OpcDaUtil.getNextAllItem(dataSource, itemStr);
+            return OpcDaUtil.readItemValue(dataSource, itemStr);
         } else {
             throw new CustomException(ResultEnum.SERVER_ERROR.getRespCode(), "目前还没有此种类型的连接方式");
         }

+ 1 - 1
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/impl/ItemGroupServiceImpl.java

@@ -446,7 +446,7 @@ public class ItemGroupServiceImpl implements ItemGroupService {
                             String[] dataValueTime = JSON.parseObject(rawData.getDataValueTime(), String[].class);
                             for (int j = 0; j < dataValueTime.length; j++) {
                                 long time = DateUtil.strYmdhmssChangeDate(dataValueTime[j]).getTime();
-                                if (endTimeTime > time) {
+                                if (endTimeTime < time) {
                                     break;
                                 }
                                 if (startTimeTime <= time) {

+ 126 - 73
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/impl/ReportTableServiceImpl.java

@@ -93,41 +93,79 @@ public class ReportTableServiceImpl implements ReportTableService {
         tableTemplate.setUpdateTime(date);
         tableTemplate.setCreateTime(date);
         if (reportTableDao.addTableTemplate(tableTemplate) <= 0) {
-            return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "添加报表模板失败");
+            throw new CustomException(ResultEnum.SERVER_ERROR.getRespCode(), "添加报表失败");
         }
-        Integer id = tableTemplate.getId();
+        Integer tableTemplateId = tableTemplate.getId();
+        //获取模板表格数据的数据项信息
         List<TableTemplateTableItem> tableTemplateItemList = tableTemplate.getTableTemplateItemList();
-        if (Blank.isNotEmpty(tableTemplateItemList)) {
-            if (templateType.equals(ConstantStr.MANUAL_REPORT)) {
+        ReportTable reportTable = new ReportTable(
+                templateType, tableTemplateId, userId,
+                tableTemplate.getTemplateName(), tableTemplate.getTemplateData(), ConstantStr.DEFAULT_VERSION, date
+        );
+        if (templateType.equals(ConstantStr.MANUAL_REPORT)) {
+            if (reportTableDao.addReportTable(reportTable) <= 0) {
+                throw new CustomException(ResultEnum.SERVER_ERROR.getRespCode(), "生成数据报表失败");
+            }
+            Integer reportTableId = reportTable.getId();
+            if (Blank.isNotEmpty(tableTemplateItemList)) {
+                List<ReportTableItem> reportTableItemList = new ArrayList<>();
                 for (TableTemplateTableItem t : tableTemplateItemList) {
-                    t.setTableTemplateId(id);
+                    t.setTableTemplateId(tableTemplateId);
                     if (Blank.isEmpty(t.getItemId(), t.getPlaceHolder(), t.getXaxis(), t.getYaxis())) {
                         throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "数据项、占位符、横、纵坐标都不能为空");
                     }
+                    if (Blank.isEmpty(t.getItemGroupId())) {
+                        continue;
+                    }
+                    //根据模板的数据项信息,生成报表数据项信息
+                    reportTableItemList.add(new ReportTableItem(
+                            reportTableId, t.getItemId(), t.getValueType(), t.getXaxis(), t.getYaxis(), t.getStandby(), null, null, null
+                    ));
                 }
-            } else if (templateType.equals(ConstantStr.AUTOMATIC_REPORT)) {
+                //添加报表数据项信息
+                if (Blank.isNotEmpty(reportTableItemList)) {
+                    reportTableDao.addReportTableItemList(reportTableItemList);
+                }
+                //添加模板数据项信息
+                reportTableDao.addTableTemplateItem(tableTemplateItemList);
+            }
+        } else if (templateType.equals(ConstantStr.AUTOMATIC_REPORT)) {
+            if (reportTableDao.addReportTable(reportTable) <= 0) {
+                throw new CustomException(ResultEnum.SERVER_ERROR.getRespCode(), "生成数据报表失败");
+            }
+            if (Blank.isNotEmpty(tableTemplateItemList)) {
                 for (TableTemplateTableItem t : tableTemplateItemList) {
-                    t.setTableTemplateId(id);
+                    t.setTableTemplateId(tableTemplateId);
                     if (Blank.isEmpty(t.getItemId(), t.getPlaceHolder(), t.getXaxis(), t.getYaxis(), t.getValueTakingMode(), t.getBucketType(), t.getBucketValue())) {
                         throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "数据项、占位符、横、纵坐标、取值模式、时段类型、值都不能为空");
                     }
                 }
-            } else if (templateType.equals(ConstantStr.EVENT_DRIVEN_REPORT)) {
-                Integer eventNum = tableTemplate.getEventNum();
-                if (Blank.isEmpty(eventNum)) {
-                    throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "事件驱动显示数量设置不能为空");
-                }
+            }
+            //自动报表只需要添加模板的数据项信息,定时器执行的时候,会根据模板的数据项信息,自动生成报表的数据项信息
+            reportTableDao.addTableTemplateItem(tableTemplateItemList);
+        } else if (templateType.equals(ConstantStr.EVENT_DRIVEN_REPORT)) {
+            Integer eventNum = tableTemplate.getEventNum();
+            if (Blank.isEmpty(eventNum)) {
+                throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "事件驱动显示数量设置不能为空");
+            }
+            reportTable.setCurrentNum(eventNum);
+            if (reportTableDao.addReportTable(reportTable) <= 0) {
+                throw new CustomException(ResultEnum.SERVER_ERROR.getRespCode(), "生成数据报表失败");
+            }
+            if (Blank.isNotEmpty(tableTemplateItemList)) {
                 for (TableTemplateTableItem t : tableTemplateItemList) {
-                    t.setTableTemplateId(id);
+                    t.setTableTemplateId(tableTemplateId);
                     if (Blank.isEmpty(t.getItemId(), t.getPlaceHolder(), t.getXaxis(), t.getYaxis())) {
                         throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "数据项、占位符、横、纵坐标都不能为空");
                     }
                 }
-            } else {
-                throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前只支持手动,自动,事件驱动类型的报表模板");
             }
+            //事件驱动报表只需要添加模板的数据项信息,驱动执行的时候,会根据模板的数据项信息,自动生成报表的数据项信息
             reportTableDao.addTableTemplateItem(tableTemplateItemList);
+        } else {
+            throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前只支持手动,自动,事件驱动类型的报表");
         }
+
         List<TableTemplateChart> tableTemplateChartList = tableTemplate.getTableTemplateChartList();
         if (Blank.isNotEmpty(tableTemplateChartList)) {
             for (TableTemplateChart ttc : tableTemplateChartList) {
@@ -135,7 +173,7 @@ public class ReportTableServiceImpl implements ReportTableService {
                         ttc.getBucketType(), ttc.getBucketValue())) {
                     throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "统计图类型、名称、取值模式、时段类型、时段值不能为空");
                 }
-                ttc.setTableTemplateId(id);
+                ttc.setTableTemplateId(tableTemplateId);
                 reportTableDao.addTableTemplateChart(ttc);
                 List<TableTemplateChartItem> tableTemplateChartItemList = ttc.getTableTemplateChartItemList();
                 if (Blank.isNotEmpty(tableTemplateChartItemList)) {
@@ -145,7 +183,7 @@ public class ReportTableServiceImpl implements ReportTableService {
         }
 
         reportTableDao.addTableTemplateLog(new TableTemplateLog(
-                id, tableTemplate.getVersion(), date
+                tableTemplateId, tableTemplate.getVersion(), date
         ));
         return Result.ok("添加报表模板成功");
     }
@@ -403,7 +441,6 @@ public class ReportTableServiceImpl implements ReportTableService {
             return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "报表类型不存在");
         }
         if (reportTableType.equals(ConstantStr.MANUAL_REPORT)) {
-            Integer valueType = reportTable.getValueType();
             //如果是手动报表,通过所有项查看相关的数据源信息,遍历相关的数据源信息,建立
             List<ReportTableItem> reportTableItemList = reportTableDao.getTableItemListById(id);
             //获取手动报表所有表格数据项的数据源信息
@@ -421,8 +458,11 @@ public class ReportTableServiceImpl implements ReportTableService {
                             for (JSONObject jsonObject : jsonObjects) {
                                 Integer itemId = jsonObject.getInteger("itemId");
                                 for (int i = 0; i < reportTableItemList.size(); i++) {
-                                    if (itemId.equals(reportTableItemList.get(i).getItemId())) {
-                                        reportTableItemList.get(i).setValueList(jsonObject.getString(valueType.equals(ConstantStr.CALCULATED_VALUE) ? "dataValue" : "dataOrgValue"));
+                                    ReportTableItem reportTableItem = reportTableItemList.get(i);
+                                    if (itemId.equals(reportTableItem.getItemId())) {
+                                        reportTableItemList.get(i).setValueList(
+                                                jsonObject.getString(reportTableItem.getValueType().equals(ConstantStr.CALCULATED_VALUE) ? "dataValue" : "dataOrgValue")
+                                        );
                                     }
                                 }
                             }
@@ -445,8 +485,11 @@ public class ReportTableServiceImpl implements ReportTableService {
                                 if (itemReadName.equals(item.getItemReadName())) {
                                     Integer itemId = item.getId();
                                     for (int j = 0; j < reportTableItemList.size(); j++) {
-                                        if (itemId.equals(reportTableItemList.get(j).getItemId())) {
-                                            reportTableItemList.get(j).setValueList(jsonObject.getString(valueType.equals(ConstantStr.CALCULATED_VALUE) ? "dataValue" : "dataOrgValue"));
+                                        ReportTableItem reportTableItem = reportTableItemList.get(j);
+                                        if (itemId.equals(reportTableItem.getItemId())) {
+                                            reportTableItemList.get(j).setValueList(
+                                                    jsonObject.getString(reportTableItem.getValueType().equals(ConstantStr.CALCULATED_VALUE) ? "dataValue" : "dataOrgValue")
+                                            );
                                         }
                                     }
                                     break;
@@ -460,46 +503,47 @@ public class ReportTableServiceImpl implements ReportTableService {
 //            List<ReportChart> reportChartList=reportTableDao.getReportChart(id);
             //获取手动报表所有统计图数据项的数据源信息
             List<DataSource> chartDataSourceList = reportTableDao.getChartDataSource(id);
-//            for (DataSource dataSource : chartDataSourceList) {
-//                if (Blank.isNotEmpty(dataSource.getIpPassword())) {
-//                    dataSource = DataSource.convertPassword(dataSource);
-//                    DataSourceType dataSourceType = dataSourceDao.getDataSourceTypeById(dataSource.getTypeId());
-//                    if (OpcUtil.isOpcUa(dataSourceType.getDataSourceTypeKey())) {
-//                        JSONObject[] jsonObjects = restTemplate.postForObject(opcUaUrl + "/reportTable/getReportTableById/" + id, new HttpEntity<>(dataSource, new HttpHeaders()), JSONObject[].class);
-//
-//                    } else if (OpcUtil.isOpcDa(dataSourceType.getDataSourceTypeKey())) {
-//                        List<Item> itemList = reportTableDao.getItemListByDataSource(id, dataSource);
-//                        List<String> itemReadNameList = new ArrayList<>();
-//                        for (Item item : itemList) {
-//                            itemReadNameList.add(item.getItemReadName());
-//                        }
-//                        String[] items = itemReadNameList.toArray(new String[]{});
-//                        List<DataModel> dataModelList = dataModelDao.getDmListByItemList(itemList);
-//                        Map<String, DataModel> map = DataModel.genMap(itemList, dataModelList);
-//                        //读取相应的实时数据
-//                        List<JSONObject> jsonObjects = ReportTableTask.manualReportReal(dataSource, items, map);
-//                        for (JSONObject jsonObject : jsonObjects) {
-//                            String itemReadName = jsonObject.getString("itemReadName");
-//                            for (int i = 0; i < itemList.size(); i++) {
-//                                Item item = itemList.get(i);
-//                                if (itemReadName.equals(item.getItemReadName())) {
-//                                    Integer itemId = item.getId();
-//                                    for (int j = 0; j < reportTableItemList.size(); j++) {
-//                                        if (itemId.equals(reportTableItemList.get(j).getItemId())) {
-//                                            reportTableItemList.get(j).setValueList(jsonObject.getString(valueType.equals(ConstantStr.CALCULATED_VALUE) ? "dataValue" : "dataOrgValue"));
-//                                        }
-//                                    }
-//                                    break;
-//                                }
-//                            }
-//                        }
-//                    }
-//                }
-//            }
+            for (DataSource dataSource : chartDataSourceList) {
+                if (Blank.isNotEmpty(dataSource.getIpPassword())) {
+                    dataSource = DataSource.convertPassword(dataSource);
+                    DataSourceType dataSourceType = dataSourceDao.getDataSourceTypeById(dataSource.getTypeId());
+                    if (OpcUtil.isOpcUa(dataSourceType.getDataSourceTypeKey())) {
+                        JSONObject[] jsonObjects = restTemplate.postForObject(opcUaUrl + "/reportTable/getReportTableById/" + id, new HttpEntity<>(dataSource, new HttpHeaders()), JSONObject[].class);
+
+                    } else if (OpcUtil.isOpcDa(dataSourceType.getDataSourceTypeKey())) {
+                        List<Item> itemList = reportTableDao.getItemListByDataSource(id, dataSource);
+                        List<String> itemReadNameList = new ArrayList<>();
+                        for (Item item : itemList) {
+                            itemReadNameList.add(item.getItemReadName());
+                        }
+                        String[] items = itemReadNameList.toArray(new String[]{});
+                        List<DataModel> dataModelList = dataModelDao.getDmListByItemList(itemList);
+                        Map<String, DataModel> map = DataModel.genMap(itemList, dataModelList);
+                        //读取相应的实时数据
+                        List<JSONObject> jsonObjects = ReportTableTask.manualReportReal(dataSource, items, map);
+                        for (JSONObject jsonObject : jsonObjects) {
+                            String itemReadName = jsonObject.getString("itemReadName");
+                            for (int i = 0; i < itemList.size(); i++) {
+                                Item item = itemList.get(i);
+                                if (itemReadName.equals(item.getItemReadName())) {
+                                    Integer itemId = item.getId();
+                                    for (int j = 0; j < reportTableItemList.size(); j++) {
+                                        ReportTableItem reportTableItem = reportTableItemList.get(j);
+                                        if (itemId.equals(reportTableItem.getItemId())) {
+                                            reportTableItemList.get(j).setValueList(
+                                                    jsonObject.getString(reportTableItem.getValueType().equals(ConstantStr.CALCULATED_VALUE) ? "dataValue" : "dataOrgValue")
+                                            );
+                                        }
+                                    }
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
         } else if (reportTableType.equals(ConstantStr.AUTOMATIC_REPORT) || reportTableType.equals(ConstantStr.EVENT_DRIVEN_REPORT)) {
             if (reportTableType.equals(ConstantStr.AUTOMATIC_REPORT)) {
-                Integer valueType = reportTable.getValueType();
-                boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                 Integer tableTemplateId = reportTable.getTableTemplateId();
                 if (Blank.isEmpty(tableTemplateId)) {
                     return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "模板不存在");
@@ -527,8 +571,10 @@ public class ReportTableServiceImpl implements ReportTableService {
                         String itemName = t.getItemName();
                         Integer dataSourceId = t.getDataSourceId();
                         Integer valueTakingMode = t.getValueTakingMode();
+                        Integer valueType = t.getValueType();
                         Integer bucketType = t.getBucketType();
                         Integer bucketValue = t.getBucketValue();
+                        boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                         Item item = itemGroupDao.getItemById(itemId);
                         if (Blank.isEmpty(item)) {
                             continue;
@@ -537,7 +583,7 @@ public class ReportTableServiceImpl implements ReportTableService {
                         if (itemType.equals(ConstantStr.ATTACH_ATTRIBUTES)) {
                             AttachRawData attachRawData = rawDataDao.getAttachRawData(itemGroupId, dataSourceId, itemName);
                             reportTableItemList.add(new ReportTableItem(
-                                    id, itemId, xaxis, yaxis, standby, flage ? attachRawData.getDataValue() : attachRawData.getOrgDataValue(), attachRawData.getDataValueTime(), null
+                                    id, itemId, valueType, xaxis, yaxis, standby, flage ? attachRawData.getDataValue() : attachRawData.getOrgDataValue(), attachRawData.getDataValueTime(), null
                             ));
                             continue;
                         }
@@ -700,28 +746,35 @@ public class ReportTableServiceImpl implements ReportTableService {
     }
 
     @Override
-    public synchronized Result runAutoTableById(Integer id, Integer runState) {
-        ReportTable reportTable = reportTableDao.getReportTableById(id);
-        if (Blank.isEmpty(reportTable)) {
+    public synchronized Result runAutoTableById(ReportTable reportTable) {
+        Integer reportTableId = reportTable.getId();
+        Integer runState = reportTable.getRunState();
+        String cron = reportTable.getCron();
+        ReportTable oldReportTable = reportTableDao.getReportTableById(reportTableId);
+        if (Blank.isEmpty(oldReportTable)) {
             return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "报表不存在,请刷新后再试");
         }
+        String cronId = oldReportTable.getCronId();
+        if (Blank.isEmpty(cronId)) {
+            cronId = UUID.randomUUID().toString().replace("-", "");
+        }
         if (runState.equals(ConstantStr.START_UP)) {
-            if (Blank.isEmpty(reportTable.getReportTableType())) {
+            if (Blank.isEmpty(oldReportTable.getReportTableType())) {
                 return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "未知报表类型,请刷新重试");
             }
-            if (Blank.isEmpty(reportTable.getCronId(), reportTable.getCron())) {
+            if (Blank.isEmpty(cron)) {
                 return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "自动报表的定时任务配置不正确,请重新配置");
             }
-            if (Blank.isEmpty(reportTable.getRunState())) {
+            if (Blank.isEmpty(oldReportTable.getRunState())) {
                 return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "未知报表运行状态,请刷新重试");
             }
-            if (reportTable.getRunState().equals(ConstantStr.START_UP)) {
+            if (runState.equals(ConstantStr.START_UP)) {
                 return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此自动报表已经处于启动状态");
             }
-            SchedulingRunnable task = new SchedulingRunnable(ReportTableTask.class, "getTableData", new Object[]{reportTable});
+            SchedulingRunnable task = new SchedulingRunnable(ReportTableTask.class, "getTableData", new Object[]{oldReportTable});
             //新增定时器任务
-            cronTaskRegister.addCronTask(task, reportTable.getCronId(), reportTable.getCron());
-            reportTableDao.runAutoTableById(id, runState);
+            reportTableDao.runAutoTableById(reportTable);
+            cronTaskRegister.addCronTask(task, cronId, reportTable.getCron());
             return Result.ok("启动成功");
         } else if (runState.equals(ConstantStr.STOP_IT)) {
             if (Blank.isEmpty(reportTable.getRunState())) {
@@ -730,8 +783,8 @@ public class ReportTableServiceImpl implements ReportTableService {
             if (reportTable.getRunState().equals(ConstantStr.STOP_IT)) {
                 return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "此自动报表已经处于停止状态");
             }
-            cronTaskRegister.removeCronTask(reportTable.getCronId());
-            reportTableDao.runAutoTableById(id, runState);
+            reportTableDao.stopAutoTableById(reportTableId, runState);
+            cronTaskRegister.removeCronTask(cronId);
             return Result.ok("停止成功");
         } else {
             throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "自动报表的状态只有启动和停止");

+ 4 - 4
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/service/impl/SystemServiceImpl.java

@@ -32,8 +32,8 @@ public class SystemServiceImpl implements SystemService {
             connection = DriverManager.getConnection(DB_URL, USER, PASS);
             statement = connection.createStatement();
             //查看mysql占用磁盘内存
-//            String sql = "SELECT concat( round( sum( ( data_length + index_length + data_free ) / 1024 / 1024 ), 2 ), 'MB' )  AS DATA FROM TABLES";
-            String sql = "SELECT round( sum( ( data_length + index_length + data_free ) / 1024 / 1024 ), 2 )  AS DATA FROM TABLES";
+//            String sql = "SELECT concat( round( sum( ( data_length + index_length + data_free ) / 1024 / 1024 / 1024 ), 2 ), 'MB' )  AS DATA FROM TABLES";
+            String sql = "SELECT round( sum( ( data_length + index_length + data_free ) / 1024 / 1024 / 1024 ), 2 )  AS DATA FROM TABLES";
             ResultSet resultSet = statement.executeQuery(sql);
             while (resultSet.next()) {
                 jsonObject.put("databaseSpace", resultSet.getBigDecimal("data"));
@@ -55,8 +55,8 @@ public class SystemServiceImpl implements SystemService {
             File[] files = File.listRoots();
             for (File file : files) {
                 if (path.equals(file.getAbsolutePath().split("\\\\")[0])) {
-                    jsonObject.put("totalSpace", file.getTotalSpace() / 1024 / 1024);
-                    jsonObject.put("usableSpace", file.getUsableSpace() / 1024 / 1024);
+                    jsonObject.put("totalSpace", file.getTotalSpace() / 1024 / 1024 / 1024);
+                    jsonObject.put("usableSpace", file.getUsableSpace() / 1024 / 1024 / 1024);
                     break;
                 }
             }

+ 41 - 78
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcAsyncTask.java

@@ -97,8 +97,6 @@ public class OpcAsyncTask {
                     for (int i = 0; i < tableIdList.size(); i++) {
                         Integer tableId = tableIdList.get(i);
                         ReportTable reportTable = reportTableDao.getReportTableById(tableId);
-                        Integer valueType = reportTable.getValueType();
-                        Boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                         Integer tableTemplateId = reportTable.getTableTemplateId();
                         TableTemplate tableTemplate = reportTableDao.getTableTemplateById(tableTemplateId);
                         Integer eventNum = tableTemplate.getEventNum();
@@ -109,9 +107,9 @@ public class OpcAsyncTask {
                             //如果模板设置的数量大于等于当前拿数据的数量,则只需要添加一张新报表存储数据即可
                             if (eventNum >= size) {
                                 ReportTable reportTable1 = new ReportTable(
-                                        ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
+                                        ConstantStr.EVENT_GENERATE_REPORT, tableTemplateId, reportTable.getUserId(),
                                         reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                        reportTable.getReportTableData(), size, reportTable.getVersion()
+                                        reportTable.getReportTableData(), size, reportTable.getVersion(), new Date()
                                 );
                                 reportTableDao.addReportTable(reportTable1);
                                 Integer id = reportTable1.getId();
@@ -124,6 +122,8 @@ public class OpcAsyncTask {
                                 //根据索引进行排序,将数据丢到相应的位置
                                 for (TableTemplateTableItem t : tableTemplateItemList) {
                                     Integer itemId = t.getItemId();
+                                    Integer valueType = t.getValueType();
+                                    Boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                                     Item item = itemGroupDao.getItemById(itemId);
                                     if (Blank.isEmpty(item)) {
                                         continue;
@@ -155,9 +155,9 @@ public class OpcAsyncTask {
                                             dataIndexList.add(indexList.get(j * eventNum + k));
                                         }
                                         ReportTable reportTable1 = new ReportTable(
-                                                ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
+                                                ConstantStr.EVENT_GENERATE_REPORT, tableTemplateId, reportTable.getUserId(),
                                                 reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                reportTable.getReportTableData(), eventNum, reportTable.getVersion()
+                                                reportTable.getReportTableData(), eventNum, reportTable.getVersion(), new Date()
                                         );
                                         reportTableDao.addReportTable(reportTable1);
                                         Integer id = reportTable1.getId();
@@ -170,6 +170,8 @@ public class OpcAsyncTask {
                                         //根据索引进行排序,并添加数据
                                         for (TableTemplateTableItem t : tableTemplateItemList) {
                                             Integer itemId = t.getItemId();
+                                            Integer valueType = t.getValueType();
+                                            Boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                                             Item item = itemGroupDao.getItemById(itemId);
                                             if (Blank.isEmpty(item)) {
                                                 continue;
@@ -200,9 +202,9 @@ public class OpcAsyncTask {
                                             }
                                         }
                                         ReportTable reportTable1 = new ReportTable(
-                                                ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
+                                                ConstantStr.EVENT_GENERATE_REPORT, tableTemplateId, reportTable.getUserId(),
                                                 reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                reportTable.getReportTableData(), j == discuss ? remainder : eventNum, reportTable.getVersion()
+                                                reportTable.getReportTableData(), j == discuss ? remainder : eventNum, reportTable.getVersion(), new Date()
                                         );
                                         reportTableDao.addReportTable(reportTable1);
                                         Integer id = reportTable1.getId();
@@ -215,6 +217,8 @@ public class OpcAsyncTask {
                                         //根据索引进行排序,并添加数据
                                         for (TableTemplateTableItem t : tableTemplateItemList) {
                                             Integer itemId = t.getItemId();
+                                            Integer valueType = t.getValueType();
+                                            Boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                                             Item item = itemGroupDao.getItemById(itemId);
                                             if (Blank.isEmpty(item)) {
                                                 continue;
@@ -242,9 +246,9 @@ public class OpcAsyncTask {
                             if (currentNum == eventNum) {
                                 if (eventNum >= size) {
                                     ReportTable reportTable1 = new ReportTable(
-                                            ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
+                                            ConstantStr.EVENT_GENERATE_REPORT, tableTemplateId, reportTable.getUserId(),
                                             reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                            reportTable.getReportTableData(), size, reportTable.getVersion()
+                                            reportTable.getReportTableData(), size, reportTable.getVersion(), new Date()
                                     );
                                     reportTableDao.addReportTable(reportTable1);
                                     Integer id = reportTable1.getId();
@@ -257,6 +261,8 @@ public class OpcAsyncTask {
                                     //根据索引进行排序,将数据丢到相应的位置
                                     for (TableTemplateTableItem t : tableTemplateItemList) {
                                         Integer itemId = t.getItemId();
+                                        Integer valueType = t.getValueType();
+                                        Boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                                         Item item = itemGroupDao.getItemById(itemId);
                                         if (Blank.isEmpty(item)) {
                                             continue;
@@ -285,9 +291,9 @@ public class OpcAsyncTask {
                                                 dataIndexList.add(indexList.get(j * eventNum + k));
                                             }
                                             ReportTable reportTable1 = new ReportTable(
-                                                    ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
+                                                    ConstantStr.EVENT_GENERATE_REPORT, tableTemplateId, reportTable.getUserId(),
                                                     reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                    reportTable.getReportTableData(), eventNum, reportTable.getVersion()
+                                                    reportTable.getReportTableData(), eventNum, reportTable.getVersion(), new Date()
                                             );
                                             reportTableDao.addReportTable(reportTable1);
                                             Integer id = reportTable1.getId();
@@ -300,6 +306,8 @@ public class OpcAsyncTask {
                                             //根据索引进行排序,并添加数据
                                             for (TableTemplateTableItem t : tableTemplateItemList) {
                                                 Integer itemId = t.getItemId();
+                                                Integer valueType = t.getValueType();
+                                                Boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                                                 Item item = itemGroupDao.getItemById(itemId);
                                                 if (Blank.isEmpty(item)) {
                                                     continue;
@@ -330,9 +338,9 @@ public class OpcAsyncTask {
                                                 }
                                             }
                                             ReportTable reportTable1 = new ReportTable(
-                                                    ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
+                                                    ConstantStr.EVENT_GENERATE_REPORT, tableTemplateId, reportTable.getUserId(),
                                                     reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                    reportTable.getReportTableData(), j == discuss ? remainder : eventNum, reportTable.getVersion()
+                                                    reportTable.getReportTableData(), j == discuss ? remainder : eventNum, reportTable.getVersion(), new Date()
                                             );
                                             reportTableDao.addReportTable(reportTable1);
                                             Integer id = reportTable1.getId();
@@ -345,6 +353,8 @@ public class OpcAsyncTask {
                                             //根据索引进行排序,并添加数据
                                             for (TableTemplateTableItem t : tableTemplateItemList) {
                                                 Integer itemId = t.getItemId();
+                                                Integer valueType = t.getValueType();
+                                                Boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                                                 Item item = itemGroupDao.getItemById(itemId);
                                                 if (Blank.isEmpty(item)) {
                                                     continue;
@@ -374,6 +384,8 @@ public class OpcAsyncTask {
                                     }
                                     for (TableTemplateTableItem t : tableTemplateItemList) {
                                         Integer itemId = t.getItemId();
+                                        Integer valueType = t.getValueType();
+                                        Boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                                         Item item = itemGroupDao.getItemById(itemId);
                                         if (Blank.isEmpty(item)) {
                                             continue;
@@ -408,6 +420,8 @@ public class OpcAsyncTask {
                                     }
                                     for (TableTemplateTableItem t : tableTemplateItemList) {
                                         Integer itemId = t.getItemId();
+                                        Integer valueType = t.getValueType();
+                                        Boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                                         Item item = itemGroupDao.getItemById(itemId);
                                         if (Blank.isEmpty(item)) {
                                             continue;
@@ -428,9 +442,9 @@ public class OpcAsyncTask {
                                     //旧子报表添加完毕,执行添加新报表
                                     if (eventNum >= newSize) {
                                         ReportTable reportTable1 = new ReportTable(
-                                                ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
+                                                ConstantStr.EVENT_GENERATE_REPORT, tableTemplateId, reportTable.getUserId(),
                                                 reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                reportTable.getReportTableData(), newSize, reportTable.getVersion()
+                                                reportTable.getReportTableData(), newSize, reportTable.getVersion(), new Date()
                                         );
                                         reportTableDao.addReportTable(reportTable1);
                                         Integer id = reportTable1.getId();
@@ -443,6 +457,8 @@ public class OpcAsyncTask {
                                         //根据索引进行排序,将数据丢到相应的位置
                                         for (TableTemplateTableItem t : tableTemplateItemList) {
                                             Integer itemId = t.getItemId();
+                                            Integer valueType = t.getValueType();
+                                            Boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                                             Item item = itemGroupDao.getItemById(itemId);
                                             if (Blank.isEmpty(item)) {
                                                 continue;
@@ -471,9 +487,9 @@ public class OpcAsyncTask {
                                                     dataIndexList.add(newIndexList.get(j * eventNum + k));
                                                 }
                                                 ReportTable reportTable1 = new ReportTable(
-                                                        ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
+                                                        ConstantStr.EVENT_GENERATE_REPORT, tableTemplateId, reportTable.getUserId(),
                                                         reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                        reportTable.getReportTableData(), eventNum, reportTable.getVersion()
+                                                        reportTable.getReportTableData(), eventNum, reportTable.getVersion(), new Date()
                                                 );
                                                 reportTableDao.addReportTable(reportTable1);
                                                 Integer id = reportTable1.getId();
@@ -486,6 +502,8 @@ public class OpcAsyncTask {
                                                 //根据索引进行排序,并添加数据
                                                 for (TableTemplateTableItem t : tableTemplateItemList) {
                                                     Integer itemId = t.getItemId();
+                                                    Integer valueType = t.getValueType();
+                                                    Boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                                                     Item item = itemGroupDao.getItemById(itemId);
                                                     if (Blank.isEmpty(item)) {
                                                         continue;
@@ -516,9 +534,9 @@ public class OpcAsyncTask {
                                                     }
                                                 }
                                                 ReportTable reportTable1 = new ReportTable(
-                                                        ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
+                                                        ConstantStr.EVENT_GENERATE_REPORT, tableTemplateId, reportTable.getUserId(),
                                                         reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                        reportTable.getReportTableData(), j == discuss ? remainder : eventNum, reportTable.getVersion()
+                                                        reportTable.getReportTableData(), j == discuss ? remainder : eventNum, reportTable.getVersion(), new Date()
                                                 );
                                                 reportTableDao.addReportTable(reportTable1);
                                                 Integer id = reportTable1.getId();
@@ -531,6 +549,8 @@ public class OpcAsyncTask {
                                                 //根据索引进行排序,并添加数据
                                                 for (TableTemplateTableItem t : tableTemplateItemList) {
                                                     Integer itemId = t.getItemId();
+                                                    Integer valueType = t.getValueType();
+                                                    Boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                                                     Item item = itemGroupDao.getItemById(itemId);
                                                     if (Blank.isEmpty(item)) {
                                                         continue;
@@ -728,62 +748,6 @@ public class OpcAsyncTask {
         }
     }
 
-    public void opcGetTree(DataSource dataSource) {
-        String dataSourceTypeKey = dataSource.getDataSourceTypeKey();
-        if (OpcUtil.isOpcUa(dataSourceTypeKey)) {
-            if (Blank.isEmpty(dataSource.getIpAddress(), dataSource.getIpPort(), dataSource.getIsAnonymous())) {
-                log.info("ip地址,端口号,匿名方式都不能为空");
-            }
-            if (dataSource.getIsAnonymous() == ConstantStr.NOT_ANONYMOUS) {
-                if (Blank.isEmpty(dataSource.getIpUserName())) {
-                    log.info("选择不匿名方式,需要填写账号");
-                }
-            }
-            restTemplate.postForObject(opcUaUrl + "/dataSource/genDataSourceItemTree", new HttpEntity<>(dataSource, new HttpHeaders()), byte[].class);
-        } else if (OpcUtil.isOpcDa(dataSourceTypeKey)) {
-            if (Blank.isEmpty(dataSource.getIpAddress(), dataSource.getIpUserName(), dataSource.getClsId())) {
-                log.info("ip地址,账号,opc驱动都不能为空");
-            }
-            opcDaGetTree(dataSource);
-        } else {
-            log.info("目前还没有此种类型的连接方式");
-        }
-    }
-
-    public void opcDaGetTree(DataSource dataSource) {
-        Server server = null;
-        try {
-            server = OpcDaUtil.createServer(dataSource);
-            server.connect();
-            if (null == server.getServerState()) {
-                log.info("连接失败");
-            }
-            if (OPCSERVERSTATE.OPC_STATUS_RUNNING == server.getServerState().getServerState()) {
-                if (dataSource.getClsId().toUpperCase().equals(OpcDaDriverEnum.KEPSERVER.getValue()) ||
-                        dataSource.getClsId().toUpperCase().equals(OpcDaDriverEnum.OPCIFIX.getValue())) {
-                    List<JSONObject> jsonObjectList = OpcDaUtil.generServerTree(server);
-                    redisUtil.set(ConstantStr.DATA_SOURCE_TREE + dataSource.getId(), String.valueOf(jsonObjectList));
-                } else if (dataSource.getClsId().toUpperCase().equals(OpcDaDriverEnum.WINCC.getValue()) ||
-                        dataSource.getClsId().toUpperCase().equals(OpcDaDriverEnum.SCADA.getValue()) ||
-                        dataSource.getClsId().toUpperCase().equals(OpcDaDriverEnum.YOKOGAWA.getValue())) {
-                    List<JSONObject> jsonObjectList = OpcDaUtil.generWinccTree(server);
-                    redisUtil.set(ConstantStr.DATA_SOURCE_TREE + dataSource.getId(), String.valueOf(jsonObjectList));
-                } else if (dataSource.getClsId().toUpperCase().equals(OpcDaDriverEnum.PAS300.getValue())) {
-                    List<JSONObject> jsonObjectList = OpcDaUtil.generPAS300Tree(server);
-                    redisUtil.set(ConstantStr.DATA_SOURCE_TREE + dataSource.getId(), String.valueOf(jsonObjectList));
-                } else {
-                    log.info("目前未适配此种驱动类型");
-                }
-            }
-        } catch (Exception e) {
-            log.info(OpcDaUtil.genException(e.getMessage()));
-        } finally {
-            if (Blank.isNotEmpty(server)) {
-                server.dispose();
-            }
-        }
-    }
-
     /**
      * 事件驱动报表异步添加数据
      */
@@ -793,7 +757,6 @@ public class OpcAsyncTask {
         }
         ReportTable reportTable = reportTableDao.getReportTableById(tableReportId);
         String reportTableData = reportTable.getReportTableData();
-        Integer valueType = reportTable.getValueType();
         JSONObject jsonObject = JSONObject.parseObject(reportTableData);
         JSONArray objects = new JSONArray();
         Integer remainder = itemList.get(0).getItemGroupId() % ConstantStr.SUB_TABLE_NUM;
@@ -847,7 +810,7 @@ public class OpcAsyncTask {
         ItemGroup itemGroup = itemGroupDao.getItemGroupById(itemList.get(0).getItemGroupId());
         Date date = new Date();
         ReportTable reportTable1 = new ReportTable(
-                ConstantStr.EVENT_GENERATE_REPORT, valueType, reportTable.getTableTemplateId(), reportTable.getUserId(),
+                ConstantStr.EVENT_GENERATE_REPORT, reportTable.getTableTemplateId(), reportTable.getUserId(),
                 reportTable.getReportTableName() + "_" + (Blank.isNotEmpty(itemGroup) ? itemGroup.getGroupName() : "") + "_" + DateUtil.dateChangeStr(date, "yyyyMMddHHmmss"),
                 jsonObject.toJSONString(), reportTable.getVersion(), date
         );

+ 2 - 2
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/OpcDaTask.java

@@ -74,7 +74,7 @@ public class OpcDaTask {
         Date endDate = DateUtil.strYmdhmsChangeDate(endTime);
 
         //获取组中基础数据项标签的数据模型,并转换为map<itemName,DataModel>
-        List<Item> basicItemList = itemGroupDao.getBasicItemList(id, ConstantStr.BASIC_ATTRIBUTES);
+        List<Item> basicItemList = itemGroupDao.getAttributesItemList(id, ConstantStr.BASIC_ATTRIBUTES);
         List<DataModel> dmBasicItemList = dataModelDao.getDmListByItemList(basicItemList);
         Map<String, DataModel> basicMap = DataModel.genMap(basicItemList, dmBasicItemList);
         if (Blank.isNotEmpty(basicItemList)) {
@@ -128,7 +128,7 @@ public class OpcDaTask {
             }
         }
         //获取组中附属数据项标签的数据模型,并转换为map<itemName,DataModel>
-        List<Item> attachItemList = itemGroupDao.getBasicItemList(id, ConstantStr.ATTACH_ATTRIBUTES);
+        List<Item> attachItemList = itemGroupDao.getAttributesItemList(id, ConstantStr.ATTACH_ATTRIBUTES);
         List<DataModel> dmAttachItemList = dataModelDao.getDmListByItemList(attachItemList);
         Map<String, DataModel> attachMap = DataModel.genMap(attachItemList, dmAttachItemList);
         List<String> attachItemStrList = new ArrayList<>();

+ 3 - 3
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/task/ReportTableTask.java

@@ -148,8 +148,6 @@ public class ReportTableTask {
     public void getTableData(ReportTable reportTable) {
         log.info("自动报表,{},执行开始,时间为{}", reportTable, DateUtil.dateChangeStrYmdhmss(new Date()));
         String reportTableData = reportTable.getReportTableData();
-        Integer valueType = reportTable.getValueType();
-        boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
         Integer tableTemplateId = reportTable.getTableTemplateId();
         TableTemplate tableTemplate = reportTableDao.getTableTemplateById(tableTemplateId);
         if (Blank.isEmpty(tableTemplate)) {
@@ -158,7 +156,7 @@ public class ReportTableTask {
         List<TableTemplateTableItem> tableTemplateItemList = reportTableDao.getTtiDataByTemplateId(tableTemplateId);
         Date date = new Date();
         ReportTable reportTable1 = new ReportTable(
-                ConstantStr.AUTOMATIC_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
+                ConstantStr.AUTOMATIC_GENERATE_REPORT, tableTemplateId, reportTable.getUserId(),
                 reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(date, "yyyyMMddHHmmss"),
                 reportTableData, reportTable.getVersion(), date
         );
@@ -188,8 +186,10 @@ public class ReportTableTask {
                 String itemName = t.getItemName();
                 Integer dataSourceId = t.getDataSourceId();
                 Integer valueTakingMode = t.getValueTakingMode();
+                Integer valueType = t.getValueType();
                 Integer bucketType = t.getBucketType();
                 Integer bucketValue = t.getBucketValue();
+                boolean flage = valueType.equals(ConstantStr.CALCULATED_VALUE);
                 Item item = itemGroupDao.getItemById(itemId);
                 if (Blank.isEmpty(item)) {
                     continue;

+ 40 - 6
chaunyi_opc/opc_da/src/main/java/com/example/opc_da/util/OpcDaUtil.java

@@ -569,6 +569,37 @@ public class OpcDaUtil {
         }
     }
 
+    public static Result readItemValue(DataSource dataSource, String itemStr) {
+        Server server = null;
+        try {
+            server = createServer(dataSource);
+            server.connect();
+            if (null == server.getServerState()) {
+                throw new CustomException(ResultEnum.NOT_FOUND.getRespCode(), "连接失败");
+            }
+            if (OPCSERVERSTATE.OPC_STATUS_RUNNING == server.getServerState().getServerState()) {
+                Group group = server.addGroup();
+                org.openscada.opc.lib.da.Item item = group.addItem(itemStr);
+                Map<org.openscada.opc.lib.da.Item, ItemState> read = group.read(true, item);
+                ItemState itemState = read.get(item);
+                Map<String, Object> val = getVal(itemState.getValue());
+                String javaType = val.get("javaType").toString();
+                Object value = val.get("value");
+                Map<String, Object> map = new HashMap<>();
+                map.put("javaType", javaType);
+                map.put("value", value);
+                return Result.ok(map);
+            }
+        } catch (Exception e) {
+            throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), genException(e.getMessage()));
+        } finally {
+            if (Blank.isNotEmpty(server)) {
+                server.dispose();
+            }
+        }
+        return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), ResultEnum.REQUEST_WRONGPARAMS.getRespMsg());
+    }
+
     public static Result getNextAllItem(DataSource dataSource, String itemStr) {
         Server server = null;
         try {
@@ -669,19 +700,22 @@ public class OpcDaUtil {
         }
 
         Iterator iter = branch.getLeaves().iterator();
-        Map<String, String> map = new HashMap<>();
+        List<String> stringList = new ArrayList<>();
         while (iter.hasNext()) {
             Leaf leaf = (Leaf) iter.next();
-            map.put(leaf.getName(), leaf.getItemId());
+//            map.put(leaf.getName(), leaf.getItemId());
+            stringList.add(leaf.getItemId());
         }
-        jsonObject.put("leaves", map);
-        map = new HashMap<>();
+        jsonObject.put("leaves", stringList);
+        stringList = new ArrayList<>();
         iter = branch.getBranches().iterator();
         while (iter.hasNext()) {
             Branch subBranch = (Branch) iter.next();
-            map.put(subBranch.getName(), subBranch.getName());
+//            map.put(subBranch.getName(), subBranch.getName());
+            stringList.add(subBranch.getName());
         }
-        jsonObject.put("branch", map);
+        jsonObject.put("label", stringList);
+//        jsonObject.put("branch", map);
 
         return jsonObject;
     }

+ 3 - 2
chaunyi_opc/opc_da/src/main/resources/mapper/ChartDao.xml

@@ -13,7 +13,8 @@
         , chart_id, item_id, value_list, value_time_list, value_index_list
     </sql>
 
-    <insert id="addChart">
+    <insert id="addChart" parameterType="com.example.opc_common.entity.Chart" useGeneratedKeys="true"
+            keyProperty="id">
         insert into t_chart (user_id, chart_type, value_type, chart_name, value_taking_mode, bucket_type, bucket_value,
                              start_time, end_time, standby)
             VALUE (#{userId}, #{chartType}, #{valueType}, #{chartName}, #{valueTakingMode}, #{bucketType}, #{bucketValue},
@@ -191,7 +192,7 @@
         (SELECT user_group_id FROM t_user_group_user WHERE
         user_id = #{userId})
         ))) tc LEFT JOIN sys_user su ON tc.user_id = su.user_id
-        order by tc.create_time desc
+        order by tc.id desc
         limit #{startNum},#{limitNum}
     </select>
 

+ 16 - 6
chaunyi_opc/opc_da/src/main/resources/mapper/ItemGroupDao.xml

@@ -196,10 +196,20 @@
     </select>
 
     <select id="getItemById" resultType="com.example.opc_common.entity.Item">
-        select
-        <include refid="item"/>
-        from t_item
-        where id = #{id}
+        select ti.id,
+               ti.item_group_id,
+               ti.item_name,
+               ti.item_read_name,
+               ti.item_type,
+               ti.node_index,
+               ti.data_type,
+               ti.`describe`,
+               ti.data_model_id,
+               ti.is_driver_item,
+               tig.run_state
+        from t_item ti
+                 left join t_item_group tig on ti.item_group_id = tig.id
+        where ti.id = #{id}
     </select>
 
     <select id="getItemDescribe" resultType="java.lang.String">
@@ -216,7 +226,7 @@
           and data_source_id = #{dataSourceId}
     </select>
 
-    <select id="getBasicItemList" resultType="com.example.opc_common.entity.Item">
+    <select id="getAttributesItemList" resultType="com.example.opc_common.entity.Item">
         select ti.id,
                ti.item_group_id,
                ti.item_name,
@@ -232,7 +242,7 @@
                  LEFT JOIN t_data_model tdm ON ti.data_model_id = tdm.id
         where ti.item_group_id = #{itemGroupId}
           and ti.item_type = #{itemType}
-        order by is_driver_item DESC, item_name
+        order by ti.is_driver_item DESC, ti.item_name
     </select>
 
 </mapper>

+ 34 - 20
chaunyi_opc/opc_da/src/main/resources/mapper/ReportTableDao.xml

@@ -14,33 +14,33 @@
 
     <sql id="tableTemplateTableItem">
         id
-        , table_template_id, item_id , place_holder, xaxis, yaxis, value_taking_mode, bucket_type,
+        , table_template_id, item_id , place_holder, xaxis, yaxis, value_taking_mode, value_type, bucket_type,
             bucket_value, start_time, end_time, standby
     </sql>
 
     <sql id="reportTable">
         id
-        , report_table_type, value_type, table_template_id, user_id, report_table_name, report_table_data, start_time, end_time, current_num, version, create_time
+        , report_table_type, table_template_id, user_id, report_table_name, report_table_data, start_time, end_time, current_num, version, create_time
     </sql>
 
     <sql id="reportTableItem">
         id
-        , report_table_id, item_id, xaxis, yaxis, standby, value_list, value_time_list, value_index_list
+        , report_table_id, item_id, value_type, xaxis, yaxis, standby, value_list, value_time_list, value_index_list
     </sql>
 
     <sql id="reportTableNoData">
         id
-        , report_table_type, value_type, table_template_id, user_id, report_table_name, start_time, end_time, current_num, version, create_time
+        , report_table_type, table_template_id, user_id, report_table_name, start_time, end_time, current_num, version, create_time
     </sql>
 
     <sql id="reportTableCron">
         id
-        , report_table_type, value_type, table_template_id, user_id, report_table_name, report_table_data, start_time, end_time, current_num, version, cron_id, cron , run_state, create_time
+        , report_table_type, table_template_id, user_id, report_table_name, report_table_data, start_time, end_time, current_num, version, cron_id, cron , run_state, create_time
     </sql>
 
     <sql id="reportTableCronNoData">
         id
-        , report_table_type, value_type, table_template_id, user_id, report_table_name, start_time, end_time, current_num, version, cron_id, cron , run_state, create_time
+        , report_table_type, table_template_id, user_id, report_table_name, start_time, end_time, current_num, version, cron_id, cron , run_state, create_time
     </sql>
 
     <sql id="dataSource">
@@ -71,11 +71,11 @@
 
     <insert id="addReportTable" parameterType="com.example.opc_common.entity.ReportTable" useGeneratedKeys="true"
             keyProperty="id">
-        insert into t_report_table(report_table_type, value_type, table_template_id, user_id, report_table_name,
+        insert into t_report_table(report_table_type, table_template_id, user_id, report_table_name,
                                    report_table_data, start_time, end_time, current_num, version, cron_id, cron,
                                    create_time) VALUE
-            (#{reportTableType},#{valueType},#{tableTemplateId}, #{userId}, #{reportTableName}, #{reportTableData}, #{startTime}, #{endTime}, #{currentNum}, #{version},
-            #{cronId}, #{cron}, now())
+            (#{reportTableType},#{tableTemplateId}, #{userId}, #{reportTableName}, #{reportTableData}, #{startTime}, #{endTime}, #{currentNum}, #{version},
+            #{cronId}, #{cron}, #{createTime})
     </insert>
 
     <insert id="addTableUserGroup">
@@ -99,14 +99,15 @@
     <insert id="addTableTemplateItem">
         <if test="tableTemplateTableItemList!= null and tableTemplateTableItemList.size() >0">
             insert into t_table_template_table_item (table_template_id, item_id, place_holder, xaxis, yaxis,
-            value_taking_mode, bucket_type, bucket_value, start_time,
+            value_taking_mode, value_type, bucket_type, bucket_value, start_time,
             end_time, standby)
             values
             <foreach collection="tableTemplateTableItemList" item="tableTemplateTableItem" separator=",">
                 (#{tableTemplateTableItem.tableTemplateId}, #{tableTemplateTableItem.itemId},
                 #{tableTemplateTableItem.placeHolder},
                 #{tableTemplateTableItem.xaxis}
-                , #{tableTemplateTableItem.yaxis}, #{tableTemplateTableItem.valueTakingMode},
+                , #{tableTemplateTableItem.yaxis},
+                #{tableTemplateTableItem.valueTakingMode},#{tableTemplateTableItem.valueType},
                 #{tableTemplateTableItem.bucketType},
                 #{tableTemplateTableItem.bucketValue}
                 , #{tableTemplateTableItem.startTime}, #{tableTemplateTableItem.endTime},
@@ -116,18 +117,19 @@
     </insert>
 
     <insert id="addReportTableItem">
-        insert into t_report_table_item (report_table_id, item_id, xaxis, yaxis, standby,
+        insert into t_report_table_item (report_table_id, item_id, value_type, xaxis, yaxis, standby,
                                          value_list, value_time_list, value_index_list)
-            value (#{reportTableId}, #{itemId}, #{xaxis}, #{yaxis}, #{standby},
+            value (#{reportTableId}, #{itemId}, #{valueType}, #{xaxis}, #{yaxis}, #{standby},
             #{valueList}, #{valueTimeList}, #{valueIndexList})
     </insert>
 
     <insert id="addReportTableItemList">
-        insert into t_report_table_item (report_table_id, item_id, xaxis, yaxis, standby,
+        insert into t_report_table_item (report_table_id, item_id, value_type, xaxis, yaxis, standby,
         value_list, value_time_list, value_index_list)
         values
         <foreach collection="reportTableItemList" item="reportTableItem" separator=",">
-            (#{reportTableItem.reportTableId}, #{reportTableItem.itemId}, #{reportTableItem.xaxis},
+            (#{reportTableItem.reportTableId}, #{reportTableItem.itemId}, #{reportTableItem.valueType},
+            #{reportTableItem.xaxis},
             #{reportTableItem.yaxis}, #{reportTableItem.standby},
             #{reportTableItem.valueList}, #{reportTableItem.valueTimeList}, #{reportTableItem.valueIndexList})
         </foreach>
@@ -206,6 +208,16 @@
 
     <update id="runAutoTableById">
         update t_report_table
+        set start_time=#{startTime},
+            end_time=#{endTime},
+            cron_id=#{cronId},
+            cron=#{cron},
+            run_state=#{runState}
+        where id = #{id}
+    </update>
+
+    <update id="stopAutoTableById">
+        update t_report_table
         set run_state=#{runState}
         where id = #{id}
     </update>
@@ -374,7 +386,6 @@
                trt.end_time,
                trt.value_condition,
                trt.report_table_type,
-               trt.value_type,
                trt.version,
                trt.cron_id,
                trt.cron,
@@ -387,7 +398,11 @@
 
     <select id="getSysTableTemplate" resultType="com.example.opc_common.entity.SysTableTemplate">
         select
-        id,dict_id,template_name,logo,create_time
+        id,
+        dict_id,
+        template_name,
+        logo,
+        create_time
         from t_sys_table_template
         WHERE 1=1
         <if test="dictIdList!= null and dictIdList.size() >0">
@@ -464,7 +479,6 @@
     <resultMap type="com.example.opc_common.entity.ReportTable" id="allReportTable">
         <id property="id" column="id"/>
         <result property="reportTableType" column="report_table_type"/>
-        <result property="valueType" column="value_type"/>
         <result property="tableTemplateId" column="table_template_id"/>
         <result property="userId" column="user_id"/>
         <result property="userName" column="user_name"/>
@@ -494,7 +508,6 @@
         select
         trt.id,
         trt.report_table_type,
-        trt.value_type,
         trt.table_template_id,
         trt.user_id,
         su.user_name,
@@ -562,7 +575,6 @@
     <select id="getAutoChReportTable" resultMap="allReportTable">
         select trt.id,
         trt.report_table_type,
-        trt.value_type,
         trt.table_template_id,
         trt.user_id,
         trt.report_table_name,
@@ -610,6 +622,7 @@
                tttti.xaxis,
                tttti.yaxis,
                tttti.value_taking_mode,
+               tttti.value_type,
                tttti.bucket_type,
                tttti.bucket_value,
                tttti.start_time,
@@ -660,6 +673,7 @@
         select trti.id
              , trti.report_table_id
              , trti.item_id
+             , trti.value_type
              , ti.item_name
              , trti.xaxis
              , trti.yaxis

+ 1 - 17
chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/config/InitRunner.java

@@ -26,22 +26,6 @@ public class InitRunner {
 
     @PostConstruct
     public void initData() {
-        //将ua和da的树,加载到redis中去
-        List<DataSource> dataSourceList = dataSourceDao.getAllDataSource(null);
-        if (Blank.isNotEmpty(dataSourceList)) {
-            for (DataSource dataSource : dataSourceList) {
-                if (OpcUtil.isOpcUa(dataSource.getDataSourceTypeKey())) {
-                    if (Blank.isEmpty(dataSource.getIpAddress(), dataSource.getIpPort(), dataSource.getIsAnonymous())) {
-                        log.info("ip地址,端口号,匿名方式都不能为空");
-                    }
-                    if (dataSource.getIsAnonymous() == ConstantStr.NOT_ANONYMOUS) {
-                        if (Blank.isEmpty(dataSource.getIpUserName())) {
-                            log.info("选择不匿名方式,需要填写账号");
-                        }
-                    }
-                    opcAsyncTask.opcUaGetTree(dataSource);
-                }
-            }
-        }
+
     }
 }

+ 9 - 9
chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/task/OpcAsyncTask.java

@@ -98,7 +98,7 @@ public class OpcAsyncTask {
                                 ReportTable reportTable1 = new ReportTable(
                                         ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
                                         reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                        reportTable.getReportTableData(), size, reportTable.getVersion()
+                                        reportTable.getReportTableData(), size, reportTable.getVersion(),new Date()
                                 );
                                 reportTableDao.addReportTable(reportTable1);
                                 Integer id = reportTable1.getId();
@@ -136,7 +136,7 @@ public class OpcAsyncTask {
                                         ReportTable reportTable1 = new ReportTable(
                                                 ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
                                                 reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                reportTable.getReportTableData(), eventNum, reportTable.getVersion()
+                                                reportTable.getReportTableData(), eventNum, reportTable.getVersion(),new Date()
                                         );
                                         reportTableDao.addReportTable(reportTable1);
                                         Integer id = reportTable1.getId();
@@ -173,7 +173,7 @@ public class OpcAsyncTask {
                                         ReportTable reportTable1 = new ReportTable(
                                                 ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
                                                 reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                reportTable.getReportTableData(), j == discuss ? remainder : eventNum, reportTable.getVersion()
+                                                reportTable.getReportTableData(), j == discuss ? remainder : eventNum, reportTable.getVersion(),new Date()
                                         );
                                         reportTableDao.addReportTable(reportTable1);
                                         Integer id = reportTable1.getId();
@@ -207,7 +207,7 @@ public class OpcAsyncTask {
                                     ReportTable reportTable1 = new ReportTable(
                                             ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
                                             reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                            reportTable.getReportTableData(), size, reportTable.getVersion()
+                                            reportTable.getReportTableData(), size, reportTable.getVersion(),new Date()
                                     );
                                     reportTableDao.addReportTable(reportTable1);
                                     Integer id = reportTable1.getId();
@@ -242,7 +242,7 @@ public class OpcAsyncTask {
                                             ReportTable reportTable1 = new ReportTable(
                                                     ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
                                                     reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                    reportTable.getReportTableData(), eventNum, reportTable.getVersion()
+                                                    reportTable.getReportTableData(), eventNum, reportTable.getVersion(),new Date()
                                             );
                                             reportTableDao.addReportTable(reportTable1);
                                             Integer id = reportTable1.getId();
@@ -279,7 +279,7 @@ public class OpcAsyncTask {
                                             ReportTable reportTable1 = new ReportTable(
                                                     ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
                                                     reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                    reportTable.getReportTableData(), j == discuss ? remainder : eventNum, reportTable.getVersion()
+                                                    reportTable.getReportTableData(), j == discuss ? remainder : eventNum, reportTable.getVersion(),new Date()
                                             );
                                             reportTableDao.addReportTable(reportTable1);
                                             Integer id = reportTable1.getId();
@@ -353,7 +353,7 @@ public class OpcAsyncTask {
                                         ReportTable reportTable1 = new ReportTable(
                                                 ConstantStr.EVENT_GENERATE_REPORT, valueType, tableTemplateId, reportTable.getUserId(),
                                                 reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                reportTable.getReportTableData(), newSize, reportTable.getVersion()
+                                                reportTable.getReportTableData(), newSize, reportTable.getVersion(),new Date()
                                         );
                                         reportTableDao.addReportTable(reportTable1);
                                         Integer id = reportTable1.getId();
@@ -388,7 +388,7 @@ public class OpcAsyncTask {
                                                 ReportTable reportTable1 = new ReportTable(
                                                         ConstantStr.EVENT_GENERATE_REPORT,valueType, tableTemplateId, reportTable.getUserId(),
                                                         reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                        reportTable.getReportTableData(), eventNum, reportTable.getVersion()
+                                                        reportTable.getReportTableData(), eventNum, reportTable.getVersion(),new Date()
                                                 );
                                                 reportTableDao.addReportTable(reportTable1);
                                                 Integer id = reportTable1.getId();
@@ -425,7 +425,7 @@ public class OpcAsyncTask {
                                                 ReportTable reportTable1 = new ReportTable(
                                                         ConstantStr.EVENT_GENERATE_REPORT,valueType, tableTemplateId, reportTable.getUserId(),
                                                         reportTable.getReportTableName() + "_" + DateUtil.dateChangeStr(new Date(), "yyyyMMddHHmmss"),
-                                                        reportTable.getReportTableData(), j == discuss ? remainder : eventNum, reportTable.getVersion()
+                                                        reportTable.getReportTableData(), j == discuss ? remainder : eventNum, reportTable.getVersion(),new Date()
                                                 );
                                                 reportTableDao.addReportTable(reportTable1);
                                                 Integer id = reportTable1.getId();

+ 27 - 5
chaunyi_opc/opc_ua/src/main/java/com/example/opc_ua/util/OpcUaUtil.java

@@ -350,7 +350,7 @@ public class OpcUaUtil {
                 return Result.no(ResultEnum.REQUEST_TIME_OUT.getRespCode(), "客户端创建失败");
             }
             opcUaClient.connect().get();
-            return Result.ok(getNextItem(opcUaClient, null));
+            return Result.ok(getNextItem(opcUaClient, itemStr));
         } catch (Exception e) {
             throw new CustomException(ResultEnum.REQUEST_TIME_OUT.getRespCode(), OpcUaUtil.genException(e.getMessage()));
         } finally {
@@ -360,14 +360,14 @@ public class OpcUaUtil {
         }
     }
 
-    public static List<? extends UaNode> getNextItem(OpcUaClient client, String itemStr) throws UaException {
+    public static JSONObject getNextItem(OpcUaClient client, String itemStr) throws UaException {
         if (Blank.isEmpty(client)) {
             return null;
         }
         if (Blank.isEmpty(itemStr)) {
-            return browserTree(client, null);
+            return genUaNode(browserTree(client, null));
         } else {
-            String[] split = itemStr.split("\\.");
+            String[] split = itemStr.split("#");
             List<? extends UaNode> nodes = browserTree(client, null);
             for (int i = 0; i < split.length; i++) {
                 String itemId = split[i];
@@ -378,7 +378,7 @@ public class OpcUaUtil {
                     }
                 }
             }
-            return nodes;
+            return genUaNode(nodes);
         }
     }
 
@@ -397,4 +397,26 @@ public class OpcUaUtil {
             return client.getAddressSpace().browseNodes(uaNode);
         }
     }
+
+    public static JSONObject genUaNode(List<? extends UaNode> uaNodes) {
+        JSONObject jsonObject = new JSONObject();
+        List<Map<String, Object>> stringList = new ArrayList<>();
+        for (UaNode nd : uaNodes) {
+            if (Blank.isEmpty(nd)) {
+                continue;
+            }
+//            if (Objects.requireNonNull(nd.getBrowseName().getName()).contains("_")) {
+//                continue;
+//            }
+            Map<String, Object> map = new HashMap<>();
+            map.put("label", nd.getBrowseName().getName());
+            map.put("nodeId", nd.getNodeId());
+            map.put("nodeIndex", nd.getNodeId().getNamespaceIndex().intValue());
+            map.put("dataType", nd.getNodeId().getType());
+            map.put("description", nd.getDescription());
+            stringList.add(map);
+        }
+        jsonObject.put("label", stringList);
+        return jsonObject;
+    }
 }