From a08c7db24d2df585b6c4f7bd5823b568fcdb1b72 Mon Sep 17 00:00:00 2001 From: cdf <857448963@qq.com> Date: Tue, 24 Mar 2026 13:05:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E9=99=8Dhdr=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E7=94=9F=E6=88=90=E4=B8=8A=E4=BC=A0oss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/EventAdvanceServiceImpl.java | 311 ++++++++++++++++++ .../src/main/resources/bootstrap.yml | 10 +- 2 files changed, 316 insertions(+), 5 deletions(-) diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/event/service/impl/EventAdvanceServiceImpl.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/event/service/impl/EventAdvanceServiceImpl.java index e62537c92..04a0af7d4 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/event/service/impl/EventAdvanceServiceImpl.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/event/service/impl/EventAdvanceServiceImpl.java @@ -1,11 +1,14 @@ package com.njcn.advance.event.service.impl; import cn.hutool.core.util.StrUtil; +import com.njcn.advance.enums.EnumEvt; import com.njcn.advance.event.cause.jna.QvvrCauseDLL; import com.njcn.advance.event.cause.model.DataFeature; import com.njcn.advance.event.type.jna.*; import com.njcn.advance.pojo.dto.EventAnalysisDTO; import com.njcn.advance.event.service.IEventAdvanceService; +import com.njcn.advance.pojo.dto.waveAnalysis.Rect; +import com.njcn.advance.utils.Utils; import com.njcn.common.config.GeneralInfo; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.event.file.component.WaveFileComponent; @@ -18,6 +21,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.InputStream; import java.util.List; @@ -122,6 +126,11 @@ public class EventAdvanceServiceImpl implements IEventAdvanceService { } } } + String str = WriteData2File(typeDataStruct); + String hdrPath = OssPath.WAVE_DIR + ip+StrUtil.SLASH ; + String hdrName = waveName + GeneralConstant.HDR_LOWER; + fileStorageUtil.uploadStreamSpecifyName(new ByteArrayInputStream(str.getBytes()),hdrPath,hdrName); + //上传HR eventAnalysis.setType(globalFaultType); } else { eventAnalysis.setType(DataFeature.TYPE10); @@ -158,4 +167,306 @@ public class EventAdvanceServiceImpl implements IEventAdvanceService { System.out.println("cause:" + eventAnalysis); return eventAnalysis; } + + public String WriteData2File(QvvrDLL.QvvrDataStruct rect) throws Exception { + StringBuilder stringBuilder = new StringBuilder("{" + EnumEvt.NEWLINE.getProperty()); + + /** + * @写入返回事件总数 + */ + stringBuilder.append(EnumEvt.setEvtProperty(EnumEvt.EVT_NUM.getProperty())); + stringBuilder.append(EnumEvt.setEnter(Utils.int2String(rect.evt_num), 1)); + stringBuilder.append(EnumEvt.setEvtProperty(EnumEvt.EVT_BUF.getProperty()) + "["); + + /** + * @写入返回事件参数 + */ + for (int i = 0; i < rect.evt_num; i++) { + stringBuilder.append(EnumEvt.setNewLine() + EnumEvt.setTab(2)); + /** + * @波形起始点 + */ + stringBuilder.append(EnumEvt.setEvtProperty(EnumEvt.POW_A.getProperty())); + stringBuilder.append(EnumEvt.setEnter(Utils.float2String(rect.evt_buf[i].POW_a), 3)); + stringBuilder.append(EnumEvt.setEvtProperty(EnumEvt.POW_B.getProperty())); + stringBuilder.append(EnumEvt.setEnter(Utils.float2String(rect.evt_buf[i].POW_b), 3)); + stringBuilder.append(EnumEvt.setEvtProperty(EnumEvt.POW_C.getProperty())); + stringBuilder.append(EnumEvt.setEnter(Utils.float2String(rect.evt_buf[i].POW_c), 3)); + /** + * @跳变段电压变化率 + */ + stringBuilder.append(EnumEvt.setEvtProperty(EnumEvt.VOLTAGECHANGE_VA.getProperty())); + stringBuilder.append(EnumEvt.setEnter(Utils.float2String(rect.evt_buf[i].Voltagechange_Va), 3)); + stringBuilder.append(EnumEvt.setEvtProperty(EnumEvt.VOLTAGECHANGE_VB.getProperty())); + stringBuilder.append(EnumEvt.setEnter(Utils.float2String(rect.evt_buf[i].Voltagechange_Vb), 3)); + stringBuilder.append(EnumEvt.setEvtProperty(EnumEvt.VOLTAGECHANGE_VC.getProperty())); + stringBuilder.append(EnumEvt.setEnter(Utils.float2String(rect.evt_buf[i].Voltagechange_Vc), 3)); + /** + * @持续时间 + */ + stringBuilder.append(EnumEvt.setEvtProperty(EnumEvt.HOLD_TIME_RMS.getProperty())); + stringBuilder.append(EnumEvt.setEnter(Utils.float2String(rect.evt_buf[i].hold_time_rms), 3)); + stringBuilder.append(EnumEvt.setEvtProperty(EnumEvt.HOLD_TIME_DQ.getProperty())); + stringBuilder.append(EnumEvt.setEnter(Utils.float2String(rect.evt_buf[i].hold_time_dq), 3)); + /** + * @分段数目 + */ + stringBuilder.append(EnumEvt.setEvtProperty(EnumEvt.SEG_T_NUM.getProperty())); + stringBuilder.append(EnumEvt.setEnter(Utils.int2String(rect.evt_buf[i].SEG_T_num), 3)); + stringBuilder.append(EnumEvt.setEvtProperty(EnumEvt.SEG_T_IDX.getProperty())); + stringBuilder.append(EnumEvt.setNewLine() + EnumEvt.setTab(3)); + + for (int j = 0; j < rect.evt_buf[i].SEG_T_num; j++) { + stringBuilder.append(EnumEvt.setEvtProperty(Utils.int2String(j))); + + if (rect.evt_buf[i].SEG_T_num - 1 == j) { + stringBuilder.append(Utils.int2String(rect.evt_buf[i].SEG_T_idx[j])); + } else { + stringBuilder.append(EnumEvt.setEnter(Utils.int2String(rect.evt_buf[i].SEG_T_idx[j]), 4)); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @特征幅值 + */ + stringBuilder.append(EnumEvt.setEvtProperty(EnumEvt.U_MIN_NUM.getProperty())); + stringBuilder.append(EnumEvt.setEnter(Utils.int2String(rect.evt_buf[i].u_min_num), 3)); + + /** + * @最小值位置 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.ORDER_MIN_IDX.getProperty(), null, + rect.evt_buf[i].order_min_idx[k]); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @A相电压特征值 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.UA_MIN.getProperty(), rect.evt_buf[i].ua_min[k], null); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @B相电压特征值 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.UB_MIN.getProperty(), rect.evt_buf[i].ub_min[k], null); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @C相电压特征值 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.UC_MIN.getProperty(), rect.evt_buf[i].uc_min[k], null); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @三相电压特征值 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.U3_MIN.getProperty(), rect.evt_buf[i].u3_min[k], null); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @A相相位正跳变 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.ANGLE_DIFF_AP.getProperty(), rect.evt_buf[i].angle_diff_ap[k], + null); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @B相相位正跳变 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.ANGLE_DIFF_BP.getProperty(), rect.evt_buf[i].angle_diff_bp[k], + null); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @C相相位正跳变 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.ANGLE_DIFF_CP.getProperty(), rect.evt_buf[i].angle_diff_cp[k], + null); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @A相相位负跳变 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.ANGLE_DIFF_AN.getProperty(), rect.evt_buf[i].angle_diff_an[k], + null); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @B相相位负跳变 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.ANGLE_DIFF_BN.getProperty(), rect.evt_buf[i].angle_diff_bn[k], + null); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @C相相位负跳变 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.ANGLE_DIFF_CN.getProperty(), rect.evt_buf[i].angle_diff_cn[k], + null); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @不平衡度 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.BPH_MAX_VALUE.getProperty(), rect.evt_buf[i].bph_max_value[k], + null); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @暂降原因 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.QVVR_CATA_CAUSE.getProperty(), null, + rect.evt_buf[i].qvvr_cata_cause[k]); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @暂降类型 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.QVVR_CATA_TYPE.getProperty(), null, + rect.evt_buf[i].qvvr_cata_type[k]); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(3), 3)); + + /** + * @暂降相别 + */ + for (int k = 0; k < rect.evt_buf[i].u_min_num; k++) { + setEigenVlaue(k, stringBuilder, EnumEvt.QVVR_PHASETYPE.getProperty(), null, + rect.evt_buf[i].qvvr_phasetype[k]); + + if (rect.evt_buf[i].u_min_num - 1 == k) { + stringBuilder.delete(stringBuilder.lastIndexOf(","), stringBuilder.length() - 1); + } + } + + stringBuilder.append(EnumEvt.setClose(3)); + + if (rect.evt_num - 1 == i) { + stringBuilder.append(EnumEvt.setClose(2)); + stringBuilder.append("]" + EnumEvt.ENTER.getProperty()); + } else { + stringBuilder.append(EnumEvt.setEnter(EnumEvt.setClose(2), 2)); + } + } + + stringBuilder.append("}"); + return stringBuilder.toString(); + } + /** + * @特征值处理 + */ + public void setEigenVlaue(int len, StringBuilder stringBuilder, String string, Float f, Integer integer) { + if (0 == len) { + stringBuilder.append(EnumEvt.setEvtProperty(string)); + stringBuilder.append(EnumEvt.setNewLine() + EnumEvt.setTab(3)); + } + + stringBuilder.append(EnumEvt.setEvtProperty(Integer.toString(len))); + + if (null == f) { + stringBuilder.append(EnumEvt.setEnter(Utils.int2String(integer.intValue()), 4)); + } else { + stringBuilder.append(EnumEvt.setEnter(Utils.float2String(f.floatValue()), 4)); + } + } + } diff --git a/pqs-harmonic/harmonic-boot/src/main/resources/bootstrap.yml b/pqs-harmonic/harmonic-boot/src/main/resources/bootstrap.yml index f230fa308..a753edbbe 100644 --- a/pqs-harmonic/harmonic-boot/src/main/resources/bootstrap.yml +++ b/pqs-harmonic/harmonic-boot/src/main/resources/bootstrap.yml @@ -23,13 +23,13 @@ spring: ip: @service.server.url@ server-addr: @nacos.url@ namespace: @nacos.namespace@ - username: @nacos.username@ - password: @nacos.password@ + #username: @nacos.username@ + #password: @nacos.password@ config: server-addr: @nacos.url@ namespace: @nacos.namespace@ - username: @nacos.username@ - password: @nacos.password@ + #username: @nacos.username@ + #password: @nacos.password@ file-extension: yaml shared-configs: - data-id: share-config.yaml @@ -52,7 +52,7 @@ spring: #项目日志的配置 logging: - #config: http://@nacos.url@/nacos/v1/cs/configs?tenant=@nacos.namespace@&group=DEFAULT_GROUP&dataId=logback.xml + config: http://@nacos.url@/nacos/v1/cs/configs?tenant=@nacos.namespace@&group=DEFAULT_GROUP&dataId=logback.xml level: root: info