达梦数据库兼容调整
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user