1.单位标数据质量算法兼容修改

This commit is contained in:
wr
2023-09-26 17:38:39 +08:00
parent 904a94fe83
commit 94779ce822
23 changed files with 687 additions and 430 deletions

View File

@@ -59,7 +59,7 @@ public interface CommTerminalGeneralClient {
HttpResult<List<DeptGetSubStationDTO>> deptSubStation(@RequestBody @Validated DeptGetLineParam deptGetLineParam);
/**
* 根据单位获取所有变电站
* 根据单位获取所有母线
*
* @author cdf
* @date 2023/5/10
@@ -77,6 +77,13 @@ public interface CommTerminalGeneralClient {
@PostMapping("deptGetDevice")
HttpResult<List<DeptGetDeviceDTO>> deptGetDevice(@RequestBody @Validated DeptGetLineParam deptGetLineParam);
/**
* @Description: 根据单位获取单位下的装置以及装置下的监测点
* @Author: wr
* @Date: 2023/9/25 10:30
*/
@PostMapping("deptGetDeviceAndMonitor")
HttpResult<List<DeptGetDeviceDTO>> deptGetDeviceAndMonitor(@RequestBody @Validated DeptGetLineParam deptGetLineParam);
/**
* 根据单站id获取监测点信息

View File

@@ -54,7 +54,7 @@ public class CommTerminalGeneralClientFallbackFactory implements FallbackFactory
@Override
public HttpResult<List<DeptGetBusBarDTO>> deptBusBar(DeptGetLineParam deptGetLineParam) {
log.error("{}异常,降级处理,异常为:{}", "根据单位获取所有变电站", throwable.toString());
log.error("{}异常,降级处理,异常为:{}", "根据单位获取所有母线", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
@@ -64,6 +64,12 @@ public class CommTerminalGeneralClientFallbackFactory implements FallbackFactory
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<List<DeptGetDeviceDTO>> deptGetDeviceAndMonitor(DeptGetLineParam deptGetLineParam) {
log.error("{}异常,降级处理,异常为:{}", "根据单位获取单位下的装置以及装置下的监测点", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<LineDevGetBandDTO> substationGetLine(String substationId) {
log.error("{}异常,降级处理,异常为:{}", "根据单站id获取监测点信息", throwable.toString());

View File

@@ -123,6 +123,8 @@ public class PmsTerminal extends BaseEntity {
*/
private Integer status;
/**
* 通讯状态0中断1正常
*/
private Integer comFlag;
}

View File

@@ -119,7 +119,7 @@ public class CommTerminalController extends BaseController {
}
/**
* 根据单位获取所有变电站
* 根据单位获取所有母线
* @author cdf
* @date 2023/5/10
*/

View File

