From 4badcfcc036009ab7db3b9fc3ecc9d21a6b9eb6b Mon Sep 17 00:00:00 2001 From: fengrong Date: Tue, 3 Dec 2024 11:03:46 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E9=A3=8E=E6=9C=BA=E9=A3=8E=E9=80=9F?= =?UTF-8?q?=E5=8A=9F=E7=8E=87=E7=B3=BB=E6=95=B0=E7=BB=B4=E6=8A=A4=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/backend/powerCurvefactor/index.vue | 117 ++++++++---------- 1 file changed, 53 insertions(+), 64 deletions(-) diff --git a/ui/dasadmin/src/views/backend/powerCurvefactor/index.vue b/ui/dasadmin/src/views/backend/powerCurvefactor/index.vue index 63289552..69ebf072 100644 --- a/ui/dasadmin/src/views/backend/powerCurvefactor/index.vue +++ b/ui/dasadmin/src/views/backend/powerCurvefactor/index.vue @@ -17,18 +17,18 @@ :row-key="getRowKey" :span-method="objectSpanMethod" class="tablePart"> - + - +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -101,8 +55,10 @@ import {powerCurveQuery,powerImport,powerExport} from "/@/api/backend/powerCurve import { ElMessage } from 'element-plus' import { encrypt_aes, generateRandomNumber } from '/@/utils/crypto' import type { TableColumnCtx } from 'element-plus' +import { dataMethods } from './utils' -/*interface User { + +interface User { id:string, turbineId:string, name:string, @@ -110,7 +66,9 @@ import type { TableColumnCtx } from 'element-plus' speedMin:string, speedMax:string, factorK:string, - factorB:string + factorB:string, + NameIndex:string, + count:number } interface SpanMethodProps { @@ -119,27 +77,55 @@ interface SpanMethodProps { rowIndex: number columnIndex: number } -const objectSpanMethod = ({ - row, - column, - rowIndex, - columnIndex, - }: SpanMethodProps) => { + +const objectSpanMethod = ({row, column, rowIndex, columnIndex,}: SpanMethodProps) => { if (columnIndex === 0) { - if (rowIndex % 2 === 0) { + if (rowIndex % 7 === 0) { + return { + rowspan: 7, + colspan: 1, + }; + } else { + return { + rowspan: 0, + colspan: 0, + }; + } + } + + /*if (columnIndex === 0) { + if (rowIndex % row.count === 0) { return { - rowspan: 2, + rowspan: row.count, colspan: 1, - } + }; } else { return { rowspan: 0, colspan: 0, - } + }; } - } -}*/ + }*/ +} const tableData=ref([]) +let obj = {} +const formatData = (list) => { +debugger + list.forEach(item => { + let count = list.filter(listItem => listItem.name === item.name).length + if (obj[item.name] ) { + obj[item.name]++ + + } else { + obj[item.name] = 1 + } + item.NameIndex = obj[item.name] + + item.count = count + }) + tableData.value = list +} + const formQuery = reactive({ pageSize: 20, @@ -152,6 +138,7 @@ const currentPage = ref(1) const currentPageSize = ref(20) const handleSizeChange = (val: number) => { formQuery.pageSize = val + //formQuery.pageNum = 1 getTableData(formQuery) } const handleCurrentChange = (val: number) => { @@ -163,7 +150,7 @@ const getTableData = (formQuery) => { powerCurveQuery(formQuery).then((res: any) => { if (res.code == 200) { pageTotal.value = res.data.total - tableData.value = (res.data.rows || []).map((item: { speedMin?: number | string; speedMax?: number | string }) => { + tableData.value = res.data.rows.map((item: { speedMin?: number | string; speedMax?: number | string }) => { const speedMin = item.speedMin ?? ''; const speedMax = item.speedMax ?? ''; if(speedMax==''){ @@ -179,6 +166,7 @@ const getTableData = (formQuery) => { } }); + // formatData(tableData.value) } else { ElMessage.error(res.msg) } @@ -256,6 +244,7 @@ const Export = () => { document.body.removeChild(a) }) } + onMounted(() => { getTableData(formQuery) }) From 413582314410ab3f8e191a604d7841ede9f93cc7 Mon Sep 17 00:00:00 2001 From: yu Date: Tue, 3 Dec 2024 11:24:41 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E8=B6=8B=E5=8A=BF=E5=AF=B9=E6=AF=94?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E4=BC=98=E5=8C=96;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/StatisticalAnalysisServiceImpl.java | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/das/src/main/java/com/das/modules/page/service/impl/StatisticalAnalysisServiceImpl.java b/das/src/main/java/com/das/modules/page/service/impl/StatisticalAnalysisServiceImpl.java index 558bdf19..e5a4123e 100644 --- a/das/src/main/java/com/das/modules/page/service/impl/StatisticalAnalysisServiceImpl.java +++ b/das/src/main/java/com/das/modules/page/service/impl/StatisticalAnalysisServiceImpl.java @@ -78,9 +78,6 @@ public class StatisticalAnalysisServiceImpl implements StatisticalAnalysisServic */ @Override public void trendAnalyseExport(List param, HttpServletRequest request, HttpServletResponse response) { - if (param == null || param.isEmpty()) { - throw new ServiceException("参数列表不能为空"); - } //根据条件获取历史数据 List>>> mapsList = new ArrayList<>(); for (TrendAnalyseDto trendAnalyseDto : param) { @@ -271,12 +268,22 @@ public class StatisticalAnalysisServiceImpl implements StatisticalAnalysisServic */ private void setTrendContrastExcelValue(Map>> maps, List> dataList) { + Map mapKey = new HashMap<>(); + int num =1; + int flagNum = 0; for (Map.Entry>> stringMapEntry : maps.entrySet()) { - int flagNum = 0; for (Map.Entry> mapEntry : stringMapEntry.getValue().entrySet()) { List timesListstr = new ArrayList<>(); List valuesList = new ArrayList<>(); String key = mapEntry.getKey(); + if (mapKey.containsKey(key)){ + num++; + String str = key + num; + mapKey.put(str, num ); + key=str; + }else { + mapKey.put(key, num); + } for (Map.Entry stringObjectEntry : mapEntry.getValue().entrySet()) { String key1 = stringObjectEntry.getKey(); if (key1.equals("times")) { @@ -345,12 +352,21 @@ public class StatisticalAnalysisServiceImpl implements StatisticalAnalysisServic for (SnapshotValueQueryParam device : param.getDevices()) { strList.addAll(device.getAttributes()); } - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("attribute_code", strList); - List sysIotModelFields = sysIotModelFieldMapper.selectVoList(queryWrapper); - for (SysIotModelField sysIotModelField : sysIotModelFields) { - map.put(sysIotModelField.getAttributeCode(), sysIotModelField.getAttributeName()); + int num =1; + for (String code : strList) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("attribute_code", code); + List sysIotModelFields = sysIotModelFieldMapper.selectVoList(queryWrapper); + for (SysIotModelField sysIotModelField : sysIotModelFields) { + if (map.containsKey(sysIotModelField.getAttributeCode())){ + num++; + map.put(sysIotModelField.getAttributeCode()+num, sysIotModelField.getAttributeName()+num ); + }else { + map.put(sysIotModelField.getAttributeCode(), sysIotModelField.getAttributeName()); + } + } } + return map; } From c887671a5aa089bf73eaaadc72cac9f038ccef3e Mon Sep 17 00:00:00 2001 From: fengrong Date: Tue, 3 Dec 2024 11:29:56 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E5=90=88=E5=B9=B6=E8=A1=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/backend/powerCurvefactor/index.vue | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/ui/dasadmin/src/views/backend/powerCurvefactor/index.vue b/ui/dasadmin/src/views/backend/powerCurvefactor/index.vue index 69ebf072..7b1d4e86 100644 --- a/ui/dasadmin/src/views/backend/powerCurvefactor/index.vue +++ b/ui/dasadmin/src/views/backend/powerCurvefactor/index.vue @@ -79,7 +79,7 @@ interface SpanMethodProps { } const objectSpanMethod = ({row, column, rowIndex, columnIndex,}: SpanMethodProps) => { - if (columnIndex === 0) { + /*if (columnIndex === 0) { if (rowIndex % 7 === 0) { return { rowspan: 7, @@ -91,10 +91,10 @@ const objectSpanMethod = ({row, column, rowIndex, columnIndex,}: SpanMethodProps colspan: 0, }; } - } + }*/ - /*if (columnIndex === 0) { - if (rowIndex % row.count === 0) { + if (columnIndex === 0) { + if (row.NameIndex === 1) { return { rowspan: row.count, colspan: 1, @@ -103,14 +103,14 @@ const objectSpanMethod = ({row, column, rowIndex, columnIndex,}: SpanMethodProps return { rowspan: 0, colspan: 0, - }; + } } - }*/ + } } const tableData=ref([]) let obj = {} const formatData = (list) => { -debugger + obj = {} list.forEach(item => { let count = list.filter(listItem => listItem.name === item.name).length if (obj[item.name] ) { @@ -138,7 +138,6 @@ const currentPage = ref(1) const currentPageSize = ref(20) const handleSizeChange = (val: number) => { formQuery.pageSize = val - //formQuery.pageNum = 1 getTableData(formQuery) } const handleCurrentChange = (val: number) => { @@ -166,7 +165,7 @@ const getTableData = (formQuery) => { } }); - // formatData(tableData.value) + formatData(tableData.value) } else { ElMessage.error(res.msg) } From 1a3ea788dd1f43d84bc57647263a0ec5222237e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=B7=E6=88=90=E4=BC=9F?= Date: Tue, 3 Dec 2024 13:08:20 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../calc/functions/FunctionBeginOfDate.java | 52 +++++++++++++++++++ .../calc/functions/FunctionEndOfDate.java | 52 +++++++++++++++++++ .../das/modules/calc/service/CalcService.java | 11 ++-- 3 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 das/src/main/java/com/das/modules/calc/functions/FunctionBeginOfDate.java create mode 100644 das/src/main/java/com/das/modules/calc/functions/FunctionEndOfDate.java diff --git a/das/src/main/java/com/das/modules/calc/functions/FunctionBeginOfDate.java b/das/src/main/java/com/das/modules/calc/functions/FunctionBeginOfDate.java new file mode 100644 index 00000000..e8b03aa7 --- /dev/null +++ b/das/src/main/java/com/das/modules/calc/functions/FunctionBeginOfDate.java @@ -0,0 +1,52 @@ +package com.das.modules.calc.functions; + +import cn.hutool.core.date.DateUtil; +import com.googlecode.aviator.runtime.function.AbstractFunction; +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.Map; + +/** + * Aviator扩展函数 - 获取时间维度的起始时间 + * 函数格式: beginOf(Date, TimeDim) + * + */ +@Slf4j +public class FunctionBeginOfDate extends AbstractFunction { + + public FunctionBeginOfDate() { + } + + @Override + public String getName() { + return "beginOfDate"; + } + + @Override + public AviatorObject call(Map env, AviatorObject dateData, AviatorObject dimData) { + Date date = (Date) dateData.getValue(env); + String dim = (String) dimData.getValue(env); + + Date result = null; + switch (dim) { + case "day": + result = DateUtil.beginOfDay(date); + break; + case "week": + result = DateUtil.beginOfWeek(date); + break; + case "month": + result = DateUtil.beginOfMonth(date); + break; + case "year": + result = DateUtil.beginOfYear(date); + break; + default: + log.error("不支持的维度: {}", dim); + } + return AviatorRuntimeJavaType.valueOf(result); + } +} diff --git a/das/src/main/java/com/das/modules/calc/functions/FunctionEndOfDate.java b/das/src/main/java/com/das/modules/calc/functions/FunctionEndOfDate.java new file mode 100644 index 00000000..8d1050ba --- /dev/null +++ b/das/src/main/java/com/das/modules/calc/functions/FunctionEndOfDate.java @@ -0,0 +1,52 @@ +package com.das.modules.calc.functions; + +import cn.hutool.core.date.DateUtil; +import com.googlecode.aviator.runtime.function.AbstractFunction; +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.Map; + +/** + * Aviator扩展函数 - 获取时间维度的起始时间 + * 函数格式: beginOf(Date, TimeDim) + * + */ +@Slf4j +public class FunctionEndOfDate extends AbstractFunction { + + public FunctionEndOfDate() { + } + + @Override + public String getName() { + return "endOfDate"; + } + + @Override + public AviatorObject call(Map env, AviatorObject dateData, AviatorObject dimData) { + Date date = (Date) dateData.getValue(env); + String dim = (String) dimData.getValue(env); + + Date result = null; + switch (dim) { + case "day": + result = DateUtil.endOfDay(date); + break; + case "week": + result = DateUtil.endOfWeek(date); + break; + case "month": + result = DateUtil.endOfMonth(date); + break; + case "year": + result = DateUtil.endOfYear(date); + break; + default: + log.error("不支持的维度: {}", dim); + } + return AviatorRuntimeJavaType.valueOf(result); + } +} 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 2e8e3da6..af47fab7 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 @@ -6,10 +6,7 @@ import com.das.common.utils.AdminRedisTemplate; import com.das.modules.cache.service.CacheService; import com.das.modules.calc.domain.entity.CalcModule; import com.das.modules.calc.domain.vo.CalcModuleVo; -import com.das.modules.calc.functions.FunctionCacheValue; -import com.das.modules.calc.functions.FunctionRealData; -import com.das.modules.calc.functions.FunctionSaveCalcData; -import com.das.modules.calc.functions.FunctionSumValue; +import com.das.modules.calc.functions.*; import com.das.modules.calc.mapper.CalcModuleMapper; import com.das.modules.data.service.DataService; import com.googlecode.aviator.AviatorEvaluator; @@ -125,6 +122,12 @@ public class CalcService { FunctionSumValue sumv = new FunctionSumValue(dataService, cacheService); aviator.addFunction(sumv); + + FunctionBeginOfDate beginOfDate = new FunctionBeginOfDate(); + aviator.addFunction(beginOfDate); + + FunctionEndOfDate endOfDate = new FunctionEndOfDate(); + aviator.addFunction(endOfDate); } /** From 77e7e0f050d97dabed9afd5c52d0db0f70a188bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E4=BA=91=E9=B9=8F?= Date: Tue, 3 Dec 2024 13:52:11 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E6=95=85=E9=9A=9C=E5=BD=95=E6=B3=A2?= =?UTF-8?q?=EF=BC=9A=E5=9B=BE=E8=A1=A8=E6=98=BE=E7=A4=BA=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=AF=AB=E7=A7=92=20=E5=8D=95=E9=A3=8E?= =?UTF-8?q?=E6=9C=BA=EF=BC=9A=E6=B7=BB=E5=8A=A0=E9=A3=8E=E6=9C=BA=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E6=8C=89=E9=92=AE=EF=BC=8C=E6=B7=BB=E5=8A=A0=E9=A3=8E?= =?UTF-8?q?=E6=9C=BA=E5=90=8D=E7=A7=B0=E5=9E=8B=E5=8F=B7=EF=BC=8C=E5=AD=90?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E5=88=86=E7=B1=BB=E6=98=BE=E7=A4=BA=E8=B0=83?= =?UTF-8?q?=E6=95=B4=20=E9=A3=8E=E6=9C=BA=E7=9F=A9=E9=98=B5=EF=BC=9A?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E5=8D=95=E9=A3=8E=E6=9C=BA=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=A3=8E=E6=9C=BA=E5=90=8D=E7=A7=B0=E5=9E=8B=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/backend/airBlower/request.ts | 1 + .../src/views/backend/WindBlower/index.vue | 136 ++++++++++++++++-- .../backend/equipment/airBlower/index.vue | 2 + .../views/backend/equipment/airBlower/type.ts | 1 + .../src/views/backend/home/homewindMatrix.vue | 2 + .../src/views/backend/home/windMatrix.vue | 2 + .../src/views/backend/malfunction/index.vue | 6 +- 7 files changed, 138 insertions(+), 12 deletions(-) diff --git a/ui/dasadmin/src/api/backend/airBlower/request.ts b/ui/dasadmin/src/api/backend/airBlower/request.ts index d254aee4..c7d26c4d 100644 --- a/ui/dasadmin/src/api/backend/airBlower/request.ts +++ b/ui/dasadmin/src/api/backend/airBlower/request.ts @@ -8,6 +8,7 @@ export const getAirBlowerListReq = () => { belongLine: string irn: string madeinfactory: string + deviceCode: string model: string modelId: string name: string diff --git a/ui/dasadmin/src/views/backend/WindBlower/index.vue b/ui/dasadmin/src/views/backend/WindBlower/index.vue index f5e8dc3f..822c80cc 100644 --- a/ui/dasadmin/src/views/backend/WindBlower/index.vue +++ b/ui/dasadmin/src/views/backend/WindBlower/index.vue @@ -35,7 +35,9 @@
-
实时预览
+
+ {{ '名称:' + route.query.name + '    ' + '型号:' + route.query.model }} +
机组运行状态: @@ -101,6 +103,14 @@
+
+ + + + + + +
已锁定 {{ realTimeDataState }} @@ -305,14 +315,15 @@