Browse Source

Merge branch 'master' of http://116.63.33.55/git/industry-data-platform into master

lhy 7 months ago
parent
commit
9d4c3deef3

+ 10 - 2
industry-admin/src/views/alarm/alarmHistory/index.vue

@@ -70,9 +70,17 @@ export default {
             isShowIndex: true,
             //点位名称,点位类型,表达式,质量,数据值,数据源名称,取值时间
             tableHeaderTitle: [
-                {
+              {
+                propName: "点位",
+                labelName: "源点位名称",
+                formatter: (row, column, cellValue, index) => {
+                  return row.itemReadName
+                },
+                width: '200'
+              },
+              {
                     propName: "点位",
-                    labelName: "点位",
+                    labelName: "别名",
                     formatter: (row, column, cellValue, index) => {
                       return row.describe ? row.describe : row.itemReadName
                     },

+ 8 - 1
industry-admin/src/views/source/dataQuery/index.vue

@@ -437,6 +437,8 @@ export default {
                 this.count = this.timeCalculation(this.chartForm.timeValue, this.chartForm.timeType)
                 this.chooseStartTime = parseTime(new Date(currentTime - this.count))
                 this.chooseEndTime = parseTime(currentTime)
+                //console.log(this.chooseStartTime)
+                //console.log(this.chooseEndTime)
                 //添加监听事件
                 this.state = true
                 //初始化统计图
@@ -720,7 +722,9 @@ export default {
             this.timer = setInterval(() => {
                 this.chooseStartTime = this.chooseEndTime
                 //时间往前推一秒,防止数据没拿到
-                this.chooseEndTime = parseTime(new Date().getTime() - 1000)
+                this.chooseEndTime = parseTime(new Date().getTime() - 3000)
+                console.log(this.chooseStartTime)
+                console.log(this.chooseEndTime)
                 this.updateChartData()
             }, this.timeCalculation(this.chartForm.frequencyValue, this.chartForm.frequencyType))
         },
@@ -739,6 +743,9 @@ export default {
         /** 更新统计图数据 */
         updateChartData() {
             this.getItemListValue((res) => {
+                if(res.data==null){
+                  return;
+                }
                 let data = res.data
                 let xArr = this.xAxis.data
                 for (let i in data) {

+ 6 - 0
industry-admin/src/views/source/itemGroup/item.vue

@@ -10,6 +10,7 @@
         <el-checkbox size="mini" style="margin-left: 20px;" v-model="runCheckbox" @change="groupRunCheckboxEvent"
                      title="固定每5秒刷新一次数据">实时数据
         </el-checkbox>
+
         <el-button type="danger" size="mini" @click="multipleDelItemEvent" icon="el-icon-delete-solid"
                    style="float: right;">批量删除
         </el-button>
@@ -22,6 +23,7 @@
         <el-button type="primary" icon="el-icon-plus" size="mini" @click="addGroupItemEvent"
                    style="float: right; margin-right: 5px;">添加点位
         </el-button>
+
         <el-upload
           ref="upload"
           action="#"
@@ -33,9 +35,13 @@
           style="float: right; margin-right: 5px;">
           <el-button type="primary" size="mini" icon="el-icon-upload" :disabled="uploadStatus">批量导入</el-button>
         </el-upload>
+
         <el-button type="primary" size="mini" icon="el-icon-download" @click="downloadExcelModel"
                    style="float: right; margin-right: 5px;">模板下载</el-button>
+        <el-button type="primary" icon="el-icon-s-tools" size="mini" @click="itemChangeEvent" style="float: right;margin-right: 5px;">搜索
+        </el-button>
       </div>
+
       <!-- 点位实时数据 -->
       <UmyTable v-if="!runCheckbox" ref="readTimeData1" :tableHeaderTitle="tableHeaderTitle" :tableData="tableData"
                 :isShowCheckbox="isShowCheckbox" :isShowIndex="isShowIndex" :tableOperate="tableOperate"

+ 20 - 14
industry-system/industry-da/src/main/java/com/example/opc_da/alarmConfig/DatasouceAlarmTask.java

@@ -96,23 +96,29 @@ public class DatasouceAlarmTask implements DisposableBean {
                 alarmConfigList.add(this.datasouceAlarmTaskMap.get(itemId));
             }
             future = threadPool.scheduleAtFixedRate(() -> {
-                //获取点位最新的数据
-                List<com.cqcy.ei.influxdb.entity.Item> itemDataByLast = queryService.getItemDataByLast(items, itemGroupId.toString());
-                if (CollUtil.isNotEmpty(alarmConfigList) && CollUtil.isNotEmpty(itemDataByLast)) {
-                    if (CollUtil.isEmpty(lastItemDataList)) {
-                        generateAlarms(alarmConfigList, itemDataByLast);
-                    } else {
-                        //过滤已经存在的数据
-                        List<Item> validItemDataList = itemDataByLast.stream().filter(i ->
-                                lastItemDataList.stream().noneMatch(l ->
-                                        l.getName().equals(i.getName()) && l.getTime().equals(i.getTime()))
-                        ).collect(Collectors.toList());
-                        if (CollUtil.isNotEmpty(validItemDataList)) {
-                            generateAlarms(alarmConfigList, validItemDataList);
+                try{
+                    //获取点位最新的数据
+
+                    List<com.cqcy.ei.influxdb.entity.Item> itemDataByLast = queryService.getItemDataByLast(items, itemGroupId.toString());
+                    if (CollUtil.isNotEmpty(alarmConfigList) && CollUtil.isNotEmpty(itemDataByLast)) {
+                        if (CollUtil.isEmpty(lastItemDataList)) {
+                            generateAlarms(alarmConfigList, itemDataByLast);
+                        } else {
+                            //过滤已经存在的数据
+                            List<Item> validItemDataList = itemDataByLast.stream().filter(i ->
+                                    lastItemDataList.stream().noneMatch(l ->
+                                            l.getName().equals(i.getName()) && l.getTime().equals(i.getTime()))
+                            ).collect(Collectors.toList());
+                            if (CollUtil.isNotEmpty(validItemDataList)) {
+                                generateAlarms(alarmConfigList, validItemDataList);
+                            }
                         }
                     }
+                    lastItemDataList = itemDataByLast;
+                }catch (Exception e){
+                    System.out.println("点位报警异常:");
+                    log.error(e.getMessage());
                 }
-                lastItemDataList = itemDataByLast;
             }, collectorItemInterval, collectorItemInterval, TimeUnit.MILLISECONDS);
         }
     }

+ 23 - 0
industry-system/industry-da/src/main/java/com/example/opc_da/alarmConfig/RangeAlarmStrategy.java

@@ -3,15 +3,26 @@ package com.example.opc_da.alarmConfig;
 import com.cqcy.ei.influxdb.entity.Item;
 import com.example.opc_common.entity.AlarmConfig;
 import com.example.opc_common.entity.AlarmLog;
+import com.example.opc_common.entity.DataModel;
 import com.example.opc_common.util.Blank;
 import com.example.opc_common.util.ConstantStr;
+import com.example.opc_da.config.SpringContextUtils;
+import com.example.opc_da.dao.DataModelDao;
+import com.example.opc_da.dao.ItemGroupDao;
+import com.example.opc_da.validate.dataModel.DataModelValidateFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 
 /**
  * 范围报警策略具体类
  */
 public class RangeAlarmStrategy implements AlarmStrategy {
+    @Autowired
+    private DataModelDao dataModelDao = SpringContextUtils.getBean(DataModelDao.class);
+    @Autowired
+    private ItemGroupDao itemGroupDao = SpringContextUtils.getBean(ItemGroupDao.class);
     @Override
     public AlarmLog getAlarmLog(AlarmConfig alarmConfig, Item item) {
         //判断此值,是否满足报警条件
@@ -21,6 +32,18 @@ public class RangeAlarmStrategy implements AlarmStrategy {
             //得到报警上限和下限
             BigDecimal lowerLimit = new BigDecimal(alarmConfig.getLowerLimit());
             BigDecimal upperLimit = new BigDecimal(alarmConfig.getUpperLimit());
+            //计算值
+            if (alarmConfig.getAlarmValueType()==1){
+                String dataValue = item.getValue();
+                Integer itemId = alarmConfig.getItemId();
+
+                com.example.opc_common.entity.Item dataItem = itemGroupDao.getItemById(itemId);
+
+                DataModel dm = dataModelDao.getDataModelById(dataItem.getDataModelId());
+                if(Blank.isNotEmpty(dm)){
+                    value = DataModelValidateFactory.getDataModelValidate(dm.getModelType()).getValue(dm, dataValue);
+                }
+            }
             BigDecimal bigDecimal = new BigDecimal(value);
 
             //满足低低报条件

+ 11 - 7
industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/ItemGroupServiceImpl.java

@@ -565,13 +565,17 @@ public class ItemGroupServiceImpl implements ItemGroupService {
 
     @Override
     public List<Item> getItemListValue(List<Integer> idList, String startTime, String endTime) {
-        List<Item> itemList = itemGroupDao.getItemsParentByIdList(idList);
-        //从工具类中组装对应点位基本信息和历史数据到集合中
-        return (List<Item>) queryServiceUtil.exchangeHistoryData(
-                DateUtil.strYmdhmsChangeDate(startTime),
-                DateUtil.strYmdhmsChangeDate(endTime),
-                itemList
-        );
+        if(DateUtil.strYmdhmsChangeDate(startTime).before(DateUtil.strYmdhmsChangeDate(endTime))){
+            List<Item> itemList = itemGroupDao.getItemsParentByIdList(idList);
+            //从工具类中组装对应点位基本信息和历史数据到集合中
+            return (List<Item>) queryServiceUtil.exchangeHistoryData(
+                    DateUtil.strYmdhmsChangeDate(startTime),
+                    DateUtil.strYmdhmsChangeDate(endTime),
+                    itemList
+            );
+        }else{
+            return null;
+        }
     }
 
     @Override