From 6c8637b910db519e34ba614d92dc33efc66f3ade Mon Sep 17 00:00:00 2001 From: geting <13585118195@163.com> Date: Thu, 16 Jan 2025 17:06:02 +0800 Subject: [PATCH 1/6] bugFixed --- .../src/views/backend/SystemParam/index.vue | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/ui/dasadmin/src/views/backend/SystemParam/index.vue b/ui/dasadmin/src/views/backend/SystemParam/index.vue index 83e3c59c..66509d23 100644 --- a/ui/dasadmin/src/views/backend/SystemParam/index.vue +++ b/ui/dasadmin/src/views/backend/SystemParam/index.vue @@ -321,26 +321,25 @@ const currentColor = ref() const curveColors: any = ref([]) const submitCurveColors = ref([]) const initColor = [ - '#FF6666', // 浅红色 - '#66FF66', // 浅绿色 - '#6666FF', // 浅蓝色 - '#FFFF66', // 浅黄色 - '#FF66FF', // 浅品红 - '#66FFFF', // 浅青色 - '#FF9966', // 温和橙色 - '#9966FF', // 温和紫色 - '#FFFF99', // 浅米黄色 - '#FF9999', // 温和红色 - '#99FF99', // 温和绿色 - '#9999FF', // 温和蓝色 - '#FF66B2', // 浅红紫色 - '#9966B2', // 淡紫色 - '#FF8066', // 浅橙红色 - '#66FFB2', // 清新青绿色 - '#9966A6', // 深紫色调 - '#FFFF99', // 黄绿色 - '#FF6666', // 淡红色 - '#4D66FF', // 深蓝色 + '#3357FF', + '#2ECC71', + '#FF5733', + '#FFBD33', + '#FF33A6', + '#33A6FF', + '#FF8C00', + '#00FFB3', + '#B33FFF', + '#F9E74F', + '#FF9A8B', + '#5DBA61', + '#1E90FF', + '#F15BB5', + '#56CCF2', + '#F8C8DC', + '#B3FF57', + '#FF6F61', + '#33FF57', ] const EditCurvecolor = (data: any) => { From a4b307765a96e66007deacc1719682b348b58e5e Mon Sep 17 00:00:00 2001 From: geting <13585118195@163.com> Date: Fri, 17 Jan 2025 09:21:33 +0800 Subject: [PATCH 2/6] bugfixed --- .../statAnalysis/powerCurveAnalysis.vue | 73 +++++++++++-------- .../backend/statAnalysis/trendAnalysis.vue | 2 +- .../backend/statAnalysis/trendComparison.vue | 4 +- 3 files changed, 47 insertions(+), 32 deletions(-) diff --git a/ui/dasadmin/src/views/backend/statAnalysis/powerCurveAnalysis.vue b/ui/dasadmin/src/views/backend/statAnalysis/powerCurveAnalysis.vue index 7056910b..3dc30823 100644 --- a/ui/dasadmin/src/views/backend/statAnalysis/powerCurveAnalysis.vue +++ b/ui/dasadmin/src/views/backend/statAnalysis/powerCurveAnalysis.vue @@ -288,7 +288,7 @@ const getDateRange = (type: 'week' | 'month') => { return [startOfMonth, endOfMonth] } } - +const theoryData = ref([]) const isLoading = ref(false) const statAnalysisOperate = () => { const deviceId = statAnalysisDeviceId.value.split(':')[2] @@ -359,9 +359,7 @@ const statAnalysisOperate = () => { const seriesData = iGenPower.map((item: any, index: number) => { return [getCutDecimalsValue(iWindSpeed[index], 2), getCutDecimalsValue(item, 2)] }) - // seriesData.sort((a: any, b: any) => { - // return a[0] - b[0] - // }) + seriesDataInit.value = seriesData calculateData.value = calculateAverages(seriesDataInit.value) updateChart() @@ -371,6 +369,7 @@ const statAnalysisOperate = () => { const seriesData = resData1.map((item: any) => { return [getCutDecimalsValue(item.speed, 2), getCutDecimalsValue(item.power, 2)] }) + theoryData.value = seriesData const series = { type: 'line', data: seriesData, @@ -391,33 +390,49 @@ const statAnalysisOperate = () => { }) } -const statAnalysisExport = () => { - const params = statAnalysisFatory.value ? statAnalysisFatory.value : statAnalysisDeviceId.value - const windSource = statAnalysisSelectOptions.speedSource.filter((item: any) => item.value == statAnalysisSpeedSource.value) - const requestData = { - devices: [ - { - deviceId: statAnalysisDeviceId.value.split(':')[2], - attributes: [statAnalysisSpeedSource.value, 'AvgActivePower_10min'], - }, - ], - startTime: new Date(statAnalysisTime.value[0]).getTime(), - endTime: new Date(statAnalysisTime.value[1]).getTime(), - madeinfactory: params.split(':')[0], - model: params.split(':')[1], - windSource: windSource[0]['label'], - displayCurve: AvgWindSpeedSwitch.value ? 1 : 0, +const escapeCsvValue = (value: any) => { + if (typeof value === 'string') { + // 如果值包含逗号、双引号或换行符,进行转义 + return `"${value.replace(/"/g, '""')}"` } - powerCurveExport(requestData).then((res: any) => { - const downloadUrl = window.URL.createObjectURL(res) - const a = document.createElement('a') - a.href = downloadUrl - a.download = '功率曲线' + new Date().getTime() - document.body.appendChild(a) - a.click() - window.URL.revokeObjectURL(downloadUrl) - document.body.removeChild(a) + return value +} + +const statAnalysisExport = () => { + const windSource = statAnalysisSelectOptions.speedSource.filter((item: any) => item.value == statAnalysisSpeedSource.value) + const csvHeaders = ['风机名称' + '\t', windSource[0]['label'] + '\t', '功率' + '\t', '理论风速' + '\t', '理论功率' + '\t'].join(',') + '\n' + const deviceRow = statAnalysisSelectOptions.deviceId.filter((item: any) => item.value == statAnalysisDeviceId.value) + let sortseriesDataInit = [...seriesDataInit.value] + sortseriesDataInit.sort((a: any, b: any) => { + return a[0] - b[0] }) + const exportExcelData1 = chartType.value === 'scatter' ? sortseriesDataInit : calculateData.value + const exportExcelData: any = [] + exportExcelData1.forEach((item: any, index: number) => { + let theoryItem0 = (theoryData.value[index] && theoryData.value[index][0]) || '' + let theoryItem1 = (theoryData.value[index] && theoryData.value[index][1]) || '' + const dataItem = [ + escapeCsvValue(deviceRow[0]['label']) + '\t', + escapeCsvValue(item[0]) + '\t', + escapeCsvValue(item[1]) + '\t', + escapeCsvValue(theoryItem0) + '\t', + escapeCsvValue(theoryItem1) + '\t', + ] + exportExcelData.push(dataItem.join(',')) + }) + + const csvContent = csvHeaders + exportExcelData.join('\n') + const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' }) + const link = document.createElement('a') + if (link.download !== undefined) { + const url = URL.createObjectURL(blob) + link.setAttribute('href', url) + link.setAttribute('download', '功率曲线' + new Date().getTime() + '.csv') + link.style.visibility = 'hidden' + document.body.appendChild(link) + link.click() + document.body.removeChild(link) + } } const calculateAverages = (data: any) => { diff --git a/ui/dasadmin/src/views/backend/statAnalysis/trendAnalysis.vue b/ui/dasadmin/src/views/backend/statAnalysis/trendAnalysis.vue index cc31de55..618def28 100644 --- a/ui/dasadmin/src/views/backend/statAnalysis/trendAnalysis.vue +++ b/ui/dasadmin/src/views/backend/statAnalysis/trendAnalysis.vue @@ -637,7 +637,7 @@ const statAnalysisExport = () => { if (link.download !== undefined) { const url = URL.createObjectURL(blob) link.setAttribute('href', url) - link.setAttribute('download', '趋势分析_' + new Date().getTime() + '.csv') + link.setAttribute('download', '单机分析_' + new Date().getTime() + '.csv') link.style.visibility = 'hidden' document.body.appendChild(link) link.click() diff --git a/ui/dasadmin/src/views/backend/statAnalysis/trendComparison.vue b/ui/dasadmin/src/views/backend/statAnalysis/trendComparison.vue index 3dad6dab..65c82070 100644 --- a/ui/dasadmin/src/views/backend/statAnalysis/trendComparison.vue +++ b/ui/dasadmin/src/views/backend/statAnalysis/trendComparison.vue @@ -689,8 +689,8 @@ const escapeCsvValue = (value: any) => { } const statAnalysisExport = () => { const tables = [ - { data: highcsvContent.value, filename: '高频.csv' }, - { data: lowcsvContent.value, filename: '低频.csv' }, + { data: highcsvContent.value, filename: '多机对比_高频' + new Date().getTime() + '.csv' }, + { data: lowcsvContent.value, filename: '多机对比_低频' + new Date().getTime() + '.csv' }, ] tables.forEach((table) => { From 91f006c72ae6010541773bcc5bbbff0b27f68768 Mon Sep 17 00:00:00 2001 From: huguanghan Date: Fri, 17 Jan 2025 09:26:02 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E8=83=BD=E9=87=8F=E7=AE=A1=E7=90=86=E8=AE=BE?= =?UTF-8?q?=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/das/common/constant/EquipmentTypeIds.java | 5 +++++ .../modules/equipment/controller/EquipmentController.java | 1 + 2 files changed, 6 insertions(+) diff --git a/das/src/main/java/com/das/common/constant/EquipmentTypeIds.java b/das/src/main/java/com/das/common/constant/EquipmentTypeIds.java index 087da694..f752084d 100644 --- a/das/src/main/java/com/das/common/constant/EquipmentTypeIds.java +++ b/das/src/main/java/com/das/common/constant/EquipmentTypeIds.java @@ -13,4 +13,9 @@ public interface EquipmentTypeIds { * Wind Turbine Generator */ Integer EQUIPMENT_TYPE_STATION_WTG = 10002; + + /** + * 能量管理设备 + */ + Integer EQUIPMENT_TYPE_PM = 10003; } diff --git a/das/src/main/java/com/das/modules/equipment/controller/EquipmentController.java b/das/src/main/java/com/das/modules/equipment/controller/EquipmentController.java index c9fdb6a9..b95d7346 100644 --- a/das/src/main/java/com/das/modules/equipment/controller/EquipmentController.java +++ b/das/src/main/java/com/das/modules/equipment/controller/EquipmentController.java @@ -47,6 +47,7 @@ public class EquipmentController { List typeVoList= new ArrayList<>(); typeVoList.add(new EquipmentTypeVo(EquipmentTypeIds.EQUIPMENT_TYPE_WIND_FARM,"风电场")); typeVoList.add(new EquipmentTypeVo(EquipmentTypeIds.EQUIPMENT_TYPE_STATION_WTG,"机组")); + typeVoList.add(new EquipmentTypeVo(EquipmentTypeIds.EQUIPMENT_TYPE_PM,"能量管理设备")); return R.success(typeVoList); } From 80952ac7f44b6b6d47208ccbecb3c5cc9befb29e Mon Sep 17 00:00:00 2001 From: geting <13585118195@163.com> Date: Fri, 17 Jan 2025 09:52:57 +0800 Subject: [PATCH 4/6] =?UTF-8?q?bugfixed:=E6=B7=BB=E5=8A=A0=E9=AB=98?= =?UTF-8?q?=E9=A2=91=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../statAnalysis/analysisAttributes.vue | 39 ++++++++++++++++--- .../backend/statAnalysis/trendComparison.vue | 36 +++++++++-------- 2 files changed, 53 insertions(+), 22 deletions(-) diff --git a/ui/dasadmin/src/views/backend/statAnalysis/analysisAttributes.vue b/ui/dasadmin/src/views/backend/statAnalysis/analysisAttributes.vue index 9b855d10..b75d95a7 100644 --- a/ui/dasadmin/src/views/backend/statAnalysis/analysisAttributes.vue +++ b/ui/dasadmin/src/views/backend/statAnalysis/analysisAttributes.vue @@ -1,11 +1,20 @@