代码调整

This commit is contained in:
2023-06-08 16:33:53 +08:00
parent ec6e27a4eb
commit 91df5cb181
20 changed files with 279 additions and 110 deletions

View File

@@ -1,6 +1,7 @@
package com.njcn.harmonic.controller.report;
import cn.hutool.core.date.TimeInterval;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
@@ -50,10 +51,10 @@ public class QualifiedReport extends BaseController {
@PostMapping("/pageTable")
@ApiOperation("合格率报告_列表")
@ApiImplicitParam(name = "qualifiedReportParam", value = "合格率报告参数", required = true)
public HttpResult<List<FpyReportDTO>> pageTable(@RequestBody @Validated QualifiedReportParam qualifiedReportParam) {
public HttpResult<Page<FpyReportDTO>> pageTable(@RequestBody @Validated QualifiedReportParam qualifiedReportParam) {
TimeInterval timeInterval = new TimeInterval();
String methodDescribe = getMethodDescribe("pageTable");
List<FpyReportDTO> result = qualifiedReportService.pageTable(qualifiedReportParam);
Page<FpyReportDTO> result = qualifiedReportService.pageTable(qualifiedReportParam);
log.info("合格率报告执行时长:"+timeInterval.interval());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);

View File

@@ -20,7 +20,7 @@ public interface QualifiedReportMapper {
* @author cdf
* @date 2023/6/8
*/
List<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<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);
/**
*

View File

@@ -1,5 +1,6 @@
package com.njcn.harmonic.service.majornetwork;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.harmonic.pojo.dto.FpyReportDTO;
import com.njcn.harmonic.pojo.param.QualifiedReportParam;
@@ -21,5 +22,5 @@ public interface QualifiedReportService {
* @author cdf
* @date 2023/6/7
*/
List<FpyReportDTO> pageTable(QualifiedReportParam qualifiedReportParam);
Page<FpyReportDTO> pageTable(QualifiedReportParam qualifiedReportParam);
}

View File

@@ -56,84 +56,83 @@ public class QualifiedReportServiceImpl implements QualifiedReportService {
private final OverLimitClient overLimitClient;
@Override
public List<FpyReportDTO> pageTable(QualifiedReportParam qualifiedReportParam) {
public Page<FpyReportDTO> pageTable(QualifiedReportParam qualifiedReportParam) {
Page<FpyReportDTO> pageResult = new Page<>(PageFactory.getPageNum(qualifiedReportParam), PageFactory.getPageSize(qualifiedReportParam));
List<FpyReportDTO> fpyReportDTOList = new ArrayList<>();
List<String> lineIds = generalDeviceInfoClient.deptGetRunLine(qualifiedReportParam.getDeptId()).getData();
if(CollUtil.isEmpty(lineIds)){
return fpyReportDTOList;
if (CollUtil.isEmpty(lineIds)) {
return pageResult;
}
LineBaseQueryParam lineBaseQueryParam = new LineBaseQueryParam();
lineBaseQueryParam.setLineIds(lineIds);
lineBaseQueryParam.setSearchValue(qualifiedReportParam.getSearchValue());
List<AreaLineInfoVO> areaLineInfoVOList = lineFeignClient.getRichLineInfo(lineBaseQueryParam).getData();
List<String> lineNewIds = areaLineInfoVOList.stream().map(AreaLineInfoVO::getLineId).distinct().collect(Collectors.toList());
Map<String, AreaLineInfoVO> lineMap = areaLineInfoVOList.stream().collect(Collectors.toMap(AreaLineInfoVO::getLineId,Function.identity()));
List<Map<String,Object>> limitMap = qualifiedReportMapper.getLimitRateData(new Page<>(PageFactory.getPageNum(qualifiedReportParam),PageFactory.getPageSize(qualifiedReportParam)),lineNewIds, PubUtils.beginTimeToLocalDateTime(qualifiedReportParam.getBeginTime()),PubUtils.endTimeToLocalDateTime(qualifiedReportParam.getEndTime()));
List<String> realLineIds = limitMap.stream().map(item->item.get("my_index").toString()).distinct().collect(Collectors.toList());
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()));
if(CollUtil.isNotEmpty(limitMap)){
if(CollUtil.isEmpty(areaLineInfoVOList)){
return pageResult;
}
List<RStatIntegrityD> rStatIntegrityList = lineIntegrityClient.getIntegrityByLineIds(realLineIds,qualifiedReportParam.getBeginTime(),qualifiedReportParam.getEndTime()).getData();
Map<String, RStatIntegrityD> rStatIntegrityMap = rStatIntegrityList.stream().collect(Collectors.toMap(RStatIntegrityD::getLineIndex, Function.identity()));
List<String> lineNewIds = areaLineInfoVOList.stream().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()));
if (CollUtil.isNotEmpty(page.getRecords())) {
List<String> realLineIds = page.getRecords().stream().map(item -> item.get("my_index").toString()).distinct().collect(Collectors.toList());
List<Overlimit> overLimitList = overLimitClient.getOverLimitByLineIds(realLineIds).getData();
Map<String, Overlimit> overLimitMap = overLimitList.stream().collect(Collectors.toMap(Overlimit::getId, Function.identity()));
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()));
for(Map<String, Object> map:limitMap){
String lineId = map.get("my_index").toString();
Map<String, Object> mapOverLimit = new HashMap<>();
try {
BeanUtils.describe(overLimitMap.get(lineId)).forEach((key, value) -> mapOverLimit.put((String) key, value));
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
e.printStackTrace();
}
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, Object> iM = mapMap.get(lineId);
List<Overlimit> overLimitList = overLimitClient.getOverLimitByLineIds(realLineIds).getData();
Map<String, Overlimit> overLimitMap = overLimitList.stream().collect(Collectors.toMap(Overlimit::getId, Function.identity()));
FpyTagContent fpyTagContent = calAllTag(map, mapOverLimit,iM);
for (Map<String, Object> map : page.getRecords()) {
String lineId = map.get("my_index").toString();
Map<String, Object> mapOverLimit = new HashMap<>();
try {
BeanUtils.describe(overLimitMap.get(lineId)).forEach((key, value) -> mapOverLimit.put((String) key, value));
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
e.printStackTrace();
}
//获取平均值的最大值
Map<String, Object> iM = mapMap.get(lineId);
FpyTagContent fpyTagContent = calAllTag(map, mapOverLimit, iM);
FpyReportDTO fpyReportData = new FpyReportDTO();
if (lineMap.containsKey(lineId)) {
AreaLineInfoVO areaLineInfoVO = lineMap.get(lineId);
FpyReportDTO fpyReportData = new FpyReportDTO();
if (lineMap.containsKey(lineId)) {
AreaLineInfoVO areaLineInfoVO = lineMap.get(lineId);
BeanUtil.copyProperties(areaLineInfoVO, fpyReportData);
fpyReportData.setHarmDes(fpyTagContent.getPassFlag());
fpyReportData.setPowerDes(fpyTagContent.getContent());
BeanUtil.copyProperties(areaLineInfoVO, fpyReportData);
fpyReportData.setHarmDes(fpyTagContent.getPassFlag());
fpyReportData.setPowerDes(fpyTagContent.getContent());
}
if (rStatIntegrityMap.containsKey(lineId)) {
RStatIntegrityD rStatIntegrityD = rStatIntegrityMap.get(lineId);
fpyReportData.setIntegrityValue(rStatIntegrityD.getIntegrityData());
} else {
fpyReportData.setIntegrityValue(3.14159f);
}
fpyReportDTOList.add(fpyReportData);
}
if(rStatIntegrityMap.containsKey(lineId)) {
RStatIntegrityD rStatIntegrityD = rStatIntegrityMap.get(lineId);
fpyReportData.setIntegrityValue(rStatIntegrityD.getIntegrityData());
}else {
fpyReportData.setIntegrityValue(3.14159f);
}
}
return fpyReportDTOList;
pageResult.setRecords(fpyReportDTOList);
pageResult.setTotal(page.getTotal());
return pageResult;
}
/**
* 其他指标计算
*/
private FpyTagContent calAllTag(Map<String, Object> map, Map<String, Object> mapOverLimit,Map<String, Object> iMap) {
private FpyTagContent calAllTag(Map<String, Object> map, Map<String, Object> mapOverLimit, Map<String, Object> iMap) {
StrBuilder content = new StrBuilder();
BigDecimal alltime = (BigDecimal) map.get("ALLTIME");
BigDecimal flicketAllTime = (BigDecimal)map.get("FLICKET_ALL_TIME");
BigDecimal flicketAllTime = (BigDecimal) map.get("FLICKET_ALL_TIME");
FpyTagContent fpyTagContent = new FpyTagContent();
if(alltime.intValue() > 0) {
if (alltime.intValue() > 0) {
//频率偏差
BigDecimal freq = (BigDecimal) map.get("FREQ_DEV_OVERTIME");
if (freq.intValue() > 0) {
@@ -159,7 +158,7 @@ public class QualifiedReportServiceImpl implements QualifiedReportService {
BigDecimal flickOver = (BigDecimal) map.get("FLICKER_OVERTIME");
if (flickOver.intValue() > 0) {
BigDecimal flickOverRate = flicketAllTime.subtract(flickOver).divide(flicketAllTime, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
content.append("闪变合格率").append(String.valueOf(flickOverRate.floatValue())).append("%;");
content.append("长时闪变合格率").append(String.valueOf(flickOverRate.floatValue())).append("%;");
}
//电压畸变
@@ -187,28 +186,28 @@ public class QualifiedReportServiceImpl implements QualifiedReportService {
BigDecimal ih = (BigDecimal) map.get(key);
BigDecimal hegeRate = alltime.subtract(ih).divide(alltime, 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
if (hegeRate.floatValue() < 95) {
BigDecimal maxI = (BigDecimal)iMap.get(key);
BigDecimal maxI = (BigDecimal) iMap.get(key);
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++;
}
}
if(flagV==0 && flagI==0){
if (flagV == 0 && flagI == 0) {
fpyTagContent.setPassFlag(EnumPass.PASS.getDescribe());
}else if(flagV>0 && flagI==0){
} else if (flagV > 0 && flagI == 0) {
fpyTagContent.setPassFlag("谐波电压");
}else if(flagV==0 && flagI>0){
} else if (flagV == 0 && flagI > 0) {
fpyTagContent.setPassFlag("谐波电流");
}else {
} else {
fpyTagContent.setPassFlag("谐波电压;谐波电流");
}
if(StrUtil.isBlank(content)){
if (StrUtil.isBlank(content)) {
fpyTagContent.setContent("合格;");
}else {
} else {
fpyTagContent.setContent(content.toString());
}
}else {
} else {
fpyTagContent.setPassFlag("暂无数据");
fpyTagContent.setContent("暂无数据;");
}

View File

@@ -152,15 +152,15 @@ public class RStatOrgMServiceImpl extends ServiceImpl<RStatOrgMMapper, RStatOrgM
if (dictDataMap.containsKey(statOrgM.getMeasurementTypeClass())) {
DictData data = dictDataMap.get(statOrgM.getMeasurementTypeClass());
//一类监测点
if(DicDataEnum.LINE_ONE.getCode().equals(data.getCode())){
if(DicDataEnum.ONE_LINE.getCode().equals(data.getCode())){
groupVO.setOneLine(statOrgM.getEffectiveMeasurementAccrued());
}
//二类监测点
if(DicDataEnum.LINE_TWO.getCode().equals(data.getCode())){
if(DicDataEnum.TWO_LINE.getCode().equals(data.getCode())){
groupVO.setTwoLine(statOrgM.getEffectiveMeasurementAccrued());
}
//三类监测点
if(DicDataEnum.LINE_THREE.getCode().equals(data.getCode())){
if(DicDataEnum.THREE_LINE.getCode().equals(data.getCode())){
groupVO.setThreeLine(statOrgM.getEffectiveMeasurementAccrued());
}
}