1.源装置,入参和发送指令业务编写
This commit is contained in:
@@ -3,6 +3,7 @@ package com.njcn.gather.device.script.pojo.param;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
@@ -19,6 +20,12 @@ public class PqScriptIssueParam {
|
||||
@ApiModelProperty("检测计划id")
|
||||
private String planId;
|
||||
|
||||
@ApiModelProperty("终端id集合")
|
||||
private List<String> devIds;
|
||||
|
||||
@ApiModelProperty("是否是相序校验")
|
||||
private Boolean isPhaseSequence;
|
||||
|
||||
@ApiModelProperty("源id")
|
||||
private String sourceId ="111";
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ public class PqScriptDtls implements Serializable {
|
||||
/**
|
||||
* 总检测脚本中的测试项序号
|
||||
*/
|
||||
@TableField("Index")
|
||||
private Integer index;
|
||||
|
||||
/**
|
||||
@@ -88,6 +89,7 @@ public class PqScriptDtls implements Serializable {
|
||||
/**
|
||||
* 状态:0-不启用 1-启用
|
||||
*/
|
||||
@TableField("Enable")
|
||||
private Integer enable;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.gather.device.script.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
@@ -16,6 +17,7 @@ import com.njcn.gather.device.script.pojo.po.SourceIssue;
|
||||
import com.njcn.gather.device.script.service.IPqScriptDtlsService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -40,6 +42,20 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
private final static String INHARM_I = "InHarm_I";
|
||||
private final static String DIP = "Dip";
|
||||
private final static String FLICKER = "Flicker";
|
||||
@Value("${Dip.fPreTime}")
|
||||
private Float fPreTime;
|
||||
@Value("${Dip.fRampIn}")
|
||||
private Float fRampIn;
|
||||
@Value("${Dip.fRampOut}")
|
||||
private Float fRampOut;
|
||||
@Value("${Dip.fAfterTime}")
|
||||
private Float fAfterTime;
|
||||
@Value("${Flicker.waveFluType}")
|
||||
private String waveFluType;
|
||||
@Value("${Flicker.waveType}")
|
||||
private String waveType;
|
||||
@Value("${Flicker.fDutyCycle}")
|
||||
private Float fDutyCycle;
|
||||
|
||||
|
||||
private final IPqDevService pqDevService;
|
||||
@@ -89,6 +105,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
//校验终端额定电压电流是否相同
|
||||
List<PqDev> list = pqDevService.list(new LambdaQueryWrapper<PqDev>()
|
||||
.eq(PqDev::getPlanId, param.getPlanId())
|
||||
.in(PqDev::getId, param.getDevIds())
|
||||
.eq(PqDev::getState, DataStateEnum.ENABLE.getCode())
|
||||
);
|
||||
//额定电压信息
|
||||
@@ -98,7 +115,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
if (voltSet.size() == 1 && currSet.size() == 1) {
|
||||
Float volt = voltSet.stream().collect(Collectors.toList()).stream().findFirst().get();
|
||||
Float curr = currSet.stream().collect(Collectors.toList()).stream().findFirst().get();
|
||||
List<PqScriptDtls> pqScriptDtls = this.pqScriptDtls(param.getScriptId(), volt, curr);
|
||||
List<PqScriptDtls> pqScriptDtls = this.pqScriptDtls(param.getScriptId(),param.getIsPhaseSequence(), volt, curr);
|
||||
if (CollUtil.isNotEmpty(pqScriptDtls)) {
|
||||
/**
|
||||
* 1.获取全部检测点脚本
|
||||
@@ -134,10 +151,15 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
.sorted(Comparator.comparing(PqScriptDtls::getPhase))
|
||||
.collect(Collectors.toList());
|
||||
//谐波电压,间谐波
|
||||
List<PqScriptDtls> dtlsVList = value.stream().filter(x -> HARM_V.equals(x.getValueType()) || INHARM_V.equals(x.getValueType()))
|
||||
List<PqScriptDtls> dtlsVList = value.stream().filter(x -> HARM_V.equals(x.getValueType()) ||
|
||||
INHARM_V.equals(x.getValueType()) ||
|
||||
DIP.equals(x.getValueType()) ||
|
||||
FLICKER.equals(x.getValueType())
|
||||
|
||||
)
|
||||
.sorted(Comparator.comparing(PqScriptDtls::getPhase))
|
||||
.collect(Collectors.toList());
|
||||
issueAdd(volList, dtlsVList, HARM_V, INHARM_V, "U", channelListDTOS);
|
||||
issueAdd(volList, dtlsVList, HARM_V, INHARM_V, freqDtls.getValue(), "U", channelListDTOS);
|
||||
|
||||
//2.通道电流(ABC)
|
||||
List<PqScriptDtls> curList = value.stream().filter(x -> CUR.equals(x.getValueType()))
|
||||
@@ -147,9 +169,8 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
List<PqScriptDtls> dtlsIList = value.stream().filter(x -> HARM_I.equals(x.getValueType()) || HARM_I.equals(x.getValueType()))
|
||||
.sorted(Comparator.comparing(PqScriptDtls::getPhase))
|
||||
.collect(Collectors.toList());
|
||||
issueAdd(curList, dtlsIList, HARM_I, INHARM_I, "I", channelListDTOS);
|
||||
issueAdd(curList, dtlsIList, HARM_I, INHARM_I, freqDtls.getValue(), "I", channelListDTOS);
|
||||
|
||||
//todo 暂降和闪变没写
|
||||
issue.setChannelList(channelListDTOS);
|
||||
sourceIssues.add(issue);
|
||||
}
|
||||
@@ -161,20 +182,29 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
return sourceIssues;
|
||||
}
|
||||
|
||||
private List<PqScriptDtls> pqScriptDtls(String scriptId, Float volt, Float curr) {
|
||||
//先获取检测脚本类型是否相对值 true相对值 false绝对值(相对值要乘额定值,绝对值不需要处理)
|
||||
Boolean isValueType = pqScriptMapper.selectScriptIsValueType(scriptId);
|
||||
List<PqScriptDtls> pqScriptDtls = this.listPqScriptDtlByScriptId(scriptId);
|
||||
if (isValueType) {
|
||||
for (PqScriptDtls pqScriptDtl : pqScriptDtls) {
|
||||
if (VOL.equals(pqScriptDtl.getValueType())) {
|
||||
pqScriptDtl.setValue(pqScriptDtl.getChagValue() * volt);
|
||||
}
|
||||
if (CUR.equals(pqScriptDtl.getValueType())) {
|
||||
pqScriptDtl.setValue(pqScriptDtl.getChagValue() * curr);
|
||||
private List<PqScriptDtls> pqScriptDtls(String scriptId,Boolean isPhaseSequence,Float volt, Float curr) {
|
||||
List<PqScriptDtls> pqScriptDtls;
|
||||
if(isPhaseSequence){
|
||||
pqScriptDtls = this.list(new MPJLambdaWrapper<PqScriptDtls>()
|
||||
.eq(PqScriptDtls::getIndex, -1)
|
||||
.eq(PqScriptDtls::getEnable, 1)
|
||||
);
|
||||
}else{
|
||||
//先获取检测脚本类型是否相对值 true相对值 false绝对值(相对值要乘额定值,绝对值不需要处理)
|
||||
Boolean isValueType = pqScriptMapper.selectScriptIsValueType(scriptId);
|
||||
pqScriptDtls = this.listPqScriptDtlByScriptId(scriptId);
|
||||
if (isValueType) {
|
||||
for (PqScriptDtls pqScriptDtl : pqScriptDtls) {
|
||||
if (VOL.equals(pqScriptDtl.getValueType())) {
|
||||
pqScriptDtl.setValue(pqScriptDtl.getChagValue() * volt);
|
||||
}
|
||||
if (CUR.equals(pqScriptDtl.getValueType())) {
|
||||
pqScriptDtl.setValue(pqScriptDtl.getChagValue() * curr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return pqScriptDtls;
|
||||
}
|
||||
|
||||
@@ -184,6 +214,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
* @param dtlsList 其他类型检测集合(谐波,间谐波等)
|
||||
* @param harm 谐波
|
||||
* @param harm 间谐波
|
||||
* @param fFreq 频率
|
||||
* @param code U,I
|
||||
* @param channelListDTOS 通道信息
|
||||
* @param channelListDTOS 通道信息
|
||||
@@ -191,12 +222,13 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
* @Author: wr
|
||||
* @Date: 2024/12/16 15:51
|
||||
*/
|
||||
private static void issueAdd(List<PqScriptDtls> dtlsList,
|
||||
List<PqScriptDtls> dtlsOtherList,
|
||||
String harm,
|
||||
String inHarm,
|
||||
String code,
|
||||
List<SourceIssue.ChannelListDTO> channelListDTOS) {
|
||||
private void issueAdd(List<PqScriptDtls> dtlsList,
|
||||
List<PqScriptDtls> dtlsOtherList,
|
||||
String harm,
|
||||
String inHarm,
|
||||
Float fFreq,
|
||||
String code,
|
||||
List<SourceIssue.ChannelListDTO> channelListDTOS) {
|
||||
for (PqScriptDtls dtls : dtlsList) {
|
||||
SourceIssue.ChannelListDTO channelListDTO = new SourceIssue.ChannelListDTO();
|
||||
channelListDTO.setChannelFlag(true);
|
||||
@@ -212,20 +244,26 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
//暂态数据
|
||||
SourceIssue.ChannelListDTO.DipDataDTO dipDataDTO = new SourceIssue.ChannelListDTO.DipDataDTO();
|
||||
dipDataDTO.setFTransValue(0.0f);
|
||||
dipDataDTO.setFPreTime(0.0f);
|
||||
dipDataDTO.setFRampIn(0.001f);
|
||||
dipDataDTO.setFRetainTime(0.0f);
|
||||
dipDataDTO.setFRampOut(0.001f);
|
||||
dipDataDTO.setFAfterTime(0.0f);
|
||||
|
||||
dipDataDTO.setFPreTime(fPreTime);
|
||||
dipDataDTO.setFRampIn(fRampIn);
|
||||
dipDataDTO.setFRampOut(fRampOut);
|
||||
dipDataDTO.setFAfterTime(fAfterTime);
|
||||
|
||||
|
||||
channelListDTO.setDipData(dipDataDTO);
|
||||
//闪变数据
|
||||
SourceIssue.ChannelListDTO.FlickerDataDTO flickerDataDTO = new SourceIssue.ChannelListDTO.FlickerDataDTO();
|
||||
flickerDataDTO.setWaveFluType(null);
|
||||
flickerDataDTO.setWaveType(null);
|
||||
flickerDataDTO.setFDutyCycle(0.0f);
|
||||
flickerDataDTO.setWaveFluType(waveFluType);
|
||||
flickerDataDTO.setWaveType(waveType);
|
||||
flickerDataDTO.setFDutyCycle(fDutyCycle);
|
||||
|
||||
flickerDataDTO.setFChagFre(0.0f);
|
||||
flickerDataDTO.setFChagValue(0.0f);
|
||||
channelListDTO.setFlickerData(flickerDataDTO);
|
||||
|
||||
|
||||
if (CollUtil.isNotEmpty(dtlsOtherList)) {
|
||||
List<PqScriptDtls> phaseList = dtlsOtherList.stream().filter(x -> dtls.getPhase().equals(x.getPhase()))
|
||||
.sorted(Comparator.comparing(PqScriptDtls::getHarmNum))
|
||||
@@ -238,7 +276,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
channelListDTO.setHarmList(getHarmModels(harmList));
|
||||
channelListDTO.setHarmFlag(true);
|
||||
}
|
||||
//处理间谐波电压
|
||||
//处理间谐波类型
|
||||
List<PqScriptDtls> inHarmList = phaseList.stream().filter(x -> inHarm.equals(x.getValueType()))
|
||||
.collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(inHarmList)) {
|
||||
@@ -251,11 +289,8 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
if (CollUtil.isNotEmpty(dipList)) {
|
||||
PqScriptDtls dip = dipList.get(0);
|
||||
dipDataDTO.setFTransValue(dip.getTransValue());
|
||||
dipDataDTO.setFPreTime(0.0f);
|
||||
dipDataDTO.setFRampIn(0.001f);
|
||||
dipDataDTO.setFRetainTime(0.0f);
|
||||
dipDataDTO.setFRampOut(0.001f);
|
||||
dipDataDTO.setFAfterTime(0.0f);
|
||||
// 1.0/频率*持续时间(周波)= 暂态持续时间(s)
|
||||
dipDataDTO.setFRetainTime(NumberUtil.round(1.0 / fFreq * dip.getRetainTime(), 3).floatValue());
|
||||
channelListDTO.setDipFlag(true);
|
||||
channelListDTO.setDipData(dipDataDTO);
|
||||
}
|
||||
@@ -263,12 +298,11 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
List<PqScriptDtls> flickeRList = phaseList.stream().filter(x -> FLICKER.equals(x.getValueType()))
|
||||
.collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(flickeRList)) {
|
||||
PqScriptDtls flicke = flickeRList.get(0);
|
||||
flickerDataDTO.setWaveFluType(null);
|
||||
flickerDataDTO.setWaveType(null);
|
||||
flickerDataDTO.setFDutyCycle(0.0f);
|
||||
flickerDataDTO.setFChagFre(0.0f);
|
||||
flickerDataDTO.setFChagValue(0.0f);
|
||||
PqScriptDtls flicker = flickeRList.get(0);
|
||||
|
||||
flickerDataDTO.setFChagFre(flicker.getChagFre());
|
||||
flickerDataDTO.setFChagValue(flicker.getChagValue());
|
||||
|
||||
channelListDTO.setFlickerFlag(true);
|
||||
channelListDTO.setFlickerData(flickerDataDTO);
|
||||
}
|
||||
@@ -285,7 +319,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
* @param phaseHarmVList
|
||||
* @return
|
||||
*/
|
||||
private static List<SourceIssue.ChannelListDTO.HarmModel> getHarmModels(List<PqScriptDtls> phaseHarmVList) {
|
||||
private List<SourceIssue.ChannelListDTO.HarmModel> getHarmModels(List<PqScriptDtls> phaseHarmVList) {
|
||||
List<SourceIssue.ChannelListDTO.HarmModel> info = new ArrayList<>();
|
||||
SourceIssue.ChannelListDTO.HarmModel harmModel;
|
||||
for (PqScriptDtls pqScriptDtls : phaseHarmVList) {
|
||||
@@ -304,7 +338,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
* @param phaseHarmVList
|
||||
* @return
|
||||
*/
|
||||
private static List<SourceIssue.ChannelListDTO.InharmModel> getInHarmModels(List<PqScriptDtls> phaseHarmVList) {
|
||||
private List<SourceIssue.ChannelListDTO.InharmModel> getInHarmModels(List<PqScriptDtls> phaseHarmVList) {
|
||||
List<SourceIssue.ChannelListDTO.InharmModel> info = new ArrayList<>();
|
||||
SourceIssue.ChannelListDTO.InharmModel inHarmModel;
|
||||
for (PqScriptDtls pqScriptDtls : phaseHarmVList) {
|
||||
|
||||
Reference in New Issue
Block a user