From d008a10f22d7e3eb959e82326fb9ec146721b40f Mon Sep 17 00:00:00 2001 From: fengrong Date: Fri, 20 Dec 2024 17:36:05 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=95=85=E9=9A=9C=E4=B8=AD=E6=96=87?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=E7=BC=93=E5=AD=98=E5=88=B0localstroge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/dasadmin/src/stores/faults.ts | 18 +++++++ ui/dasadmin/src/stores/interface/index.ts | 6 +++ ui/dasadmin/src/views/backend/home/home.vue | 39 +++++++-------- .../src/views/backend/home/windMatrixpage.vue | 21 +++----- ui/dasadmin/src/views/backend/login.vue | 49 ++++++++++++++++++- 5 files changed, 95 insertions(+), 38 deletions(-) create mode 100644 ui/dasadmin/src/stores/faults.ts 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/home/home.vue b/ui/dasadmin/src/views/backend/home/home.vue index 4364a6fe..1c9f11ff 100644 --- a/ui/dasadmin/src/views/backend/home/home.vue +++ b/ui/dasadmin/src/views/backend/home/home.vue @@ -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,36 +363,34 @@ const StatusListData = () => { } }) } -let malFunctionEnums: any = {} +// 添加响应式属性以存储故障代码字典 +/*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); } };*/ @@ -428,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() diff --git a/ui/dasadmin/src/views/backend/home/windMatrixpage.vue b/ui/dasadmin/src/views/backend/home/windMatrixpage.vue index e2434b8e..700c92b4 100644 --- a/ui/dasadmin/src/views/backend/home/windMatrixpage.vue +++ b/ui/dasadmin/src/views/backend/home/windMatrixpage.vue @@ -11,7 +11,6 @@ '': item.standard==0, 'wind-offline': item.attributeMap.processedoperationmode == 33 }"> -
@@ -69,12 +68,12 @@
- - {{ getFaultDescription(item) }} + {{ item.attributeMap.firsttriggeredcode }} + 已锁定
@@ -412,13 +411,7 @@ const getSafeImagePath = (item, type) => { }; -const getFaultDescription=(item)=>{ - /*fetchData(item) - let firsttriggeredcode=item.attributeMap.firsttriggeredcode - if (malFunctionKeys.includes('FirstTriggeredCode')) { - firsttriggeredcode = malFunctionEnums?.[firsttriggeredcode] ?? firsttriggeredcode - } - return firsttriggeredcode*/ +/*const getFaultDescription=(item)=>{ const key = `${item.madeinFactory}-${item.model}`; if (failedRequests.has(key)) { return ''; @@ -459,17 +452,15 @@ const fetchData = async (item: any) => { response.data.forEach((item: any) => { data[item.code] = item.description; }); - //malFunctionEnums = data; malFunctionEnums[key] = data; } else { console.warn('查询故障代码字典失败:', response.message); failedRequests.add(key); } } catch (error) { - //console.error('查询故障代码字典失败', error); failedRequests.add(key); } -}; +};*/ diff --git a/ui/dasadmin/src/views/backend/login.vue b/ui/dasadmin/src/views/backend/login.vue index 0c5cef4e..fa70e881 100644 --- a/ui/dasadmin/src/views/backend/login.vue +++ b/ui/dasadmin/src/views/backend/login.vue @@ -92,6 +92,7 @@ import { editDefaultLang } from '/@/lang/index' import { useConfig } from '/@/stores/config' import { useAdminInfo } from '/@/stores/adminInfo' import { useEnumStore } from '/@/stores/enums' +import {useFaultsStore} from "/@/stores/faults" import { login } from '/@/api/backend' import { buildValidatorData } from '/@/utils/validate' import router from '/@/router' @@ -100,11 +101,15 @@ import toggleDark from '/@/utils/useDark' import { fullUrl } from '/@/utils/common' import { adminBaseRoutePath } from '/@/router/static/adminBase' import { getAllEnumData } from '/@/api/backend/Enumeration/request' +import {equipList} from "/@/api/backend/realData/request"; +import { queryfaultCodeDict } from '/@/api/backend/theoreticalpowerCurve/request' + let timer: number const config = useConfig() const adminInfo = useAdminInfo() const enumsStore = useEnumStore() +const FaultsStore = useFaultsStore() const isSmall = ref(window.screen.width < 620 ? true : false) @@ -192,7 +197,6 @@ const load = () => { state.captcha = 'data:image\/png;base64,' + res.data.img }) } - const getEnumsData = () => { getAllEnumData().then((res) => { if (res.success) { @@ -213,6 +217,49 @@ const getEnumsData = () => { } }) } +equipList({ objectType: 10002 }).then((res) => { + res.data.map((item: any) => { + fetchData(item) + return { + madeinfactory:item.madeinFactory, + model: item.model ?? '-', + } + }) +}) +const malFunctionEnums = ref<{ [key: string]: { [code: string]: string } }>({}); + +const requestedParams = new Set(); +const failedRequests = new Set(); +const fetchData = async (item: any) => { + const key = `${item.madeinFactory}-${item.model}`; + if (requestedParams.has(key)) { + return; + } + requestedParams.add(key); + const keys = requestedParams; + 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.value[key] = data; + const datas=malFunctionEnums.value + sessionStorage.setItem( + 'faultCodeDict', + JSON.stringify({ + datas, + keys:Array.from(requestedParams), + }) + ) + FaultsStore.setKeys(Array.from(requestedParams)) + FaultsStore.setData(datas) + } else { + console.warn('查询故障代码字典失败:', response.message); + failedRequests.add(key); + } + +}; const onSubmit = () => { state.submitLoading = true From df61607281637e537363ec93f80a3530a91a2ccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=B7=E6=88=90=E4=BC=9F?= Date: Mon, 23 Dec 2024 10:33:46 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/das/common/log/MdcExecutor.java | 33 --------- .../com/das/common/log/RequestIdUtils.java | 32 -------- .../das/common/log/RequestLogInterceptor.java | 74 ------------------- .../com/das/common/utils/CommonFunction.java | 8 +- .../cache/service/impl/IotModelCacheImpl.java | 3 +- .../functions/FunctionWindSpeedFactor.java | 4 +- .../das/modules/calc/service/CalcService.java | 2 +- .../data/controller/DataController.java | 7 +- .../modules/data/service/TDEngineService.java | 12 +-- .../data/service/impl/DataServiceImpl.java | 6 +- .../fdr/service/MinioViewsServcie.java | 2 +- .../impl/FaultRecorderServiceImpl.java | 4 +- .../service/impl/NodeMessageServiceImpl.java | 2 +- .../node/service/impl/SysNodeServiceImpl.java | 2 +- .../plc/service/impl/PlcLogsServiceImpl.java | 4 +- 15 files changed, 29 insertions(+), 166 deletions(-) delete mode 100644 das/src/main/java/com/das/common/log/MdcExecutor.java delete mode 100644 das/src/main/java/com/das/common/log/RequestIdUtils.java delete mode 100644 das/src/main/java/com/das/common/log/RequestLogInterceptor.java 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/common/utils/CommonFunction.java b/das/src/main/java/com/das/common/utils/CommonFunction.java index 2880580e..206e225d 100644 --- a/das/src/main/java/com/das/common/utils/CommonFunction.java +++ b/das/src/main/java/com/das/common/utils/CommonFunction.java @@ -15,10 +15,6 @@ import java.util.stream.Collectors; @Slf4j public class CommonFunction { - /** - * description:定义一个System.out.println(纯属个人习惯) - **/ - private static int objectNullSystemOutFlag = 0; /** * description:判断当前对象是否为空(包括所有属性为空) @@ -51,6 +47,10 @@ public class CommonFunction { //得到属性名 fieldName = field.getName(); //打印输出(调试用可忽略) + /** + * description:定义一个System.out.println(纯属个人习惯) + **/ + int objectNullSystemOutFlag = 0; if (objectNullSystemOutFlag == 1) { System.out.println("属性类型:" + fieldType + ",属性名:" + fieldName + ",属性值:" + fieldValue); } 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/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 a283bfe2..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 @@ -194,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; @@ -238,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; From 38e919f045f17bfeeeb34d7de4e4ae67928f3765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=B7=E6=88=90=E4=BC=9F?= Date: Mon, 23 Dec 2024 10:46:22 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/das/common/utils/CommonFunction.java | 8 ++++---- .../com/das/modules/calc/domain/entity/CalcModule.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/das/src/main/java/com/das/common/utils/CommonFunction.java b/das/src/main/java/com/das/common/utils/CommonFunction.java index 206e225d..2880580e 100644 --- a/das/src/main/java/com/das/common/utils/CommonFunction.java +++ b/das/src/main/java/com/das/common/utils/CommonFunction.java @@ -15,6 +15,10 @@ import java.util.stream.Collectors; @Slf4j public class CommonFunction { + /** + * description:定义一个System.out.println(纯属个人习惯) + **/ + private static int objectNullSystemOutFlag = 0; /** * description:判断当前对象是否为空(包括所有属性为空) @@ -47,10 +51,6 @@ public class CommonFunction { //得到属性名 fieldName = field.getName(); //打印输出(调试用可忽略) - /** - * description:定义一个System.out.println(纯属个人习惯) - **/ - int objectNullSystemOutFlag = 0; if (objectNullSystemOutFlag == 1) { System.out.println("属性类型:" + fieldType + ",属性名:" + fieldName + ",属性值:" + fieldValue); } 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))){ From 464a74cd5c745b97c54f54ecc4971d737d4c5575 Mon Sep 17 00:00:00 2001 From: geting <13585118195@163.com> Date: Mon, 23 Dec 2024 13:57:50 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=A6=96=E8=A7=A6?= =?UTF-8?q?=E6=95=85=E9=9A=9C=E7=A0=81=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/dasadmin/src/lang/common/zh-cn/alarm.ts | 1 + .../src/views/backend/alarms/index.vue | 137 +++++++++++------- ui/dasadmin/src/views/backend/alarms/type.ts | 1 + .../src/views/backend/report/SingleReport.vue | 129 ++++++++++------- .../backend/statAnalysis/trendAnalysis.vue | 2 +- .../backend/statAnalysis/trendComparison.vue | 2 +- 6 files changed, 165 insertions(+), 107 deletions(-) diff --git a/ui/dasadmin/src/lang/common/zh-cn/alarm.ts b/ui/dasadmin/src/lang/common/zh-cn/alarm.ts index dcca6c6f..f892d876 100644 --- a/ui/dasadmin/src/lang/common/zh-cn/alarm.ts +++ b/ui/dasadmin/src/lang/common/zh-cn/alarm.ts @@ -1,6 +1,7 @@ export default { select: '请选择', selectDate: '选择日期时间', + firstTriggeredCode: '首触故障码', type: '类别', alarmTime: '告警时间', } diff --git a/ui/dasadmin/src/views/backend/alarms/index.vue b/ui/dasadmin/src/views/backend/alarms/index.vue index d3025b19..12865d49 100644 --- a/ui/dasadmin/src/views/backend/alarms/index.vue +++ b/ui/dasadmin/src/views/backend/alarms/index.vue @@ -22,10 +22,22 @@ :placeholder="t('alarm.select') + t('airBlower.airBlowerNumber')" class="alarmSelect" clearable + @change="handleairBlowerChange" >
+
{{ t('alarm.firstTriggeredCode') }}
+ + + +
{{ t('alarm.type') }}
@@ -156,7 +168,7 @@ const getFormattedDate = (offset: number) => { // 风机编号 const airBlowerNumberValue = ref('') -const airBlowerList = ref([{ label: '', value: '' }]) +const airBlowerList = ref([{ label: '', value: '', model: '', madeinFactory: '' }]) // 类别 const alarmTypeValue = ref(2) const alarmTypes = ref([ @@ -164,6 +176,8 @@ const alarmTypes = ref([ { label: '告警', value: 1 }, { label: '提示', value: 0 }, ]) +const firstTriggeredCode = ref('') +const firstTriggeredCodes: any = ref([]) const isLoading = ref(false) const searchOperate = () => { isLoading.value = true @@ -189,6 +203,7 @@ const searchalarms = (): GetAlarmsTableParam => { deviceCode: deviceCode, pageNum: paginationOptions.current, pageSize: paginationOptions.pageSize, + firstTriggeredCode: firstTriggeredCode.value, } } @@ -207,28 +222,27 @@ const getcurrentPage = () => { const getalarmsList = async () => { const transparams = searchalarms() - console.log('🚀 ~ getalarmsList ~ transparams:', transparams) - getAlarmListReq(transparams).then((res: any) => { - isLoading.value = false - if (res.code == 200) { - paginationOptions.total = res.total - alarmsTableData.value = res.rows.map((item: any) => { - console.log('🚀 ~ alarmsTableData.value=res.rows.map ~ item:', item) - const descriptions = descriptionMap.value[`${item.madeinFactory}_${item.model}`] || {} - return { - ...item, - eventTimeFormate: timestampToTime(item.eventTime), - codeDescriptions: descriptions[item.firstTriggeredCode] || item.firstTriggeredCode, - } - }) - } else { - ElMessage.error(res.msg ?? '查询失败') - } - }) - // .catch((err) => { - // isLoading.value = false - // ElMessage.error(err ?? '查询失败') - // }) + getAlarmListReq(transparams) + .then((res: any) => { + isLoading.value = false + if (res.code == 200) { + paginationOptions.total = res.total + alarmsTableData.value = res.rows.map((item: any) => { + const descriptions = descriptionMap.value[`${item.madeinFactory}_${item.model}`] || {} + return { + ...item, + eventTimeFormate: timestampToTime(item.eventTime), + codeDescriptions: descriptions[item.firstTriggeredCode] || item.firstTriggeredCode, + } + }) + } else { + ElMessage.error(res.msg ?? '查询失败') + } + }) + .catch((err) => { + isLoading.value = false + ElMessage.error(err ?? '查询失败') + }) } const descriptionMap = computed(() => { @@ -239,8 +253,6 @@ const descriptionMap = computed(() => { return acc }, {}) }) - console.log('🚀 ~ map[item.key]=item.value.reduce ~ map:', map) - return map }) @@ -322,54 +334,64 @@ const getDateRange = (type: 'week' | 'month') => { } } +const handleairBlowerChange = (value: any) => { + if (value) { + const selectObj: any = airBlowerList.value.find((item) => { + return item.value == value + }) + firstTriggeredCode.value = '' + firstTriggeredCodes.value = faultCodeMap[`${selectObj.madeinFactory}_${selectObj.model}`] + } else { + firstTriggeredCode.value = '' + firstTriggeredCodes.value = faultCodeMap[`${airBlowerList.value[0].madeinFactory}_${airBlowerList.value[0].model}`] + } +} + const faultCodeMap: any = {} -onMounted(() => { - equipList({ - // orgId: adminInfo.orgid, - objectType: 10002, - }).then((res) => { + +onMounted(async () => { + try { + const res = await equipList({ + objectType: 10002, + }) if (res.code == 200) { airBlowerList.value = res.data.map((item: any) => { return { label: item.name, value: item.code, + madeinFactory: item.madeinFactory, + model: item.model, } }) - getalarmsList() - } - }) - theoreticalpowerCurveList() - .then((res: any) => { - if (res.code == 200) { - paginationOptions.total = res.total - res.rows.forEach((item: any, index: number) => { - getfaultCodeDict(item) - }) + const theoreticalRes = await theoreticalpowerCurveList() + if (theoreticalRes.code == 200) { + await getfaultCodeDict(theoreticalRes.rows) + firstTriggeredCodes.value = faultCodeMap[`${airBlowerList.value[0].madeinFactory}_${airBlowerList.value[0].model}`] + console.log(firstTriggeredCodes.value) } else { - ElMessage.error(res.msg ?? '查询失败') + ElMessage.error(theoreticalRes.msg ?? '查询失败') } - }) - .catch((err) => { - ElMessage.error(err?.response?.data?.msg ?? '查询失败') - }) + } + } catch (err) { + ElMessage.error(err ?? '查询失败') + } }) -const getfaultCodeDict = (data: any) => { - queryfaultCodeDict({ madeinfactory: data.madeinfactory, model: data.model }).then((res: any) => { +const getfaultCodeDict = async (data: any) => { + const promises = data.map(async (item: any) => { + const res = await queryfaultCodeDict({ madeinfactory: item.madeinfactory, model: item.model }) if (res.code == 200) { - const deflautList: any = [] - res.data.forEach((item: any) => { - deflautList.push({ - code: item.code, - description: item.description, - }) - }) - faultCodeMap[`${data.madeinfactory}_${data.model}`] = deflautList + const deflautList = res.data.map((faultItem: any) => ({ + code: faultItem.code, + description: faultItem.description, + })) + faultCodeMap[`${item.madeinfactory}_${item.model}`] = deflautList } else { ElMessage.warning('查询失败') } }) + await Promise.all(promises) } const openDefalt = (row: any) => { @@ -414,11 +436,14 @@ $paginationHeight: 32px; align-items: center; // width: 320px; .alarmSelect { - width: 200px; + width: 150px; :deep(.el-select__wrapper) { height: 40px; } } + .firstTriggeredCodeSelect { + width: 220px; + } } } .mainMain { diff --git a/ui/dasadmin/src/views/backend/alarms/type.ts b/ui/dasadmin/src/views/backend/alarms/type.ts index 0978d111..20f262d3 100644 --- a/ui/dasadmin/src/views/backend/alarms/type.ts +++ b/ui/dasadmin/src/views/backend/alarms/type.ts @@ -26,6 +26,7 @@ export type GetAlarmsTableParam = { eventLevel?: string | number | null pageNum?: Number pageSize?: Number + firstTriggeredCode: string | number | null } export enum AlarmsFieldsEnums { diff --git a/ui/dasadmin/src/views/backend/report/SingleReport.vue b/ui/dasadmin/src/views/backend/report/SingleReport.vue index 982d1f92..8c141e59 100644 --- a/ui/dasadmin/src/views/backend/report/SingleReport.vue +++ b/ui/dasadmin/src/views/backend/report/SingleReport.vue @@ -8,7 +8,7 @@ v-model="windBlowerValue" @change="selectWindBlower" :placeholder="'请选择' + t('statAnalysis.deviceId')" - class="windBlowerSelect commonSelect" + class="commonSelect" > @@ -29,11 +29,16 @@ +
+
{{ t('statAnalysis.calFunction') }}
+ + +
模板
- +