@@ -1,6 +1,8 @@
package com.njcn.device.pms.service.ledgerManger.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.common.pojo.enums.common.DataStateEnum;
@@ -252,9 +254,7 @@ public class CommTerminalServiceImpl implements CommTerminalService {
List<PmsMonitorBaseDTO> pmsMonitorBaseDTOList = distributionMonitorMapper.getDisMonitorAllList(null, 0);
List<String> pwTerminalIds = pmsMonitorBaseDTOList.stream().map(PmsMonitorBaseDTO::getTerminalId).distinct().collect(Collectors.toList());
lambdaQueryWrapper.clear();
lambdaQueryWrapper.in(PmsTerminal::getId, pwTerminalIds);
List<PmsTerminal> pwPmsTerminals = terminalMapper.selectList(lambdaQueryWrapper);
List<PmsTerminal> pwPmsTerminals = terminalMapper.selectList(new LambdaQueryWrapper<PmsTerminal>().in(CollUtil.isNotEmpty(pwTerminalIds),PmsTerminal::getId, pwTerminalIds));
Map<String, List<PmsTerminal>> mapPms = pwPmsTerminals.stream().collect(Collectors.groupingBy(PmsTerminal::getOrgId));
Map<String, List<Monitor>> monitorMap = new HashMap<>();
@@ -262,7 +262,7 @@ public class CommTerminalServiceImpl implements CommTerminalService {
if (type == 1) {
//获取装置接入的监测点
monitorMap = monitorList.stream().collect(Collectors.groupingBy(Monitor::getTerminalId));
pwMonitorMap = pmsMonitorBaseDTOList.stream().collect(Collectors.groupingBy(PmsMonitorBaseDTO::getTerminalId));
pwMonitorMap = pmsMonitorBaseDTOList.stream().filter(x-> ObjectUtil.isNotNull(x.getTerminalId())).collect(Collectors.groupingBy(PmsMonitorBaseDTO::getTerminalId));
}
@@ -285,6 +285,7 @@ public class CommTerminalServiceImpl implements CommTerminalService {
lineDevGetDTO.setDevId(dev.getId());
lineDevGetDTO.setType(0);
lineDevGetDTO.setUpdateTime(dev.getUpdateTime());
lineDevGetDTO.setComFlag(dev.getComFlag());
if(type == 1) {
if (finalMonitorMap.containsKey(dev.getId())) {
lineDevGetDTO.setMonitorIds(finalMonitorMap.get(dev.getId()).stream().map(Monitor::getId).distinct().collect(Collectors.toList()));
@@ -300,6 +301,7 @@ public class CommTerminalServiceImpl implements CommTerminalService {
lineDevGetDTO.setDevId(dev.getId());
lineDevGetDTO.setType(1);
lineDevGetDTO.setUpdateTime(dev.getUpdateTime());
lineDevGetDTO.setComFlag(dev.getComFlag());
if(type == 1) {
if (finalPwMonitorMap.containsKey(dev.getId())) {
lineDevGetDTO.setMonitorIds(finalMonitorMap.get(dev.getId()).stream().map(Monitor::getId).distinct().collect(Collectors.toList()));

View File

@@ -364,7 +364,10 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
//返回主网和配网监测信息
List<DeptGetChildrenDTO> deviceInfos = new ArrayList<>();
List<DeptDTO> deptInfos = deptFeignClient.getDeptDescendantIndexes(param.getDeptId(), Stream.of(0, 1).collect(Collectors.toList())).getData();
DictData dictData = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.LINE_STATE.getName(),DicDataEnum.RUN.getName()).getData();
if(Objects.isNull(dictData)){
throw new BusinessException("监测点状态字典为空");
}
for (DeptDTO deptInfo : deptInfos) {
List<DeptDTO> directDeptInfos = deptInfos.stream()
.filter(deptDTO -> deptDTO.getPid().equals(deptInfo.getId()))
@@ -374,7 +377,7 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
List<DeptDTO> dept = deptInfos.stream()
.filter(deptDTO -> deptDTO.getId().equals(deptInfo.getId()))
.collect(Collectors.toList());
deviceInfos.add(getPmsMonitor(dept.get(0), Collections.singletonList(dept.get(0).getCode())));
deviceInfos.add(getPmsMonitor(dept.get(0),dictData, Collections.singletonList(dept.get(0).getCode())));
} else {
List<String> deptIdList = new ArrayList<>();
for (DeptDTO deptDTO : directDeptInfos) {
@@ -389,7 +392,7 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
.collect(Collectors.toList()));
deptIdList.add(deptDTO.getCode());
}
deviceInfos.add(getPmsMonitor(deptInfo, deptIdList));
deviceInfos.add(getPmsMonitor(deptInfo, dictData,deptIdList));
}
}
return deviceInfos;
@@ -460,7 +463,7 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
* @param deptIdList
* @return
*/
private DeptGetChildrenDTO getPmsMonitor(DeptDTO deptDTO, List<String> deptIdList) {
private DeptGetChildrenDTO getPmsMonitor(DeptDTO deptDTO,DictData dictData, List<String> deptIdList) {
DeptGetChildrenDTO pmsDeptGetChildrenDTO = new DeptGetChildrenDTO();
pmsDeptGetChildrenDTO.setDeptId(deptDTO.getCode());
if (deptDTO.getType() == 0) {
@@ -473,6 +476,7 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
//主网监测点
List<Monitor> monitorList = this.list(new LambdaQueryWrapper<Monitor>()
.select(Monitor::getId)
.eq(Monitor::getMonitorState,dictData.getId())
.in(CollUtil.isNotEmpty(deptIdList), Monitor::getOrgId, deptIdList));
//配网监测点
List<PmsMonitorBaseDTO> pwMonitorList = iDistributionMonitorService.getMonitorByCondition(deptIdList, null);

View File

@@ -47,7 +47,8 @@
dev.id devId,
dic.value voltageLevel,
1 as type ,
device.update_time
device.update_time,
device.Com_Flag as comFlag
</if>
from pq_dept_line pq_dept_line
inner join pq_line point on pq_dept_line.line_id = point.id

View File

@@ -0,0 +1,67 @@
package com.njcn.executor.handler;
import com.njcn.common.pojo.constant.BizParamConstant;
import com.njcn.executor.utils.CommonExecutorUtils;
import com.njcn.prepare.harmonic.api.newalgorithm.ROperatingIndexFeignClient;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
/**
* @Description: 单位监测指标数据质量
* @return: null
* @Author: wr
* @Date: 2023/9/26 13:41
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class ROperatingIndexJob {
private final ROperatingIndexFeignClient rOperatingIndexFeignClient;
@XxlJob("rOperatingIndexDay")
public void rOperatingMonitorDay(){
log.info(LocalDateTime.now()+"单位监测指标数据质量_日表(主网,数据中心)------------------------");
PrimaryGridParam primaryGridParam=new PrimaryGridParam();
primaryGridParam.setDataSource(1);
primaryGridParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_DAY));
CommonExecutorUtils.commDefineDateObj(BizParamConstant.STAT_BIZ_DAY,primaryGridParam);
rOperatingIndexFeignClient.primaryGridDataHanlder(primaryGridParam);
}
@XxlJob("rOperatingIndexMonth")
public void rOperatingIndexMonth(){
log.info(LocalDateTime.now()+"单位监测指标数据质量_月表(主网,数据中心)------------------------");
PrimaryGridParam primaryGridParam=new PrimaryGridParam();
primaryGridParam.setDataSource(1);
primaryGridParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_MONTH));
CommonExecutorUtils.commDefineDateObj(BizParamConstant.STAT_BIZ_MONTH,primaryGridParam);
rOperatingIndexFeignClient.primaryGridDataHanlder(primaryGridParam);
}
@XxlJob("rOperatingIndexQuarter")
public void rOperatingIndexQuarter(){
log.info(LocalDateTime.now()+"单位监测指标数据质量_季表(主网,数据中心)------------------------");
PrimaryGridParam primaryGridParam=new PrimaryGridParam();
primaryGridParam.setDataSource(1);
primaryGridParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_QUARTER));
CommonExecutorUtils.commDefineDateObj(BizParamConstant.STAT_BIZ_QUARTER,primaryGridParam);
rOperatingIndexFeignClient.primaryGridDataHanlder(primaryGridParam);
}
@XxlJob("rOperatingIndexYear")
public void rOperatingIndexYear(){
log.info(LocalDateTime.now()+"单位监测指标数据质量_月表(主网,数据中心)------------------------");
PrimaryGridParam primaryGridParam=new PrimaryGridParam();
primaryGridParam.setDataSource(1);
primaryGridParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_YEAR));
CommonExecutorUtils.commDefineDateObj(BizParamConstant.STAT_BIZ_YEAR,primaryGridParam);
rOperatingIndexFeignClient.primaryGridDataHanlder(primaryGridParam);
}
}

View File

@@ -6,6 +6,7 @@ import com.njcn.common.pojo.constant.BizParamConstant;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Calendar;
@@ -21,37 +22,47 @@ import java.util.Objects;
@Slf4j
public class CommonExecutorUtils {
public static String prepareTimeDeal(String command){
if(StrUtil.isBlank(command)){
log.error(LocalDateTime.now()+"xxl调度任务参数未设置");
public static String prepareTimeDeal(String command) {
if (StrUtil.isBlank(command)) {
log.error(LocalDateTime.now() + "xxl调度任务参数未设置");
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH,-1);
if (Objects.equals(BizParamConstant.STAT_BIZ_DAY,command)){
calendar.add(Calendar.DAY_OF_MONTH,-1);
} else if (Objects.equals(BizParamConstant.STAT_BIZ_MONTH,command)){
if (Objects.equals(BizParamConstant.STAT_BIZ_DAY, command)) {
calendar.add(Calendar.DAY_OF_MONTH, -1);
} else if (Objects.equals(BizParamConstant.STAT_BIZ_MONTH, command)) {
calendar.set(Calendar.DAY_OF_MONTH, 1);
} else if (Objects.equals(BizParamConstant.STAT_BIZ_QUARTER, command)) {
int nowMonth = calendar.get(Calendar.MONTH);
calendar.set(Calendar.MONTH, nowMonth - (nowMonth % 3));
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
} else if (Objects.equals(BizParamConstant.STAT_BIZ_YEAR, command)) {
calendar.set(Calendar.DAY_OF_YEAR, 1);
}
log.info("job调度时间:"+sdf.format(calendar.getTime()));
log.info("job调度时间:" + sdf.format(calendar.getTime()));
return sdf.format(calendar.getTime());
}
/**
* 根据xxl-job的参数生成一个任务的起始时间和结束时间
*
* @author cdf
* @date 2023/9/20
*/
public static void commDefineDate(String command,LineParam lineParam){
public static void commDefineDate(String command, LineParam lineParam) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String begin;
String end;
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH,-1);
calendar.add(Calendar.DAY_OF_MONTH, -1);
Date temDate = calendar.getTime();
switch (command){
switch (command) {
case BizParamConstant.STAT_BIZ_DAY:
begin = sdf.format(DateUtil.beginOfDay(temDate));
end = sdf.format(DateUtil.endOfDay(temDate));
@@ -79,9 +90,55 @@ public class CommonExecutorUtils {
}
lineParam.setBeginTime(begin);
lineParam.setEndTime(end);
lineParam.setDataDate(begin.substring(0,10));
lineParam.setDataDate(begin.substring(0, 10));
}
public static void commDefineDateObj(String command, Object param) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String begin;
String end;
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -1);
Date temDate = calendar.getTime();
switch (command) {
case BizParamConstant.STAT_BIZ_DAY:
begin = sdf.format(DateUtil.beginOfDay(temDate));
end = sdf.format(DateUtil.endOfDay(temDate));
break;
case BizParamConstant.STAT_BIZ_WEEK:
begin = sdf.format(DateUtil.beginOfWeek(temDate));
end = sdf.format(DateUtil.endOfWeek(temDate));
break;
case BizParamConstant.STAT_BIZ_MONTH:
begin = sdf.format(DateUtil.beginOfMonth(temDate));
end = sdf.format(DateUtil.endOfMonth(temDate));
break;
case BizParamConstant.STAT_BIZ_QUARTER:
begin = sdf.format(DateUtil.beginOfQuarter(temDate));
end = sdf.format(DateUtil.endOfQuarter(temDate));
break;
case BizParamConstant.STAT_BIZ_YEAR:
begin = sdf.format(DateUtil.beginOfYear(temDate));
end = sdf.format(DateUtil.endOfYear(temDate));
break;
default:
begin = sdf.format(DateUtil.beginOfDay(temDate));
end = sdf.format(DateUtil.endOfDay(temDate));
break;
}
try {
Field beginTime = param.getClass().getDeclaredField("beginTime");
beginTime.setAccessible(true);
beginTime.set(param, begin);
Field endTime = param.getClass().getDeclaredField("endTime");
endTime.setAccessible(true);
endTime.set(param, end);
} catch (Exception e) {
log.error(LocalDateTime.now() + "时间属性反射异常: " + e);
}
}
}

View File

@@ -0,0 +1,25 @@
package com.njcn.prepare.harmonic.api.newalgorithm;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.prepare.harmonic.api.newalgorithm.fallback.ROperatingMonitorFeignClientFallbackFactory;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridDataIntegrityParam;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(
value = ServerInfo.PREPARE_BOOT,//对应模块名
path = "/primaryGridData",//对应controller请求类
fallbackFactory = ROperatingMonitorFeignClientFallbackFactory.class//服务降级处理类
)
public interface ROperatingIndexFeignClient {
@PostMapping("primaryGridDataHanlder")
HttpResult<Boolean> primaryGridDataHanlder(@RequestBody PrimaryGridParam primaryGridParam);
@PostMapping("primaryGridDataIntegrityHanlder")
HttpResult<Boolean> primaryGridDataIntegrityHanlder(@RequestBody PrimaryGridDataIntegrityParam primaryGridDataIntegrityParam);
}

View File

@@ -0,0 +1,41 @@
package com.njcn.prepare.harmonic.api.newalgorithm.fallback;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.prepare.harmonic.api.newalgorithm.ROperatingIndexFeignClient;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridDataIntegrityParam;
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam;
import com.njcn.prepare.harmonic.utils.PrepareEnumUtil;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class ROperatingIndexFeignClientFallbackFactory implements FallbackFactory<ROperatingIndexFeignClient> {
@Override
public ROperatingIndexFeignClient create(Throwable throwable) {
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (throwable.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException)throwable.getCause();
exceptionEnum = PrepareEnumUtil.getExceptionEnum(businessException.getResult());
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new ROperatingIndexFeignClient() {
@Override
public HttpResult<Boolean> primaryGridDataHanlder(PrimaryGridParam primaryGridParam) {
log.error("{}异常,降级处理,异常为:{}", "单位标数据质量_统计: ", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public HttpResult<Boolean> primaryGridDataIntegrityHanlder(PrimaryGridDataIntegrityParam primaryGridDataIntegrityParam) {
log.error("{}异常,降级处理,异常为:{}", "终端通信管理_日表: ", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -30,4 +30,22 @@ public class PrimaryGridParam {
@NotBlank(message = "数据源")
private Integer dataSource;
/**
* 调度任务开始时间
*/
@NotBlank(message = "调度任务开始时间不可为空")
private String beginTime;
/**
* 调度任务结束时间
*/
@NotBlank(message = "调度任务结束时间不可为空")
private String endTime;
/**
* 是否补招标识,默认false不补招
*/
@ApiModelProperty(name = "repairFlag",value = "0.不补招 1.补招",example = "false")
private Boolean repairFlag = false;
}

View File

@@ -1,10 +1,12 @@
package com.njcn.prepare.harmonic.controller.area;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.BizParamConstant;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.common.utils.NjcnDateUtils;
import com.njcn.device.pms.api.PmsTerminalClient;
import com.njcn.device.pms.pojo.param.PmsBaseParam;
import com.njcn.device.pms.pojo.po.PmsTerminal;
@@ -46,7 +48,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class PrimaryGridDataController extends BaseController {
private @Autowired
private @Autowired
PrimaryGridDataService primaryGridDataService;
private @Autowired
@@ -57,51 +59,56 @@ public class PrimaryGridDataController extends BaseController {
@ApiOperation("主网单位数据同步(r_operating_index_d表数据)")
@ApiImplicitParam(value = "primaryGridParam",name = "primaryGridParam",required = true)
@ApiImplicitParam(value = "primaryGridParam", name = "primaryGridParam", required = true)
@PostMapping("primaryGridDataHanlder")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> primaryGridDataHanlder(@RequestBody PrimaryGridParam primaryGridParam ){
log.info(LocalDateTime.now()+"primaryGridDataHanlder开始执行");
public HttpResult<Boolean> primaryGridDataHanlder(@RequestBody PrimaryGridParam primaryGridParam) {
log.info(LocalDateTime.now() + "primaryGridDataHanlder开始执行");
String methodDescribe = getMethodDescribe("primaryGridDataHanlder");
Boolean result = true;
List<String> orgIdList = new ArrayList<> ();
if(CollectionUtils.isEmpty (primaryGridParam.getOrgIdList ())){
/*todo 不知道是否需要补招*/
List<String> orgIdList;
if (CollectionUtils.isEmpty(primaryGridParam.getOrgIdList())) {
List<PvTerminalTreeVO> dept = deptFeignClient.allDeptList().getData();
orgIdList = dept.stream ( ).map (PvTerminalTreeVO::getId).collect (Collectors.toList ( ));
}else{
orgIdList = primaryGridParam.getOrgIdList ();
}
primaryGridParam.setOrgIdList (orgIdList);
primaryGridDataService.primaryGridDataHanlder (primaryGridParam);
if (result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
orgIdList = dept.stream().map(PvTerminalTreeVO::getId).collect(Collectors.toList());
} else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe);
orgIdList = primaryGridParam.getOrgIdList();
}
primaryGridParam.setOrgIdList(orgIdList);
if (primaryGridParam.getRepairFlag() && Integer.valueOf(BizParamConstant.STAT_BIZ_DAY).equals(primaryGridParam.getType())) {
List<String> timeRange = NjcnDateUtils.findEveryDay(primaryGridParam.getBeginTime(), primaryGridParam.getEndTime());
for (String item : timeRange) {
log.info(item + "-->开始执行");
primaryGridParam.setBeginTime(item + " " + "00:00:00");
primaryGridParam.setEndTime(item + " " + "23:59:59");
primaryGridParam.setDataDate(item);
primaryGridDataService.primaryGridDataHanlder(primaryGridParam);
}
} else {
primaryGridDataService.primaryGridDataHanlder(primaryGridParam);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
@ApiOperation("主网终端数据完整率月统计")
@ApiImplicitParam(value = "primaryGridDataIntegrityParam",name = "primaryGridDataIntegrityParam",required = true)
@ApiImplicitParam(value = "primaryGridDataIntegrityParam", name = "primaryGridDataIntegrityParam", required = true)
@PostMapping("primaryGridDataIntegrityHanlder")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> primaryGridDataIntegrityHanlder(@RequestBody PrimaryGridDataIntegrityParam primaryGridDataIntegrityParam ){
log.info(LocalDateTime.now()+"primaryGridDataIntegrityHanlder开始执行");
public HttpResult<Boolean> primaryGridDataIntegrityHanlder(@RequestBody PrimaryGridDataIntegrityParam primaryGridDataIntegrityParam) {
log.info(LocalDateTime.now() + "primaryGridDataIntegrityHanlder开始执行");
String methodDescribe = getMethodDescribe("primaryGridDataIntegrityHanlder");
Boolean result = true;
List<String> orgIdList = new ArrayList<> ();
if(CollectionUtils.isEmpty (primaryGridDataIntegrityParam.getDeviceId ())){
List<String> orgIdList = new ArrayList<>();
if (CollectionUtils.isEmpty(primaryGridDataIntegrityParam.getDeviceId())) {
/*todo 不知道是否需要补招*/
List<PmsTerminal> data = pmsTerminalClient.getTerminalSelectList (new PmsBaseParam()).getData ( );
orgIdList = data.stream ().map (PmsTerminal::getId).collect(Collectors.toList());
}else{
orgIdList = primaryGridDataIntegrityParam.getDeviceId ();
List<PmsTerminal> data = pmsTerminalClient.getTerminalSelectList(new PmsBaseParam()).getData();
orgIdList = data.stream().map(PmsTerminal::getId).collect(Collectors.toList());
} else {
orgIdList = primaryGridDataIntegrityParam.getDeviceId();
}
primaryGridDataIntegrityParam.setDeviceId (orgIdList);
primaryGridDataIntegrityParam.setDeviceId(orgIdList);
primaryGridDataService.primaryGridDataIntegrityHanlder (primaryGridDataIntegrityParam);
if (result){
primaryGridDataService.primaryGridDataIntegrityHanlder(primaryGridDataIntegrityParam);
if (result) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
} else {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe);
@@ -109,7 +116,4 @@ public class PrimaryGridDataController extends BaseController {
}
}

View File

@@ -3,6 +3,9 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.harmonic.pojo.po.PmsMonitorPO;
import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum;
import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper;
@@ -11,11 +14,13 @@ import com.njcn.redis.utils.RedisUtil;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.user.api.DeptFeignClient;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.stream.Collectors;
import static com.njcn.system.pojo.constant.DicDataConstant.NAME_KEY;
import static com.njcn.system.pojo.constant.DicDataConstant.SPLIT_SIGN;
@@ -30,16 +35,14 @@ import static com.njcn.system.pojo.constant.DicDataConstant.SPLIT_SIGN;
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class PmsMonitorPOServiceImpl extends ServiceImpl<PmsMonitorPOMapper, PmsMonitorPO> implements PmsMonitorPOService{
private @Autowired
RedisUtil redisUtil;
private final RedisUtil redisUtil;
private @Autowired
PmsMonitorPOMapper pmsMonitorPOMapper;
private final PmsMonitorPOMapper pmsMonitorPOMapper;
private @Autowired
DeptFeignClient deptFeignClient;
private final DeptFeignClient deptFeignClient;
/**
* @Description: 在运监测点集合

View File

@@ -2,18 +2,24 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
import com.njcn.device.biz.pojo.dto.DeptGetDeviceDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.harmonic.pojo.po.PmsTerminalPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.PmsTerminalPOMapper;
import com.njcn.prepare.harmonic.service.mysql.area.PmsTerminalPOService;
import com.njcn.user.api.DeptFeignClient;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/29 15:53【需求编号】
@@ -22,13 +28,14 @@ import java.util.List;
* @version V1.0.0
*/
@Service
public class PmsTerminalPOServiceImpl extends ServiceImpl<PmsTerminalPOMapper, PmsTerminalPO> implements PmsTerminalPOService{
@RequiredArgsConstructor
public class PmsTerminalPOServiceImpl extends ServiceImpl<PmsTerminalPOMapper, PmsTerminalPO> implements PmsTerminalPOService {
private @Autowired
PmsTerminalPOMapper pmsTerminalPOMapper;
private @Autowired
DeptFeignClient deptFeignClient;
private final PmsTerminalPOMapper pmsTerminalPOMapper;
private final DeptFeignClient deptFeignClient;
private final CommTerminalGeneralClient commTerminalGeneralClient;
/**
* @Description: 监测终端集合
* @Param: [orgid]
@@ -38,14 +45,22 @@ public class PmsTerminalPOServiceImpl extends ServiceImpl<PmsTerminalPOMapper, P
*/
@Override
public List<PmsTerminalPO> queryOnlineMeasurementPoints(String orgid) {
List<PmsTerminalPO> list = new ArrayList<> ();
LambdaQueryWrapper<PmsTerminalPO> wrapper = new LambdaQueryWrapper ( );
List<PmsTerminalPO> list = new ArrayList<>();
LambdaQueryWrapper<PmsTerminalPO> wrapper = new LambdaQueryWrapper();
/*获取当前部门及子部门*/
List<String> deptIds = deptFeignClient.getDepSonSelfCodetByDeptId(orgid).getData();
wrapper.in (PmsTerminalPO::getOrgId, deptIds);
list = pmsTerminalPOMapper.selectList (wrapper);
wrapper.in(PmsTerminalPO::getOrgId, deptIds);
list = pmsTerminalPOMapper.selectList(wrapper);
return list;
}
@Override
public List<LineDevGetDTO> getRunTerminalAndLine(String orgId) {
DeptGetLineParam deptGetLineParam=new DeptGetLineParam();
deptGetLineParam.setDeptId(orgId);
List<DeptGetDeviceDTO> data = commTerminalGeneralClient.deptGetDeviceAndMonitor(deptGetLineParam).getData();
return data.stream().flatMap(x -> x.getDeviceList().stream()).distinct().collect(Collectors.toList());
}
}

View File

@@ -1,7 +1,11 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.harmonic.pojo.po.*;
import com.njcn.prepare.harmonic.constant.AlgorithmParam;
import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum;
@@ -17,6 +21,7 @@ import com.njcn.prepare.harmonic.service.oracle.PqLinedetailPOService;
import com.njcn.redis.utils.RedisUtil;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
@@ -44,46 +49,38 @@ import static com.njcn.system.pojo.constant.DicDataConstant.SPLIT_SIGN;
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
private @Autowired
PmsMonitorPOService pmsMonitorPOService;
private final PmsMonitorPOService pmsMonitorPOService;
private @Autowired
PmsTerminalPOService pmsTerminalPOService;
private final PmsTerminalPOService pmsTerminalPOService;
private @Autowired
DataVInfluxdbService dataVInfluxdbService;
private final DataVInfluxdbService dataVInfluxdbService;
private @Autowired
PqLinedetailPOService pqLinedetailPOService;
private final PqLinedetailPOService pqLinedetailPOService;
private @Autowired
DataVOraclePOService dataVOraclePOService;
private final DataVOraclePOService dataVOraclePOService;
private @Autowired
RMpIntegrityDPOService rMpIntegrityDPOService;
private final RMpIntegrityDPOService rMpIntegrityDPOService;
private @Autowired
RStatAbnormalDPOMapper rStatAbnormalDPOMapper;
private final RStatAbnormalDPOMapper rStatAbnormalDPOMapper;
private @Autowired
ROperatingIndexDPOService rOperatingIndexDPOService;
private final ROperatingIndexDPOService rOperatingIndexDPOService;
private @Autowired
ROperatingIndexMPOService rOperatingIndexMPOService;
private final ROperatingIndexMPOService rOperatingIndexMPOService;
private @Autowired
ROperatingIndexQPOService rOperatingIndexQPOService;
private final ROperatingIndexQPOService rOperatingIndexQPOService;
private @Autowired
ROperatingIndexYPOService rOperatingIndexYPOService;
private final ROperatingIndexYPOService rOperatingIndexYPOService;
private final RMpDevEvaluateDetailPOService rMpDevEvaluateDetailPOService;
private final RedisUtil redisUtil;
private final CommTerminalGeneralClient commTerminalGeneralClient;
private @Autowired
RMpDevEvaluateDetailPOService rMpDevEvaluateDetailPOService;
private @Autowired
RedisUtil redisUtil;
/**
* @param primaryGridParam
@@ -96,10 +93,10 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
@Override
@Async("asyncExecutor")
public void primaryGridDataHanlder(PrimaryGridParam primaryGridParam) {
if (Objects.equals (primaryGridParam.getDataSource ( ), AlgorithmParam.ORACLE_DATA)) {
hanlderOracleData (primaryGridParam);
} else if (Objects.equals (primaryGridParam.getDataSource ( ), AlgorithmParam.INFLUX_DATA)) {
hanlderInfludxbData (primaryGridParam);
if (Objects.equals(primaryGridParam.getDataSource(), AlgorithmParam.ORACLE_DATA)) {
hanlderOracleData(primaryGridParam);
} else if (Objects.equals(primaryGridParam.getDataSource(), AlgorithmParam.INFLUX_DATA)) {
hanlderInfludxbData(primaryGridParam);
}
}
@@ -116,41 +113,41 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
@Async
@SneakyThrows
public void primaryGridDataIntegrityHanlder(PrimaryGridDataIntegrityParam primaryGridDataIntegrityParam) {
List<String> deviceIds = primaryGridDataIntegrityParam.getDeviceId ();
String dataDate = primaryGridDataIntegrityParam.getDataDate ( );
List<RMpDevEvaluateDetailPO> rMpDevEvaluateDetailPOList = new ArrayList<> ( );
List<String> deviceIds = primaryGridDataIntegrityParam.getDeviceId();
String dataDate = primaryGridDataIntegrityParam.getDataDate();
List<RMpDevEvaluateDetailPO> rMpDevEvaluateDetailPOList = new ArrayList<>();
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
final Date tempDate = new SimpleDateFormat("yyyy-MM-dd").parse(dataDate);
deviceIds.forEach (deviceId->{
double dev_data_rate=0.00;
deviceIds.forEach(deviceId -> {
double dev_data_rate = 0.00;
/*获取终端下的监测点集合*/
QueryWrapper<PmsMonitorPO> queryWrapper = new QueryWrapper<> ();
String state = redisUtil.getStringByKey (NAME_KEY+
SPLIT_SIGN+ DicDataTypeEnum.LINE_STATE.getCode ( )+
SPLIT_SIGN+ DicDataEnum.RUN.getCode ( ));
if(StringUtils.isEmpty (state)){
throw new BusinessException (PqsPrepareExceptionEnum.REDIS_NULL_EXCEPTION);
QueryWrapper<PmsMonitorPO> queryWrapper = new QueryWrapper<>();
String state = redisUtil.getStringByKey(NAME_KEY +
SPLIT_SIGN + DicDataTypeEnum.LINE_STATE.getCode() +
SPLIT_SIGN + DicDataEnum.RUN.getCode());
if (StringUtils.isEmpty(state)) {
throw new BusinessException(PqsPrepareExceptionEnum.REDIS_NULL_EXCEPTION);
}
queryWrapper.lambda ().eq (PmsMonitorPO::getTerminalId, deviceId).
eq (PmsMonitorPO::getMonitorState, state);
List<PmsMonitorPO> list = pmsMonitorPOService.list (queryWrapper);
List<String> mysqlIndexList = list.stream ( ).map (PmsMonitorPO::getId).collect (Collectors.toList ( ));
queryWrapper.lambda().eq(PmsMonitorPO::getTerminalId, deviceId).
eq(PmsMonitorPO::getMonitorState, state);
List<PmsMonitorPO> list = pmsMonitorPOService.list(queryWrapper);
List<String> mysqlIndexList = list.stream().map(PmsMonitorPO::getId).collect(Collectors.toList());
/*获取检测点的月平均数据完整率*/
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateMouthDataIntegrity (mysqlIndexList, dataDate);
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateMouthDataIntegrity(mysqlIndexList, dataDate);
/*求平均值*/
if(!CollectionUtils.isEmpty (monitorDataIntegrityDTOList)){
dev_data_rate = monitorDataIntegrityDTOList.stream ( ).mapToDouble (monitorDataIntegrityDTO -> {
return monitorDataIntegrityDTO.getDataIntegrity ( ).doubleValue ( );
}).average ( ).getAsDouble ( );
if (!CollectionUtils.isEmpty(monitorDataIntegrityDTOList)) {
dev_data_rate = monitorDataIntegrityDTOList.stream().mapToDouble(monitorDataIntegrityDTO -> {
return monitorDataIntegrityDTO.getDataIntegrity().doubleValue();
}).average().getAsDouble();
}
RMpDevEvaluateDetailPO rMpDevEvaluateDetailPO = new RMpDevEvaluateDetailPO();
rMpDevEvaluateDetailPO.setDeviceId (deviceId);
rMpDevEvaluateDetailPO.setDataDate (tempDate);
rMpDevEvaluateDetailPO.setDevDataRate (dev_data_rate);
rMpDevEvaluateDetailPOList.add (rMpDevEvaluateDetailPO);
rMpDevEvaluateDetailPO.setDeviceId(deviceId);
rMpDevEvaluateDetailPO.setDataDate(tempDate);
rMpDevEvaluateDetailPO.setDevDataRate(dev_data_rate);
rMpDevEvaluateDetailPOList.add(rMpDevEvaluateDetailPO);
});
rMpDevEvaluateDetailPOService.saveOrUpdateBatchByMultiId (rMpDevEvaluateDetailPOList,500);
rMpDevEvaluateDetailPOService.saveOrUpdateBatchByMultiId(rMpDevEvaluateDetailPOList, 500);
}
/**
@@ -161,85 +158,84 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
* @Date: 2022/11/25
*/
private void hanlderInfludxbData(PrimaryGridParam primaryGridParam) {
Integer type = primaryGridParam.getType ( );
Integer type = primaryGridParam.getType();
/*月表季表年表都是重日表生成不区分oralceinfluxdb*/
switch (type) {
case 1:
this.hanlderOracleYear (primaryGridParam);
this.hanlderOracleYear(primaryGridParam);
break;
case 2:
this.hanlderOracleQtr (primaryGridParam);
this.hanlderOracleQtr(primaryGridParam);
break;
case 3:
this.hanlderOracleMonth (primaryGridParam);
this.hanlderOracleMonth(primaryGridParam);
break;
case 5:
this.hanlderInfluxdbDay (primaryGridParam);
this.hanlderInfluxdbDay(primaryGridParam);
break;
default:
break;
}
}
@SneakyThrows
private void hanlderInfluxdbDay(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList ( );
String dataDate = primaryGridParam.getDataDate ( );
List<ROperatingIndexDPO> rOperatingIndexDPOList = new ArrayList<> ( );
List<String> orgIdList = primaryGridParam.getOrgIdList();
String dataDate = primaryGridParam.getDataDate();
List<ROperatingIndexDPO> rOperatingIndexDPOList = new ArrayList<>();
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach (orgid -> {
final Date tempDate = new SimpleDateFormat("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach(orgid -> {
/*measurement_run_points:在运监测点个数*/
List<PmsMonitorPO> pmsMonitorPOS = pmsMonitorPOService.qurymeasurementRunPoints (orgid);
Integer measurement_run_points = pmsMonitorPOS.size ( );
List<String> mysqlIndexList = pmsMonitorPOS.stream ( ).map (PmsMonitorPO::getId).collect (Collectors.toList ( ));
/*主网单位在线监测点数 transit_measurement_points*/
Integer transit_measurement_points = dataVInfluxdbService.queryTransitMeasurementPoints(mysqlIndexList,primaryGridParam.getDataDate (),"A");
/*主网单位有效接入监测点个数 effective_access_measurement_count*/
Integer effective_access_measurement_count = this.queryEffectiveAccessMeasurementCount(mysqlIndexList,primaryGridParam.getDataDate ());
//获取终端信息,和包含的终端下监测点
List<LineDevGetDTO> runTerminalAndLine = pmsTerminalPOService.getRunTerminalAndLine(orgid);
//终端数量
Integer online_measurement_points = runTerminalAndLine.size();
/*在运监测终端个数 online_measurement_count*/
Long online_measurement_count = runTerminalAndLine.stream().filter(x -> x.getComFlag() == 1).collect(Collectors.counting());
/*监测终端数量 online_measurement_points*/
List<PmsTerminalPO> pmsTerminalPOS = pmsTerminalPOService.queryOnlineMeasurementPoints(orgid);
Integer online_measurement_points = pmsTerminalPOS.size ();
List<String> runMonitor = runTerminalAndLine.stream().flatMap(x -> x.getMonitorIds().stream()).collect(Collectors.toList());
/*在运监测终端个数 online_measurement_count*/
String state = redisUtil.getStringByKey (NAME_KEY+
SPLIT_SIGN+ DicDataTypeEnum.DEV_STATUS.getCode ( )+
SPLIT_SIGN+ DicDataEnum.RUNNING.getCode ( ));
Integer online_measurement_count = Integer.valueOf (pmsTerminalPOS.stream ( ).filter (temp -> Objects.equals (temp.getTerminalState ( ),state)).count ( )+"");
// List<String> runMonitor = pmsMonitorPOService.getRunMonitor(orgid);
Integer measurement_run_points = runMonitor.size();
/*主网单位在线监测点数 transit_measurement_points*/
Integer transit_measurement_points = dataVInfluxdbService.queryTransitMeasurementPoints(runMonitor, primaryGridParam.getDataDate(), "A");
/*主网单位有效接入监测点个数 effective_access_measurement_count*/
Integer effective_access_measurement_count = this.queryEffectiveAccessMeasurementCount(runMonitor, primaryGridParam.getDataDate());
// List<PmsTerminalPO> pmsTerminalPOS = pmsTerminalPOService.queryOnlineMeasurementPoints(orgid);
/*主网单位数据完整率 data_integrity_rate*/
double data_integrity_rate=0.00;
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateDataIntegrity (mysqlIndexList, dataDate);
double data_integrity_rate = 0.00;
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateDataIntegrity(runMonitor, dataDate);
/*求平均值*/
if(!CollectionUtils.isEmpty (monitorDataIntegrityDTOList)){
data_integrity_rate = monitorDataIntegrityDTOList.stream ( ).mapToDouble (temp -> {
return temp.getDataIntegrity ( ).doubleValue ( );
}).average ( ).getAsDouble ( );
if (!CollectionUtils.isEmpty(monitorDataIntegrityDTOList)) {
data_integrity_rate = monitorDataIntegrityDTOList.stream().mapToDouble(temp -> {
return temp.getDataIntegrity().doubleValue();
}).average().getAsDouble();
}
/*主网单位数据异常监测点数日统计 is_unusual*/
Integer is_unusual =this.queryIsUnusualCount(mysqlIndexList,primaryGridParam.getDataDate ());
Integer is_unusual = this.queryIsUnusualCount(runMonitor, primaryGridParam.getDataDate());
ROperatingIndexDPO rOperatingIndexDPO = new ROperatingIndexDPO( );
rOperatingIndexDPO.setOrgNo (orgid);
rOperatingIndexDPO.setDataDate (tempDate);
rOperatingIndexDPO.setMeasurementRunPoints (measurement_run_points);
rOperatingIndexDPO.setTransitMeasurementPoints (transit_measurement_points);
rOperatingIndexDPO.setEffectiveAccessMeasurementCount (effective_access_measurement_count);
rOperatingIndexDPO.setOnlineMeasurementPoints (online_measurement_points);
rOperatingIndexDPO.setOnlineMeasurementCount (online_measurement_count);
rOperatingIndexDPO.setDataIntegrityRate (data_integrity_rate);
rOperatingIndexDPO.setIsUnusual (is_unusual>0?1:0);
rOperatingIndexDPOList.add (rOperatingIndexDPO);
ROperatingIndexDPO rOperatingIndexDPO = new ROperatingIndexDPO();
rOperatingIndexDPO.setOrgNo(orgid);
rOperatingIndexDPO.setDataDate(tempDate);
rOperatingIndexDPO.setMeasurementRunPoints(measurement_run_points);
rOperatingIndexDPO.setTransitMeasurementPoints(transit_measurement_points);
rOperatingIndexDPO.setEffectiveAccessMeasurementCount(effective_access_measurement_count);
rOperatingIndexDPO.setOnlineMeasurementPoints(online_measurement_points);
rOperatingIndexDPO.setOnlineMeasurementCount(Math.toIntExact(online_measurement_count));
rOperatingIndexDPO.setDataIntegrityRate(data_integrity_rate);
rOperatingIndexDPO.setIsUnusual(is_unusual > 0 ? 1 : 0);
rOperatingIndexDPOList.add(rOperatingIndexDPO);
});
if(!CollectionUtils.isEmpty (rOperatingIndexDPOList)){
rOperatingIndexDPOService.saveOrUpdateBatchByMultiId (rOperatingIndexDPOList,30);
if (!CollectionUtils.isEmpty(rOperatingIndexDPOList)) {
rOperatingIndexDPOService.saveOrUpdateBatchByMultiId(rOperatingIndexDPOList, 30);
}
}
@@ -252,19 +248,19 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
* @Date: 2022/11/25
*/
private void hanlderOracleData(PrimaryGridParam primaryGridParam) {
Integer type = primaryGridParam.getType ( );
Integer type = primaryGridParam.getType();
switch (type) {
case 1:
this.hanlderOracleYear (primaryGridParam);
this.hanlderOracleYear(primaryGridParam);
break;
case 2:
this.hanlderOracleQtr (primaryGridParam);
this.hanlderOracleQtr(primaryGridParam);
break;
case 3:
this.hanlderOracleMonth (primaryGridParam);
this.hanlderOracleMonth(primaryGridParam);
break;
case 5:
this.hanlderOracleDay (primaryGridParam);
this.hanlderOracleDay(primaryGridParam);
break;
default:
break;
@@ -283,62 +279,62 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
@SneakyThrows
private void hanlderOracleMonth(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList ( );
String dataDate = primaryGridParam.getDataDate ( );
List<ROperatingIndexMPO> rOperatingIndexMPOList = new ArrayList<> ( );
List<String> orgIdList = primaryGridParam.getOrgIdList();
String beginTime = primaryGridParam.getBeginTime();
String endTime = primaryGridParam.getEndTime();
List<ROperatingIndexMPO> rOperatingIndexMPOList = new ArrayList<>();
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach (orgid -> {
orgIdList.forEach(orgid -> {
/*查询day表数据生成月表数据*/
List<ROperatingIndexDPO> list = rOperatingIndexDPOService.queryOneMothData(orgid,dataDate);
List<ROperatingIndexDPO> list = rOperatingIndexDPOService.queryOneMothData(orgid, beginTime,endTime);
/*求平均值*/
int measurement_run_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getMeasurementRunPoints ( )).
average ( ).
getAsDouble ( ));
int transit_measurement_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getTransitMeasurementPoints ()).
average ( ).
getAsDouble ( ));
int effective_access_measurement_count =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getEffectiveAccessMeasurementCount ()).
average ( ).
getAsDouble ( ));
int online_measurement_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getOnlineMeasurementPoints ()).
average ( ).
getAsDouble ( ));
int measurement_run_points = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getMeasurementRunPoints()).
average().
getAsDouble());
int transit_measurement_points = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getTransitMeasurementPoints()).
average().
getAsDouble());
int effective_access_measurement_count = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getEffectiveAccessMeasurementCount()).
average().
getAsDouble());
int online_measurement_points = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getOnlineMeasurementPoints()).
average().
getAsDouble());
int online_measurement_count =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getOnlineMeasurementCount ()).
average ( ).
getAsDouble ( ));
int online_measurement_count = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getOnlineMeasurementCount()).
average().
getAsDouble());
/*double保留2位小数*/
Double data_integrity_rate =Math.round (list.stream ( ).
mapToDouble (temp -> temp.getDataIntegrityRate ()).
average ( ).
getAsDouble ( )*100)*0.01;
Double data_integrity_rate = Math.round(list.stream().
mapToDouble(temp -> temp.getDataIntegrityRate()).
average().
getAsDouble() * 100) * 0.01;
/*看day表is_unusual时候存在1存在返回1数据否异常(0:正常 1:异常)*/
Integer is_unusual =list.stream ().
map (ROperatingIndexDPO::getIsUnusual).
collect (Collectors.toList ())
.contains (1)?1:0;
Integer is_unusual = list.stream().
map(ROperatingIndexDPO::getIsUnusual).
collect(Collectors.toList())
.contains(1) ? 1 : 0;
ROperatingIndexMPO rOperatingIndexMPO = new ROperatingIndexMPO( );
rOperatingIndexMPO.setOrgNo (orgid);
rOperatingIndexMPO.setDataDate (tempDate);
rOperatingIndexMPO.setMeasurementRunPoints (measurement_run_points);
rOperatingIndexMPO.setTransitMeasurementPoints (transit_measurement_points);
rOperatingIndexMPO.setEffectiveAccessMeasurementCount (effective_access_measurement_count);
rOperatingIndexMPO.setOnlineMeasurementPoints (online_measurement_points);
rOperatingIndexMPO.setOnlineMeasurementCount (online_measurement_count);
rOperatingIndexMPO.setDataIntegrityRate (data_integrity_rate);
rOperatingIndexMPO.setIsUnusual (is_unusual);
rOperatingIndexMPOList.add (rOperatingIndexMPO);
ROperatingIndexMPO rOperatingIndexMPO = new ROperatingIndexMPO();
rOperatingIndexMPO.setOrgNo(orgid);
rOperatingIndexMPO.setDataDate(DateUtil.parse(primaryGridParam.getDataDate()));
rOperatingIndexMPO.setMeasurementRunPoints(measurement_run_points);
rOperatingIndexMPO.setTransitMeasurementPoints(transit_measurement_points);
rOperatingIndexMPO.setEffectiveAccessMeasurementCount(effective_access_measurement_count);
rOperatingIndexMPO.setOnlineMeasurementPoints(online_measurement_points);
rOperatingIndexMPO.setOnlineMeasurementCount(online_measurement_count);
rOperatingIndexMPO.setDataIntegrityRate(data_integrity_rate);
rOperatingIndexMPO.setIsUnusual(is_unusual);
rOperatingIndexMPOList.add(rOperatingIndexMPO);
});
if(!CollectionUtils.isEmpty (rOperatingIndexMPOList)){
rOperatingIndexMPOService.saveOrUpdateBatchByMultiId (rOperatingIndexMPOList,30);
if (!CollectionUtils.isEmpty(rOperatingIndexMPOList)) {
rOperatingIndexMPOService.saveOrUpdateBatchByMultiId(rOperatingIndexMPOList, 30);
}
}
@@ -351,136 +347,133 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
*/
@SneakyThrows
private void hanlderOracleDay(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList ( );
String dataDate = primaryGridParam.getDataDate ( );
List<ROperatingIndexDPO> rOperatingIndexDPOList = new ArrayList<> ( );
List<String> orgIdList = primaryGridParam.getOrgIdList();
String dataDate = primaryGridParam.getDataDate();
List<ROperatingIndexDPO> rOperatingIndexDPOList = new ArrayList<>();
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
final Date tempDate = new SimpleDateFormat("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach (orgid -> {
orgIdList.forEach(orgid -> {
/*measurement_run_points:在运监测点个数*/
List<PmsMonitorPO> pmsMonitorPOS = pmsMonitorPOService.qurymeasurementRunPoints (orgid);
Integer measurement_run_points = pmsMonitorPOS.size ( );
List<PmsMonitorPO> pmsMonitorPOS = pmsMonitorPOService.qurymeasurementRunPoints(orgid);
Integer measurement_run_points = pmsMonitorPOS.size();
/*获取mysql与Oracle监测点id对应关系*/
List<String> mysqlIndexList = pmsMonitorPOS.stream ( ).map (PmsMonitorPO::getId).collect (Collectors.toList ( ));
List<String> mysqlIndexList = pmsMonitorPOS.stream().map(PmsMonitorPO::getId).collect(Collectors.toList());
List<PqLinedetailPO> pqLinedetailPOS = pqLinedetailPOService.queryOracleIndexIdByMysqlIndexId (mysqlIndexList);
List<Integer> oracleIndexlist = pqLinedetailPOS.stream ( ).map (PqLinedetailPO::getLineIndex).collect (Collectors.toList ( ));
List<PqLinedetailPO> pqLinedetailPOS = pqLinedetailPOService.queryOracleIndexIdByMysqlIndexId(mysqlIndexList);
List<Integer> oracleIndexlist = pqLinedetailPOS.stream().map(PqLinedetailPO::getLineIndex).collect(Collectors.toList());
/*主网单位在线监测点数 transit_measurement_points*/
Integer transit_measurement_points = dataVOraclePOService.queryTransitMeasurementPoints(oracleIndexlist,primaryGridParam.getDataDate ());
Integer transit_measurement_points = dataVOraclePOService.queryTransitMeasurementPoints(oracleIndexlist, primaryGridParam.getDataDate());
/*主网单位有效接入监测点个数 effective_access_measurement_count*/
Integer effective_access_measurement_count = this.queryEffectiveAccessMeasurementCount(mysqlIndexList,primaryGridParam.getDataDate ());
Integer effective_access_measurement_count = this.queryEffectiveAccessMeasurementCount(mysqlIndexList, primaryGridParam.getDataDate());
/*监测终端数量 online_measurement_points*/
List<PmsTerminalPO> pmsTerminalPOS = pmsTerminalPOService.queryOnlineMeasurementPoints(orgid);
Integer online_measurement_points = pmsTerminalPOS.size ();
List<PmsTerminalPO> pmsTerminalPOS = pmsTerminalPOService.queryOnlineMeasurementPoints(orgid);
Integer online_measurement_points = pmsTerminalPOS.size();
/*在运监测终端个数 online_measurement_count*/
String state = redisUtil.getStringByKey (NAME_KEY+
SPLIT_SIGN+ DicDataTypeEnum.DEV_STATUS.getCode ( )+
SPLIT_SIGN+ DicDataEnum.RUNNING.getCode ( ));
Integer online_measurement_count = Integer.valueOf (pmsTerminalPOS.stream ( ).filter (temp -> Objects.equals (temp.getTerminalState ( ),state)).count ( )+"");
String state = redisUtil.getStringByKey(NAME_KEY +
SPLIT_SIGN + DicDataTypeEnum.DEV_STATUS.getCode() +
SPLIT_SIGN + DicDataEnum.RUNNING.getCode());
Integer online_measurement_count = Integer.valueOf(pmsTerminalPOS.stream().filter(temp -> Objects.equals(temp.getTerminalState(), state)).count() + "");
/*主网单位数据完整率 data_integrity_rate*/
double data_integrity_rate=0.00;
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateDataIntegrity (mysqlIndexList, dataDate);
double data_integrity_rate = 0.00;
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateDataIntegrity(mysqlIndexList, dataDate);
/*求平均值*/
if(!CollectionUtils.isEmpty (monitorDataIntegrityDTOList)){
data_integrity_rate = monitorDataIntegrityDTOList.stream ( ).mapToDouble (temp -> {
return temp.getDataIntegrity ( ).doubleValue ( );
}).average ( ).getAsDouble ( );
if (!CollectionUtils.isEmpty(monitorDataIntegrityDTOList)) {
data_integrity_rate = monitorDataIntegrityDTOList.stream().mapToDouble(temp -> {
return temp.getDataIntegrity().doubleValue();
}).average().getAsDouble();
}
/*主网单位数据异常监测点数日统计 is_unusual*/
Integer is_unusual =this.queryIsUnusualCount(mysqlIndexList,primaryGridParam.getDataDate ());
Integer is_unusual = this.queryIsUnusualCount(mysqlIndexList, primaryGridParam.getDataDate());
ROperatingIndexDPO rOperatingIndexDPO = new ROperatingIndexDPO( );
rOperatingIndexDPO.setOrgNo (orgid);
rOperatingIndexDPO.setDataDate (tempDate);
rOperatingIndexDPO.setMeasurementRunPoints (measurement_run_points);
rOperatingIndexDPO.setTransitMeasurementPoints (transit_measurement_points);
rOperatingIndexDPO.setEffectiveAccessMeasurementCount (effective_access_measurement_count);
rOperatingIndexDPO.setOnlineMeasurementPoints (online_measurement_points);
rOperatingIndexDPO.setOnlineMeasurementCount (online_measurement_count);
rOperatingIndexDPO.setDataIntegrityRate (data_integrity_rate);
rOperatingIndexDPO.setIsUnusual (is_unusual>0?1:0);
rOperatingIndexDPOList.add (rOperatingIndexDPO);
ROperatingIndexDPO rOperatingIndexDPO = new ROperatingIndexDPO();
rOperatingIndexDPO.setOrgNo(orgid);
rOperatingIndexDPO.setDataDate(tempDate);
rOperatingIndexDPO.setMeasurementRunPoints(measurement_run_points);
rOperatingIndexDPO.setTransitMeasurementPoints(transit_measurement_points);
rOperatingIndexDPO.setEffectiveAccessMeasurementCount(effective_access_measurement_count);
rOperatingIndexDPO.setOnlineMeasurementPoints(online_measurement_points);
rOperatingIndexDPO.setOnlineMeasurementCount(online_measurement_count);
rOperatingIndexDPO.setDataIntegrityRate(data_integrity_rate);
rOperatingIndexDPO.setIsUnusual(is_unusual > 0 ? 1 : 0);
rOperatingIndexDPOList.add(rOperatingIndexDPO);
});
if(!CollectionUtils.isEmpty (rOperatingIndexDPOList)){
rOperatingIndexDPOService.saveOrUpdateBatchByMultiId (rOperatingIndexDPOList,30);
if (!CollectionUtils.isEmpty(rOperatingIndexDPOList)) {
rOperatingIndexDPOService.saveOrUpdateBatchByMultiId(rOperatingIndexDPOList, 30);
}
}
/**
* @Description: queryIsUnusualCount :用监测点id在r_stat_abnormal_d表中查找value_alarm为0的监测点个数
* @Param: [mysqlIndexList, dataDate]
* @return: java.lang.Integer
* @Author: clam
* @Date: 2022/11/28
*/
* @Param: [mysqlIndexList, dataDate]
* @return: java.lang.Integer
* @Author: clam
* @Date: 2022/11/28
*/
private Integer queryIsUnusualCount(List<String> mysqlIndexList, String dataDate) {
if(CollectionUtils.isEmpty (mysqlIndexList)){
if (CollectionUtils.isEmpty(mysqlIndexList)) {
return 0;
}
QueryWrapper<RStatAbnormalDPO> rStatAbnormalDPOLambdaQueryWrapper = new QueryWrapper ( );
QueryWrapper<RStatAbnormalDPO> rStatAbnormalDPOLambdaQueryWrapper = new QueryWrapper();
rStatAbnormalDPOLambdaQueryWrapper.
in ("measurement_point_id",mysqlIndexList).
eq ("value_alarm", 0).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",dataDate);
Integer integer = rStatAbnormalDPOMapper.selectCount (rStatAbnormalDPOLambdaQueryWrapper);
in("measurement_point_id", mysqlIndexList).
eq("value_alarm", 0).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')", dataDate);
Integer integer = rStatAbnormalDPOMapper.selectCount(rStatAbnormalDPOLambdaQueryWrapper);
return integer;
}
/**
* @Description: 主网单位有效接入监测点个数
* 1.获取pms_monitor表中监测点状态为投运的监测点id列表
* 2.根据id查询r_mp_integrity_d表中当天各项指标个数采用以下公式计算数据完整率
* @Description: 主网单位有效接入监测点个数
* 1.获取pms_monitor表中监测点状态为投运的监测点id列表
* 2.根据id查询r_mp_integrity_d表中当天各项指标个数采用以下公式计算数据完整率
* 3.〖数据完整率〗_日统计=(频率+相电压+线电压+畸变率+不平衡度)/(有效值数据个数*5)*100%
* 判定监测点数据完整率是否大于95%
* 4、根据id查询r_stat_abnormal_d表value_alarm为1。
* 判定监测点数据完整率是否大于95%
* 4、根据id查询r_stat_abnormal_d表value_alarm为1。
* 5、以上两个条件满足表明该监测点为有效监测点。
* 6、统计有效监测点个数
* @Param: [indexlist, dataDate]
* @return: java.lang.String
* @Author: clam
* @Date: 2022/11/25
*/
* @Param: [indexlist, dataDate]
* @return: java.lang.String
* @Author: clam
* @Date: 2022/11/25
*/
private Integer queryEffectiveAccessMeasurementCount(List<String> indexlist, String dataDate) {
/*获取监测点的数据完整性*/
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateDataIntegrity (indexlist, dataDate);
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateDataIntegrity(indexlist, dataDate);
/*获取完整率>0.95的监测点id*/
List<String> collect = monitorDataIntegrityDTOList.stream ( ).
filter (temp -> temp.getDataIntegrity ().compareTo (new BigDecimal (0.95)) == 1
).map (MonitorDataIntegrityDTO::getId).collect (Collectors.toList ( ));
List<String> collect = monitorDataIntegrityDTOList.stream().
filter(temp -> temp.getDataIntegrity().compareTo(new BigDecimal(0.95)) == 1
).map(MonitorDataIntegrityDTO::getId).collect(Collectors.toList());
/*获取完整率>0.95条件下value_alarm为1的监测点id*/
if(CollectionUtils.isEmpty (collect)){
if (CollectionUtils.isEmpty(collect)) {
return 0;
}
QueryWrapper<RStatAbnormalDPO> rStatAbnormalDPOLambdaQueryWrapper = new QueryWrapper ( );
rStatAbnormalDPOLambdaQueryWrapper.select ("measurement_point_id").
in ("measurement_point_id",collect).
eq ("value_alarm", 1).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",dataDate);
List<RStatAbnormalDPO> rStatAbnormalDPOS = rStatAbnormalDPOMapper.selectList (rStatAbnormalDPOLambdaQueryWrapper);
QueryWrapper<RStatAbnormalDPO> rStatAbnormalDPOLambdaQueryWrapper = new QueryWrapper();
rStatAbnormalDPOLambdaQueryWrapper.select("measurement_point_id").
in("measurement_point_id", collect).
eq("value_alarm", 1).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')", dataDate);
List<RStatAbnormalDPO> rStatAbnormalDPOS = rStatAbnormalDPOMapper.selectList(rStatAbnormalDPOLambdaQueryWrapper);
return rStatAbnormalDPOS.size ();
return rStatAbnormalDPOS.size();
}
/**
* @Description: hanlderOracleQtr
* @Param: [primaryGridParam]
@@ -491,62 +484,62 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
@SneakyThrows
private void hanlderOracleQtr(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList ( );
String dataDate = primaryGridParam.getDataDate ( );
List<ROperatingIndexQPO> rOperatingIndexQPOList = new ArrayList<> ( );
List<String> orgIdList = primaryGridParam.getOrgIdList();
String beginTime = primaryGridParam.getBeginTime();
String endTime = primaryGridParam.getEndTime();
List<ROperatingIndexQPO> rOperatingIndexQPOList = new ArrayList<>();
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach (orgid -> {
orgIdList.forEach(orgid -> {
/*查询Mouth表数据生成季表数据*/
List<ROperatingIndexMPO> list = rOperatingIndexMPOService.queryOneQtrData(orgid,dataDate);
List<ROperatingIndexMPO> list = rOperatingIndexMPOService.queryOneQtrData(orgid, beginTime,endTime);
/*求平均值*/
int measurement_run_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getMeasurementRunPoints ( )).
average ( ).
getAsDouble ( ));
int transit_measurement_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getTransitMeasurementPoints ()).
average ( ).
getAsDouble ( ));
int effective_access_measurement_count =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getEffectiveAccessMeasurementCount ()).
average ( ).
getAsDouble ( ));
int online_measurement_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getOnlineMeasurementPoints ()).
average ( ).
getAsDouble ( ));
int measurement_run_points = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getMeasurementRunPoints()).
average().
getAsDouble());
int transit_measurement_points = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getTransitMeasurementPoints()).
average().
getAsDouble());
int effective_access_measurement_count = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getEffectiveAccessMeasurementCount()).
average().
getAsDouble());
int online_measurement_points = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getOnlineMeasurementPoints()).
average().
getAsDouble());
int online_measurement_count =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getOnlineMeasurementCount ()).
average ( ).
getAsDouble ( ));
int online_measurement_count = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getOnlineMeasurementCount()).
average().
getAsDouble());
/*double保留2位小数*/
Double data_integrity_rate =Math.round (list.stream ( ).
mapToDouble (temp -> temp.getDataIntegrityRate ()).
average ( ).
getAsDouble ( )*100)*0.01;
Double data_integrity_rate = Math.round(list.stream().
mapToDouble(temp -> temp.getDataIntegrityRate()).
average().
getAsDouble() * 100) * 0.01;
/*看day表is_unusual时候存在1存在返回1数据否异常(0:正常 1:异常)*/
Integer is_unusual =list.stream ().
map (ROperatingIndexMPO::getIsUnusual).
collect (Collectors.toList ())
.contains (1)?1:0;
Integer is_unusual = list.stream().
map(ROperatingIndexMPO::getIsUnusual).
collect(Collectors.toList())
.contains(1) ? 1 : 0;
ROperatingIndexQPO rOperatingIndexQPO = new ROperatingIndexQPO( );
rOperatingIndexQPO.setOrgNo (orgid);
rOperatingIndexQPO.setDataDate (tempDate);
rOperatingIndexQPO.setMeasurementRunPoints (measurement_run_points);
rOperatingIndexQPO.setTransitMeasurementPoints (transit_measurement_points);
rOperatingIndexQPO.setEffectiveAccessMeasurementCount (effective_access_measurement_count);
rOperatingIndexQPO.setOnlineMeasurementPoints (online_measurement_points);
rOperatingIndexQPO.setOnlineMeasurementCount (online_measurement_count);
rOperatingIndexQPO.setDataIntegrityRate (data_integrity_rate);
rOperatingIndexQPO.setIsUnusual (is_unusual);
rOperatingIndexQPOList.add (rOperatingIndexQPO);
ROperatingIndexQPO rOperatingIndexQPO = new ROperatingIndexQPO();
rOperatingIndexQPO.setOrgNo(orgid);
rOperatingIndexQPO.setDataDate(DateUtil.parse(primaryGridParam.getDataDate()));
rOperatingIndexQPO.setMeasurementRunPoints(measurement_run_points);
rOperatingIndexQPO.setTransitMeasurementPoints(transit_measurement_points);
rOperatingIndexQPO.setEffectiveAccessMeasurementCount(effective_access_measurement_count);
rOperatingIndexQPO.setOnlineMeasurementPoints(online_measurement_points);
rOperatingIndexQPO.setOnlineMeasurementCount(online_measurement_count);
rOperatingIndexQPO.setDataIntegrityRate(data_integrity_rate);
rOperatingIndexQPO.setIsUnusual(is_unusual);
rOperatingIndexQPOList.add(rOperatingIndexQPO);
});
if(!CollectionUtils.isEmpty (rOperatingIndexQPOList)){
rOperatingIndexQPOService.saveOrUpdateBatchByMultiId (rOperatingIndexQPOList,30);
if (!CollectionUtils.isEmpty(rOperatingIndexQPOList)) {
rOperatingIndexQPOService.saveOrUpdateBatchByMultiId(rOperatingIndexQPOList, 30);
}
}
@@ -560,62 +553,62 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
@SneakyThrows
private void hanlderOracleYear(PrimaryGridParam primaryGridParam) {
List<String> orgIdList = primaryGridParam.getOrgIdList ( );
String dataDate = primaryGridParam.getDataDate ( );
List<ROperatingIndexYPO> rOperatingIndexYPOList = new ArrayList<> ( );
List<String> orgIdList = primaryGridParam.getOrgIdList();
String beginTime = primaryGridParam.getBeginTime();
String endTime = primaryGridParam.getEndTime();
List<ROperatingIndexYPO> rOperatingIndexYPOList = new ArrayList<>();
final Date tempDate = new SimpleDateFormat ("yyyy-MM-dd").parse(dataDate);
orgIdList.forEach (orgid -> {
orgIdList.forEach(orgid -> {
/*查询Mouth表数据生成年表数据*/
List<ROperatingIndexMPO> list = rOperatingIndexMPOService.queryOneYearData(orgid,dataDate);
List<ROperatingIndexMPO> list = rOperatingIndexMPOService.queryOneYearData(orgid, beginTime,endTime);
/*求平均值*/
int measurement_run_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getMeasurementRunPoints ( )).
average ( ).
getAsDouble ( ));
int transit_measurement_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getTransitMeasurementPoints ()).
average ( ).
getAsDouble ( ));
int effective_access_measurement_count =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getEffectiveAccessMeasurementCount ()).
average ( ).
getAsDouble ( ));
int online_measurement_points =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getOnlineMeasurementPoints ()).
average ( ).
getAsDouble ( ));
int measurement_run_points = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getMeasurementRunPoints()).
average().
getAsDouble());
int transit_measurement_points = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getTransitMeasurementPoints()).
average().
getAsDouble());
int effective_access_measurement_count = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getEffectiveAccessMeasurementCount()).
average().
getAsDouble());
int online_measurement_points = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getOnlineMeasurementPoints()).
average().
getAsDouble());
int online_measurement_count =(int) Math.round (list.stream ( ).
mapToDouble (temp -> temp.getOnlineMeasurementCount ()).
average ( ).
getAsDouble ( ));
int online_measurement_count = (int) Math.round(list.stream().
mapToDouble(temp -> temp.getOnlineMeasurementCount()).
average().
getAsDouble());
/*double保留2位小数*/
Double data_integrity_rate =Math.round (list.stream ( ).
mapToDouble (temp -> temp.getDataIntegrityRate ()).
average ( ).
getAsDouble ( )*100)*0.01;
Double data_integrity_rate = Math.round(list.stream().
mapToDouble(temp -> temp.getDataIntegrityRate()).
average().
getAsDouble() * 100) * 0.01;
/*看day表is_unusual时候存在1存在返回1数据否异常(0:正常 1:异常)*/
Integer is_unusual =list.stream ().
map (ROperatingIndexMPO::getIsUnusual).
collect (Collectors.toList ())
.contains (1)?1:0;
Integer is_unusual = list.stream().
map(ROperatingIndexMPO::getIsUnusual).
collect(Collectors.toList())
.contains(1) ? 1 : 0;
ROperatingIndexYPO rOperatingIndexYPO = new ROperatingIndexYPO( );
rOperatingIndexYPO.setOrgNo (orgid);
rOperatingIndexYPO.setDataDate (tempDate);
rOperatingIndexYPO.setMeasurementRunPoints (measurement_run_points);
rOperatingIndexYPO.setTransitMeasurementPoints (transit_measurement_points);
rOperatingIndexYPO.setEffectiveAccessMeasurementCount (effective_access_measurement_count);
rOperatingIndexYPO.setOnlineMeasurementPoints (online_measurement_points);
rOperatingIndexYPO.setOnlineMeasurementCount (online_measurement_count);
rOperatingIndexYPO.setDataIntegrityRate (data_integrity_rate);
rOperatingIndexYPO.setIsUnusual (is_unusual);
rOperatingIndexYPOList.add (rOperatingIndexYPO);
ROperatingIndexYPO rOperatingIndexYPO = new ROperatingIndexYPO();
rOperatingIndexYPO.setOrgNo(orgid);
rOperatingIndexYPO.setDataDate(DateUtil.parse(primaryGridParam.getDataDate()));
rOperatingIndexYPO.setMeasurementRunPoints(measurement_run_points);
rOperatingIndexYPO.setTransitMeasurementPoints(transit_measurement_points);
rOperatingIndexYPO.setEffectiveAccessMeasurementCount(effective_access_measurement_count);
rOperatingIndexYPO.setOnlineMeasurementPoints(online_measurement_points);
rOperatingIndexYPO.setOnlineMeasurementCount(online_measurement_count);
rOperatingIndexYPO.setDataIntegrityRate(data_integrity_rate);
rOperatingIndexYPO.setIsUnusual(is_unusual);
rOperatingIndexYPOList.add(rOperatingIndexYPO);
});
if(!CollectionUtils.isEmpty (rOperatingIndexYPOList)){
rOperatingIndexYPOService.saveOrUpdateBatchByMultiId (rOperatingIndexYPOList,30);
if (!CollectionUtils.isEmpty(rOperatingIndexYPOList)) {
rOperatingIndexYPOService.saveOrUpdateBatchByMultiId(rOperatingIndexYPOList, 30);
}
}

