河北两级贯通文档修改

冀北台账管理接口开发
This commit is contained in:
cdf
2024-05-16 10:05:49 +08:00
parent f184e371f0
commit 986522c017
17 changed files with 572 additions and 40 deletions

View File

@@ -0,0 +1,281 @@
//package com.njcn.advance.handler;
//
//import cn.hutool.core.collection.CollUtil;
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.njcn.advance.mapper.RmpEventAdvanceMapper;
//import com.njcn.advance.pojo.dto.waveAnalysis.AnalyWave;
//import com.njcn.advance.pojo.dto.waveAnalysis.AnalyWaveModel;
//import com.njcn.advance.pojo.dto.waveAnalysis.CauseStruct;
//import com.njcn.advance.pojo.dto.waveAnalysis.Rect;
//import com.njcn.advance.utils.JnaCallBalance;
//import com.njcn.advance.utils.JnaCallDllOrSo;
//import com.njcn.common.pojo.exception.BusinessException;
//import com.njcn.event.api.RmpEventDetailFeignClient;
//import com.njcn.event.pojo.po.RmpEventDetailPO;
//import com.njcn.middle.rocket.domain.BaseMessage;
//import com.njcn.middle.rocket.handler.EnhanceConsumerMessageHandler;
//import com.njcn.mq.constant.BusinessTopic;
//import com.njcn.mq.message.AppEventMessage;
//import com.njcn.mq.message.RmpEventDetailMessage;
//import com.njcn.mq.template.RmpEventDetailMessageTemplate;
//import com.njcn.system.api.DicDataFeignClient;
//import com.njcn.system.enums.DicDataTypeEnum;
//import com.njcn.system.pojo.po.DictData;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
//import org.apache.rocketmq.spring.core.RocketMQListener;
//import org.springframework.messaging.Message;
//import org.springframework.stereotype.Component;
//import org.springframework.stereotype.Service;
//
//import java.time.ZoneId;
//import java.util.*;
//import java.util.function.Function;
//import java.util.stream.Collectors;
//
///**
// * pqs
// *
// * @author cdf
// * @date 2023/8/24
// */
//@RocketMQMessageListener(topic = BusinessTopic.RMP_EVENT_DETAIL_TOPIC,
// consumerGroup = BusinessTopic.RMP_EVENT_DETAIL_TOPIC,
// enableMsgTrace = true)
//@Slf4j
//@Service
//@RequiredArgsConstructor
//public class RmpEventDetailConsumer extends EnhanceConsumerMessageHandler<RmpEventDetailMessage> implements RocketMQListener<RmpEventDetailMessage> {
// //波形最大值计算
// private final int MAXLENGTH = 128 * 3000;
//
// private final RmpEventAdvanceMapper rmpEventAdvanceMapper;
//
// private final DicDataFeignClient dicDataFeignClient;
//
//
//
// @Override
// protected void handleMessage(RmpEventDetailMessage rmpEventDetailMessage) throws Exception {
// System.out.println("6666666666666666");
// /* if(Objects.nonNull(rmpEventDetailMessage)){
// List<String> eventIds = rmpEventDetailMessage.getEventIds();
// if(CollUtil.isNotEmpty(eventIds)){
// LambdaQueryWrapper<RmpEventDetailPO> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.in(RmpEventDetailPO::getEventId,eventIds);
// List<RmpEventDetailPO> rmpEventDetailPOList = rmpEventAdvanceMapper.selectList(queryWrapper);
//
// for(RmpEventDetailPO rmpEventDetailPO : rmpEventDetailPOList){
// if(rmpEventDetailPO.getDealFlag() != 1){
// //调用算法文件计算暂降特征值
//
// if(rmpEventDetailPO.getFileFlag() == 1){
// //存在录波
// JnaCallDllOrSo jnaCallDllOrSo = new JnaCallBalance("qvvr_dll");
// jnaCallDllOrSo.setPath();
// // 计算暂降类
// Rect rect = new Rect();
// CauseStruct causeStruct = new CauseStruct();
//
// JnaCallBalance.Eventlibrary INSTANTCE = JnaCallBalance.Eventlibrary.INSTANTCE;
// INSTANTCE.qvvr_fun(rect);
//
// byte[] arr = new byte[1024];
// AnalyWave analyWave = new AnalyWave();
// List<List<Float>> pitchList = analyWave.AnalyseComtradeDat(arr,1);
// for (int i = 0; i < pitchList.size(); i++) {
// rect.smp_va[i] = pitchList.get(i).get(1);
// causeStruct.smp_va[i] = pitchList.get(i).get(1);
//
// rect.smp_vb[i] = pitchList.get(i).get(2);
// causeStruct.smp_vb[i] = pitchList.get(i).get(2);
//
// rect.smp_vc[i] = pitchList.get(i).get(3);
// causeStruct.smp_vc[i] = pitchList.get(i).get(3);
// }
//
// rect.smp_len = pitchList.size();
// //超过60s的波形直接抛异常给上面处理
// if (rect.smp_len >= MAXLENGTH) {
// throw new BusinessException("波形超过60S");
// }
//
// rect.smp_rate = 32;
//
//
//
//
// *//**
// * @判断是否调用成功
// * @成功执行更新pqs_eventdetail操作:更新dq持续时间、暂降类型、暂降原因、总分段数目
// *//*
// if (rect.evt_num > 0) {
// RmpEventDetailPO detail = new RmpEventDetailPO();
// detail.setEventId("rmpEventDetailPOQuery.getEventId()");
// detail.setNum(rect.evt_num);
// detail.setDqTime((double) rect.evt_buf[0].hold_time_dq);
// detail.setFirstType((Integer.toString(rect.evt_buf[0].qvvr_cata_type[0])));
// //detail.setFirstTime(waveData.getFirstTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
// //detail.setFirstMs((double)waveData.getFirstMs());
//
//
// // 排序并获取多段中最小的数据
// float[] f = new float[rect.evt_num];
//
// for (int i = 0; i < rect.evt_num; i++) {
// Arrays.parallelSort(rect.evt_buf[i].u3_min, 0, Math.max(rect.evt_buf[i].u_min_num - 1, 0));
// f[i] = rect.evt_buf[i].u3_min[0];
// }
//
// float min = f[0];
// int index = 0;
//
// for (int len = 1; len < f.length; len++) {
// if (min - f[len] > 0) {
// index = len;
// min = f[len];
// }
// }
//
// *//********************************************************************
// * add by sw 返回的分段位置需根据采样率进行恢复
// ********************************************************************//*
// List<AnalyWaveModel.tagOneRate> list = waveData.getRatesCfg().OneRate;
// int rate = (int) waveData.getnOneWaveNum();
// int k = 0;
// int l = 0;
//
// for (int i = 0; i < list.size(); i++) {
// if (i == 0) {
// for (int j = 0; j < rect.evt_buf[0].SEG_T_num; j++) {
// if (list.get(i).nOneSample >= rate && rect.evt_buf[0].SEG_T_idx[j] < list.get(i).nSampleNum
// / (list.get(i).nOneSample / rate)) {
// rect.evt_buf[0].SEG_T_idx[j] = (int) (rect.evt_buf[0].SEG_T_idx[j]
// * (list.get(i).nOneSample / rate));
// k++;
// }
// }
//
// for (int j = 0; j < rect.evt_buf[0].u_min_num; j++) {
// if (list.get(i).nOneSample >= rate && rect.evt_buf[0].order_min_idx[j] < list.get(i).nSampleNum
// / (list.get(i).nOneSample / rate)) {
// rect.evt_buf[0].order_min_idx[j] = (int) (rect.evt_buf[0].order_min_idx[j]
// * (list.get(i).nOneSample / rate));
// l++;
// }
// }
// } else {
// for (int j = k; j < rect.evt_buf[0].SEG_T_num; j++) {
// int posb = 0;
// int pose = 0;
// int pos = 0;
//
// for (int kk = 0; kk <= i; kk++) {
// pose += list.get(kk).nSampleNum / list.get(kk).nOneSample * rate;
//
// if (kk < i) {
// posb += list.get(kk).nSampleNum / list.get(kk).nOneSample * rate;
// pos += list.get(kk).nSampleNum;
// }
// }
//
// if (list.get(i).nOneSample >= rate
// && rect.evt_buf[0].SEG_T_idx[j] > posb
// && rect.evt_buf[0].SEG_T_idx[j] < pose) {
// rect.evt_buf[0].SEG_T_idx[j] = (int) ((rect.evt_buf[0].SEG_T_idx[j] - posb) * list.get(i).nOneSample / rate) + pos;
// k++;
// }
// }
//
// for (int j = l; j < rect.evt_buf[0].u_min_num; j++) {
// int posb = 0;
// int pose = 0;
// int pos = 0;
//
// for (int kk = 0; kk <= i; kk++) {
// pose += list.get(kk).nSampleNum / list.get(kk).nOneSample * rate;
//
// if (kk < i) {
// posb += list.get(kk).nSampleNum / list.get(kk).nOneSample * rate;
// pos += list.get(kk).nSampleNum;
// }
// }
//
// if (list.get(i).nOneSample >= rate
// && rect.evt_buf[0].order_min_idx[j] > posb
// && rect.evt_buf[0].order_min_idx[j] < pose) {
// rect.evt_buf[0].order_min_idx[j] = (int) ((rect.evt_buf[0].order_min_idx[j] - posb) * list.get(i).nSampleNum / rate) + pos;
// l++;
// }
// }
// }
// }
//
//
// List<DictData> dicDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_TYPE.getCode()).getData();
// Map<Integer, DictData> eventTypeMap = dicDataList.stream().collect(Collectors.toMap(DictData::getAlgoDescribe, Function.identity()));
//
// Integer tem = rect.evt_buf[index].qvvr_cata_type[0];
// if(eventTypeMap.containsKey(tem)) {
// rmpEventDetailPO.setAdvanceType(eventTypeMap.get(tem).getId());
// }
// rmpEventDetailPO.setDealFlag(1);
// //rmpEventAdvanceMapper.updateById(rmpEventDetailPO);
// //setEntityAdvanceData();
// //WriteData2File();
// //eventDetailMapper.updateDealFlag(1, eventIndex); //计算有结果
// } else if (rect.evt_num == 0) {
// //eventDetailMapper.updateDealFlag(2, eventIndex);//已计算无结果
// }
//
// }
//
//
// //TODO 如果不存在录波文件情况
// //如果不存在录波文件情况
// }
// }
// }
// }*/
//
//
// }
//
// @Override
// protected void handleMaxRetriesExceeded(RmpEventDetailMessage rmpEventDetailMessage) {
//
// }
//
// @Override
// protected boolean isRetry() {
// return false;
// }
//
// @Override
// protected boolean throwException() {
// return false;
// }
//
// @Override
// public void onMessage(RmpEventDetailMessage rmpEventDetailMessage) {
// super.dispatchMessage(rmpEventDetailMessage);
// }
//
// /*********************************
// * 获取最小采样率方法
// * @param OneRate cfg中关于采样率参数
// * @return 返回最小采样率
// **********************************/
// private long MinWaveSample(List<AnalyWaveModel.tagOneRate> OneRate) {
// long nMinOneSample = OneRate.get(0).nOneSample;
// for (int i = 0; i < OneRate.size(); i++) {
// if (OneRate.get(i).nOneSample >= 32) {
// if (nMinOneSample > OneRate.get(i).nOneSample) {
// nMinOneSample = OneRate.get(i).nOneSample;
// }
// }
// }
// return nMinOneSample;
// }
//}

