合并代码
This commit is contained in:
@@ -70,7 +70,7 @@ public interface CustomReportService {
|
||||
* @author qijian
|
||||
* @date 2022/10/18
|
||||
*/
|
||||
String getCustomReport(ReportSearchParam reportSearchParam);
|
||||
List<String> getCustomReport(ReportSearchParam reportSearchParam);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -231,7 +231,7 @@ public class PwRStatOrgServiceImpl extends ServiceImpl<PwRStatOrgMapper, RStatOr
|
||||
List<RStatSubstationOrg2VO.PwRStatSubstationOrgVO> info = new ArrayList<>();
|
||||
|
||||
if (CollectionUtil.isNotEmpty(deptDTOList)) {
|
||||
// 根据暂态指标枚举查询暂态指标
|
||||
// 根据暂态指标查询暂态指标
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(
|
||||
DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
List<RStatSubstationOrgVO> temp = new ArrayList<>();
|
||||
|
||||
@@ -228,132 +228,31 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
|
||||
|
||||
@Override
|
||||
public String getCustomReport(ReportSearchParam reportSearchParam) {
|
||||
|
||||
public List<String> getCustomReport(ReportSearchParam reportSearchParam) {
|
||||
List<String> results = new ArrayList<>();
|
||||
ExcelRptTemp excelRptTemp = excelRptTempMapper.selectById(reportSearchParam.getTempId());
|
||||
if (Objects.isNull(excelRptTemp)) {
|
||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_ACTIVE);
|
||||
}
|
||||
|
||||
//根据content,获取v值并进行处理
|
||||
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
|
||||
JSONArray jsonArray = null;
|
||||
try {
|
||||
//通过文件服务器获取
|
||||
String objectUrl = minIoUtils.getObjectUrl(minIoProperties.getBucket(), excelRptTemp.getContent(), 7 * 24 * 60 * 60);
|
||||
jsonArray = JSONUtil.parseArray(urlToString(objectUrl));
|
||||
jsonArray.forEach(item -> {
|
||||
JSONObject jsonObject = (JSONObject) item;
|
||||
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
|
||||
itemArr.forEach((it) -> {
|
||||
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
|
||||
//获取到1列
|
||||
JSONObject data = (JSONObject) it;
|
||||
JSONObject son = (JSONObject) data.get("v");
|
||||
if (son.containsKey("v")) {
|
||||
String v = son.getStr("v");
|
||||
//数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$
|
||||
if (v.charAt(0) == '$' && v.contains("#")) {
|
||||
//剔除前后$
|
||||
v = v.replace("$", "");
|
||||
//封装ReportTemplateDTO
|
||||
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
|
||||
reportTemplateDTO.setItemName(v);
|
||||
//根据#分割数据
|
||||
String[] vItem = v.split("#");
|
||||
if (vItem.length == 4) {
|
||||
//$HA[_25]#B#max#classId$
|
||||
reportTemplateDTO.setTemplateName(vItem[0]);
|
||||
reportTemplateDTO.setPhase(vItem[1]);
|
||||
reportTemplateDTO.setStatMethod(vItem[2].toUpperCase());
|
||||
reportTemplateDTO.setClassId(vItem[3]);
|
||||
} else if (vItem.length == 3) {
|
||||
//$HA[_25]#max#classId$
|
||||
reportTemplateDTO.setTemplateName(vItem[0]);
|
||||
reportTemplateDTO.setPhase("M");
|
||||
reportTemplateDTO.setStatMethod(vItem[1].toUpperCase());
|
||||
reportTemplateDTO.setClassId(vItem[2]);
|
||||
}
|
||||
|
||||
reportTemplateDTOList.add(reportTemplateDTO);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
} catch (Exception e) {
|
||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
|
||||
//先查询库里是否存在已解析的报表数据,存在直接返回/不存在解析数据
|
||||
LambdaQueryWrapper<ExcelRpt> lambdaQuery = new LambdaQueryWrapper<>();
|
||||
lambdaQuery.eq(ExcelRpt::getLineId, reportSearchParam.getLineId()).eq(ExcelRpt::getTempId, reportSearchParam.getTempId());
|
||||
List<ExcelRpt> excelRpts = excelRptMapper.selectList(lambdaQuery);
|
||||
String content;
|
||||
if (excelRpts.size() > 0){
|
||||
content = minIoUtils.getObjectUrl(minIoProperties.getBucket(), excelRpts.get(0).getContent(), 7 * 24 * 60 * 60);
|
||||
}else{
|
||||
content = analyzeReport(reportSearchParam,excelRptTemp);
|
||||
}
|
||||
|
||||
List<ReportTemplateDTO> endList = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(reportTemplateDTOList)) {
|
||||
//开始组织sql
|
||||
reportTemplateDTOList.stream().forEach(data -> {
|
||||
StringBuilder sql = new StringBuilder(InfluxDBSqlConstant.SELECT);
|
||||
if (InfluxDBTableConstant.MAX.equals(data.getStatMethod())) {
|
||||
assSql(data, sql, endList, InfluxDBSqlConstant.MAX, reportSearchParam);
|
||||
} else if (InfluxDBTableConstant.MIN.equals(data.getStatMethod())) {
|
||||
assSql(data, sql, endList, InfluxDBSqlConstant.MIN, reportSearchParam);
|
||||
} else if (InfluxDBTableConstant.AVG.equals(data.getStatMethod())) {
|
||||
assSql(data, sql, endList, InfluxDBSqlConstant.AVG, reportSearchParam);
|
||||
} else if (InfluxDBTableConstant.CP95.equals(data.getStatMethod())) {
|
||||
assSql(data, sql, endList, InfluxDBSqlConstant.CP95, reportSearchParam);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(endList)) {
|
||||
//进行反向赋值到模板
|
||||
//1、根据itemName分组
|
||||
Map<String, List<ReportTemplateDTO>> assMap = endList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getItemName));
|
||||
//2、把itemName的value赋给v和m
|
||||
jsonArray.forEach(item -> {
|
||||
JSONObject jsonObject = (JSONObject) item;
|
||||
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
|
||||
itemArr.forEach((it) -> {
|
||||
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
|
||||
//获取到1列
|
||||
JSONObject data = (JSONObject) it;
|
||||
JSONObject son = (JSONObject) data.get("v");
|
||||
if (son.containsKey("v")) {
|
||||
String v = son.getStr("v");
|
||||
//数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$
|
||||
if (v.charAt(0) == '$' && v.contains("#")) {
|
||||
String str = assMap.get(v.replace("$", "")).get(0).getValue();
|
||||
//没有值,赋"/"
|
||||
if (StringUtils.isBlank(str)) {
|
||||
str = "/";
|
||||
}
|
||||
son.set("v", str);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
//文件上传到Minio服务器,存入文件名
|
||||
File newFile = stringToFile(jsonArray.toString());
|
||||
MultipartFile newMultipartFile = getMultipartFile(newFile);
|
||||
MinIoUploadResDTO minIoUploadResDTO = contentToMinio(newMultipartFile);
|
||||
String newContent = minIoUploadResDTO.getMinFileName();
|
||||
//根据模板激活状态,判断是否进库(未激活不进库,已激活进库)
|
||||
if (DataStateEnum.ENABLE.getCode().equals(reportSearchParam.getActivation())) {
|
||||
//存入报表库
|
||||
ExcelRpt excelRpt = new ExcelRpt();
|
||||
excelRpt.setName(excelRptTemp.getName());
|
||||
excelRpt.setLineId(reportSearchParam.getLineId());
|
||||
excelRpt.setDataDate(DateUtil.parse(reportSearchParam.getStartTime()));
|
||||
excelRpt.setTempId(excelRptTemp.getId());
|
||||
excelRpt.setContent(newContent);
|
||||
excelRpt.setType(reportSearchParam.getType());
|
||||
excelRpt.setState(DataStateEnum.ENABLE.getCode());
|
||||
excelRptMapper.insert(excelRpt);
|
||||
}
|
||||
|
||||
return minIoUtils.getObjectUrl(minIoProperties.getBucket(), newContent, 7 * 24 * 60 * 60);
|
||||
//拼接数据
|
||||
results.add(excelRptTemp.getReportForm());
|
||||
results.add(content);
|
||||
return results;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<ReportTreeVO> reportChooseTree() {
|
||||
LambdaQueryWrapper<EleEpdPqd> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
@@ -462,6 +361,132 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析报表数据
|
||||
*/
|
||||
private String analyzeReport(ReportSearchParam reportSearchParam,ExcelRptTemp excelRptTemp){
|
||||
//根据content,获取v值并进行处理
|
||||
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
|
||||
JSONArray jsonArray = null;
|
||||
try {
|
||||
//通过文件服务器获取
|
||||
String objectUrl = minIoUtils.getObjectUrl(minIoProperties.getBucket(), excelRptTemp.getContent(), 7 * 24 * 60 * 60);
|
||||
jsonArray = JSONUtil.parseArray(urlToString(objectUrl));
|
||||
jsonArray.forEach(item -> {
|
||||
JSONObject jsonObject = (JSONObject) item;
|
||||
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
|
||||
itemArr.forEach((it) -> {
|
||||
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
|
||||
//获取到1列
|
||||
JSONObject data = (JSONObject) it;
|
||||
JSONObject son = (JSONObject) data.get("v");
|
||||
if (son.containsKey("v")) {
|
||||
String v = son.getStr("v");
|
||||
//数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$
|
||||
if (v.charAt(0) == '$' && v.contains("#")) {
|
||||
//剔除前后$
|
||||
v = v.replace("$", "");
|
||||
//封装ReportTemplateDTO
|
||||
ReportTemplateDTO reportTemplateDTO = new ReportTemplateDTO();
|
||||
reportTemplateDTO.setItemName(v);
|
||||
//根据#分割数据
|
||||
String[] vItem = v.split("#");
|
||||
if (vItem.length == 4) {
|
||||
//$HA[_25]#B#max#classId$
|
||||
reportTemplateDTO.setTemplateName(vItem[0]);
|
||||
reportTemplateDTO.setPhase(vItem[1].substring(0,1));
|
||||
reportTemplateDTO.setStatMethod(vItem[2].toUpperCase());
|
||||
reportTemplateDTO.setClassId(vItem[3]);
|
||||
} else if (vItem.length == 3) {
|
||||
//$HA[_25]#max#classId$
|
||||
reportTemplateDTO.setTemplateName(vItem[0]);
|
||||
reportTemplateDTO.setPhase("M");
|
||||
reportTemplateDTO.setStatMethod(vItem[1].toUpperCase());
|
||||
reportTemplateDTO.setClassId(vItem[2]);
|
||||
}
|
||||
|
||||
reportTemplateDTOList.add(reportTemplateDTO);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
} catch (Exception e) {
|
||||
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
|
||||
}
|
||||
|
||||
List<ReportTemplateDTO> endList = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(reportTemplateDTOList)) {
|
||||
//开始组织sql
|
||||
reportTemplateDTOList.stream().forEach(data -> {
|
||||
StringBuilder sql = new StringBuilder(InfluxDBSqlConstant.SELECT);
|
||||
if (InfluxDBTableConstant.MAX.equals(data.getStatMethod())) {
|
||||
assSql(data, sql, endList, InfluxDBSqlConstant.MAX, reportSearchParam);
|
||||
} else if (InfluxDBTableConstant.MIN.equals(data.getStatMethod())) {
|
||||
assSql(data, sql, endList, InfluxDBSqlConstant.MIN, reportSearchParam);
|
||||
} else if (InfluxDBTableConstant.AVG.equals(data.getStatMethod())) {
|
||||
assSql(data, sql, endList, InfluxDBSqlConstant.AVG, reportSearchParam);
|
||||
} else if (InfluxDBTableConstant.CP95.equals(data.getStatMethod())) {
|
||||
assSql(data, sql, endList, InfluxDBSqlConstant.CP95, reportSearchParam);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(endList)) {
|
||||
//进行反向赋值到模板
|
||||
//1、根据itemName分组
|
||||
Map<String, List<ReportTemplateDTO>> assMap = endList.stream().collect(Collectors.groupingBy(ReportTemplateDTO::getItemName));
|
||||
//2、把itemName的value赋给v和m
|
||||
jsonArray.forEach(item -> {
|
||||
JSONObject jsonObject = (JSONObject) item;
|
||||
JSONArray itemArr = (JSONArray) jsonObject.get("celldata");
|
||||
itemArr.forEach((it) -> {
|
||||
if (Objects.nonNull(it) && !"null".equals(it.toString())) {
|
||||
//获取到1列
|
||||
JSONObject data = (JSONObject) it;
|
||||
JSONObject son = (JSONObject) data.get("v");
|
||||
if (son.containsKey("v")) {
|
||||
String v = son.getStr("v");
|
||||
//数据格式:$HA[_25]#B#max#classId$ 或 $HA[_25]#max#classId$
|
||||
if (v.charAt(0) == '$' && v.contains("#")) {
|
||||
String str = assMap.get(v.replace("$", "")).get(0).getValue();
|
||||
//没有值,赋"/"
|
||||
if (StringUtils.isBlank(str)) {
|
||||
str = "/";
|
||||
}
|
||||
son.set("v", str);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
//文件上传到Minio服务器,存入文件名
|
||||
File newFile = stringToFile(jsonArray.toString());
|
||||
MultipartFile newMultipartFile = getMultipartFile(newFile);
|
||||
MinIoUploadResDTO minIoUploadResDTO = contentToMinio(newMultipartFile);
|
||||
String newContent = minIoUploadResDTO.getMinFileName();
|
||||
|
||||
//存入报表库
|
||||
ExcelRpt excelRpt = new ExcelRpt();
|
||||
excelRpt.setName(excelRptTemp.getName());
|
||||
excelRpt.setLineId(reportSearchParam.getLineId());
|
||||
excelRpt.setDataDate(DateUtil.parse(reportSearchParam.getStartTime()));
|
||||
excelRpt.setTempId(excelRptTemp.getId());
|
||||
excelRpt.setContent(newContent);
|
||||
excelRpt.setType(reportSearchParam.getType());
|
||||
//根据模板激活状态,判断是否进库(修改State字段:0未进库 1已进库)
|
||||
if (DataStateEnum.ENABLE.getCode().equals(reportSearchParam.getActivation())) {
|
||||
excelRpt.setState(DataStateEnum.ENABLE.getCode());
|
||||
}else{
|
||||
excelRpt.setState(DataStateEnum.DELETED.getCode());
|
||||
}
|
||||
excelRptMapper.insert(excelRpt);
|
||||
|
||||
return newContent;
|
||||
}
|
||||
|
||||
/**
|
||||
* 组装influxDB查询sql,查询value并封装endlist
|
||||
*
|
||||
@@ -476,21 +501,18 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
}else{
|
||||
sql.append(method).append(InfluxDBSqlConstant.LBK).append(data.getTemplateName()).append(InfluxDBSqlConstant.RBK).append(InfluxDBSqlConstant.AS_VALUE);
|
||||
}
|
||||
|
||||
sql.append(InfluxDBSqlConstant.FROM).append(data.getClassId()).append(InfluxDBSqlConstant.WHERE).append(InfluxDBTableConstant.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(reportSearchParam.getLineId()).append(InfluxDBSqlConstant.QM);
|
||||
//相别特殊处理
|
||||
if (InfluxDBTableConstant.NO_PHASE.equals(data.getPhase())) {
|
||||
sql.append(InfluxDBSqlConstant.FROM).append(data.getClassId())
|
||||
.append(InfluxDBSqlConstant.WHERE).append(InfluxDBTableConstant.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(reportSearchParam.getLineId()).append(InfluxDBSqlConstant.QM)
|
||||
.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getStatMethod()).append(InfluxDBSqlConstant.QM)
|
||||
.append(InfluxDBSqlConstant.TZ);
|
||||
} else {
|
||||
sql.append(InfluxDBSqlConstant.FROM).append(data.getClassId())
|
||||
.append(InfluxDBSqlConstant.WHERE).append(InfluxDBTableConstant.LINE_ID).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(reportSearchParam.getLineId()).append(InfluxDBSqlConstant.QM)
|
||||
.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getStatMethod()).append(InfluxDBSqlConstant.QM)
|
||||
.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.PHASIC_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getPhase()).append(InfluxDBSqlConstant.QM)
|
||||
.append(InfluxDBSqlConstant.TZ);
|
||||
if (!InfluxDBTableConstant.NO_PHASE.equals(data.getPhase())) {
|
||||
sql.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.PHASIC_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getPhase()).append(InfluxDBSqlConstant.QM);
|
||||
}
|
||||
|
||||
//data_flicker、data_fluc、data_plt 无 value_type
|
||||
if (!InfluxDBTableConstant.DATA_FLICKER.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_FLUC.equals(data.getClassId()) && !InfluxDBTableConstant.DATA_PLT.equals(data.getClassId())){
|
||||
sql.append(InfluxDBSqlConstant.AND).append(InfluxDBTableConstant.VALUE_TYPE).append(InfluxDBSqlConstant.EQ).append(InfluxDBSqlConstant.QM).append(data.getStatMethod()).append(InfluxDBSqlConstant.QM);
|
||||
}
|
||||
sql.append(InfluxDBSqlConstant.TZ);
|
||||
|
||||
//根据不同的库表赋值
|
||||
QueryResult queryResult = influxDbUtils.query(String.valueOf(sql));
|
||||
|
||||
|
||||
@@ -45,6 +45,8 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
|
||||
private final SubstationFeignClient substationFeignClient;
|
||||
|
||||
|
||||
|
||||
private final RStatPollutionSubstationMMapper pollutionSubstationMMapper;
|
||||
private final RStatPollutionSubstationYPOMapper pollutionSubstationYPOMapper;
|
||||
private final RStatPollutionSubstationQPOMapper pollutionSubstationQPOMapper;
|
||||
@@ -95,7 +97,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
QueryWrapper<RStatPollutionSubstationM> wrapper = new QueryWrapper<> ();
|
||||
wrapper.in ("substation_id",collect).
|
||||
eq ("pollution_type", pollutionSubstationQuryParam.getPollutionStatis ().getId ()).
|
||||
apply("DATE_FORMAT( data_date ,'%Y-%m') = '"+pollutionSubstationQuryParam.getLocalDate ()+"'");
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",pollutionSubstationQuryParam.getLocalDate ());
|
||||
List<RStatPollutionSubstationM> rStatPollutionSubstationMList = pollutionSubstationMMapper.selectList (wrapper);
|
||||
|
||||
pollutionSubstationDTOList.forEach (substationInfo ->{
|
||||
@@ -173,7 +175,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
QueryWrapper<RStatPollutionOrgYPO> rStatPollutionOrgYPOQueryWrapper = new QueryWrapper<> ();
|
||||
rStatPollutionOrgYPOQueryWrapper.eq ("org_id", detpid).
|
||||
eq ("pollution_type", pollutionType).
|
||||
apply("DATE_FORMAT( data_date ,'%Y-%m-%d') = '"+searchBeginTime+"'");
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
|
||||
RStatPollutionOrgYPO rStatPollutionOrgYPO = rStatPollutionOrgYPOMapper.selectOne (rStatPollutionOrgYPOQueryWrapper);
|
||||
;
|
||||
Optional.ofNullable (rStatPollutionOrgYPO).ifPresent (a->pollutionVO.setData (a.getValue ()));
|
||||
@@ -181,7 +183,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
QueryWrapper<RStatPollutionOrgQPO> rStatPollutionOrgQPOQueryWrapper = new QueryWrapper<> ();
|
||||
rStatPollutionOrgQPOQueryWrapper.eq ("org_id", detpid).
|
||||
eq ("pollution_type", pollutionType).
|
||||
apply("DATE_FORMAT( data_date ,'%Y-%m-%d') = '"+searchBeginTime+"'");
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
|
||||
RStatPollutionOrgQPO rStatPollutionOrgQPO = rStatPollutionOrgQPOMapper.selectOne (rStatPollutionOrgQPOQueryWrapper);
|
||||
;
|
||||
Optional.ofNullable (rStatPollutionOrgQPO).ifPresent (a->pollutionVO.setData (a.getValue ()));
|
||||
@@ -191,7 +193,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
QueryWrapper<RStatPollutionOrgMPO> rStatPollutionOrgMPOQueryWrapper = new QueryWrapper<> ();
|
||||
rStatPollutionOrgMPOQueryWrapper.eq ("org_id", detpid).
|
||||
eq ("pollution_type", pollutionType).
|
||||
apply("DATE_FORMAT( data_date ,'%Y-%m-%d') = '"+searchBeginTime+"'");
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
|
||||
RStatPollutionOrgMPO rStatPollutionOrgMPO = rStatPollutionOrgMPOMapper.selectOne (rStatPollutionOrgMPOQueryWrapper);
|
||||
;
|
||||
Optional.ofNullable (rStatPollutionOrgMPO).ifPresent (a->pollutionVO.setData (a.getValue ()));
|
||||
@@ -200,7 +202,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
QueryWrapper<RStatPollutionOrgDPO> rStatPollutionOrgDPOQueryWrapper = new QueryWrapper<> ();
|
||||
rStatPollutionOrgDPOQueryWrapper.eq ("org_id", detpid).
|
||||
eq ("pollution_type", pollutionType).
|
||||
apply("DATE_FORMAT( data_date ,'%Y-%m-%d') = '"+searchBeginTime+"'");
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
|
||||
RStatPollutionOrgDPO rStatPollutionOrgDPO = rStatPollutionOrgDPOMapper.selectOne (rStatPollutionOrgDPOQueryWrapper);
|
||||
;
|
||||
Optional.ofNullable (rStatPollutionOrgDPO).ifPresent (a->pollutionVO.setData (a.getValue ()));
|
||||
@@ -222,7 +224,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
QueryWrapper<RStatPollutionSubstationYPO> wrapper = new QueryWrapper<> ();
|
||||
wrapper.eq ("substation_id",id).
|
||||
eq ("pollution_type", pollutionType).
|
||||
apply("DATE_FORMAT( data_date ,'%Y-%m-%d') = '"+searchBeginTime+"'");
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
|
||||
RStatPollutionSubstationYPO rStatPollutionSubstationYPO = pollutionSubstationYPOMapper.selectOne (wrapper);
|
||||
|
||||
Optional.ofNullable (rStatPollutionSubstationYPO).ifPresent (t->pollutionsubVO.setData (t.getValue ()));
|
||||
@@ -230,7 +232,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
QueryWrapper<RStatPollutionSubstationQPO> wrapper = new QueryWrapper<> ();
|
||||
wrapper.eq ("substation_id",id).
|
||||
eq ("pollution_type", pollutionType).
|
||||
apply("DATE_FORMAT( data_date ,'%Y-%m-%d') = '"+searchBeginTime+"'");
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
|
||||
RStatPollutionSubstationQPO rStatPollutionSubstationQPO = pollutionSubstationQPOMapper.selectOne (wrapper);
|
||||
|
||||
Optional.ofNullable (rStatPollutionSubstationQPO).ifPresent (t->pollutionsubVO.setData (t.getValue ()));
|
||||
@@ -238,7 +240,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
QueryWrapper<RStatPollutionSubstationM> wrapper = new QueryWrapper<> ();
|
||||
wrapper.eq ("substation_id",id).
|
||||
eq ("pollution_type", pollutionType).
|
||||
apply("DATE_FORMAT( data_date ,'%Y-%m-%d') = '"+searchBeginTime+"'");
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
|
||||
RStatPollutionSubstationM rStatPollutionSubstationM = pollutionSubstationMMapper.selectOne (wrapper);
|
||||
|
||||
Optional.ofNullable (rStatPollutionSubstationM).ifPresent (t->pollutionsubVO.setData (t.getValue ()));
|
||||
@@ -247,7 +249,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
QueryWrapper<RStatPollutionSubstationDPO> wrapper = new QueryWrapper<> ();
|
||||
wrapper.eq ("substation_id",id).
|
||||
eq ("pollution_type", pollutionType).
|
||||
apply("DATE_FORMAT( data_date ,'%Y-%m-%d') = '"+searchBeginTime+"'");
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
|
||||
RStatPollutionSubstationDPO rStatPollutionSubstationDPO = pollutionSubstationDPOMapper.selectOne (wrapper);
|
||||
|
||||
Optional.ofNullable (rStatPollutionSubstationDPO).ifPresent (t->pollutionsubVO.setData (t.getValue ()));
|
||||
@@ -288,7 +290,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
QueryWrapper<RStatPollutionSubstationYPO> wrapper = new QueryWrapper<> ();
|
||||
wrapper.eq ("substation_id",id).
|
||||
eq ("pollution_type", pollutionType).
|
||||
apply("DATE_FORMAT( data_date ,'%Y-%m-%d') = '"+searchBeginTime+"'");
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
|
||||
RStatPollutionSubstationYPO rStatPollutionSubstationYPO = pollutionSubstationYPOMapper.selectOne (wrapper);
|
||||
|
||||
Optional.ofNullable (rStatPollutionSubstationYPO).ifPresent (t->pollutionSubstationDTO.setData (t.getValue ()));
|
||||
@@ -296,7 +298,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
QueryWrapper<RStatPollutionSubstationQPO> wrapper = new QueryWrapper<> ();
|
||||
wrapper.eq ("substation_id",id).
|
||||
eq ("pollution_type", pollutionType).
|
||||
apply("DATE_FORMAT( data_date ,'%Y-%m-%d') = '"+searchBeginTime+"'");
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
|
||||
RStatPollutionSubstationQPO rStatPollutionSubstationQPO = pollutionSubstationQPOMapper.selectOne (wrapper);
|
||||
|
||||
Optional.ofNullable (rStatPollutionSubstationQPO).ifPresent (t->pollutionSubstationDTO.setData (t.getValue ()));
|
||||
@@ -304,7 +306,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
QueryWrapper<RStatPollutionSubstationM> wrapper = new QueryWrapper<> ();
|
||||
wrapper.eq ("substation_id",id).
|
||||
eq ("pollution_type", pollutionType).
|
||||
apply("DATE_FORMAT( data_date ,'%Y-%m-%d') = '"+searchBeginTime+"'");
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
|
||||
RStatPollutionSubstationM rStatPollutionSubstationM = pollutionSubstationMMapper.selectOne (wrapper);
|
||||
|
||||
Optional.ofNullable (rStatPollutionSubstationM).ifPresent (t->pollutionSubstationDTO.setData (t.getValue ()));
|
||||
@@ -313,7 +315,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
QueryWrapper<RStatPollutionSubstationDPO> wrapper = new QueryWrapper<> ();
|
||||
wrapper.eq ("substation_id",id).
|
||||
eq ("pollution_type", pollutionType).
|
||||
apply("DATE_FORMAT( data_date ,'%Y-%m-%d') = '"+searchBeginTime+"'");
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",searchBeginTime);
|
||||
RStatPollutionSubstationDPO rStatPollutionSubstationDPO = pollutionSubstationDPOMapper.selectOne (wrapper);
|
||||
|
||||
Optional.ofNullable (rStatPollutionSubstationDPO).ifPresent (t->pollutionSubstationDTO.setData (t.getValue ()));
|
||||
|
||||
@@ -130,10 +130,9 @@ public class THDistortionServiceImpl implements THDistortionService {
|
||||
QueryWrapper<RMpVThd> wrapper = new QueryWrapper<>();
|
||||
wrapper.in ("measurement_point_id",collect).
|
||||
between ("data_date", statisticsBizBaseParam.getStartTime (), statisticsBizBaseParam.getEndTime ()).
|
||||
orderByDesc ("v_thd").
|
||||
last (" limit "+topNum);
|
||||
orderByDesc ("v_thd");
|
||||
List<RMpVThd> rMpVThdList = rMpVThdMapper.selectList (wrapper);
|
||||
rMpVThdVOList = rMpVThdList.stream ( ).map (rMpVThd -> {
|
||||
rMpVThdVOList = rMpVThdList.stream ( ).limit (topNum).map (rMpVThd -> {
|
||||
RMpVThdVO rMpVThdVO = new RMpVThdVO ( );
|
||||
BeanUtils.copyProperties (rMpVThd, rMpVThdVO);
|
||||
/*查询监测点详情获取名称*/
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
|
||||
import com.njcn.harmonic.pojo.vo.RStatOrgPvVO;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @date 2022/11/24
|
||||
*/
|
||||
|
||||
public interface DistributedPvOverviewService {
|
||||
|
||||
/**
|
||||
* 按区域获取分布式光伏总览
|
||||
*
|
||||
* @param param 条件参数
|
||||
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
|
||||
* @author yzh
|
||||
* @date 2022/11/24
|
||||
*/
|
||||
RStatOrgPvVO getDistributedPvOverviewArea(StatisticsBizBaseParam param);
|
||||
|
||||
/**
|
||||
* 按电压等级获取分布式光伏总览
|
||||
*
|
||||
* @param param 条件参数
|
||||
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
|
||||
* @author yzh
|
||||
* @date 2022/11/24
|
||||
*/
|
||||
RStatOrgPvVO getDistributedPvOverviewVoltage(StatisticsBizBaseParam param);
|
||||
|
||||
/**
|
||||
* 按监测点类型获取分布式光伏总览
|
||||
*
|
||||
* @param param 条件参数
|
||||
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
|
||||
* @author yzh
|
||||
* @date 2022/11/24
|
||||
*/
|
||||
RStatOrgPvVO getDistributedPvOverviewLineSort(StatisticsBizBaseParam param);
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
|
||||
import com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @date 2022/11/22
|
||||
*/
|
||||
|
||||
public interface DistributedPvVolOverService {
|
||||
|
||||
/**
|
||||
* 获取电压越限分析
|
||||
*
|
||||
* @param param 条件参数
|
||||
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < ?>>
|
||||
* @author yzh
|
||||
* @date 2022/11/22
|
||||
*/
|
||||
List<RMpPvPowerDetailVO> getVoltageOutOfLimitAnalysis(StatisticsBizBaseParam param);
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.po.RMpPvPowerDetailMPO;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_mp_pv_power_detail_m(分布式光伏_台区电能质量明细_月表)】的数据库操作Service
|
||||
* @createDate 2022-11-25 10:22:31
|
||||
*/
|
||||
public interface RMpPvPowerDetailMService extends IService<RMpPvPowerDetailMPO> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.po.RMpPvPowerDetailQPO;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_mp_pv_power_detail_q(分布式光伏_台区电能质量明细_季表)】的数据库操作Service
|
||||
* @createDate 2022-11-25 10:22:31
|
||||
*/
|
||||
public interface RMpPvPowerDetailQService extends IService<RMpPvPowerDetailQPO> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.po.RMpPvPowerDetailYPO;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_mp_pv_power_detail_y(分布式光伏_台区电能质量明细_年表)】的数据库操作Service
|
||||
* @createDate 2022-11-25 10:22:31
|
||||
*/
|
||||
public interface RMpPvPowerDetailYService extends IService<RMpPvPowerDetailYPO> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.njcn.harmonic.pojo.po.RMpWpPowerDetailM;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电站_台区电能质量明细_月表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2022-11-30
|
||||
*/
|
||||
public interface RMpWpPowerDetailMService extends IService<RMpWpPowerDetailM> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.njcn.harmonic.pojo.po.RMpWpPowerDetailQ;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电站_台区电能质量明细_季表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2022-11-30
|
||||
*/
|
||||
public interface RMpWpPowerDetailQService extends IService<RMpWpPowerDetailQ> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.njcn.harmonic.pojo.po.RMpWpPowerDetailY;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电站_台区电能质量明细_年表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2022-11-30
|
||||
*/
|
||||
public interface RMpWpPowerDetailYService extends IService<RMpWpPowerDetailY> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvAreaPO;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_stat_org_pv_area(分布式光伏统计表-按区域)】的数据库操作Service
|
||||
* @createDate 2022-11-25 10:35:18
|
||||
*/
|
||||
public interface RStatOrgPvAreaService extends IService<RStatOrgPvAreaPO> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvMonitorTypePO;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_stat_org_pv_monitor_type(分布式光伏统计表-按监测点类型)】的数据库操作Service
|
||||
* @createDate 2022-11-25 10:35:18
|
||||
*/
|
||||
public interface RStatOrgPvMonitorTypeService extends IService<RStatOrgPvMonitorTypePO> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvPowerQualityMPO;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_stat_org_pv_power_quality_m(分布式光伏_台区电能质量统计_月表)】的数据库操作Service
|
||||
* @createDate 2022-11-25 09:08:58
|
||||
*/
|
||||
public interface RStatOrgPvPowerQualityMService extends IService<RStatOrgPvPowerQualityMPO> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvPowerQualityQPO;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_stat_org_pv_power_quality_q(分布式光伏_台区电能质量统计_季表)】的数据库操作Service
|
||||
* @createDate 2022-11-25 09:08:58
|
||||
*/
|
||||
public interface RStatOrgPvPowerQualityQService extends IService<RStatOrgPvPowerQualityQPO> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.param.PowerQualityParam;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvPowerQualityQPO;
|
||||
import com.njcn.harmonic.pojo.vo.RStatOrgPvDetailVO;
|
||||
import com.njcn.harmonic.pojo.vo.RStatOrgPvPowerStreamVO;
|
||||
|
||||
/**
|
||||
* 分布式光伏_台区电能质量明细
|
||||
*
|
||||
* @author wr
|
||||
* @date 2022-11-22 14:34:42
|
||||
*/
|
||||
public interface RStatOrgPvPowerQualityService extends IService<RStatOrgPvPowerQualityQPO> {
|
||||
|
||||
/**
|
||||
* 低功率因数统计分页查询
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
Page<RStatOrgPvPowerStreamVO> getPowerQualityStream(PowerQualityParam param);
|
||||
|
||||
/**
|
||||
* 详细数据表分页查询
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
Page<RStatOrgPvDetailVO> getPowerQualityInfo(PowerQualityParam.PowerQualityDetailInfoParam param);
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvPowerQualityYPO;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_stat_org_pv_power_quality_y(分布式光伏_台区电能质量统计_年表)】的数据库操作Service
|
||||
* @createDate 2022-11-25 09:08:58
|
||||
*/
|
||||
public interface RStatOrgPvPowerQualityYService extends IService<RStatOrgPvPowerQualityYPO> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.njcn.harmonic.service.specialanalysis;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvVoltagePO;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_stat_org_pv_voltage(分布式光伏统计表-按电压等级)】的数据库操作Service
|
||||
* @createDate 2022-11-25 10:35:18
|
||||
*/
|
||||
public interface RStatOrgPvVoltageService extends IService<RStatOrgPvVoltagePO> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,306 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
|
||||
import com.njcn.device.pms.api.PwMonitorClient;
|
||||
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
|
||||
import com.njcn.device.pms.pojo.param.PwPmsMonitorParam;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvAreaPO;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvMonitorTypePO;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvVoltagePO;
|
||||
import com.njcn.harmonic.pojo.vo.RStatOrgPvVO;
|
||||
import com.njcn.harmonic.service.specialanalysis.DistributedPvOverviewService;
|
||||
import com.njcn.harmonic.service.specialanalysis.RStatOrgPvAreaService;
|
||||
import com.njcn.harmonic.service.specialanalysis.RStatOrgPvMonitorTypeService;
|
||||
import com.njcn.harmonic.service.specialanalysis.RStatOrgPvVoltageService;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import com.njcn.system.enums.DicDataTypeEnum;
|
||||
import com.njcn.system.pojo.po.DictData;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @date 2022/11/24
|
||||
*/
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class DistributedPvOverviewServiceImpl implements DistributedPvOverviewService {
|
||||
|
||||
private final PwMonitorClient monitorClient;
|
||||
|
||||
private final RStatOrgPvAreaService rStatOrgPvAreaService;
|
||||
private final RStatOrgPvVoltageService rStatOrgPvVoltageService;
|
||||
private final RStatOrgPvMonitorTypeService rStatOrgPvMonitorTypeService;
|
||||
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
|
||||
/**
|
||||
* 按区域获取分布式光伏总览
|
||||
*
|
||||
* @param param 条件参数
|
||||
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
|
||||
* @author yzh
|
||||
* @date 2022/11/24
|
||||
*/
|
||||
|
||||
@Override
|
||||
public RStatOrgPvVO getDistributedPvOverviewArea(StatisticsBizBaseParam param) {
|
||||
// 获取监测点信息
|
||||
List<PwPmsMonitorDTO> monitorDtoList = getMonitorDtoList(param);
|
||||
if (CollUtil.isEmpty(monitorDtoList)) {
|
||||
return new RStatOrgPvVO();
|
||||
}
|
||||
// 取出单位
|
||||
List<String> deptIds = monitorDtoList.stream().map(PwPmsMonitorDTO::getOrgId).collect(Collectors.toList());
|
||||
// 按电压等级获取分布式光伏总览
|
||||
LambdaQueryWrapper<RStatOrgPvAreaPO> lqw = new LambdaQueryWrapper<>();
|
||||
lqw.in(RStatOrgPvAreaPO::getOrgNo, deptIds);
|
||||
lqw.ge(param.getStartTime() != null, RStatOrgPvAreaPO::getDataDate, param.getStartTime());
|
||||
lqw.le(param.getEndTime() != null, RStatOrgPvAreaPO::getDataDate, param.getEndTime());
|
||||
List<RStatOrgPvAreaPO> poList = rStatOrgPvAreaService.list(lqw);
|
||||
if (CollUtil.isEmpty(poList)) {
|
||||
new RStatOrgPvVO();
|
||||
}
|
||||
// 查询台区电能质量事件类型
|
||||
List<DictData> areaPqEventType = dicDataFeignClient
|
||||
.getDicDataByTypeCode(DicDataTypeEnum.AREA_PQ_EVENT_TYPE.getCode()).getData();
|
||||
// 将事件类型转换成map集合l..
|
||||
Map<String, String> areaPqEventTypeMap = areaPqEventType.
|
||||
stream().collect(Collectors.toMap(DictData::getId, DictData::getCode));
|
||||
// 将查询出来的数据转换成map集合
|
||||
Map<String, List<RStatOrgPvAreaPO>> poMap = poList.stream().collect(Collectors.groupingBy(RStatOrgPvAreaPO::getOrgNo));
|
||||
RStatOrgPvVO result = new RStatOrgPvVO();
|
||||
List<RStatOrgPvVO.FlowReversal> flowReversalList = new ArrayList<>();
|
||||
List<RStatOrgPvVO.VoltageOutOfLimit> voltageOutOfLimitList = new ArrayList<>();
|
||||
List<RStatOrgPvVO.PvPermeability> pvPermeabilityList = new ArrayList<>();
|
||||
List<RStatOrgPvVO.LowPowerFactor> lowPowerFactorList = new ArrayList<>();
|
||||
poMap.forEach((key, value) -> {
|
||||
for (RStatOrgPvAreaPO po : value) {
|
||||
// 潮流倒送
|
||||
if (areaPqEventTypeMap.get(po.getAreaPqEventType()).equals(DicDataEnum.EVENT_TYPE_U.getCode())){
|
||||
RStatOrgPvVO.FlowReversal flowReversal = new RStatOrgPvVO.FlowReversal();
|
||||
Integer monitorPointNum = po.getMonitorPointNum();
|
||||
flowReversal.setMonitor(monitorPointNum.toString());
|
||||
flowReversal.setType(key);
|
||||
flowReversalList.add(flowReversal);
|
||||
}
|
||||
// 电压越限
|
||||
if (areaPqEventTypeMap.get(po.getAreaPqEventType()).equals(DicDataEnum.EVENT_TYPE_W.getCode())){
|
||||
RStatOrgPvVO.VoltageOutOfLimit voltageOutOfLimit = new RStatOrgPvVO.VoltageOutOfLimit();
|
||||
Integer monitorPointNum = po.getMonitorPointNum();
|
||||
voltageOutOfLimit.setMonitor(monitorPointNum.toString());
|
||||
voltageOutOfLimit.setType(key);
|
||||
voltageOutOfLimitList.add(voltageOutOfLimit);
|
||||
}
|
||||
// 渗透率超上限
|
||||
if (areaPqEventTypeMap.get(po.getAreaPqEventType()).equals(DicDataEnum.PENET_LIMIT.getCode())){
|
||||
RStatOrgPvVO.PvPermeability pvPermeability = new RStatOrgPvVO.PvPermeability();
|
||||
Integer monitorPointNum = po.getMonitorPointNum();
|
||||
pvPermeability.setMonitor(monitorPointNum.toString());
|
||||
pvPermeability.setType(key);
|
||||
pvPermeabilityList.add(pvPermeability);
|
||||
}
|
||||
// 低功率因数
|
||||
if (areaPqEventTypeMap.get(po.getAreaPqEventType()).equals(DicDataEnum.EVENT_TYPE_I.getCode())){
|
||||
RStatOrgPvVO.LowPowerFactor lowPowerFactor = new RStatOrgPvVO.LowPowerFactor();
|
||||
Integer monitorPointNum = po.getMonitorPointNum();
|
||||
lowPowerFactor.setMonitor(monitorPointNum.toString());
|
||||
lowPowerFactor.setType(key);
|
||||
lowPowerFactorList.add(lowPowerFactor);
|
||||
}
|
||||
}
|
||||
});
|
||||
result.setFlowReversal(flowReversalList);
|
||||
result.setVoltageOutOfLimit(voltageOutOfLimitList);
|
||||
result.setLowPowerFactor(lowPowerFactorList);
|
||||
result.setPvPermeability(pvPermeabilityList);
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 按电压等级获取分布式光伏总览
|
||||
*
|
||||
* @param param 条件参数
|
||||
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
|
||||
* @author yzh
|
||||
* @date 2022/11/24
|
||||
*/
|
||||
@Override
|
||||
public RStatOrgPvVO getDistributedPvOverviewVoltage(StatisticsBizBaseParam param) {
|
||||
// 获取监测点信息
|
||||
List<PwPmsMonitorDTO> monitorDtoList = getMonitorDtoList(param);
|
||||
if (CollUtil.isEmpty(monitorDtoList)) {
|
||||
return new RStatOrgPvVO();
|
||||
}
|
||||
// 取出单位
|
||||
List<String> deptIds = monitorDtoList.stream().map(PwPmsMonitorDTO::getOrgId).collect(Collectors.toList());
|
||||
// 按电压等级获取分布式光伏总览
|
||||
LambdaQueryWrapper<RStatOrgPvVoltagePO> lqw = new LambdaQueryWrapper<>();
|
||||
lqw.in(RStatOrgPvVoltagePO::getOrgNo, deptIds);
|
||||
lqw.ge(param.getStartTime() != null, RStatOrgPvVoltagePO::getDataDate, param.getStartTime());
|
||||
lqw.le(param.getEndTime() != null, RStatOrgPvVoltagePO::getDataDate, param.getEndTime());
|
||||
List<RStatOrgPvVoltagePO> poList = rStatOrgPvVoltageService.list(lqw);
|
||||
if (CollUtil.isEmpty(poList)) {
|
||||
new RStatOrgPvVO();
|
||||
}
|
||||
// 查询台区电能质量事件类型
|
||||
List<DictData> areaPqEventType = dicDataFeignClient
|
||||
.getDicDataByTypeCode(DicDataTypeEnum.AREA_PQ_EVENT_TYPE.getCode()).getData();
|
||||
// 将事件类型转换成map集合l..
|
||||
Map<String, String> areaPqEventTypeMap = areaPqEventType.
|
||||
stream().collect(Collectors.toMap(DictData::getId, DictData::getCode));
|
||||
// 将查询出来的数据转换成map集合
|
||||
Map<String, List<RStatOrgPvVoltagePO>> poMap = poList.stream().collect(Collectors.groupingBy(RStatOrgPvVoltagePO::getVoltageClass));
|
||||
RStatOrgPvVO result = new RStatOrgPvVO();
|
||||
List<RStatOrgPvVO.FlowReversal> flowReversalList = new ArrayList<>();
|
||||
List<RStatOrgPvVO.VoltageOutOfLimit> voltageOutOfLimitList = new ArrayList<>();
|
||||
List<RStatOrgPvVO.PvPermeability> pvPermeabilityList = new ArrayList<>();
|
||||
List<RStatOrgPvVO.LowPowerFactor> lowPowerFactorList = new ArrayList<>();
|
||||
poMap.forEach((key, value) -> {
|
||||
for (RStatOrgPvVoltagePO po : value) {
|
||||
// 潮流倒送
|
||||
if (areaPqEventTypeMap.get(po.getAreaPqEventType()).equals(DicDataEnum.EVENT_TYPE_U.getCode())){
|
||||
RStatOrgPvVO.FlowReversal flowReversal = new RStatOrgPvVO.FlowReversal();
|
||||
Integer monitorPointNum = po.getMonitorPointNum();
|
||||
flowReversal.setMonitor(monitorPointNum.toString());
|
||||
flowReversal.setType(key);
|
||||
flowReversalList.add(flowReversal);
|
||||
}
|
||||
// 电压越限
|
||||
if (areaPqEventTypeMap.get(po.getAreaPqEventType()).equals(DicDataEnum.EVENT_TYPE_W.getCode())){
|
||||
RStatOrgPvVO.VoltageOutOfLimit voltageOutOfLimit = new RStatOrgPvVO.VoltageOutOfLimit();
|
||||
Integer monitorPointNum = po.getMonitorPointNum();
|
||||
voltageOutOfLimit.setMonitor(monitorPointNum.toString());
|
||||
voltageOutOfLimit.setType(key);
|
||||
voltageOutOfLimitList.add(voltageOutOfLimit);
|
||||
}
|
||||
// 渗透率超上限
|
||||
if (areaPqEventTypeMap.get(po.getAreaPqEventType()).equals(DicDataEnum.PENET_LIMIT.getCode())){
|
||||
RStatOrgPvVO.PvPermeability pvPermeability = new RStatOrgPvVO.PvPermeability();
|
||||
Integer monitorPointNum = po.getMonitorPointNum();
|
||||
pvPermeability.setMonitor(monitorPointNum.toString());
|
||||
pvPermeability.setType(key);
|
||||
pvPermeabilityList.add(pvPermeability);
|
||||
}
|
||||
// 低功率因数
|
||||
if (areaPqEventTypeMap.get(po.getAreaPqEventType()).equals(DicDataEnum.EVENT_TYPE_I.getCode())){
|
||||
RStatOrgPvVO.LowPowerFactor lowPowerFactor = new RStatOrgPvVO.LowPowerFactor();
|
||||
Integer monitorPointNum = po.getMonitorPointNum();
|
||||
lowPowerFactor.setMonitor(monitorPointNum.toString());
|
||||
lowPowerFactor.setType(key);
|
||||
lowPowerFactorList.add(lowPowerFactor);
|
||||
}
|
||||
}
|
||||
});
|
||||
result.setFlowReversal(flowReversalList);
|
||||
result.setVoltageOutOfLimit(voltageOutOfLimitList);
|
||||
result.setLowPowerFactor(lowPowerFactorList);
|
||||
result.setPvPermeability(pvPermeabilityList);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 按监测点类型获取分布式光伏总览
|
||||
*
|
||||
* @param param 条件参数
|
||||
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO>>
|
||||
* @author yzh
|
||||
* @date 2022/11/24
|
||||
*/
|
||||
@Override
|
||||
public RStatOrgPvVO getDistributedPvOverviewLineSort(StatisticsBizBaseParam param) {
|
||||
// 获取监测点信息
|
||||
List<PwPmsMonitorDTO> monitorDtoList = getMonitorDtoList(param);
|
||||
if (CollUtil.isEmpty(monitorDtoList)) {
|
||||
return new RStatOrgPvVO();
|
||||
}
|
||||
// 取出单位
|
||||
List<String> deptIds = monitorDtoList.stream().map(PwPmsMonitorDTO::getOrgId).collect(Collectors.toList());
|
||||
// 按电压等级获取分布式光伏总览
|
||||
LambdaQueryWrapper<RStatOrgPvMonitorTypePO> lqw = new LambdaQueryWrapper<>();
|
||||
lqw.in(RStatOrgPvMonitorTypePO::getOrgNo, deptIds);
|
||||
lqw.ge(param.getStartTime() != null, RStatOrgPvMonitorTypePO::getDataDate, param.getStartTime());
|
||||
lqw.le(param.getEndTime() != null, RStatOrgPvMonitorTypePO::getDataDate, param.getEndTime());
|
||||
List<RStatOrgPvMonitorTypePO> poList = rStatOrgPvMonitorTypeService.list(lqw);
|
||||
if (CollUtil.isEmpty(poList)) {
|
||||
new RStatOrgPvVO();
|
||||
}
|
||||
// 查询台区电能质量事件类型
|
||||
List<DictData> areaPqEventType = dicDataFeignClient
|
||||
.getDicDataByTypeCode(DicDataTypeEnum.AREA_PQ_EVENT_TYPE.getCode()).getData();
|
||||
// 将事件类型转换成map集合l..
|
||||
Map<String, String> areaPqEventTypeMap = areaPqEventType.
|
||||
stream().collect(Collectors.toMap(DictData::getId, DictData::getCode));
|
||||
// 将查询出来的数据转换成map集合
|
||||
Map<String, List<RStatOrgPvMonitorTypePO>> poMap = poList.stream().collect(Collectors.groupingBy(RStatOrgPvMonitorTypePO::getMonitorType));
|
||||
RStatOrgPvVO result = new RStatOrgPvVO();
|
||||
List<RStatOrgPvVO.FlowReversal> flowReversalList = new ArrayList<>();
|
||||
List<RStatOrgPvVO.VoltageOutOfLimit> voltageOutOfLimitList = new ArrayList<>();
|
||||
List<RStatOrgPvVO.PvPermeability> pvPermeabilityList = new ArrayList<>();
|
||||
List<RStatOrgPvVO.LowPowerFactor> lowPowerFactorList = new ArrayList<>();
|
||||
poMap.forEach((key, value) -> {
|
||||
for (RStatOrgPvMonitorTypePO po : value) {
|
||||
// 潮流倒送
|
||||
if (areaPqEventTypeMap.get(po.getAreaPqEventType()).equals(DicDataEnum.EVENT_TYPE_U.getCode())){
|
||||
RStatOrgPvVO.FlowReversal flowReversal = new RStatOrgPvVO.FlowReversal();
|
||||
Integer monitorPointNum = po.getMonitorPointNum();
|
||||
flowReversal.setMonitor(monitorPointNum.toString());
|
||||
flowReversal.setType(key);
|
||||
flowReversalList.add(flowReversal);
|
||||
}
|
||||
// 电压越限
|
||||
if (areaPqEventTypeMap.get(po.getAreaPqEventType()).equals(DicDataEnum.EVENT_TYPE_W.getCode())){
|
||||
RStatOrgPvVO.VoltageOutOfLimit voltageOutOfLimit = new RStatOrgPvVO.VoltageOutOfLimit();
|
||||
Integer monitorPointNum = po.getMonitorPointNum();
|
||||
voltageOutOfLimit.setMonitor(monitorPointNum.toString());
|
||||
voltageOutOfLimit.setType(key);
|
||||
voltageOutOfLimitList.add(voltageOutOfLimit);
|
||||
}
|
||||
// 渗透率超上限
|
||||
if (areaPqEventTypeMap.get(po.getAreaPqEventType()).equals(DicDataEnum.PENET_LIMIT.getCode())){
|
||||
RStatOrgPvVO.PvPermeability pvPermeability = new RStatOrgPvVO.PvPermeability();
|
||||
Integer monitorPointNum = po.getMonitorPointNum();
|
||||
pvPermeability.setMonitor(monitorPointNum.toString());
|
||||
pvPermeability.setType(key);
|
||||
pvPermeabilityList.add(pvPermeability);
|
||||
}
|
||||
// 低功率因数
|
||||
if (areaPqEventTypeMap.get(po.getAreaPqEventType()).equals(DicDataEnum.EVENT_TYPE_I.getCode())){
|
||||
RStatOrgPvVO.LowPowerFactor lowPowerFactor = new RStatOrgPvVO.LowPowerFactor();
|
||||
Integer monitorPointNum = po.getMonitorPointNum();
|
||||
lowPowerFactor.setMonitor(monitorPointNum.toString());
|
||||
lowPowerFactor.setType(key);
|
||||
lowPowerFactorList.add(lowPowerFactor);
|
||||
}
|
||||
}
|
||||
});
|
||||
result.setFlowReversal(flowReversalList);
|
||||
result.setVoltageOutOfLimit(voltageOutOfLimitList);
|
||||
result.setLowPowerFactor(lowPowerFactorList);
|
||||
result.setPvPermeability(pvPermeabilityList);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取监测点信息
|
||||
*
|
||||
* @param param 条件参数
|
||||
*/
|
||||
private List<PwPmsMonitorDTO> getMonitorDtoList(StatisticsBizBaseParam param) {
|
||||
PwPmsMonitorParam pwPmsMonitorParam = new PwPmsMonitorParam();
|
||||
pwPmsMonitorParam.setOrgId(param.getId());
|
||||
return monitorClient.getPwMonitorList(pwPmsMonitorParam).getData();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
|
||||
import com.njcn.device.pms.api.PwMonitorClient;
|
||||
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
|
||||
import com.njcn.device.pms.pojo.param.PwPmsMonitorParam;
|
||||
import com.njcn.harmonic.pojo.po.RMpPvPowerDetailMPO;
|
||||
import com.njcn.harmonic.pojo.vo.RMpPvPowerDetailVO;
|
||||
import com.njcn.harmonic.service.specialanalysis.DistributedPvVolOverService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @date 2022/11/22
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class DistributedPvVolOverServiceImpl implements DistributedPvVolOverService {
|
||||
|
||||
private final PwMonitorClient monitorClient;
|
||||
|
||||
private final RMpPvPowerDetailMServiceImpl rMpPvPowerDetailMService;
|
||||
|
||||
|
||||
/**
|
||||
* 获取电压越限分析
|
||||
*
|
||||
* @param param 条件参数
|
||||
* @return com.njcn.common.pojo.response.HttpResult<java.util.List < ?>>
|
||||
* @author yzh
|
||||
* @date 2022/11/22
|
||||
*/
|
||||
@Override
|
||||
public List<RMpPvPowerDetailVO> getVoltageOutOfLimitAnalysis(StatisticsBizBaseParam param) {
|
||||
// 获取当前单位下的监测点信息
|
||||
PwPmsMonitorParam pwPmsMonitorParam = new PwPmsMonitorParam();
|
||||
pwPmsMonitorParam.setOrgId(param.getId());
|
||||
List<PwPmsMonitorDTO> pwMonitorList = monitorClient.getPwMonitorList(pwPmsMonitorParam).getData();
|
||||
if (CollUtil.isEmpty(pwMonitorList)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
// 取出监测点id
|
||||
List<String> monitorIds = pwMonitorList
|
||||
.stream().map(PwPmsMonitorDTO::getMonitorId).collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(monitorIds)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
// 获取电压越限分析
|
||||
LambdaQueryWrapper<RMpPvPowerDetailMPO> lqw = new LambdaQueryWrapper<>();
|
||||
lqw.in(RMpPvPowerDetailMPO::getMeasurementPointId, monitorIds);
|
||||
lqw.ge(param.getStartTime() != null, RMpPvPowerDetailMPO::getDataDate, param.getStartTime());
|
||||
lqw.le(param.getEndTime() != null, RMpPvPowerDetailMPO::getDataDate, param.getEndTime());
|
||||
List<RMpPvPowerDetailMPO> pos = rMpPvPowerDetailMService.list(lqw);
|
||||
// 将监测点信息转换成map集合
|
||||
Map<String, PwPmsMonitorDTO> monitorMap = pwMonitorList.stream()
|
||||
.collect(Collectors.toMap(PwPmsMonitorDTO::getMonitorId, PwPmsMonitorDTO -> PwPmsMonitorDTO));
|
||||
// 数据赋值
|
||||
return pos.stream().map(po -> {
|
||||
RMpPvPowerDetailVO vo = new RMpPvPowerDetailVO();
|
||||
BeanUtils.copyProperties(po,vo);
|
||||
vo.setMonitorSort(monitorMap.get(po.getMeasurementPointId()).getMonitorSort());
|
||||
vo.setOrgName(monitorMap.get(po.getMeasurementPointId()).getOrgName());
|
||||
return vo;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.harmonic.mapper.specialanalysis.RMpPvPowerDetailMMapper;
|
||||
import com.njcn.harmonic.pojo.po.RMpPvPowerDetailMPO;
|
||||
import com.njcn.harmonic.service.specialanalysis.RMpPvPowerDetailMService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_mp_pv_power_detail_m(分布式光伏_台区电能质量明细_月表)】的数据库操作Service实现
|
||||
* @createDate 2022-11-25 10:22:31
|
||||
*/
|
||||
@Service
|
||||
public class RMpPvPowerDetailMServiceImpl extends ServiceImpl<RMpPvPowerDetailMMapper, RMpPvPowerDetailMPO>
|
||||
implements RMpPvPowerDetailMService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.harmonic.mapper.specialanalysis.RMpPvPowerDetailQMapper;
|
||||
import com.njcn.harmonic.pojo.po.RMpPvPowerDetailQPO;
|
||||
import com.njcn.harmonic.service.specialanalysis.RMpPvPowerDetailQService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_mp_pv_power_detail_q(分布式光伏_台区电能质量明细_季表)】的数据库操作Service实现
|
||||
* @createDate 2022-11-25 10:22:31
|
||||
*/
|
||||
@Service
|
||||
public class RMpPvPowerDetailQServiceImpl extends ServiceImpl<RMpPvPowerDetailQMapper, RMpPvPowerDetailQPO>
|
||||
implements RMpPvPowerDetailQService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.harmonic.mapper.specialanalysis.RMpPvPowerDetailYMapper;
|
||||
import com.njcn.harmonic.pojo.po.RMpPvPowerDetailYPO;
|
||||
import com.njcn.harmonic.service.specialanalysis.RMpPvPowerDetailYService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_mp_pv_power_detail_y(分布式光伏_台区电能质量明细_年表)】的数据库操作Service实现
|
||||
* @createDate 2022-11-25 10:22:31
|
||||
*/
|
||||
@Service
|
||||
public class RMpPvPowerDetailYServiceImpl extends ServiceImpl<RMpPvPowerDetailYMapper, RMpPvPowerDetailYPO>
|
||||
implements RMpPvPowerDetailYService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import com.njcn.harmonic.pojo.po.RMpWpPowerDetailM;
|
||||
import com.njcn.harmonic.mapper.specialanalysis.RMpWpPowerDetailMMapper;
|
||||
import com.njcn.harmonic.service.specialanalysis.RMpWpPowerDetailMService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电站_台区电能质量明细_月表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2022-11-30
|
||||
*/
|
||||
@Service
|
||||
public class RMpWpPowerDetailMServiceImpl extends ServiceImpl<RMpWpPowerDetailMMapper, RMpWpPowerDetailM> implements RMpWpPowerDetailMService {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import com.njcn.harmonic.pojo.po.RMpWpPowerDetailQ;
|
||||
import com.njcn.harmonic.mapper.specialanalysis.RMpWpPowerDetailQMapper;
|
||||
import com.njcn.harmonic.service.specialanalysis.RMpWpPowerDetailQService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电站_台区电能质量明细_季表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2022-11-30
|
||||
*/
|
||||
@Service
|
||||
public class RMpWpPowerDetailQServiceImpl extends ServiceImpl<RMpWpPowerDetailQMapper, RMpWpPowerDetailQ> implements RMpWpPowerDetailQService {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import com.njcn.harmonic.pojo.po.RMpWpPowerDetailY;
|
||||
import com.njcn.harmonic.mapper.specialanalysis.RMpWpPowerDetailYMapper;
|
||||
import com.njcn.harmonic.service.specialanalysis.RMpWpPowerDetailYService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 风电站_台区电能质量明细_年表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author wr
|
||||
* @since 2022-11-30
|
||||
*/
|
||||
@Service
|
||||
public class RMpWpPowerDetailYServiceImpl extends ServiceImpl<RMpWpPowerDetailYMapper, RMpWpPowerDetailY> implements RMpWpPowerDetailYService {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.harmonic.mapper.specialanalysis.RStatOrgPvAreaMapper;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvAreaPO;
|
||||
import com.njcn.harmonic.service.specialanalysis.RStatOrgPvAreaService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_stat_org_pv_area(分布式光伏统计表-按区域)】的数据库操作Service实现
|
||||
* @createDate 2022-11-25 10:35:18
|
||||
*/
|
||||
@Service
|
||||
public class RStatOrgPvAreaServiceImpl extends ServiceImpl<RStatOrgPvAreaMapper, RStatOrgPvAreaPO>
|
||||
implements RStatOrgPvAreaService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.harmonic.mapper.specialanalysis.RStatOrgPvMonitorTypeMapper;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvMonitorTypePO;
|
||||
import com.njcn.harmonic.service.specialanalysis.RStatOrgPvMonitorTypeService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_stat_org_pv_monitor_type(分布式光伏统计表-按监测点类型)】的数据库操作Service实现
|
||||
* @createDate 2022-11-25 10:35:18
|
||||
*/
|
||||
@Service
|
||||
public class RStatOrgPvMonitorTypeServiceImpl extends ServiceImpl<RStatOrgPvMonitorTypeMapper, RStatOrgPvMonitorTypePO>
|
||||
implements RStatOrgPvMonitorTypeService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.harmonic.mapper.specialanalysis.RStatOrgPvPowerQualityMMapper;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvPowerQualityMPO;
|
||||
import com.njcn.harmonic.service.specialanalysis.RStatOrgPvPowerQualityMService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_stat_org_pv_power_quality_m(分布式光伏_台区电能质量统计_月表)】的数据库操作Service实现
|
||||
* @createDate 2022-11-25 09:08:58
|
||||
*/
|
||||
@Service
|
||||
public class RStatOrgPvPowerQualityMServiceImpl extends ServiceImpl<RStatOrgPvPowerQualityMMapper, RStatOrgPvPowerQualityMPO>
|
||||
implements RStatOrgPvPowerQualityMService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.harmonic.mapper.specialanalysis.RStatOrgPvPowerQualityQMapper;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvPowerQualityQPO;
|
||||
import com.njcn.harmonic.service.specialanalysis.RStatOrgPvPowerQualityQService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_stat_org_pv_power_quality_q(分布式光伏_台区电能质量统计_季表)】的数据库操作Service实现
|
||||
* @createDate 2022-11-25 09:08:58
|
||||
*/
|
||||
@Service
|
||||
public class RStatOrgPvPowerQualityQServiceImpl extends ServiceImpl<RStatOrgPvPowerQualityQMapper, RStatOrgPvPowerQualityQPO>
|
||||
implements RStatOrgPvPowerQualityQService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.lang.Console;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.device.pms.api.PwMonitorClient;
|
||||
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
|
||||
import com.njcn.device.pms.pojo.param.PwPmsMonitorParam;
|
||||
import com.njcn.harmonic.mapper.specialanalysis.*;
|
||||
import com.njcn.harmonic.pojo.param.PowerQualityParam;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvPowerQualityQPO;
|
||||
import com.njcn.harmonic.pojo.vo.RStatOrgPvDetailVO;
|
||||
import com.njcn.harmonic.pojo.vo.RStatOrgPvPowerStreamVO;
|
||||
import com.njcn.harmonic.service.specialanalysis.RStatOrgPvPowerQualityService;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import com.njcn.system.enums.DicDataTypeEnum;
|
||||
import com.njcn.system.pojo.po.DictData;
|
||||
import com.njcn.user.api.DeptFeignClient;
|
||||
import com.njcn.user.pojo.dto.DeptDTO;
|
||||
import com.njcn.web.utils.WebUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 分布式光伏_台区电能质量明细
|
||||
*
|
||||
* @author wr
|
||||
* @date 2022-11-22 14:34:42
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class RStatOrgPvPowerQualityServiceImpl extends ServiceImpl<RStatOrgPvPowerQualityQMapper, RStatOrgPvPowerQualityQPO> implements RStatOrgPvPowerQualityService {
|
||||
|
||||
private final RStatOrgPvPowerQualityYMapper rStatOrgPvPowerQualityYPOMapper;
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
private final PwMonitorClient pwMonitorClient;
|
||||
|
||||
@Override
|
||||
public Page<RStatOrgPvPowerStreamVO> getPowerQualityStream(PowerQualityParam param) {
|
||||
PowerQualityParam.PowerQualityDetailParam bearParam= BeanUtil.copyProperties(param, PowerQualityParam.PowerQualityDetailParam.class);
|
||||
Map<String,String> list=new HashMap<>(3);
|
||||
List<DictData> dictDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.AREA_PQ_EVENT_TYPE.getCode()).getData();
|
||||
if(CollectionUtil.isEmpty(dictDataList)){
|
||||
throw new BusinessException(CommonResponseEnum.NO_DATA, "台区电能质量事件类型为空");
|
||||
}
|
||||
//获取部门id集合
|
||||
List<DeptDTO> deptDTOS = deptFeignClient.getDeptDescendantIndexes(param.getId(), WebUtil.filterDeptType()).getData();
|
||||
if(CollectionUtil.isEmpty(deptDTOS)){
|
||||
throw new BusinessException(CommonResponseEnum.NO_DATA, "获取部门信息为空");
|
||||
}
|
||||
Map<String, DeptDTO> deptDTOMap = deptDTOS.stream().collect
|
||||
(Collectors.toMap(DeptDTO::getCode, Function.identity(), (key, key2) -> key2));
|
||||
List<String> OrgNOS = deptDTOS.stream().map(DeptDTO::getCode).collect(Collectors.toList());
|
||||
//根据字典Code,取出字典id,拼入sql中
|
||||
dictDataList.stream().forEach(dictData ->{
|
||||
if(DicDataEnum.EVENT_TYPE_L.getCode().equals(dictData.getCode())){
|
||||
list.put("eventTypeL",dictData.getId());
|
||||
}
|
||||
if(DicDataEnum.EVENT_TYPE_P.getCode().equals(dictData.getCode())){
|
||||
Console.log(list);
|
||||
list.put("eventTypeP",dictData.getId());
|
||||
}
|
||||
if(DicDataEnum.EVENT_TYPE_O.getCode().equals(dictData.getCode())){
|
||||
list.put("eventTypeO",dictData.getId());
|
||||
}
|
||||
});
|
||||
bearParam.setMapId(list);
|
||||
bearParam.setOrgNos(OrgNOS);
|
||||
//数据分页查询
|
||||
Page<RStatOrgPvPowerStreamVO> page = rStatOrgPvPowerQualityYPOMapper.selectListPage(new Page<>(param.getPageNum(), param.getPageSize()), bearParam);
|
||||
page.getRecords().stream().forEach(vo->{
|
||||
if(deptDTOMap.containsKey(vo.getOrgNo())){
|
||||
DeptDTO deptDTO = deptDTOMap.get(vo.getOrgNo());
|
||||
vo.setOrgNo(deptDTO.getName());
|
||||
}
|
||||
});
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<RStatOrgPvDetailVO> getPowerQualityInfo(PowerQualityParam.PowerQualityDetailInfoParam param) {
|
||||
//根据条件查询单位下面的所有配网监测点
|
||||
PwPmsMonitorParam pwPmsMonitorParam = new PwPmsMonitorParam();
|
||||
//单位id
|
||||
pwPmsMonitorParam.setOrgId(param.getId());
|
||||
//监测点类别
|
||||
pwPmsMonitorParam.setMonitorSort(param.getMonitorSort());
|
||||
//获取监测点信息
|
||||
PowerQualityParam.PowerQualityDetailParam bearParam= BeanUtil.copyProperties(param, PowerQualityParam.PowerQualityDetailParam.class);
|
||||
List<PwPmsMonitorDTO> pwMonitorList = pwMonitorClient.getPwMonitorList(pwPmsMonitorParam).getData();
|
||||
if (CollUtil.isEmpty(pwMonitorList)) {
|
||||
return new Page<>();
|
||||
}
|
||||
//监测点数据转换
|
||||
Map<String, PwPmsMonitorDTO> monitorMap = pwMonitorList.stream()
|
||||
.collect(Collectors.toMap(PwPmsMonitorDTO::getMonitorId, PwPmsMonitorDTO -> PwPmsMonitorDTO));
|
||||
//获取监测点id
|
||||
List<String> monitorIds = pwMonitorList
|
||||
.stream().map(PwPmsMonitorDTO::getMonitorId).collect(Collectors.toList());
|
||||
bearParam.setOrgNos(monitorIds);
|
||||
//数据库分页查询
|
||||
Page<RStatOrgPvDetailVO> page = rStatOrgPvPowerQualityYPOMapper.selectDetailListPage(new Page<>(param.getPageNum(), param.getPageSize()), bearParam);
|
||||
page.getRecords().stream().forEach(vo->{
|
||||
if(monitorMap.containsKey(vo.getMeasurementPointId())){
|
||||
PwPmsMonitorDTO monitorDTO = monitorMap.get(vo.getMeasurementPointId());
|
||||
vo.setOrgNo(monitorDTO.getOrgId());
|
||||
vo.setOrgName(monitorDTO.getOrgName());
|
||||
vo.setMeasurementPointName(monitorDTO.getMonitorName());
|
||||
vo.setVoltageLevels(monitorDTO.getVoltageLevel());
|
||||
vo.setMonitorSort(monitorDTO.getMonitorSort());
|
||||
}
|
||||
});
|
||||
return page;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.harmonic.mapper.specialanalysis.RStatOrgPvPowerQualityYMapper;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvPowerQualityYPO;
|
||||
import com.njcn.harmonic.service.specialanalysis.RStatOrgPvPowerQualityYService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_stat_org_pv_power_quality_y(分布式光伏_台区电能质量统计_年表)】的数据库操作Service实现
|
||||
* @createDate 2022-11-25 09:08:58
|
||||
*/
|
||||
@Service
|
||||
public class RStatOrgPvPowerQualityYServiceImpl extends ServiceImpl<RStatOrgPvPowerQualityYMapper, RStatOrgPvPowerQualityYPO>
|
||||
implements RStatOrgPvPowerQualityYService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.harmonic.service.specialanalysis.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.harmonic.mapper.specialanalysis.RStatOrgPvVoltageMapper;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgPvVoltagePO;
|
||||
import com.njcn.harmonic.service.specialanalysis.RStatOrgPvVoltageService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author yzh
|
||||
* @description 针对表【r_stat_org_pv_voltage(分布式光伏统计表-按电压等级)】的数据库操作Service实现
|
||||
* @createDate 2022-11-25 10:35:18
|
||||
*/
|
||||
@Service
|
||||
public class RStatOrgPvVoltageServiceImpl extends ServiceImpl<RStatOrgPvVoltageMapper, RStatOrgPvVoltagePO>
|
||||
implements RStatOrgPvVoltageService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user