View File

@@ -35,12 +35,13 @@ public class ROperatingIndexDPOServiceImpl extends MppServiceImpl<ROperatingInde
* @Date: 2022/11/30
*/
@Override
public List<ROperatingIndexDPO> queryOneMothData(String orgid, String dataDate) {
public List<ROperatingIndexDPO> queryOneMothData(String orgid,String beginTime, String endTime) {
QueryWrapper<ROperatingIndexDPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("org_no", orgid).
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring (0, 7));
queryWrapper.eq ("org_no", orgid)
.ge("data_date",beginTime)
.le("data_date",endTime);
List<ROperatingIndexDPO> list = rOperatingIndexDPOMapper.selectList (queryWrapper);

View File

@@ -27,7 +27,8 @@ public class ROperatingIndexMPOServiceImpl extends MppServiceImpl<ROperatingInde
ROperatingIndexMPOMapper rOperatingIndexMPOMapper;
/**
* @param orgid
* @param dataDate
* @param beginTime
* @param endTime
* @Description: queryOneQtrData 查询一季度Mouth表数据
* @Param: [orgid, dataDate]
* @return: java.util.List<com.njcn.prepare.harmonic.pojo.mysql.po.ROperatingIndexMPO>
@@ -35,11 +36,12 @@ public class ROperatingIndexMPOServiceImpl extends MppServiceImpl<ROperatingInde
* @Date: 2022/11/30
*/
@Override
public List<ROperatingIndexMPO> queryOneQtrData(String orgid, String dataDate) {
public List<ROperatingIndexMPO> queryOneQtrData(String orgid,String beginTime, String endTime) {
QueryWrapper<ROperatingIndexMPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("org_no", orgid).
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
queryWrapper.eq ("org_no", orgid)
.ge("data_date",beginTime)
.le("data_date",endTime);
List<ROperatingIndexMPO> list = rOperatingIndexMPOMapper.selectList (queryWrapper);
@@ -49,7 +51,8 @@ public class ROperatingIndexMPOServiceImpl extends MppServiceImpl<ROperatingInde
/**
* @param orgid
* @param dataDate
* @param beginTime
* @param endTime
* @Description: queryOneYearData 查询一年Mouth表数据
* @Param: [orgid, dataDate]
* @return: java.util.List<com.njcn.prepare.harmonic.pojo.mysql.po.ROperatingIndexMPO>
@@ -57,10 +60,11 @@ public class ROperatingIndexMPOServiceImpl extends MppServiceImpl<ROperatingInde
* @Date: 2022/11/30
*/
@Override
public List<ROperatingIndexMPO> queryOneYearData(String orgid, String dataDate) {
public List<ROperatingIndexMPO> queryOneYearData(String orgid,String beginTime, String endTime) {
QueryWrapper<ROperatingIndexMPO> queryWrapper = new QueryWrapper<> ();
queryWrapper.eq ("org_no", orgid).
eq("YEAR( data_date )",dataDate.substring (0, 4));
ge("data_date",beginTime)
.le("data_date",endTime);
List<ROperatingIndexMPO> list = rOperatingIndexMPOMapper.selectList (queryWrapper);
return list;

View File

@@ -6,7 +6,6 @@ import com.njcn.harmonic.pojo.po.PmsMonitorPO;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/29 15:32【需求编号】
@@ -14,14 +13,15 @@ import java.util.List;
* @author clam
* @version V1.0.0
*/
public interface PmsMonitorPOService extends IService<PmsMonitorPO>{
public interface PmsMonitorPOService extends IService<PmsMonitorPO> {
/**
* @Description: 在运监测点集合
* @Param: [orgid]
* @return: java.lang.Integer
* @Author: clam
* @Date: 2022/11/25
*/
List<PmsMonitorPO> qurymeasurementRunPoints(String orgid);
/**
* @Description: 在运监测点集合
* @Param: [orgid]
* @return: java.lang.Integer
* @Author: clam
* @Date: 2022/11/25
*/
public List<PmsMonitorPO> qurymeasurementRunPoints(String orgid);
}

View File

@@ -1,12 +1,12 @@
package com.njcn.prepare.harmonic.service.mysql.area;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.harmonic.pojo.po.PmsTerminalPO;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/29 15:53【需求编号】
@@ -14,7 +14,15 @@ import java.util.List;
* @author clam
* @version V1.0.0
*/
public interface PmsTerminalPOService extends IService<PmsTerminalPO>{
public interface PmsTerminalPOService extends IService<PmsTerminalPO> {
List<PmsTerminalPO> queryOnlineMeasurementPoints(String orgid);
List<PmsTerminalPO> queryOnlineMeasurementPoints(String orgid);
/**
* @Description: 获取终端信息
* @param orgId
* @Author: wr
* @Date: 2023/9/25 10:44
*/
List<LineDevGetDTO> getRunTerminalAndLine(String orgId);
}

View File

@@ -7,7 +7,6 @@ import com.njcn.prepare.harmonic.pojo.dto.MonitorDataIntegrityDTO;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/11/29 15:38【需求编号】
@@ -15,10 +14,10 @@ import java.util.List;
* @author clam
* @version V1.0.0
*/
public interface RMpIntegrityDPOService extends IService<RMpIntegrityDPO>{
public interface RMpIntegrityDPOService extends IService<RMpIntegrityDPO> {
List<MonitorDataIntegrityDTO> calculateDataIntegrity(List<String> indexlist, String dataDate);
List<MonitorDataIntegrityDTO> calculateDataIntegrity(List<String> indexlist, String dataDate);
List<MonitorDataIntegrityDTO> calculateMouthDataIntegrity(List<String> mysqlIndexList, String dataDate);
}

View File

@@ -23,5 +23,5 @@ public interface ROperatingIndexDPOService extends IMppService<ROperatingIndexDP
* @Author: clam
* @Date: 2022/11/30
*/
List<ROperatingIndexDPO> queryOneMothData(String orgid, String dataDate);
List<ROperatingIndexDPO> queryOneMothData(String orgid,String beginTime, String endTime);
}

View File

@@ -22,7 +22,7 @@ public interface ROperatingIndexMPOService extends IMppService<ROperatingIndexMP
* @Author: clam
* @Date: 2022/11/30
*/
List<ROperatingIndexMPO> queryOneQtrData(String orgid, String dataDate);
List<ROperatingIndexMPO> queryOneQtrData(String orgid,String beginTime, String endTime);
/**
* @Description: queryOneYearData 查询一年Mouth表数据
@@ -31,5 +31,5 @@ public interface ROperatingIndexMPOService extends IMppService<ROperatingIndexMP
* @Author: clam
* @Date: 2022/11/30
*/
List<ROperatingIndexMPO> queryOneYearData(String orgid, String dataDate);
List<ROperatingIndexMPO> queryOneYearData(String orgid,String beginTime, String endTime);
}