达梦数据库兼容调整

This commit is contained in:
2025-04-10 13:15:29 +08:00
parent f7fb8d036a
commit 6793da251c
9 changed files with 124 additions and 75 deletions

View File

@@ -27,24 +27,27 @@
manufacturerId.name as manufacturer, manufacturerId.name as manufacturer,
dev.name as devName, dev.name as devName,
device.IP as ip, device.IP as ip,
case linedetail.Run_Flag when 0 then "投运" case linedetail.Run_Flag
when 1 then "检修" when 0 then '投运'
when 2 then "停运" when 1 then '检修'
when 3 then "调试" when 2 then '停运'
when 4 then "退运" when 3 then '调试'
when 4 then '退运'
end as runFlag, end as runFlag,
case device.Com_Flag when 0 then "中断" case device.Com_Flag
when 1 then "正常" when 0 then '中断'
when 1 then '正常'
end as comFlag, end as comFlag,
loadtypeId.Name as loadType, loadtypeId.Name as loadType,
businesstypeId.name as businessType, businesstypeId.name as businessType,
IFNULL(linedetail.Obj_Name,"/") as objName, IFNULL(linedetail.Obj_Name,'/') as objName,
case linedetail.PT_Type when 0 then "星型接线" case linedetail.PT_Type
when 1 then "三角型接线" when 0 then '星型接线'
when 2 then "开口三角型接线" when 1 then '三角型接线'
when 2 then '开口三角型接线'
end as ptType, end as ptType,
CONCAT(linedetail.PT1,"/", linedetail.PT2) as pt, CONCAT(linedetail.PT1,'/', linedetail.PT2) as pt,
CONCAT(linedetail.CT1,"/", linedetail.CT2) as ct, CONCAT(linedetail.CT1,'/', linedetail.CT2) as ct,
linedetail.Standard_Capacity as standardCapacity, linedetail.Standard_Capacity as standardCapacity,
linedetail.Short_Capacity as shortCapacity, linedetail.Short_Capacity as shortCapacity,
linedetail.Dev_Capacity as devCapacity, linedetail.Dev_Capacity as devCapacity,
@@ -143,18 +146,18 @@
CASE CASE
device.Run_Flag device.Run_Flag
WHEN 0 THEN WHEN 0 THEN
"投运" '投运'
WHEN 1 THEN WHEN 1 THEN
"热备用" '热备用'
WHEN 2 THEN WHEN 2 THEN
"停运" '停运'
END AS runFlag, END AS runFlag,
CASE CASE
device.Com_Flag device.Com_Flag
WHEN 0 THEN WHEN 0 THEN
"中断" '中断'
WHEN 1 THEN WHEN 1 THEN
"正常" '正常'
END AS comFlag, END AS comFlag,
device.Update_Time AS updateTime device.Update_Time AS updateTime
FROM FROM

View File

@@ -1490,7 +1490,7 @@
<select id="getCustomDetailByLineId" resultType="map"> <select id="getCustomDetailByLineId" resultType="map">
SELECT SELECT
line.id AS lineId, line.id AS lineId,
concat(sub.name,"_",vo.name,"_",line.name) as lineName, concat(sub.name,'_',vo.name,'_',line.name) as lineName,
concat(round(detail.pt1,0),concat(':',round(detail.pt2,0))) as pt, concat(round(detail.pt1,0),concat(':',round(detail.pt2,0))) as pt,
concat(round(detail.ct1,0),concat(':',round(detail.ct2,0))) as ct, concat(round(detail.ct1,0),concat(':',round(detail.ct2,0))) as ct,
detail.Dev_Capacity as Dev_Capacity, detail.Dev_Capacity as Dev_Capacity,

View File

