diff --git a/das/src/main/java/com/das/common/log/MdcExecutor.java b/das/src/main/java/com/das/common/log/MdcExecutor.java deleted file mode 100644 index 9faa956c..00000000 --- a/das/src/main/java/com/das/common/log/MdcExecutor.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.das.common.log; - -import lombok.extern.slf4j.Slf4j; -import org.slf4j.MDC; - -import java.util.concurrent.Executor; - -/** - * @author chenhaojie - * - */ -@Slf4j -public class MdcExecutor implements Executor { - - private final Executor executor; - - public MdcExecutor(Executor executor) { - this.executor = executor; - } - - @Override - public void execute(Runnable command) { - final String requestId = MDC.get("REQUEST_ID"); - executor.execute(() -> { - MDC.put("REQUEST_ID", requestId); - try { - command.run(); - } finally { - MDC.remove("REQUEST_ID"); - } - }); - } -} diff --git a/das/src/main/java/com/das/common/log/RequestIdUtils.java b/das/src/main/java/com/das/common/log/RequestIdUtils.java deleted file mode 100644 index 5aaba3a8..00000000 --- a/das/src/main/java/com/das/common/log/RequestIdUtils.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.das.common.log; - -import java.util.UUID; - -/** - * @author chenhaojie - * - */ -public class RequestIdUtils { - - private static final ThreadLocal requestIdHolder = new ThreadLocal<>(); - - private RequestIdUtils() { - } - - public static void generateRequestId() { - requestIdHolder.set(UUID.randomUUID()); - } - - public static void generateRequestId(UUID uuid) { - requestIdHolder.set(uuid); - } - - public static UUID getRequestId() { - return requestIdHolder.get(); - } - - public static void removeRequestId() { - requestIdHolder.remove(); - } - -} diff --git a/das/src/main/java/com/das/common/log/RequestLogInterceptor.java b/das/src/main/java/com/das/common/log/RequestLogInterceptor.java deleted file mode 100644 index 0ed962cc..00000000 --- a/das/src/main/java/com/das/common/log/RequestLogInterceptor.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.das.common.log; - -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.slf4j.MDC; -import org.springframework.util.StringUtils; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; -import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.ModelAndView; - -import java.util.UUID; - -/** - * @author chenhaojie - * - */ -@Slf4j -public class RequestLogInterceptor implements HandlerInterceptor { - - - - @Override - public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { - - } - - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { - String servletPath = request.getServletPath(); - - log.info("preHandle 后置处理----------"); - log.info("servletPath:{}", servletPath); - RequestIdUtils.removeRequestId(); - MDC.clear(); - } - - /** - * 获取RequestId - * 优先从header头获取,如果没有则自己生成 - * @return RequestId - */ - private String getRequestId(){ - // 因为如果有网关,则一般会从网关传递过来,所以优先从header头获取 - ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if(attributes != null && StringUtils.hasText(attributes.getRequest().getHeader("x-request-id"))) { - HttpServletRequest request = attributes.getRequest(); - String requestId = request.getHeader("x-request-id"); - UUID uuid = UUID.fromString(requestId); - RequestIdUtils.generateRequestId(uuid); - return requestId; - } - UUID existUUID = RequestIdUtils.getRequestId(); - if(existUUID != null){ - return existUUID.toString(); - } - RequestIdUtils.generateRequestId(); - return RequestIdUtils.getRequestId().toString(); - } - - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { - String servletPath = request.getServletPath(); - // 生成RequestId - String requestId = this.getRequestId(); - // 配置日志文件打印 REQUEST_ID - MDC.put("REQUEST_ID", requestId); - - log.info("servletPath:{}", servletPath); - log.info("preHandle 前置处理----------"); - return true; - } -} 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 d548237e..fa302467 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 @@ -45,7 +45,8 @@ public class IotModelCacheImpl implements IotModelCache { @PreDestroy public void destroy(){ - + iotFieldsMap.clear(); + iotModelInfoIdMap.clear(); } @Override 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 fa4e9bdd..9029a650 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 @@ -26,7 +26,7 @@ public class CalcModule { private Date updateTime; private String cron; - public static final CalcModule of(String content){ + public final CalcModule of(String content){ CalcModule calcModule = new CalcModule(); calcModule.setScript(content); try(BufferedReader reader = new BufferedReader(new StringReader(content))){ 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 ed108544..c7f98040 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 @@ -23,12 +23,10 @@ import java.util.Map; @Slf4j public class FunctionWindSpeedFactor extends AbstractFunction { - private DataService dataService = null; private CacheService cacheService = null; - public FunctionWindSpeedFactor(DataService dataService, CacheService cacheService) { - this.dataService = dataService; + public FunctionWindSpeedFactor(CacheService cacheService) { this.cacheService = cacheService; } 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 3b1ed193..01994800 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 @@ -136,7 +136,7 @@ public class CalcService { FunctionOffsetDate offsetDate = new FunctionOffsetDate(); aviator.addFunction(offsetDate); - FunctionWindSpeedFactor windSpeedFactor = new FunctionWindSpeedFactor(dataService,cacheService); + FunctionWindSpeedFactor windSpeedFactor = new FunctionWindSpeedFactor(cacheService); aviator.addFunction(windSpeedFactor); FunctionIsOnline isOnline = new FunctionIsOnline(adminRedisTemplate, cacheService); diff --git a/das/src/main/java/com/das/modules/data/controller/DataController.java b/das/src/main/java/com/das/modules/data/controller/DataController.java index 76808959..a1374d19 100644 --- a/das/src/main/java/com/das/modules/data/controller/DataController.java +++ b/das/src/main/java/com/das/modules/data/controller/DataController.java @@ -38,6 +38,7 @@ public class DataController { public R>> querySnapshotValues(@RequestBody @Valid List param) { if (log.isDebugEnabled()){ log.debug("/api/rtdbsvr/snapshot is calling"); + log.debug("request params: {}", param); } return R.success(dataService.querySnapshotValues(param)); } @@ -50,7 +51,8 @@ public class DataController { @PostMapping("/history") public R>>> queryTimeSeriesValues(@RequestBody @Valid TSValueQueryParam param) { if (log.isDebugEnabled()){ - log.debug("/api/rtdbsvr/timeseries is calling"); + log.debug("/api/rtdbsvr/history is calling"); + log.debug("request params: {}", param); } return R.success(dataService.queryTimeSeriesValues(param)); } @@ -63,7 +65,8 @@ public class DataController { @PostMapping("/windows") public R>>> queryWindowsValues(@RequestBody @Valid WindowValueQueryParam param) { if (log.isDebugEnabled()){ - log.debug("/api/rtdbsvr/timeseries is calling"); + log.debug("/api/rtdbsvr/windows is calling"); + log.debug("request params: {}", param); } return R.success(dataService.queryWindowsValues(param)); } diff --git a/das/src/main/java/com/das/modules/data/service/TDEngineService.java b/das/src/main/java/com/das/modules/data/service/TDEngineService.java index 172a5075..b8c09675 100644 --- a/das/src/main/java/com/das/modules/data/service/TDEngineService.java +++ b/das/src/main/java/com/das/modules/data/service/TDEngineService.java @@ -92,7 +92,7 @@ public class TDEngineService { log.info(sb.toString()); pstmt.executeUpdate(sb.toString()); } catch (Exception e) { - log.error("创建超级表失败,失败原因{}", e); + log.error("创建超级表失败", e); } } } catch (Exception ignored) { @@ -114,7 +114,7 @@ public class TDEngineService { log.info(sb.toString()); pstmt.executeUpdate(sb.toString()); } catch (Exception e) { - log.error("创建超级表失败,失败原因{}", e); + log.error("创建[计算量]超级表失败", e); } } catch (Exception ignored) { @@ -141,7 +141,7 @@ public class TDEngineService { try { pstmt.executeUpdate(sb.toString()); } catch (Exception e) { - log.error("新增超级表列失败:{},失败原因{}", sb, e); + log.error(String.format("新增超级表列失败:%s", sb.toString()), e); } } @@ -167,7 +167,7 @@ public class TDEngineService { try { pstmt.executeUpdate(sb.toString()); } catch (Exception e) { - log.error("删除超级表列失败:{},失败原因{}", sb, e); + log.error(String.format("删除超级表列失败:%s", sb.toString()), e); } } catch (Exception ignored) { @@ -189,7 +189,7 @@ public class TDEngineService { try { pstmt.executeUpdate(sb.toString()); } catch (Exception e) { - log.error("删除超级表失败:{},失败原因{}", sb, e); + log.error(String.format("删除超级表失败:%s", sb.toString()), e); } } catch (Exception ignored) { @@ -963,7 +963,7 @@ public class TDEngineService { Statement pstmt = conn.createStatement()) { pstmt.executeUpdate(sb.toString()); } catch (Exception e) { - log.error("新增超级表列失败:{},失败原因{}", sb, e); + log.error(String.format("新增超级表列失败:%s", sb.toString()), e); } } 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 58ed550a..8bb1b9e2 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 @@ -123,7 +123,7 @@ public class DataServiceImpl implements DataService { } }); long end = System.currentTimeMillis(); - log.debug("读取快照{}个,耗时: {}秒", paramList.size(), (end - start) / 1000.0); + log.debug("querySnapshotValues {}个,耗时: {}秒", paramList.size(), (end - start) / 1000.0); return result; } @@ -149,7 +149,7 @@ public class DataServiceImpl implements DataService { result.putAll(values); } Long end = System.currentTimeMillis(); - log.debug("读取快照{}个,耗时: {}秒", param.getDevices().size(), (end-start)/ 1000.0); + log.debug("queryTimeSeriesValues {}个,耗时: {}秒", param.getDevices().size(), (end-start)/ 1000.0); return result; } @@ -178,7 +178,7 @@ public class DataServiceImpl implements DataService { result.putAll(values); } Long end = System.currentTimeMillis(); - log.debug("读取快照{}个,耗时: {}秒", param.getDevices().size(), (end-start)/ 1000.0); + log.debug("queryTimeSeriesValues {}个,耗时: {}秒", param.getDevices().size(), (end-start)/ 1000.0); return result; } diff --git a/das/src/main/java/com/das/modules/fdr/service/MinioViewsServcie.java b/das/src/main/java/com/das/modules/fdr/service/MinioViewsServcie.java index 0a81db32..20bb01c4 100644 --- a/das/src/main/java/com/das/modules/fdr/service/MinioViewsServcie.java +++ b/das/src/main/java/com/das/modules/fdr/service/MinioViewsServcie.java @@ -123,7 +123,7 @@ public class MinioViewsServcie { .stream(inputStream, inputStream.available(), -1) .build()); }catch (Exception e){ - log.error("minio文件上传失败{}", e); + log.error("minio文件上传失败", e); } } diff --git a/das/src/main/java/com/das/modules/fdr/service/impl/FaultRecorderServiceImpl.java b/das/src/main/java/com/das/modules/fdr/service/impl/FaultRecorderServiceImpl.java index fce3a2df..f985fd55 100644 --- a/das/src/main/java/com/das/modules/fdr/service/impl/FaultRecorderServiceImpl.java +++ b/das/src/main/java/com/das/modules/fdr/service/impl/FaultRecorderServiceImpl.java @@ -128,6 +128,9 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { queryWrapper.eq("madeinfactory",madeinfactory); queryWrapper.eq("MODEL",model); TheoreticalPowerCurveEntity theoreticalPowerCurveEntity = theoreticalPowerCurveMapper.selectOne(queryWrapper); + if (theoreticalPowerCurveEntity == null) { + return Collections.emptyList(); + } QueryWrapper sysFaultCodeDictQueryWrapper = new QueryWrapper<>(); sysFaultCodeDictQueryWrapper.eq("parent",theoreticalPowerCurveEntity.getId()); sysFaultCodeDictQueryWrapper.orderByAsc("code"); @@ -191,7 +194,7 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { resultMap = parseFile(fileStream, fdrFormatVo.getTimeFormat(), fdrFormatVo.getDelimiter(), fdrFormatVo.getValidStartLine()); } catch (Exception e) { - log.error("文件解析异常:{}",e); + log.error("文件解析异常",e); throw new ServiceException("文件解析异常,请检查配置"); } return resultMap; @@ -235,7 +238,7 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { } stringListMap = parseDataCurve(result, timeFormat); } catch (Exception e) { - log.error("文件解析失败{}", e); + log.error("文件解析失败", e); throw new ServiceException("文件解析失败"); } return stringListMap; 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 e64b4fe7..f8c5e684 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 @@ -407,7 +407,7 @@ public class NodeMessageServiceImpl extends TextWebSocketHandler implements Node try { tdEngineService.updateDeviceEventValues(valueList); } catch (Exception e) { - log.error("事件信息存入Td失败,失败原因{}", e); + log.error("事件信息存入Td失败,失败原因", e); } } diff --git a/das/src/main/java/com/das/modules/node/service/impl/SysNodeServiceImpl.java b/das/src/main/java/com/das/modules/node/service/impl/SysNodeServiceImpl.java index f5031917..090bf0c2 100644 --- a/das/src/main/java/com/das/modules/node/service/impl/SysNodeServiceImpl.java +++ b/das/src/main/java/com/das/modules/node/service/impl/SysNodeServiceImpl.java @@ -551,7 +551,7 @@ public class SysNodeServiceImpl implements SysNodeService { }) .anyMatch(order -> !orderSet.add(order)); }catch (Exception e){ - log.error("校验order不重复失败:{}",e); + log.error("校验order不重复失败",e); } return orderRepeated; } diff --git a/das/src/main/java/com/das/modules/plc/service/impl/PlcLogsServiceImpl.java b/das/src/main/java/com/das/modules/plc/service/impl/PlcLogsServiceImpl.java index 843a7f67..8b1721fd 100644 --- a/das/src/main/java/com/das/modules/plc/service/impl/PlcLogsServiceImpl.java +++ b/das/src/main/java/com/das/modules/plc/service/impl/PlcLogsServiceImpl.java @@ -86,7 +86,7 @@ public class PlcLogsServiceImpl implements PlcLogService { resultMap = parseFile(fileStream, fdrFormatVo.getTimeFormat(), fdrFormatVo.getDelimiter(), fdrFormatVo.getValidStartLine()); } catch (Exception e) { - log.error("文件解析异常:{}",e); + log.error("文件解析异常",e); throw new ServiceException("文件解析异常,请检查配置"); } return resultMap; @@ -162,7 +162,7 @@ public class PlcLogsServiceImpl implements PlcLogService { } stringListMap = parseDataCurve(result, timeFormat); } catch (Exception e) { - log.error("文件解析失败{}", e); + log.error("文件解析失败", e); throw new ServiceException("文件解析失败"); } return stringListMap; diff --git a/ui/dasadmin/src/stores/faults.ts b/ui/dasadmin/src/stores/faults.ts new file mode 100644 index 00000000..35a36073 --- /dev/null +++ b/ui/dasadmin/src/stores/faults.ts @@ -0,0 +1,18 @@ +import { defineStore } from 'pinia' + +import type { Faults } from '/@/stores/interface' +export const useFaultsStore = defineStore('faults', { + state: (): Faults => ({ + data: {}, + keys: [] + }), + actions: { + setData(data: Faults['data']) { + this.data = data + }, + setKeys(keys: string[]) { + this.keys = keys + } + }, + persist: true +}) diff --git a/ui/dasadmin/src/stores/interface/index.ts b/ui/dasadmin/src/stores/interface/index.ts index 41d4e7d9..e3c81b23 100644 --- a/ui/dasadmin/src/stores/interface/index.ts +++ b/ui/dasadmin/src/stores/interface/index.ts @@ -135,3 +135,9 @@ export interface Enums { } keys: string[] } +export interface Faults { + data: { + [key: string]: { [k: string]: string } + } + keys: string[] +} diff --git a/ui/dasadmin/src/views/backend/WindBlower/index.vue b/ui/dasadmin/src/views/backend/WindBlower/index.vue index eb9a8b6e..e94e6056 100644 --- a/ui/dasadmin/src/views/backend/WindBlower/index.vue +++ b/ui/dasadmin/src/views/backend/WindBlower/index.vue @@ -59,11 +59,16 @@ - -
-
功率趋势
-
-
+ +
+
+
+
+
+
+
+
+
@@ -137,16 +142,12 @@
- +
-
-
-
-
-
-
-
-
+
+
+
+
@@ -237,12 +238,12 @@
- -
- {{ item.name }} - {{ item.value }} -
- + +
+ {{ item.name }} + {{ item.value }} +
+
@@ -382,8 +383,18 @@ const initpowerChart = () => { const powerChart = state.charts.powerChart ?? echarts.init(powerChartRef.value as unknown as HTMLElement) const option = { + title: { + show: true, + text: '功率趋势', + textStyle: { + color: '#4E5969', + fontSize: 14, + fontFamily: 'PingFangSC-Semibold', + }, + padding: 10, + }, grid: { - top: 50, + top: 70, right: 23, bottom: 10, left: 18, @@ -485,6 +496,7 @@ const initpowerChart = () => { textStyle: { color: '#73767a', }, + top: 20, }, series: [ { @@ -715,17 +727,21 @@ const initTemperatureChart = () => { const option = { grid: { top: 30, - //right: 100, + right: 5, bottom: 0, left: -100, containLabel: true, }, xAxis: { - type: 'category', + // type: 'category', + type: 'value', + show: false, }, yAxis: { - type: 'value', + // type: 'value', + type: 'category', + show: false, }, series: [ @@ -735,8 +751,9 @@ const initTemperatureChart = () => { type: 'bar', label: { show: true, - align: 'center', - formatter: `{a|{c}}\n{b|{a}}`, + align: 'left', + // verticalAlign:'top', + formatter: `{b|{a}} {a|{c}}`, rich: { a: { color: '#333333', @@ -747,12 +764,14 @@ const initTemperatureChart = () => { fontSize: 14, }, }, - position: 'insideBottom', - offset: [62, 0], + width: 100, + height: 22, + position: 'insideLeft', + offset: [85, -22], }, itemStyle: { color: '#048bd2', - borderRadius: [0, 0, 4, 4], + borderRadius: [0, 4, 4, 0], }, barWidth: 20, }, @@ -835,7 +854,7 @@ const initFrequencyChart = () => { fontSize: 14, fontFamily: 'PingFangSC-Semibold', }, - padding: 15, + padding: 10, }, ], polar: { @@ -1241,8 +1260,9 @@ const getThisDayChartDataForMinute = () => { const getAllChartData = (type: ('power' | 'trend' | 'frequency')[] = ['power', 'trend', 'frequency']) => { if (type.includes('power')) { getThisDayChartData().then(() => { - initpowerChart() - // initTemperatureChart() + nextTick(() => { + initpowerChart() + }) }) } // if (type.includes('trend')) { @@ -1254,7 +1274,9 @@ const getAllChartData = (type: ('power' | 'trend' | 'frequency')[] = ['power', ' // } if (type.includes('frequency')) { getThisDayChartDataForMinute().then((res) => { - initFrequencyChart() + nextTick(() => { + initFrequencyChart() + }) }) } } @@ -1609,23 +1631,50 @@ $labelHeight: 24px; } } } - .power { + .temperatureList { @include cardDefaultStyle; @include cardlabel; + display: flex; + flex-direction: column; + justify-content: space-around; margin: 10px 0; width: 100%; height: calc(40% - 20px); - // min-height: 285px; - // height: v-bind('computedHeight.powerHeight'); - .chartBox { + .chartPart-item { + // margin: 5px 0; width: 100%; - height: calc(100% - $labelHeight); - .power-chart { + height: calc(33.3% - 10px); + background: #f0f6ff; + border-radius: 8px; + // text-align: center; + color: #4e5969; + .chartParm { + width: 100%; + height: 100%; + } + .frequencyChart { width: 100%; height: 100%; } } } + // .power { + // @include cardDefaultStyle; + // @include cardlabel; + // margin: 10px 0; + // width: 100%; + // height: calc(40% - 20px); + // // min-height: 285px; + // // height: v-bind('computedHeight.powerHeight'); + // .chartBox { + // width: 100%; + // height: calc(100% - $labelHeight); + // .power-chart { + // width: 100%; + // height: 100%; + // } + // } + // } } .cardContentCenter { @include cardDefaultStyle; @@ -1846,18 +1895,29 @@ $labelHeight: 24px; &:hover { cursor: pointer; } + .power { + margin-bottom: 5px; + width: 60%; + height: 100%; + background-color: #f0f6ff; + border-radius: 8px; + .chartBox { + width: 100%; + height: 100%; + .power-chart { + width: 100%; + height: 100%; + } + } + } + .chartPart-item { - margin: 5px; - width: 25%; + margin: 0 0 5px 5px; + // width: 25%; height: 100%; background: #f0f6ff; border-radius: 8px; - // text-align: center; color: #4e5969; - .chartParm { - width: 100%; - height: 100%; - } .frequencyChart { width: 100%; height: 100%; diff --git a/ui/dasadmin/src/views/backend/home/home.vue b/ui/dasadmin/src/views/backend/home/home.vue index 18a64530..1c9f11ff 100644 --- a/ui/dasadmin/src/views/backend/home/home.vue +++ b/ui/dasadmin/src/views/backend/home/home.vue @@ -23,14 +23,14 @@
实时无功:{{ realData.attributeMap.windfarmreactivepower}}kVar
日发电量:{{ realData.attributeMap.windfarmdayprodenergy}}万kWh
月发电量:{{ realData.attributeMap.windfarmmonthprodenergy}}万kWh
-
年发电量:{{ realData.attributeMap.windfarmyearprodenergy}}万kWh
+
年发电量:{{ realData.attributeMap.windfarmyearprodenergy}}万kWh
-
并网:{{ realData.attributeMap.turbinecountpowerprod}}台
-
停机/待机:{{ realData.attributeMap.turbinecountidle}}台
-
故障:{{ realData.attributeMap.turbinecountfaulted}}台
-
维护:{{ realData.attributeMap.turbinecountservice}}台
-
无通讯:{{ realData.attributeMap.turbinecountdisconnected}}台
+
并网:{{ realData.attributeMap.turbinecountpowerprod}}台
+
停机/待机:{{ realData.attributeMap.turbinecountidle}}台
+
故障:{{ realData.attributeMap.turbinecountfaulted}}台
+
维护:{{ realData.attributeMap.turbinecountservice}}台
+
无通讯:{{ realData.attributeMap.turbinecountdisconnected}}台
@@ -58,16 +58,18 @@ import { useRoute } from 'vue-router' import { getParamList } from '/@/api/backend/SystemParam/request' import { queryfaultCodeDict } from '/@/api/backend/theoreticalpowerCurve/request' import { useEnumStore } from '/@/stores/enums' +import { useFaultsStore } from '/@/stores/faults' import {equipList} from "/@/api/backend/realData/request"; const route = useRoute() const enumStore = useEnumStore() +const faultCodeDict = useFaultsStore() const d = new Date() const { t } = useI18n() let timer: any = null let myTable = ref() -const windList=ref([]) + const overviewSlotData= ref('') @@ -235,13 +237,17 @@ const StatusListData = () => { let color:any='' const state = getRealTimeState(item.attributeMap) let firsttriggeredcode=item.attributeMap.firsttriggeredcode + const key = `${item.madeinFactory}-${item.model}`; if (enumStore.keys.includes('FirstTriggeredCode')) { firsttriggeredcode = enumStore.data['FirstTriggeredCode'][firsttriggeredcode] } - /*if (malFunctionKeys.includes('FirstTriggeredCode')) { - firsttriggeredcode = malFunctionEnums?.[firsttriggeredcode] ?? firsttriggeredcode + if (faultCodeDict.keys.includes(key)) { + if (firsttriggeredcode == 0) { + firsttriggeredcode = ''; + } else { + firsttriggeredcode = faultCodeDict.data[key][firsttriggeredcode] ?? ''; + } } -*/ paramColorData.value.forEach((item, index) => { if (item.state == state) { color = item.color @@ -345,7 +351,6 @@ const StatusListData = () => { locked: item.attributeMap.locked, irotorspeed: item.attributeMap.irotorspeed, firsttriggeredcode:firsttriggeredcode, - //firsttriggeredcode:item.attributeMap.firsttriggeredcode, }, } }) @@ -358,53 +363,34 @@ const StatusListData = () => { } }) } -let malFunctionEnums: any = {} -/*const getMalfunctionEnums = () => { - windList.value.forEach((item)=> { - console.log({madeinfactory: item.madeinfactory, model: item.model }) - queryfaultCodeDict({madeinfactory: item.madeinfactory, model: item.model }).then((res) => { - if (res.code == 200) { - const data: any = {} - res.data.forEach((item: any) => { - data[item.code] = item.description - }) - malFunctionEnums = data - } else { - console.warn('查询故障代码字典失败:', res.message); - } - }) - }) +// 添加响应式属性以存储故障代码字典 +/*const malFunctionEnums = ref<{ [key: string]: { [code: string]: string } }>({}); -}*/ - -/*const requestedParams = new Set(); +const requestedParams = new Set(); +const failedRequests = new Set(); const fetchData = async (item: any) => { - // 创建一个唯一的键来标识参数组合 const key = `${item.madeinFactory}-${item.model}`; - // 检查这个键是否已经在 Set 中 if (requestedParams.has(key)) { - console.log('Duplicate request detected, skipping...'); return; } - // 将键添加到 Set 中 requestedParams.add(key); try { - console.log({ madeinfactory: item.madeinFactory, model: item.model }) const response = await queryfaultCodeDict({ madeinfactory: item.madeinFactory, model: item.model }); if (response.code === 200) { const data: any = {}; response.data.forEach((item: any) => { data[item.code] = item.description; }); - malFunctionEnums = data; + malFunctionEnums.value[key] = data; } else { console.warn('查询故障代码字典失败:', response.message); + failedRequests.add(key); } } catch (error) { - console.error('请求出错:', error); + failedRequests.add(key); } };*/ @@ -445,14 +431,6 @@ onMounted(() => { res.data.map((item: any) => { deviceCode.value.push(item.code) }) - windList.value=res.data.map((item: any) => { - //fetchData(item) - return { - madeinfactory:item.madeinFactory, - model: item.model ?? '-', - } - }) - //getMalfunctionEnums() }) overviewList() @@ -535,40 +513,69 @@ $labelHeight: 30px; height: v-bind('computedHeight.centerHeight'); margin-bottom: 0; .el-scrollbar { - height: calc(100% - 20px); + height: calc(100% - 50px); } .homeHeader{ display: flex; - justify-content: space-between; + justify-content: flex-start; + /*justify-content: space-between;*/ .cardLabel{ margin-right: 10px; white-space: nowrap; + display: flex; + justify-content: center; + align-items: center; + vertical-align: middle } .cardBtn{ white-space: nowrap; :deep(.el-radio-group){ flex-wrap: nowrap; - } :deep(.el-radio){ - margin-right: 12px; + margin-right: 10px; } } .headerRight{ - width: 100%; + /*width: 100%;*/ + margin-left: auto; + text-align: right; display: flex; background: #F0F6FF; border-radius: 8px; line-height: 30px; padding: 0 10px; .overviewItem{ - display: inline-block; .small-base{ display: inline-block; - padding-right: 8px; + padding-right: 15px; color: #4E5969; + i{ + width: 10px; + height: 10px; + aspect-ratio: 1 / 1; + border-radius: 50%; + display: inline-block; + margin-right: 5px; + } + .powerprod{ + background-color: #0277B3; + } + .idle{ + background-color: #FFB600; + } + .faulted{ + background-color: #FE3731; + } + .service{ + background-color: #00A096; + } + .disconnected{ + background-color: #999999; + } span{ color: #000000; + font-weight: 600; } } } diff --git a/ui/dasadmin/src/views/backend/home/windMatrix.vue b/ui/dasadmin/src/views/backend/home/windMatrix.vue index b270485d..92703362 100644 --- a/ui/dasadmin/src/views/backend/home/windMatrix.vue +++ b/ui/dasadmin/src/views/backend/home/windMatrix.vue @@ -1,10 +1,11 @@