diff --git a/das/src/main/java/com/das/modules/cache/domain/IotModelInfoCache.java b/das/src/main/java/com/das/modules/cache/domain/IotModelInfoCache.java index 00e20474..574d550f 100644 --- a/das/src/main/java/com/das/modules/cache/domain/IotModelInfoCache.java +++ b/das/src/main/java/com/das/modules/cache/domain/IotModelInfoCache.java @@ -2,8 +2,6 @@ package com.das.modules.cache.domain; import lombok.Data; -import java.util.concurrent.ConcurrentHashMap; - @Data public class IotModelInfoCache { private Long iotModelId; diff --git a/das/src/main/java/com/das/modules/cache/service/impl/IotModelCacheImpl.java b/das/src/main/java/com/das/modules/cache/service/impl/IotModelCacheImpl.java index be670f65..d548237e 100644 --- a/das/src/main/java/com/das/modules/cache/service/impl/IotModelCacheImpl.java +++ b/das/src/main/java/com/das/modules/cache/service/impl/IotModelCacheImpl.java @@ -10,7 +10,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArraySet; @Service public class IotModelCacheImpl implements IotModelCache { diff --git a/das/src/main/java/com/das/modules/calc/controller/CalcController.java b/das/src/main/java/com/das/modules/calc/controller/CalcController.java index 15b74bb6..a9463bf0 100644 --- a/das/src/main/java/com/das/modules/calc/controller/CalcController.java +++ b/das/src/main/java/com/das/modules/calc/controller/CalcController.java @@ -1,11 +1,9 @@ package com.das.modules.calc.controller; -import cn.hutool.core.io.FileUtil; import com.das.common.result.R; import com.das.modules.calc.domain.vo.CalcModuleVo; import com.das.modules.calc.service.CalcService; import lombok.extern.slf4j.Slf4j; -import org.quartz.SchedulerException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -13,9 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Map; diff --git a/das/src/main/java/com/das/modules/calc/domain/entity/CalcModule.java b/das/src/main/java/com/das/modules/calc/domain/entity/CalcModule.java index c5d5149a..fa4e9bdd 100644 --- a/das/src/main/java/com/das/modules/calc/domain/entity/CalcModule.java +++ b/das/src/main/java/com/das/modules/calc/domain/entity/CalcModule.java @@ -10,7 +10,6 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; import java.util.Date; -import java.util.concurrent.atomic.AtomicInteger; @Slf4j @TableName("sys_calc_module") diff --git a/das/src/main/java/com/das/modules/calc/functions/FunctionAvgValue.java b/das/src/main/java/com/das/modules/calc/functions/FunctionAvgValue.java index 68742ee6..508c5f4a 100644 --- a/das/src/main/java/com/das/modules/calc/functions/FunctionAvgValue.java +++ b/das/src/main/java/com/das/modules/calc/functions/FunctionAvgValue.java @@ -1,7 +1,5 @@ package com.das.modules.calc.functions; -import cn.hutool.core.date.DateField; -import cn.hutool.core.date.DateUtil; import com.das.modules.cache.domain.DeviceInfoCache; import com.das.modules.cache.service.CacheService; import com.das.modules.data.service.DataService; @@ -65,7 +63,7 @@ public class FunctionAvgValue extends AbstractFunction { if (deviceInfoCache == null) { return AviatorNil.NIL; } - Double value = dataService.getTimeSumValue(deviceInfoCache.getDeviceId(), attrName, startTime.getTime(), endTime.getTime()); + Double value = dataService.getTimeAvgValue(deviceInfoCache.getDeviceId(), attrName, startTime.getTime(), endTime.getTime()); if (value == null){ return AviatorNil.NIL; } diff --git a/das/src/main/java/com/das/modules/calc/functions/FunctionCacheValue.java b/das/src/main/java/com/das/modules/calc/functions/FunctionCacheValue.java index 178c6af7..e89662d9 100644 --- a/das/src/main/java/com/das/modules/calc/functions/FunctionCacheValue.java +++ b/das/src/main/java/com/das/modules/calc/functions/FunctionCacheValue.java @@ -9,7 +9,6 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; /** * Aviator扩展函数 - 获取设备实时数据 diff --git a/das/src/main/java/com/das/modules/calc/functions/FunctionOffsetDate.java b/das/src/main/java/com/das/modules/calc/functions/FunctionOffsetDate.java index 67582de4..100ef18d 100644 --- a/das/src/main/java/com/das/modules/calc/functions/FunctionOffsetDate.java +++ b/das/src/main/java/com/das/modules/calc/functions/FunctionOffsetDate.java @@ -30,27 +30,27 @@ public class FunctionOffsetDate extends AbstractFunction { public AviatorObject call(Map env, AviatorObject dateData, AviatorObject dimData, AviatorObject offsetData) { Date date = (Date) dateData.getValue(env); String dim = (String) dimData.getValue(env); - Integer offset = (Integer) offsetData.getValue(env); + Long offset = (Long) offsetData.getValue(env); Date result = null; switch (dim) { case "day": - result = DateUtil.offset(date, DateField.DAY_OF_MONTH, offset); + result = DateUtil.offset(date, DateField.DAY_OF_MONTH, offset.intValue()); break; case "month": - result = DateUtil.offset(date, DateField.MONTH, offset); + result = DateUtil.offset(date, DateField.MONTH, offset.intValue()); break; case "year": - result = DateUtil.offset(date, DateField.YEAR, offset); + result = DateUtil.offset(date, DateField.YEAR, offset.intValue()); break; case "hour": - result = DateUtil.offset(date, DateField.HOUR, offset); + result = DateUtil.offset(date, DateField.HOUR, offset.intValue()); break; case "minute": - result = DateUtil.offset(date, DateField.MINUTE, offset); + result = DateUtil.offset(date, DateField.MINUTE, offset.intValue()); break; case "second": - result = DateUtil.offset(date, DateField.SECOND, offset); + result = DateUtil.offset(date, DateField.SECOND, offset.intValue()); break; default: log.error("不支持的维度: {}", dim); diff --git a/das/src/main/java/com/das/modules/calc/functions/FunctionRealData.java b/das/src/main/java/com/das/modules/calc/functions/FunctionRealData.java index 8615b8e3..918f6393 100644 --- a/das/src/main/java/com/das/modules/calc/functions/FunctionRealData.java +++ b/das/src/main/java/com/das/modules/calc/functions/FunctionRealData.java @@ -5,7 +5,8 @@ import com.das.modules.cache.service.CacheService; import com.das.modules.data.domain.SnapshotValueQueryParam; import com.das.modules.data.service.DataService; import com.googlecode.aviator.runtime.function.AbstractFunction; -import com.googlecode.aviator.runtime.type.*; +import com.googlecode.aviator.runtime.type.AviatorObject; +import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType; import lombok.extern.slf4j.Slf4j; import java.util.HashMap; diff --git a/das/src/main/java/com/das/modules/calc/functions/FunctionSaveCalcData.java b/das/src/main/java/com/das/modules/calc/functions/FunctionSaveCalcData.java index cd88c7ee..2117dd10 100644 --- a/das/src/main/java/com/das/modules/calc/functions/FunctionSaveCalcData.java +++ b/das/src/main/java/com/das/modules/calc/functions/FunctionSaveCalcData.java @@ -12,7 +12,10 @@ import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; /** * Aviator扩展函数 - 获取设备实时数据 diff --git a/das/src/main/java/com/das/modules/calc/functions/FunctionSumValue.java b/das/src/main/java/com/das/modules/calc/functions/FunctionSumValue.java index a2d518b9..45d9bfb1 100644 --- a/das/src/main/java/com/das/modules/calc/functions/FunctionSumValue.java +++ b/das/src/main/java/com/das/modules/calc/functions/FunctionSumValue.java @@ -1,6 +1,5 @@ package com.das.modules.calc.functions; -import cn.hutool.core.date.DateUtil; import com.das.modules.cache.domain.DeviceInfoCache; import com.das.modules.cache.service.CacheService; import com.das.modules.data.service.DataService; @@ -8,12 +7,10 @@ import com.googlecode.aviator.runtime.function.AbstractFunction; import com.googlecode.aviator.runtime.type.AviatorNil; import com.googlecode.aviator.runtime.type.AviatorObject; import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType; -import lombok.Data; import lombok.extern.slf4j.Slf4j; import java.util.Date; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; /** * Aviator扩展函数 - 获取时间维度内最早的一条数据 diff --git a/das/src/main/java/com/das/modules/calc/functions/FunctionTopValue.java b/das/src/main/java/com/das/modules/calc/functions/FunctionTopValue.java index eedd5860..b505f15b 100644 --- a/das/src/main/java/com/das/modules/calc/functions/FunctionTopValue.java +++ b/das/src/main/java/com/das/modules/calc/functions/FunctionTopValue.java @@ -1,10 +1,8 @@ package com.das.modules.calc.functions; -import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import com.das.modules.cache.domain.DeviceInfoCache; import com.das.modules.cache.service.CacheService; -import com.das.modules.data.domain.SnapshotValueQueryParam; import com.das.modules.data.service.DataService; import com.googlecode.aviator.runtime.function.AbstractFunction; import com.googlecode.aviator.runtime.type.AviatorNil; @@ -14,8 +12,6 @@ import lombok.Data; import lombok.extern.slf4j.Slf4j; import java.util.Date; -import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/das/src/main/java/com/das/modules/calc/functions/FunctionWindSpeedFactor.java b/das/src/main/java/com/das/modules/calc/functions/FunctionWindSpeedFactor.java index 2765024b..ed108544 100644 --- a/das/src/main/java/com/das/modules/calc/functions/FunctionWindSpeedFactor.java +++ b/das/src/main/java/com/das/modules/calc/functions/FunctionWindSpeedFactor.java @@ -11,7 +11,6 @@ import com.googlecode.aviator.runtime.type.AviatorObject; import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType; import lombok.extern.slf4j.Slf4j; -import java.util.Date; import java.util.List; import java.util.Map; diff --git a/das/src/main/java/com/das/modules/calc/service/CalcJob.java b/das/src/main/java/com/das/modules/calc/service/CalcJob.java index 310e7717..1f307a5c 100644 --- a/das/src/main/java/com/das/modules/calc/service/CalcJob.java +++ b/das/src/main/java/com/das/modules/calc/service/CalcJob.java @@ -6,7 +6,6 @@ import com.das.modules.cache.service.CacheService; import com.das.modules.calc.domain.entity.CalcModule; import com.googlecode.aviator.AviatorEvaluatorInstance; import com.googlecode.aviator.Expression; -import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType; import lombok.extern.slf4j.Slf4j; import org.quartz.Job; import org.quartz.JobDataMap; diff --git a/das/src/main/java/com/das/modules/calc/service/CalcService.java b/das/src/main/java/com/das/modules/calc/service/CalcService.java index 0e291a3b..c9669f0e 100644 --- a/das/src/main/java/com/das/modules/calc/service/CalcService.java +++ b/das/src/main/java/com/das/modules/calc/service/CalcService.java @@ -2,6 +2,7 @@ package com.das.modules.calc.service; import cn.hutool.core.codec.Base64Encoder; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.das.common.utils.AdminRedisTemplate; import com.das.modules.cache.service.CacheService; import com.das.modules.calc.domain.entity.CalcModule; @@ -134,6 +135,9 @@ public class CalcService { FunctionOffsetDate offsetDate = new FunctionOffsetDate(); aviator.addFunction(offsetDate); + + FunctionWindSpeedFactor windSpeedFactor = new FunctionWindSpeedFactor(dataService,cacheService); + aviator.addFunction(windSpeedFactor); } /** @@ -176,7 +180,9 @@ public class CalcService { * @return */ public List queryCalcModules() { - List scriptModules = calcModuleMapper.selectList(null); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.orderByAsc(CalcModule::getLocalName); + List scriptModules = calcModuleMapper.selectList(queryWrapper); return scriptModules.stream().map(CalcModuleVo::of).toList(); } diff --git a/das/src/main/java/com/das/modules/data/service/impl/DataServiceImpl.java b/das/src/main/java/com/das/modules/data/service/impl/DataServiceImpl.java index 2b9995d6..43fc2235 100644 --- a/das/src/main/java/com/das/modules/data/service/impl/DataServiceImpl.java +++ b/das/src/main/java/com/das/modules/data/service/impl/DataServiceImpl.java @@ -274,12 +274,13 @@ public class DataServiceImpl implements DataService { return null; } String tableName = ""; - if (cacheService.getIotModelCache().isHighSpeed(deviceInfoCache.getIotModelId(), attr)){ - tableName = String.format("h_%s", deviceInfoCache.getDeviceId()); + if (cacheService.getIotModelCache().isCalculate(deviceInfoCache.getIotModelId(), attr)){ + tableName = String.format("c_%d_%s", deviceInfoCache.getDeviceId(), attr.toLowerCase()); + return tdEngineService.getTimeSumCalcValue(tableName, attr.toLowerCase(), startTime, endTime); + } else if (cacheService.getIotModelCache().isHighSpeed(deviceInfoCache.getIotModelId(), attr)){ + tableName = String.format("h%d", deviceInfoCache.getDeviceId()); } else if (cacheService.getIotModelCache().isLowSpeed(deviceInfoCache.getIotModelId(), attr)){ - tableName = String.format("l_%s", deviceInfoCache.getDeviceId()); - } else if (cacheService.getIotModelCache().isCalculate(deviceInfoCache.getIotModelId(), attr)){ - tableName = String.format("c_%s", deviceInfoCache.getDeviceId()); + tableName = String.format("l%d", deviceInfoCache.getDeviceId()); } return tdEngineService.getTimeTopValue(tableName, attr, startTime, endTime); } @@ -292,14 +293,14 @@ public class DataServiceImpl implements DataService { } String tableName = ""; if (cacheService.getIotModelCache().isCalculate(deviceInfoCache.getIotModelId(), attr)){ - tableName = String.format("c_%s_%s", deviceInfoCache.getDeviceId(), attr.toLowerCase()); - return tdEngineService.getTimeSumCalcValue(tableName, attr, startTime, endTime); - } else if (cacheService.getIotModelCache().isHighSpeed(deviceInfoCache.getIotModelId(), attr.toLowerCase())){ - tableName = String.format("h_%s", deviceInfoCache.getDeviceId()); - } else if (cacheService.getIotModelCache().isLowSpeed(deviceInfoCache.getIotModelId(), attr.toLowerCase())){ - tableName = String.format("l_%s", deviceInfoCache.getDeviceId(), attr.toLowerCase()); + tableName = String.format("c_%d_%s", deviceInfoCache.getDeviceId(), attr.toLowerCase()); + return tdEngineService.getTimeSumCalcValue(tableName, attr.toLowerCase(), startTime, endTime); + } else if (cacheService.getIotModelCache().isHighSpeed(deviceInfoCache.getIotModelId(), attr)){ + tableName = String.format("h%d", deviceInfoCache.getDeviceId()); + } else if (cacheService.getIotModelCache().isLowSpeed(deviceInfoCache.getIotModelId(), attr)){ + tableName = String.format("l%d", deviceInfoCache.getDeviceId()); } - return tdEngineService.getTimeSumValue(tableName, attr, startTime, endTime); + return tdEngineService.getTimeSumValue(tableName, attr.toLowerCase(), startTime, endTime); } @Override @@ -310,13 +311,13 @@ public class DataServiceImpl implements DataService { } String tableName = ""; if (cacheService.getIotModelCache().isCalculate(deviceInfoCache.getIotModelId(), attr)){ - tableName = String.format("c_%s_%s", deviceInfoCache.getDeviceId(), attr.toLowerCase()); - return tdEngineService.getTimeAvgCalcValue(tableName, attr, startTime, endTime); - } else if (cacheService.getIotModelCache().isHighSpeed(deviceInfoCache.getIotModelId(), attr.toLowerCase())){ - tableName = String.format("h_%s", deviceInfoCache.getDeviceId()); - } else if (cacheService.getIotModelCache().isLowSpeed(deviceInfoCache.getIotModelId(), attr.toLowerCase())){ - tableName = String.format("l_%s", deviceInfoCache.getDeviceId(), attr.toLowerCase()); + tableName = String.format("c_%d_%s", deviceInfoCache.getDeviceId(), attr.toLowerCase()); + return tdEngineService.getTimeAvgCalcValue(tableName, attr.toLowerCase(), startTime, endTime); + } else if (cacheService.getIotModelCache().isHighSpeed(deviceInfoCache.getIotModelId(), attr)){ + tableName = String.format("h%d", deviceInfoCache.getDeviceId()); + } else if (cacheService.getIotModelCache().isLowSpeed(deviceInfoCache.getIotModelId(), attr)){ + tableName = String.format("l%d", deviceInfoCache.getDeviceId()); } - return tdEngineService.getTimeAvgValue(tableName, attr, startTime, endTime); + return tdEngineService.getTimeAvgValue(tableName, attr.toLowerCase(), startTime, endTime); } } diff --git a/das/src/main/java/com/das/modules/node/command/HeartbeatCommand.java b/das/src/main/java/com/das/modules/node/command/HeartbeatCommand.java index e29915c9..22be0b41 100644 --- a/das/src/main/java/com/das/modules/node/command/HeartbeatCommand.java +++ b/das/src/main/java/com/das/modules/node/command/HeartbeatCommand.java @@ -56,7 +56,7 @@ public class HeartbeatCommand implements BaseCommand{ } //判断是不是风机 String keyPLCDeviceStatus = String.format("RT:%d:iturbineoperationmode", deviceId); - String keyCommFaultState = String.format("RT:%d:commfaultstate"); + String keyCommFaultState = String.format("RT:%d:commfaultstate",deviceId); Integer plcDeviceStatus = adminRedisTemplate.get(keyPLCDeviceStatus); if (plcDeviceStatus == null){ adminRedisTemplate.set(keyCommFaultState, online ? 0 : 1); diff --git a/das/src/main/java/com/das/modules/node/service/impl/NodeMessageServiceImpl.java b/das/src/main/java/com/das/modules/node/service/impl/NodeMessageServiceImpl.java index 1ad634f1..1c458a88 100644 --- a/das/src/main/java/com/das/modules/node/service/impl/NodeMessageServiceImpl.java +++ b/das/src/main/java/com/das/modules/node/service/impl/NodeMessageServiceImpl.java @@ -254,9 +254,6 @@ public class NodeMessageServiceImpl extends TextWebSocketHandler implements Node String fieldName = keysHigh.next(); String key = String.format("RT:%s:%s", deviceId, fieldName.toLowerCase()); keyValueMap.put(key, values.get(fieldName)); - if(fieldName.toLowerCase().equals("iwindspeed")){ - log.info("风速更新redis数据key:{},value:{}",key,values.get(fieldName)); - } if (highKey.contains(fieldName)){ highSpeedValueMap.put(fieldName,values.get(fieldName)); } diff --git a/docs/datacollect/README.md b/docs/datacollect/README.md index 591cb3b0..5b440a43 100644 --- a/docs/datacollect/README.md +++ b/docs/datacollect/README.md @@ -376,13 +376,16 @@ PS: 同一节点只允许建立一条连接。 "dataTime": 123123123123, //设备ID "deviceId": "1123451235464", - //是否存储历史数据 - "isStore": true, "values": { //key为属性名 "Ia": 123.1, "Ib": 122.1, "Ic": 123.1 + }, + //需要归档的数据 + "archiveValues":{ + "P": 1234.12, + "Q": 12 } } ``` @@ -402,11 +405,13 @@ PS: 同一节点只允许建立一条连接。 "dataTime": 123123123123, //设备ID "deviceId": "1123451235464", - //是否存储历史数据 - "isStore": true, "values": { //key为属性名 "Switch01": 1 + }, + //需要归档的数据 + "archiveValues":{ + "Fault001": 0 } } ``` diff --git a/ui/dasadmin/src/api/backend/deviceModel/request.ts b/ui/dasadmin/src/api/backend/deviceModel/request.ts index 2f8b7bb8..207c1993 100644 --- a/ui/dasadmin/src/api/backend/deviceModel/request.ts +++ b/ui/dasadmin/src/api/backend/deviceModel/request.ts @@ -168,3 +168,14 @@ export const getRealValueRangeReq = (data: { startTime: number, endTime: number, timeout: 60 * 1000 }) } + +export function queryfaultCodeDict(params: object = {}) { + return createAxios({ + url: '/api/fdr/faultCodeDict/query', + method: 'POST', + data: params, + }, + { + showErrorMessage: false + }) +} \ No newline at end of file diff --git a/ui/dasadmin/src/assets/energyManage/AGC.png b/ui/dasadmin/src/assets/energyManage/AGC.png new file mode 100644 index 00000000..15ee6852 Binary files /dev/null and b/ui/dasadmin/src/assets/energyManage/AGC.png differ diff --git a/ui/dasadmin/src/assets/energyManage/AVC.png b/ui/dasadmin/src/assets/energyManage/AVC.png new file mode 100644 index 00000000..15ee6852 Binary files /dev/null and b/ui/dasadmin/src/assets/energyManage/AVC.png differ diff --git a/ui/dasadmin/src/assets/energyManage/defaultSave.png b/ui/dasadmin/src/assets/energyManage/defaultSave.png new file mode 100644 index 00000000..8e4f5630 Binary files /dev/null and b/ui/dasadmin/src/assets/energyManage/defaultSave.png differ diff --git a/ui/dasadmin/src/assets/energyManage/noPower.png b/ui/dasadmin/src/assets/energyManage/noPower.png new file mode 100644 index 00000000..29078a06 Binary files /dev/null and b/ui/dasadmin/src/assets/energyManage/noPower.png differ diff --git a/ui/dasadmin/src/assets/energyManage/power.png b/ui/dasadmin/src/assets/energyManage/power.png new file mode 100644 index 00000000..29078a06 Binary files /dev/null and b/ui/dasadmin/src/assets/energyManage/power.png differ diff --git a/ui/dasadmin/src/views/backend/WindBlower/overview.vue b/ui/dasadmin/src/views/backend/WindBlower/overview.vue index 3d457c46..b1c15fa9 100644 --- a/ui/dasadmin/src/views/backend/WindBlower/overview.vue +++ b/ui/dasadmin/src/views/backend/WindBlower/overview.vue @@ -21,7 +21,7 @@ :total="pageSetting.total" :page-sizes="pageSetting.pageSizes" background - :pager-count="7" + :pager-count="4" layout="prev, pager, next, jumper,sizes,total" @size-change="sizeChangePage" > diff --git a/ui/dasadmin/src/views/backend/energyManage/index.vue b/ui/dasadmin/src/views/backend/energyManage/index.vue new file mode 100644 index 00000000..8bd860b1 --- /dev/null +++ b/ui/dasadmin/src/views/backend/energyManage/index.vue @@ -0,0 +1,1073 @@ + + + + + diff --git a/ui/dasadmin/src/views/backend/equipment/equipmentManagement/measurement.vue b/ui/dasadmin/src/views/backend/equipment/equipmentManagement/measurement.vue index 0f31f27b..df8e6e37 100644 --- a/ui/dasadmin/src/views/backend/equipment/equipmentManagement/measurement.vue +++ b/ui/dasadmin/src/views/backend/equipment/equipmentManagement/measurement.vue @@ -85,25 +85,31 @@ import { reactive, ref, watch, onMounted } from 'vue' import { ElMessage, FormInstance, dayjs } from 'element-plus' import type { ModelAttributeFieldsEnums, GetModelAttributeType } from '/@/views/backend/auth/model/type' import { ModelAttributeType } from '/@/views/backend/auth/model/type' -import { getModelAttributeListReq, getRealValueListReq } from '/@/api/backend/deviceModel/request' +import { getModelAttributeListReq, getRealValueListReq, getRealValueRangeReq, queryfaultCodeDict } from '/@/api/backend/deviceModel/request' import * as echarts from 'echarts' -import { getRealValueRangeReq } from '/@/api/backend/deviceModel/request' import { useEnumStore } from '/@/stores/enums' -import { queryfaultCodeDict } from '/@/api/backend/theoreticalpowerCurve/request' -import { malFunctionKeys} from '/@/views/backend/equipment/airBlower/utils' +import { malFunctionKeys } from '/@/views/backend/equipment/airBlower/utils' const enumStore = useEnumStore() const props = withDefaults( - defineProps<{ iotModelId: string; deviceId: string; show: boolean; autoUpdate: boolean; attributeType: ModelAttributeType;model:string;madeinFactory:string }>(), + defineProps<{ + iotModelId: string + deviceId: string + show: boolean + autoUpdate: boolean + attributeType: ModelAttributeType + model: string + madeinFactory: string + }>(), { iotModelId: '', deviceId: '', show: false, autoUpdate: false, attributeType: 138, - model:'', - madeinFactory:'' + model: '', + madeinFactory: '', } ) @@ -214,7 +220,7 @@ const getMalfunctionEnums = () => { queryfaultCodeDict({ madeinfactory: props.madeinFactory, model: props.model }).then((res) => { if (res.code == 200) { const data: any = {} - res.data.forEach((item: any) => { + res.data.forEach((item: any) => { data[item.code] = item.description }) malFunctionEnums = data @@ -222,7 +228,6 @@ const getMalfunctionEnums = () => { }) } - const getCompleteData = () => { getAttributeList() .then(({ data, codeList }: any) => { @@ -236,7 +241,7 @@ const getCompleteData = () => { if (enumStore.keys.includes(item.attributeCode)) { realValItem = enumStore.data[item.attributeCode][realValItem] } - if(malFunctionKeys.includes(item.attributeCode)){ + if (malFunctionKeys.includes(item.attributeCode)) { realValItem = malFunctionEnums?.[realValItem] ?? realValItem } return { diff --git a/ui/dasadmin/src/views/backend/node/utils.ts b/ui/dasadmin/src/views/backend/node/utils.ts index 00b10f9f..9b43f74d 100644 --- a/ui/dasadmin/src/views/backend/node/utils.ts +++ b/ui/dasadmin/src/views/backend/node/utils.ts @@ -119,6 +119,10 @@ export const excelDefaultConfig: any = { { label: '限值2下限', code: 'limit2Low' + }, + { + label:'强制归档', + code:'forceArchive', } ], R0C4: ['03', '04'], @@ -233,6 +237,10 @@ export const excelDefaultConfig: any = { label: '寄存器地址', code: 'col3', }, + { + label:'强制归档', + code:'forceArchive', + } ], R0C4: ['03', '04'], R0C5: [ @@ -262,6 +270,10 @@ export const excelDefaultConfig: any = { label: '寄存器', code: 'col3', }, + { + label:'强制归档', + code:'forceArchive', + } ], R0C4: ['01', '02', '03', '04'], }, @@ -335,6 +347,10 @@ export const excelDefaultConfig: any = { { label: '限值2下限', code: 'limit2Low' + }, + { + label:'强制归档', + code:'forceArchive', } ], R0C4: [ @@ -394,6 +410,10 @@ export const excelDefaultConfig: any = { 139: { name: '累计量', head: [ + { + label:'强制归档', + code:'forceArchive', + } ], }, //遥信140 DISCRETE @@ -412,6 +432,10 @@ export const excelDefaultConfig: any = { label: '寄存器地址', code: 'registerAddr', }, + { + label:'强制归档', + code:'forceArchive', + } ], R0C4: [ "8位归一化值", diff --git a/ui/dasadmin/src/views/backend/statAnalysis/powerCurveAnalysis.vue b/ui/dasadmin/src/views/backend/statAnalysis/powerCurveAnalysis.vue index 79da17a2..8994d7be 100644 --- a/ui/dasadmin/src/views/backend/statAnalysis/powerCurveAnalysis.vue +++ b/ui/dasadmin/src/views/backend/statAnalysis/powerCurveAnalysis.vue @@ -22,17 +22,22 @@
- {{ t('statAnalysis.interval') }} - - + 风速来源 + +
@@ -73,17 +78,12 @@ const { t } = useI18n() const statAnalysisFatory = ref('') const statAnalysisFatoryList: any = ref([]) -const statAnalysisInterval = ref('1h') +const statAnalysisSpeedSource = ref('AvgWindSpeed_10min') const statAnalysisDeviceId = ref('') const statAnalysisSelectOptions: any = reactive({ - interval: [ - { label: '一分钟', value: '1m' }, - { label: '五分钟', value: '5m' }, - { label: '十分钟', value: '10m' }, - { label: '十五分钟', value: '15m' }, - { label: '一小时', value: '1h' }, - { label: '一天', value: '1d' }, - { label: '原始', value: 'NONE' }, + speedSource: [ + { label: '原始风速', value: 'AvgWindSpeed_10min' }, + { label: '处理后风速', value: 'AvgWindSpeedCal_10min' }, ], deviceId: [], }) @@ -278,10 +278,9 @@ const statAnalysisOperate = () => { devices: [ { deviceId: deviceId, - attributes: ['iGenPower', 'iWindSpeed'], + attributes: [statAnalysisSpeedSource.value, 'AvgActivePower_10min'], }, ], - interval: statAnalysisInterval.value || '5m', startTime: new Date(statAnalysisTime.value[0]).getTime(), endTime: new Date(statAnalysisTime.value[1]).getTime(), } @@ -323,8 +322,8 @@ const statAnalysisOperate = () => { const resData0 = results[1][statAnalysisDeviceId.value.split(':')[2]] const resData1 = results[0] if (resData0) { - const iGenPower = resData0['iGenPower']['values'] - const iWindSpeed = resData0['iWindSpeed']['values'] + const iGenPower = resData0['AvgActivePower_10min']['values'] + const iWindSpeed = resData0[statAnalysisSpeedSource.value]['values'] if (!iWindSpeed.length) { ElMessage.info(`实时值数据为空`) } else { @@ -336,11 +335,12 @@ const statAnalysisOperate = () => { }) const series = { - type: 'line', + type: 'scatter', data: seriesData, name: '实际值', smooth: true, - animation: false, + symbolSize: 5, + symbol: 'circle', } option.series.push(series) option.legend.data.push('实际值') @@ -355,7 +355,8 @@ const statAnalysisOperate = () => { data: seriesData, name: '理论值', smooth: true, - animation: false, + symbolSize: 0.1, + symbol: 'circle', } option.series.push(series) option.legend.data.push('理论值') @@ -374,16 +375,14 @@ const statAnalysisExport = () => { devices: [ { deviceId: statAnalysisDeviceId.value.split(':')[2], - attributes: ['iGenPower', 'iWindSpeed'], + attributes: [statAnalysisSpeedSource.value, 'AvgActivePower_10min'], }, ], - interval: statAnalysisInterval.value || '5m', startTime: new Date(statAnalysisTime.value[0]).getTime(), endTime: new Date(statAnalysisTime.value[1]).getTime(), madeinfactory: params.split(':')[0], model: params.split(':')[1], } - console.log(requestData) powerCurveExport(requestData).then((res: any) => { const downloadUrl = window.URL.createObjectURL(res) const a = document.createElement('a') diff --git a/ui/dasadmin/src/views/backend/statAnalysis/trendAnalysis.vue b/ui/dasadmin/src/views/backend/statAnalysis/trendAnalysis.vue index 10b31131..f6da1260 100644 --- a/ui/dasadmin/src/views/backend/statAnalysis/trendAnalysis.vue +++ b/ui/dasadmin/src/views/backend/statAnalysis/trendAnalysis.vue @@ -399,9 +399,6 @@ const getTimeIntervals = (startTimestamp: number, endTimestamp: number) => { case '15m': count = Math.floor((endDate - startDate) / (15 * 60 * 1000)) break - case '15m': - count = Math.floor((endDate - startDate) / (15 * 60 * 1000)) - break case '1h': count = Math.floor((endDate - startDate) / (1 * 60 * 60 * 1000)) break @@ -515,8 +512,8 @@ const historyDataReq = (promises: any) => { data: yData.map((value: any) => ({ value: getCutDecimalsValue(value, 2), })), - showSymbol: true, - animation: false, + symbolSize: 5, + symbol: 'circle', } option.legend.data.push(customName[index]) option.series.push(seriesData) diff --git a/ui/dasadmin/src/views/backend/statAnalysis/trendComparison.vue b/ui/dasadmin/src/views/backend/statAnalysis/trendComparison.vue index d67fe79d..2705f4ef 100644 --- a/ui/dasadmin/src/views/backend/statAnalysis/trendComparison.vue +++ b/ui/dasadmin/src/views/backend/statAnalysis/trendComparison.vue @@ -459,7 +459,8 @@ const historyDataReq = (data: any) => { value: getCutDecimalsValue(value, 2), unit: unit, // 将单位添加到每个数据点 })), - animation: false, + symbolSize: 5, + symbol: 'circle', } option.tooltip = { show: true,