@@ -127,8 +127,6 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
@Override @Override
public List<DetailAbnormalVO> monitorAbnormalTable(MonitorBaseParam monitorBaseParam) { public List<DetailAbnormalVO> monitorAbnormalTable(MonitorBaseParam monitorBaseParam) {
List<DetailAbnormalVO> result = new ArrayList<>(); List<DetailAbnormalVO> result = new ArrayList<>();
LambdaQueryWrapper<LineDetail> lineDetailQuery = new LambdaQueryWrapper<>();
lineDetailQuery.select(LineDetail::getId, LineDetail::getTimeInterval).in(LineDetail::getId, monitorBaseParam.getMonitorIds());
List<LineDevGetDTO> lineDetailList = lineMapper.getMonitorListDetail(monitorBaseParam.getMonitorIds()); List<LineDevGetDTO> lineDetailList = lineMapper.getMonitorListDetail(monitorBaseParam.getMonitorIds());
Map<String, LineDevGetDTO> lineDetailMap = lineDetailList.stream().collect(Collectors.toMap(LineDevGetDTO::getPointId, Function.identity())); Map<String, LineDevGetDTO> lineDetailMap = lineDetailList.stream().collect(Collectors.toMap(LineDevGetDTO::getPointId, Function.identity()));
@@ -180,7 +178,7 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
Map<String, List<DataVerify>> indexMap = timeList.stream().collect(Collectors.groupingBy(it -> it.getIndexCode() + SEPARATOR + it.getIndexTable() + SEPARATOR + it.getIndexName())); Map<String, List<DataVerify>> indexMap = timeList.stream().collect(Collectors.groupingBy(it -> it.getIndexCode() + SEPARATOR + it.getIndexTable() + SEPARATOR + it.getIndexName()));
indexMap.forEach((target, list) -> { indexMap.forEach((target, list) -> {
String[] temKey = target.split(SEPARATOR); String[] temKey = target.split(SEPARATOR);
PqReasonableRangeDto pqReasonableRangeDto = dtoMap.get(temKey[0] + temKey[1]); PqReasonableRangeDto pqReasonableRangeDto = dtoMap.get(temKey[0] +SEPARATOR+ temKey[1]);
String unit; String unit;
if(StrUtil.isNotBlank(pqReasonableRangeDto.getUnit())){ if(StrUtil.isNotBlank(pqReasonableRangeDto.getUnit())){
unit = pqReasonableRangeDto.getUnit(); unit = pqReasonableRangeDto.getUnit();
@@ -256,8 +254,6 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
@Override @Override
public List<DetailAbnormalVO> monitorLimitTable(MonitorBaseParam monitorBaseParam) { public List<DetailAbnormalVO> monitorLimitTable(MonitorBaseParam monitorBaseParam) {
List<DetailAbnormalVO> result = new ArrayList<>(); List<DetailAbnormalVO> result = new ArrayList<>();
LambdaQueryWrapper<LineDetail> lineDetailQuery = new LambdaQueryWrapper<>();
lineDetailQuery.select(LineDetail::getId, LineDetail::getTimeInterval).in(LineDetail::getId, monitorBaseParam.getMonitorIds());
List<LineDevGetDTO> lineDetailList = lineMapper.getMonitorListDetail(monitorBaseParam.getMonitorIds()); List<LineDevGetDTO> lineDetailList = lineMapper.getMonitorListDetail(monitorBaseParam.getMonitorIds());
Map<String, LineDevGetDTO> lineDetailMap = lineDetailList.stream().collect(Collectors.toMap(LineDevGetDTO::getPointId, Function.identity())); Map<String, LineDevGetDTO> lineDetailMap = lineDetailList.stream().collect(Collectors.toMap(LineDevGetDTO::getPointId, Function.identity()));
@@ -622,7 +618,7 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
*/ */
public List<VerifyTargetVO> getAbnormalTarget(List<DataVerify> dataVerifyList) { public List<VerifyTargetVO> getAbnormalTarget(List<DataVerify> dataVerifyList) {
Map<String, Set<String>> dataMap = dataVerifyList.stream().collect(Collectors.groupingBy(it -> Map<String, Set<String>> dataMap = dataVerifyList.stream().collect(Collectors.groupingBy(it ->
it.getIndexCode() + it.getIndexTable(), Collectors.mapping(DataVerify::getLineId, Collectors.toSet()))); it.getIndexCode() +SEPARATOR+ it.getIndexTable(), Collectors.mapping(DataVerify::getLineId, Collectors.toSet())));
Map<String,PqReasonableRangeDto> rangeMap = getStandRange(); Map<String,PqReasonableRangeDto> rangeMap = getStandRange();
//正序、负序和零序电压 //正序、负序和零序电压
List<VerifyTargetVO> result = new ArrayList<>(); List<VerifyTargetVO> result = new ArrayList<>();
@@ -672,7 +668,7 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
DataCleanParam dataCleanParam = new DataCleanParam(); DataCleanParam dataCleanParam = new DataCleanParam();
dataCleanParam.setSystemType(DataCleanEnum.Pqs.getCode()); dataCleanParam.setSystemType(DataCleanEnum.Pqs.getCode());
List<PqReasonableRangeDto> pqReasonableRangeDtoList = pqReasonableRangeFeignClient.getData(dataCleanParam).getData(); List<PqReasonableRangeDto> pqReasonableRangeDtoList = pqReasonableRangeFeignClient.getData(dataCleanParam).getData();
return pqReasonableRangeDtoList.stream().collect(Collectors.toMap(it -> it.getIndexCode() + it.getInfluxdbTableName(), Function.identity())); return pqReasonableRangeDtoList.stream().collect(Collectors.toMap(it -> it.getIndexCode() +SEPARATOR+ it.getInfluxdbTableName(), Function.identity()));
} }

View File

@@ -15,6 +15,7 @@ import java.time.Instant;
*/ */
@Data @Data
@Measurement(name = "pqs_eventdetail") @Measurement(name = "pqs_eventdetail")
@Deprecated
public class EventDetail { public class EventDetail {
@Column(name = "time") @Column(name = "time")

View File

@@ -17,6 +17,7 @@ import java.time.Instant;
@Data @Data
@Measurement(name = "limit_rate") @Measurement(name = "limit_rate")
@TableName(value = "limit_rate") @TableName(value = "limit_rate")
@Deprecated
public class LimitRatePO { public class LimitRatePO {
//时间索引 //时间索引
@MppMultiId @MppMultiId

View File

@@ -17,6 +17,7 @@ import java.time.Instant;
*/ */
@Data @Data
@Measurement(name = "limit_target") @Measurement(name = "limit_target")
@Deprecated
public class LimitTarget { public class LimitTarget {
@Column(name = "time") @Column(name = "time")

View File

@@ -1,6 +1,7 @@
package com.njcn.harmonic.mapper.report; package com.njcn.harmonic.mapper.report;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -20,7 +21,7 @@ public interface QualifiedReportMapper {
* @author cdf * @author cdf
* @date 2023/6/8 * @date 2023/6/8
*/ */
Page<Map<String,Object>> getLimitRateData(@Param("page") Page<List<Map<String,Object>>> page, @Param("lineIds")List<String> lineIds, @Param("startTime")LocalDateTime startTime, @Param("endTime")LocalDateTime endTime); Page<RStatLimitTargetDPO> getLimitRateData(@Param("page") Page<List<Map<String,Object>>> page, @Param("lineIds")List<String> lineIds, @Param("startTime")LocalDateTime startTime, @Param("endTime")LocalDateTime endTime);
/** /**
* *

View File

@@ -2,8 +2,8 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.harmonic.mapper.report.QualifiedReportMapper"> <mapper namespace="com.njcn.harmonic.mapper.report.QualifiedReportMapper">
<select id="getLimitRateData" resultType="map"> <select id="getLimitRateData" resultType="RStatLimitTargetDPO">
select my_index, select my_index as lineId,
SUM( UHARM_2_OVERTIME ) UHARM_2_OVERTIME, SUM( UHARM_2_OVERTIME ) UHARM_2_OVERTIME,
SUM( IHARM_2_OVERTIME ) IHARM_2_OVERTIME, SUM( IHARM_2_OVERTIME ) IHARM_2_OVERTIME,
SUM( UHARM_3_OVERTIME ) UHARM_3_OVERTIME, SUM( UHARM_3_OVERTIME ) UHARM_3_OVERTIME,
@@ -56,7 +56,7 @@
SUM( UABERRANCE_OVERTIME ) UABERRANCE_OVERTIME, SUM( UABERRANCE_OVERTIME ) UABERRANCE_OVERTIME,
SUM( UBALANCE_OVERTIME ) UBALANCE_OVERTIME, SUM( UBALANCE_OVERTIME ) UBALANCE_OVERTIME,
SUM( FLICKER_OVERTIME ) FLICKER_OVERTIME, SUM( FLICKER_OVERTIME ) FLICKER_OVERTIME,
SUM( flicker_all_time ) FLICKET_ALL_TIME, SUM( flicker_all_time ) FLICKER_ALL_TIME,
sum( Freq_Dev_OverTime ) FREQ_DEV_OVERTIME, sum( Freq_Dev_OverTime ) FREQ_DEV_OVERTIME,
SUM( ALL_TIME ) ALLTIME SUM( ALL_TIME ) ALLTIME
FROM FROM

View File

@@ -18,13 +18,17 @@ import com.njcn.harmonic.mapper.report.QualifiedReportMapper;
import com.njcn.harmonic.pojo.dto.FpyReportDTO; import com.njcn.harmonic.pojo.dto.FpyReportDTO;
import com.njcn.harmonic.pojo.dto.FpyTagContent; import com.njcn.harmonic.pojo.dto.FpyTagContent;
import com.njcn.harmonic.pojo.param.QualifiedReportParam; import com.njcn.harmonic.pojo.param.QualifiedReportParam;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import com.njcn.harmonic.pojo.po.report.EnumPass; import com.njcn.harmonic.pojo.po.report.EnumPass;
import com.njcn.harmonic.service.majornetwork.QualifiedReportService; import com.njcn.harmonic.service.majornetwork.QualifiedReportService;
import com.njcn.web.factory.PageFactory; import com.njcn.web.factory.PageFactory;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
@@ -45,6 +49,8 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor @RequiredArgsConstructor
public class QualifiedReportServiceImpl implements QualifiedReportService { public class QualifiedReportServiceImpl implements QualifiedReportService {
private static final Logger logger = LoggerFactory.getLogger(QualifiedReportServiceImpl.class);
private final QualifiedReportMapper qualifiedReportMapper; private final QualifiedReportMapper qualifiedReportMapper;
private final GeneralDeviceInfoClient generalDeviceInfoClient; private final GeneralDeviceInfoClient generalDeviceInfoClient;
@@ -55,6 +61,10 @@ public class QualifiedReportServiceImpl implements QualifiedReportService {
private final OverLimitClient overLimitClient; private final OverLimitClient overLimitClient;
// 谐波计算的起始次数
private static final int HARMONIC_START = 2;
// 谐波计算的结束次数
private static final int HARMONIC_END = 26;
@Override @Override
public Page<FpyReportDTO> pageTable(QualifiedReportParam qualifiedReportParam) { public Page<FpyReportDTO> pageTable(QualifiedReportParam qualifiedReportParam) {
@@ -69,36 +79,46 @@ public class QualifiedReportServiceImpl implements QualifiedReportService {
lineBaseQueryParam.setLineIds(lineIds); lineBaseQueryParam.setLineIds(lineIds);
lineBaseQueryParam.setSearchValue(qualifiedReportParam.getSearchValue()); lineBaseQueryParam.setSearchValue(qualifiedReportParam.getSearchValue());
List<AreaLineInfoVO> areaLineInfoVOList = lineFeignClient.getRichLineInfo(lineBaseQueryParam).getData(); List<AreaLineInfoVO> areaLineInfoVOList = lineFeignClient.getRichLineInfo(lineBaseQueryParam).getData();
if(CollUtil.isEmpty(areaLineInfoVOList)){ if (CollUtil.isEmpty(areaLineInfoVOList)) {
return pageResult; return pageResult;
} }
List<String> lineNewIds = areaLineInfoVOList.stream().map(AreaLineInfoVO::getLineId).distinct().collect(Collectors.toList()); List<String> lineNewIds = areaLineInfoVOList.stream()
Map<String, AreaLineInfoVO> lineMap = areaLineInfoVOList.stream().collect(Collectors.toMap(AreaLineInfoVO::getLineId, Function.identity())); .map(AreaLineInfoVO::getLineId)
.distinct()
.collect(Collectors.toList());
Map<String, AreaLineInfoVO> lineMap = areaLineInfoVOList.stream()
.collect(Collectors.toMap(AreaLineInfoVO::getLineId, Function.identity()));
Page<Map<String, Object>> page = qualifiedReportMapper.getLimitRateData(new Page<>(PageFactory.getPageNum(qualifiedReportParam), PageFactory.getPageSize(qualifiedReportParam)), lineNewIds, PubUtils.beginTimeToLocalDateTime(qualifiedReportParam.getBeginTime()), PubUtils.endTimeToLocalDateTime(qualifiedReportParam.getEndTime())); Page<RStatLimitTargetDPO> page = qualifiedReportMapper.getLimitRateData(new Page<>(PageFactory.getPageNum(qualifiedReportParam), PageFactory.getPageSize(qualifiedReportParam)), lineNewIds, PubUtils.beginTimeToLocalDateTime(qualifiedReportParam.getBeginTime()), PubUtils.endTimeToLocalDateTime(qualifiedReportParam.getEndTime()));
if (CollUtil.isNotEmpty(page.getRecords())) { if (CollUtil.isNotEmpty(page.getRecords())) {
List<String> realLineIds = page.getRecords().stream().map(item -> item.get("my_index").toString()).distinct().collect(Collectors.toList()); List<String> realLineIds = page.getRecords().stream()
.map(RStatLimitTargetDPO::getLineId)
.distinct()
.collect(Collectors.toList());
List<Map<String, Object>> dayIhMapList = qualifiedReportMapper.getLimitRateDataIHarm(lineIds, qualifiedReportParam.getBeginTime(), qualifiedReportParam.getEndTime()); List<Map<String, Object>> dayIhMapList = qualifiedReportMapper.getLimitRateDataIHarm(lineIds, qualifiedReportParam.getBeginTime(), qualifiedReportParam.getEndTime());
Map<String, Map<String, Object>> mapMap = dayIhMapList.stream().collect(Collectors.toMap(it -> it.get("MYINDEX").toString(), Function.identity())); Map<String, Map<String, Object>> lineIhMap = dayIhMapList.stream()
.collect(Collectors.toMap(it -> it.get("MYINDEX").toString(), Function.identity()));
List<RStatIntegrityD> rStatIntegrityList = lineIntegrityClient.getIntegrityByLineIds(realLineIds, qualifiedReportParam.getBeginTime(), qualifiedReportParam.getEndTime()).getData(); List<RStatIntegrityD> rStatIntegrityList = lineIntegrityClient.getIntegrityByLineIds(realLineIds, qualifiedReportParam.getBeginTime(), qualifiedReportParam.getEndTime()).getData();
Map<String, RStatIntegrityD> rStatIntegrityMap = rStatIntegrityList.stream().collect(Collectors.toMap(RStatIntegrityD::getLineIndex, Function.identity())); Map<String, RStatIntegrityD> rStatIntegrityMap = rStatIntegrityList.stream()
.collect(Collectors.toMap(RStatIntegrityD::getLineIndex, Function.identity()));
List<Overlimit> overLimitList = overLimitClient.getOverLimitByLineIds(realLineIds).getData(); List<Overlimit> overLimitList = overLimitClient.getOverLimitByLineIds(realLineIds).getData();
Map<String, Overlimit> overLimitMap = overLimitList.stream().collect(Collectors.toMap(Overlimit::getId, Function.identity())); Map<String, Overlimit> overLimitMap = overLimitList.stream()
.collect(Collectors.toMap(Overlimit::getId, Function.identity()));
for (Map<String, Object> map : page.getRecords()) { for (RStatLimitTargetDPO map : page.getRecords()) {
String lineId = map.get("my_index").toString(); String lineId = map.getLineId();
Map<String, Object> mapOverLimit = new HashMap<>(); Map<String, Object> mapOverLimit = new HashMap<>();
try { try {
BeanUtils.describe(overLimitMap.get(lineId)).forEach((key, value) -> mapOverLimit.put((String) key, value)); BeanUtils.describe(overLimitMap.get(lineId)).forEach((key, value) -> mapOverLimit.put((String) key, value));
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
e.printStackTrace(); logger.error("合格率报告查询_处理Overlimit数据时发生异常", e);
} }
//获取平均值的最大值 //获取平均值的最大值
Map<String, Object> iM = mapMap.get(lineId); Map<String, Object> lineIh = lineIhMap.get(lineId);
FpyTagContent fpyTagContent = calAllTag(map, mapOverLimit, iM); FpyTagContent fpyTagContent = calAllTag(map, mapOverLimit, lineIh);
FpyReportDTO fpyReportData = new FpyReportDTO(); FpyReportDTO fpyReportData = new FpyReportDTO();
if (lineMap.containsKey(lineId)) { if (lineMap.containsKey(lineId)) {
@@ -106,7 +126,6 @@ public class QualifiedReportServiceImpl implements QualifiedReportService {
BeanUtil.copyProperties(areaLineInfoVO, fpyReportData); BeanUtil.copyProperties(areaLineInfoVO, fpyReportData);
fpyReportData.setHarmDes(fpyTagContent.getPassFlag()); fpyReportData.setHarmDes(fpyTagContent.getPassFlag());
fpyReportData.setPowerDes(fpyTagContent.getContent()); fpyReportData.setPowerDes(fpyTagContent.getContent());
} }
if (rStatIntegrityMap.containsKey(lineId)) { if (rStatIntegrityMap.containsKey(lineId)) {
@@ -123,55 +142,59 @@ public class QualifiedReportServiceImpl implements QualifiedReportService {
return pageResult; return pageResult;
} }
/**
* 计算合格率
*
* @param alltime 总时间
* @param overTime 超标时间
* @param description 描述信息
* @return 合格率字符串
*/
private String calculateRate(BigDecimal alltime, BigDecimal overTime, String description) {
if (alltime.intValue() > 0 && overTime.intValue() > 0) {
BigDecimal rate = alltime.subtract(overTime).divide(alltime, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
return description + rate.floatValue() + "%;";
}
return "";
}
/** /**
* 其他指标计算 * 其他指标计算
*/ */
private FpyTagContent calAllTag(Map<String, Object> map, Map<String, Object> mapOverLimit, Map<String, Object> iMap) { private FpyTagContent calAllTag(RStatLimitTargetDPO map, Map<String, Object> mapOverLimit, Map<String, Object> lineIhMap) {
StrBuilder content = new StrBuilder(); StrBuilder content = new StrBuilder();
BigDecimal alltime = (BigDecimal) map.get("ALLTIME"); BigDecimal alltime = new BigDecimal(map.getAllTime()) ;
BigDecimal flicketAllTime = (BigDecimal) map.get("FLICKET_ALL_TIME"); BigDecimal flicketAllTime =new BigDecimal(map.getFlickerAllTime());
FpyTagContent fpyTagContent = new FpyTagContent(); FpyTagContent fpyTagContent = new FpyTagContent();
if (alltime.intValue() > 0) { if (alltime.intValue() > 0) {
//频率偏差 //频率偏差
BigDecimal freq = (BigDecimal) map.get("FREQ_DEV_OVERTIME"); BigDecimal freq = new BigDecimal(map.getFreqDevOvertime());
if (freq.intValue() > 0) { content.append(calculateRate(alltime, freq, "频率偏差合格率"));
BigDecimal freqRate = alltime.subtract(freq).divide(alltime, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
content.append("频率偏差合格率").append(String.valueOf(freqRate.floatValue())).append("%;");
}
//电压偏差 //电压偏差
BigDecimal voltageDev = (BigDecimal) map.get("VOLTAGE_DEV_OVERTIME"); BigDecimal voltageDev = new BigDecimal(map.getVoltageDevOvertime());
if (voltageDev.intValue() > 0) { content.append(calculateRate(alltime, voltageDev, "电压偏差合格率"));
BigDecimal voltageDevRate = alltime.subtract(voltageDev).divide(alltime, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
content.append("电压偏差合格率").append(String.valueOf(voltageDevRate.floatValue())).append("%;");
}
//三项不平衡 //三项不平衡
BigDecimal ubalance = (BigDecimal) map.get("UBALANCE_OVERTIME"); BigDecimal ubalance = new BigDecimal(map.getUbalanceOvertime());
if (ubalance.intValue() > 0) { content.append(calculateRate(alltime, ubalance, "三相电压不平衡合格率"));
BigDecimal ubalanceRate = alltime.subtract(ubalance).divide(alltime, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
content.append("三相电压不平衡合格率").append(String.valueOf(ubalanceRate.floatValue())).append("%;");
}
//闪变 //闪变
BigDecimal flickOver = (BigDecimal) map.get("FLICKER_OVERTIME"); BigDecimal flickOver = new BigDecimal(map.getFlickerOvertime());
if (flickOver.intValue() > 0) { content.append(calculateRate(flicketAllTime, flickOver, "长时闪变合格率"));
BigDecimal flickOverRate = flicketAllTime.subtract(flickOver).divide(flicketAllTime, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
content.append("长时闪变合格率").append(String.valueOf(flickOverRate.floatValue())).append("%;");
}
//电压畸变 //电压畸变
BigDecimal uab = (BigDecimal) map.get("UABERRANCE_OVERTIME"); BigDecimal uab = new BigDecimal(map.getUaberranceOvertime());
BigDecimal uabRate = alltime.subtract(uab).divide(alltime, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); BigDecimal uabRate = alltime.subtract(uab).divide(alltime, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
if (uabRate.floatValue() < 95) { if (uabRate.floatValue() < 95) {
content.append("电压总畸变率").append(String.valueOf(uabRate.floatValue())).append("%;"); content.append("电压总畸变率").append(String.valueOf(uabRate.floatValue())).append("%;");
} }
//计算组装谐波含电压有率 //计算组装谐波含电压有率
int flagV = 0; int flagV = 0;
for (int i = 2; i < 26; i++) { for (int i = HARMONIC_START; i < HARMONIC_END; i++) {
BigDecimal v = (BigDecimal) map.get("UHARM_" + i + "_OVERTIME"); BigDecimal v = new BigDecimal(getUharmOvertime(i));
BigDecimal hegeRate = alltime.subtract(v).divide(alltime, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); BigDecimal hegeRate = alltime.subtract(v).divide(alltime, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
if (hegeRate.floatValue() < 95) { if (hegeRate.floatValue() < 95) {
content.append(String.valueOf(i)).append("次谐波电压含有率合格率").append(String.valueOf(hegeRate.floatValue())).append("%;"); content.append(String.valueOf(i)).append("次谐波电压含有率合格率").append(String.valueOf(hegeRate.floatValue())).append("%;");
@@ -181,12 +204,12 @@ public class QualifiedReportServiceImpl implements QualifiedReportService {
//计算组装谐波电流幅值 //计算组装谐波电流幅值
int flagI = 0; int flagI = 0;
for (int i = 2; i < 26; i++) { for (int i = HARMONIC_START; i < HARMONIC_END; i++) {
String key = "IHARM_" + i + "_OVERTIME"; String key = "IHARM_" + i + "_OVERTIME";
BigDecimal ih = (BigDecimal) map.get(key); BigDecimal ih = new BigDecimal(getIharmOvertime(i));
BigDecimal hegeRate = alltime.subtract(ih).divide(alltime, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); BigDecimal hegeRate = alltime.subtract(ih).divide(alltime, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
if (hegeRate.floatValue() < 95) { if (hegeRate.floatValue() < 95) {
BigDecimal maxI = (BigDecimal) iMap.get(key); BigDecimal maxI = (BigDecimal) lineIhMap.get(key);
BigDecimal overLimit = new BigDecimal(mapOverLimit.get("iharm" + i).toString()); BigDecimal overLimit = new BigDecimal(mapOverLimit.get("iharm" + i).toString());
content.append(String.valueOf(i)).append("次谐波电流合格率").append(String.valueOf(hegeRate.floatValue())).append("%,限值为").append(String.valueOf(overLimit.floatValue())).append("A," + "最大值为").append(String.valueOf(maxI.setScale(2, RoundingMode.HALF_UP))).append("A;"); content.append(String.valueOf(i)).append("次谐波电流合格率").append(String.valueOf(hegeRate.floatValue())).append("%,限值为").append(String.valueOf(overLimit.floatValue())).append("A," + "最大值为").append(String.valueOf(maxI.setScale(2, RoundingMode.HALF_UP))).append("A;");
flagI++; flagI++;
@@ -214,4 +237,27 @@ public class QualifiedReportServiceImpl implements QualifiedReportService {
return fpyTagContent; return fpyTagContent;
} }
}
public Integer getUharmOvertime(int harmonicOrder) {
try {
Field field = this.getClass().getDeclaredField("uharm" + harmonicOrder + "Overtime");
field.setAccessible(true);
return (Integer) field.get(this);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
return 0;
}
}
public Integer getIharmOvertime(int harmonicOrder) {
try {
Field field = this.getClass().getDeclaredField("iharm" + harmonicOrder + "Overtime");
field.setAccessible(true);
return (Integer) field.get(this);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
return 0;
}
}
}