View File

@@ -90,8 +90,8 @@ public class EventWaveAnalysisServiceImpl implements EventWaveAnalysisService {
if (rmpEventDetailPO.getFileFlag() == 1) {
//获取所有暂态原因
List<DictData> dicDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_REASON.getCode()).getData();
Map<Integer, DictData> eventReasonMap = dicDataList.stream().collect(Collectors.toMap(DictData::getAlgoDescribe, Function.identity()));
List<DictData> dicDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_TYPE.getCode()).getData();
Map<Integer, DictData> eventTypeMap = dicDataList.stream().collect(Collectors.toMap(DictData::getAlgoDescribe, Function.identity()));
InputStream inputStreamCfg = null;
InputStream inputStreamDat = null;
@@ -197,7 +197,7 @@ public class EventWaveAnalysisServiceImpl implements EventWaveAnalysisService {
****************************************************************/
if (entityAdvancedData.backNumber > 0) {
for (int i = 0; i < entityAdvancedData.backNumber; i++) {
entityAdvancedData.sagType[i] = eventReasonMap.get(entityAdvancedData.evt_buf[i].qvvr_cata_type[0]).getName();
entityAdvancedData.sagType[i] = eventTypeMap.get(entityAdvancedData.evt_buf[i].qvvr_cata_type[0]).getName();
switch (entityAdvancedData.evt_buf[i].qvvr_phasetype[0]) {
case 1:

View File

@@ -23,7 +23,6 @@ public class JnaCallBalance extends JnaCallDllOrSo{
@Override
public void setPath() {
JnaCallBalance.strpath = super.getStrpath();
System.out.println("真实路径-----"+super.getStrpath());
}
public interface Balancelibrary extends Library {
@@ -33,10 +32,10 @@ public class JnaCallBalance extends JnaCallDllOrSo{
Balancelibrary INSTANTCE = (Balancelibrary) Native.loadLibrary(JnaCallBalance.strpath, Balancelibrary.class);
// 定义方法--->与C方法相对应
// 定义方法--->与C方法相对应(暂降综合评估)
void qvvr_fun_cause(QvvrDataStruct data);
// 定义方法--->与C方法相对应
// 定义方法--->与C方法相对应(暂降原因)
void qvvr_fun_cause(CauseStruct data);

View File

@@ -16,9 +16,7 @@ import java.net.URLDecoder;
@Slf4j
public class JnaCallDllOrSo {
private String path = "";
private String nameDll;
public static String jarPath = "";
public JnaCallDllOrSo(String name) {
super();
@@ -27,15 +25,16 @@ public class JnaCallDllOrSo {
String os = System.getProperty("os.name");
// windows操作系统为1 否则为0
int beginIndex = os != null && os.startsWith("Windows") ? 1 : 0;
String nameDll;
if (beginIndex == 0) {
//linux操作系统
this.nameDll = "lib" + name + "_dll";
nameDll = "lib" + name + "_dll";
suffix = ".so";
} else {
this.nameDll = name;
nameDll = name;
}
String tem = "/usr/local/dllFile/"+this.nameDll.concat(suffix);
String tem = "/usr/local/dllFile/"+ nameDll.concat(suffix);
File dockerFile = new File(tem);
if(!dockerFile.exists()){
boolean f = dockerFile.getParentFile().mkdirs();
@@ -43,7 +42,7 @@ public class JnaCallDllOrSo {
System.out.println("文件夹创建:"+f);
System.out.println("文件创建:"+d);
try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(this.nameDll.concat(suffix))) {
try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(nameDll.concat(suffix))) {
try (FileOutputStream outputStream = new FileOutputStream(dockerFile)) {
byte[] buffer = new byte[1024];
int bytesRead;
@@ -55,6 +54,7 @@ public class JnaCallDllOrSo {
}
this.path = dockerFile.getAbsolutePath();
} catch (Exception e) {
log.error("调用高级算法文件异常,异常信息如下:");
log.error(e.getMessage());
}