算法模块删除不必要的代码,有备份,如果存疑就联系我
This commit is contained in:
@@ -1,32 +0,0 @@
|
|||||||
package com.njcn.prepare.harmonic.api.line;
|
|
||||||
|
|
||||||
import com.njcn.common.pojo.constant.ServerInfo;
|
|
||||||
import com.njcn.common.pojo.response.HttpResult;
|
|
||||||
import com.njcn.prepare.harmonic.api.line.fallback.NormalFeignClientFallbackFactory;
|
|
||||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author denghaujun
|
|
||||||
* @date 2022/10/20
|
|
||||||
*/
|
|
||||||
@FeignClient(
|
|
||||||
value = ServerInfo.PREPARE_BOOT,//对应模块名
|
|
||||||
path = "/normalLimit",//对应controller请求类
|
|
||||||
fallbackFactory = NormalFeignClientFallbackFactory.class//服务降级处理类
|
|
||||||
)
|
|
||||||
public interface NormalLimitFeignClient {
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author denghaujun
|
|
||||||
* @date 2022/10/19
|
|
||||||
*/
|
|
||||||
@PostMapping("/getNormLimitData")
|
|
||||||
HttpResult<String> getNormLimitData(@RequestBody @Validated LineParam lineParam) ;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
package com.njcn.prepare.harmonic.api.line.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.line.NormalLimitFeignClient;
|
|
||||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
|
||||||
import com.njcn.prepare.harmonic.utils.PrepareEnumUtil;
|
|
||||||
import feign.hystrix.FallbackFactory;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* NormalFeignClientFallbackFactory
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@Component
|
|
||||||
public class NormalFeignClientFallbackFactory implements FallbackFactory<NormalLimitFeignClient> {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public NormalLimitFeignClient 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 NormalLimitFeignClient() {
|
|
||||||
@Override
|
|
||||||
public HttpResult<String> getNormLimitData(LineParam lineParam) {
|
|
||||||
log.error("{}异常,降级处理,异常为:{}", "告警数据: ", throwable.toString());
|
|
||||||
throw new BusinessException(finalExceptionEnum);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
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.ROperatingIndexFeignClientFallbackFactory;
|
|
||||||
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 = ROperatingIndexFeignClientFallbackFactory.class//服务降级处理类
|
|
||||||
)
|
|
||||||
public interface ROperatingIndexFeignClient {
|
|
||||||
|
|
||||||
@PostMapping("primaryGridDataHanlder")
|
|
||||||
HttpResult<Boolean> primaryGridDataHanlder(@RequestBody PrimaryGridParam primaryGridParam);
|
|
||||||
|
|
||||||
@PostMapping("primaryGridDataIntegrityHanlder")
|
|
||||||
HttpResult<Boolean> primaryGridDataIntegrityHanlder(@RequestBody PrimaryGridDataIntegrityParam primaryGridDataIntegrityParam);
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
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);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,120 +0,0 @@
|
|||||||
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;
|
|
||||||
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridDataIntegrityParam;
|
|
||||||
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam;
|
|
||||||
import com.njcn.prepare.harmonic.service.mysql.area.PrimaryGridDataService;
|
|
||||||
import com.njcn.user.api.DeptFeignClient;
|
|
||||||
import com.njcn.user.pojo.vo.PvTerminalTreeVO;
|
|
||||||
import com.njcn.web.controller.BaseController;
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiImplicitParam;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.util.CollectionUtils;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description:r_operating_index_d
|
|
||||||
* 接口文档访问地址:http://serverIP:port/swagger-ui.html
|
|
||||||
* Date: 2022/11/24 14:31【需求编号】
|
|
||||||
*
|
|
||||||
* @author clam
|
|
||||||
* @version V1.0.0
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@Api(tags = "主网单位数据统计(r_operating_index_d表数据需要先生成r_stat_abnormal_d,r_mp_integrity_d表)")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("primaryGridData")
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Deprecated
|
|
||||||
public class PrimaryGridDataController extends BaseController {
|
|
||||||
|
|
||||||
private @Autowired
|
|
||||||
PrimaryGridDataService primaryGridDataService;
|
|
||||||
|
|
||||||
private @Autowired
|
|
||||||
DeptFeignClient deptFeignClient;
|
|
||||||
|
|
||||||
private @Autowired
|
|
||||||
PmsTerminalClient pmsTerminalClient;
|
|
||||||
|
|
||||||
|
|
||||||
@ApiOperation("主网单位数据同步(r_operating_index_d表数据)")
|
|
||||||
@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开始执行");
|
|
||||||
String methodDescribe = getMethodDescribe("primaryGridDataHanlder");
|
|
||||||
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);
|
|
||||||
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)
|
|
||||||
@PostMapping("primaryGridDataIntegrityHanlder")
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
|
|
||||||
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())) {
|
|
||||||
/*todo 不知道是否需要补招*/
|
|
||||||
List<PmsTerminal> data = pmsTerminalClient.getTerminalSelectList(new PmsBaseParam()).getData();
|
|
||||||
orgIdList = data.stream().map(PmsTerminal::getId).collect(Collectors.toList());
|
|
||||||
} else {
|
|
||||||
orgIdList = primaryGridDataIntegrityParam.getDeviceId();
|
|
||||||
}
|
|
||||||
primaryGridDataIntegrityParam.setDeviceId(orgIdList);
|
|
||||||
|
|
||||||
primaryGridDataService.primaryGridDataIntegrityHanlder(primaryGridDataIntegrityParam);
|
|
||||||
if (result) {
|
|
||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
|
|
||||||
} else {
|
|
||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
package com.njcn.prepare.harmonic.controller.line;
|
|
||||||
|
|
||||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
|
||||||
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.prepare.harmonic.pojo.param.LineParam;
|
|
||||||
import com.njcn.prepare.harmonic.service.mysql.line.NormalLimitService;
|
|
||||||
import com.njcn.web.controller.BaseController;
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用于每天统计前一天异常监测点数据(需要在r_stat_limit_target_d数据后面执行)
|
|
||||||
* @author denghuajun
|
|
||||||
* @version 1.0.0
|
|
||||||
* @date 2022年10月17日 19:56
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/normalLimit")
|
|
||||||
@Api(tags = "告警数据预处理_mysql")
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class NormalLimitController extends BaseController {
|
|
||||||
|
|
||||||
private final NormalLimitService normLimitService;
|
|
||||||
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
|
||||||
@PostMapping("/getNormLimitData")
|
|
||||||
@ApiOperation("监测点告警数据预处理")
|
|
||||||
public HttpResult<String> getNormLimitData(@RequestBody LineParam lineParam) {
|
|
||||||
String methodDescribe = getMethodDescribe("getNormLimitData");
|
|
||||||
normLimitService.abnormalLineData(lineParam);
|
|
||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,613 +0,0 @@
|
|||||||
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
|
||||||
|
|
||||||
import cn.hutool.core.date.DatePattern;
|
|
||||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
|
||||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
|
||||||
import com.njcn.device.pms.pojo.po.Monitor;
|
|
||||||
import com.njcn.harmonic.pojo.po.*;
|
|
||||||
import com.njcn.prepare.harmonic.constant.AlgorithmParam;
|
|
||||||
import com.njcn.prepare.harmonic.constant.PqsPrepareExceptionEnum;
|
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatAbnormalDPOMapper;
|
|
||||||
import com.njcn.prepare.harmonic.pojo.dto.MonitorDataIntegrityDTO;
|
|
||||||
import com.njcn.prepare.harmonic.pojo.oracle.PqLinedetailPO;
|
|
||||||
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridDataIntegrityParam;
|
|
||||||
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam;
|
|
||||||
import com.njcn.prepare.harmonic.service.influxdb.DataVInfluxdbService;
|
|
||||||
import com.njcn.prepare.harmonic.service.mysql.area.*;
|
|
||||||
import com.njcn.prepare.harmonic.service.oracle.DataVOraclePOService;
|
|
||||||
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.scheduling.annotation.Async;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.util.CollectionUtils;
|
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import static com.njcn.system.pojo.constant.DicDataConstant.NAME_KEY;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description:
|
|
||||||
* 接口文档访问地址:http://serverIP:port/swagger-ui.html
|
|
||||||
* Date: 2022/11/25 8:54【需求编号】
|
|
||||||
*
|
|
||||||
* @author clam
|
|
||||||
* @version V1.0.0
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
|
|
||||||
|
|
||||||
private final PmsMonitorPOService pmsMonitorPOService;
|
|
||||||
|
|
||||||
private final PmsTerminalPOService pmsTerminalPOService;
|
|
||||||
|
|
||||||
private final DataVInfluxdbService dataVInfluxdbService;
|
|
||||||
|
|
||||||
private final PqLinedetailPOService pqLinedetailPOService;
|
|
||||||
|
|
||||||
private final DataVOraclePOService dataVOraclePOService;
|
|
||||||
|
|
||||||
private final RMpIntegrityDPOService rMpIntegrityDPOService;
|
|
||||||
|
|
||||||
private final RStatAbnormalDPOMapper rStatAbnormalDPOMapper;
|
|
||||||
|
|
||||||
private final ROperatingIndexDPOService rOperatingIndexDPOService;
|
|
||||||
|
|
||||||
private final ROperatingIndexMPOService rOperatingIndexMPOService;
|
|
||||||
|
|
||||||
private final ROperatingIndexQPOService rOperatingIndexQPOService;
|
|
||||||
|
|
||||||
private final ROperatingIndexYPOService rOperatingIndexYPOService;
|
|
||||||
|
|
||||||
private final RMpDevEvaluateDetailPOService rMpDevEvaluateDetailPOService;
|
|
||||||
|
|
||||||
private final RedisUtil redisUtil;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param primaryGridParam
|
|
||||||
* @Description: primaryGridDataHanlder
|
|
||||||
* @Param: [primaryGridParam]
|
|
||||||
* @return: void
|
|
||||||
* @Author: clam
|
|
||||||
* @Date: 2022/11/25
|
|
||||||
*/
|
|
||||||
@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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param primaryGridDataIntegrityParam
|
|
||||||
* @Description: 主网终端数据完整率月统计只做月统计,且重mysql查数据不分数据源
|
|
||||||
* @Param: [primaryGridDataIntegrityParam]
|
|
||||||
* @return: void
|
|
||||||
* @Author: clam
|
|
||||||
* @Date: 2022/11/30
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
@Async
|
|
||||||
@SneakyThrows
|
|
||||||
public void primaryGridDataIntegrityHanlder(PrimaryGridDataIntegrityParam primaryGridDataIntegrityParam) {
|
|
||||||
List<String> deviceIds = primaryGridDataIntegrityParam.getDeviceId();
|
|
||||||
String dataDate = primaryGridDataIntegrityParam.getDataDate();
|
|
||||||
List<RMpDevEvaluateDetailPO> rMpDevEvaluateDetailPOList = new ArrayList<>();
|
|
||||||
deviceIds.forEach(deviceId -> {
|
|
||||||
double dev_data_rate = 0.00;
|
|
||||||
/*获取终端下的监测点集合*/
|
|
||||||
QueryWrapper<Monitor> queryWrapper = new QueryWrapper<>();
|
|
||||||
String state = redisUtil.getStringByKey(NAME_KEY +
|
|
||||||
StrUtil.DASHED + DicDataTypeEnum.LINE_STATE.getCode() +
|
|
||||||
StrUtil.DASHED + DicDataEnum.RUN.getCode());
|
|
||||||
if (StringUtils.isEmpty(state)) {
|
|
||||||
throw new BusinessException(PqsPrepareExceptionEnum.REDIS_NULL_EXCEPTION);
|
|
||||||
}
|
|
||||||
queryWrapper.lambda().eq(Monitor::getTerminalId, deviceId).
|
|
||||||
eq(Monitor::getMonitorState, state);
|
|
||||||
List<Monitor> list = pmsMonitorPOService.list(queryWrapper);
|
|
||||||
List<String> mysqlIndexList = list.stream().map(Monitor::getId).collect(Collectors.toList());
|
|
||||||
/*获取检测点的月平均数据完整率*/
|
|
||||||
List<MonitorDataIntegrityDTO> monitorDataIntegrityDTOList = rMpIntegrityDPOService.calculateMouthDataIntegrity(mysqlIndexList, dataDate);
|
|
||||||
/*求平均值*/
|
|
||||||
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(LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_FORMATTER));
|
|
||||||
rMpDevEvaluateDetailPO.setDevDataRate(dev_data_rate);
|
|
||||||
rMpDevEvaluateDetailPOList.add(rMpDevEvaluateDetailPO);
|
|
||||||
});
|
|
||||||
rMpDevEvaluateDetailPOService.saveOrUpdateBatchByMultiId(rMpDevEvaluateDetailPOList, 500);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description: 处理influxdb数据 todo 本次不做处理
|
|
||||||
* @Param: [primaryGridParam]
|
|
||||||
* @return: void
|
|
||||||
* @Author: clam
|
|
||||||
* @Date: 2022/11/25
|
|
||||||
*/
|
|
||||||
private void hanlderInfludxbData(PrimaryGridParam primaryGridParam) {
|
|
||||||
Integer type = primaryGridParam.getType();
|
|
||||||
/*月表,季表,年表都是重日表生成,不区分oralce,influxdb*/
|
|
||||||
switch (type) {
|
|
||||||
case 1:
|
|
||||||
this.hanlderOracleYear(primaryGridParam);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
this.hanlderOracleQtr(primaryGridParam);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
this.hanlderOracleMonth(primaryGridParam);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
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<>();
|
|
||||||
|
|
||||||
final Date tempDate = new SimpleDateFormat("yyyy-MM-dd").parse(dataDate);
|
|
||||||
orgIdList.forEach(orgid -> {
|
|
||||||
|
|
||||||
/*measurement_run_points:在运监测点个数*/
|
|
||||||
//获取终端信息,和包含的终端下监测点
|
|
||||||
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<String> runMonitor = runTerminalAndLine.stream().flatMap(x -> x.getMonitorIds().stream()).collect(Collectors.toList());
|
|
||||||
|
|
||||||
// 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(runMonitor, dataDate);
|
|
||||||
/*求平均值*/
|
|
||||||
if (!CollectionUtils.isEmpty(monitorDataIntegrityDTOList)) {
|
|
||||||
data_integrity_rate = monitorDataIntegrityDTOList.stream().mapToDouble(temp -> {
|
|
||||||
return temp.getDataIntegrity().doubleValue();
|
|
||||||
}).average().getAsDouble();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*主网单位数据异常监测点数日统计 is_unusual*/
|
|
||||||
Integer is_unusual = this.queryIsUnusualCount(runMonitor, primaryGridParam.getDataDate());
|
|
||||||
|
|
||||||
ROperatingIndexDPO rOperatingIndexDPO = new ROperatingIndexDPO();
|
|
||||||
rOperatingIndexDPO.setOrgNo(orgid);
|
|
||||||
|
|
||||||
rOperatingIndexDPO.setDataDate(LocalDate.parse(primaryGridParam.getDataDate()));
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description: 处理Oracle数据
|
|
||||||
* @Param: [primaryGridParam]
|
|
||||||
* @return: void
|
|
||||||
* @Author: clam
|
|
||||||
* @Date: 2022/11/25
|
|
||||||
*/
|
|
||||||
private void hanlderOracleData(PrimaryGridParam primaryGridParam) {
|
|
||||||
Integer type = primaryGridParam.getType();
|
|
||||||
switch (type) {
|
|
||||||
case 1:
|
|
||||||
this.hanlderOracleYear(primaryGridParam);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
this.hanlderOracleQtr(primaryGridParam);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
this.hanlderOracleMonth(primaryGridParam);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
this.hanlderOracleDay(primaryGridParam);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description: hanlderOracleMonth
|
|
||||||
* @Param: [primaryGridParam]
|
|
||||||
* @return: void
|
|
||||||
* @Author: clam
|
|
||||||
* @Date: 2022/11/25
|
|
||||||
*/
|
|
||||||
@SneakyThrows
|
|
||||||
private void hanlderOracleMonth(PrimaryGridParam primaryGridParam) {
|
|
||||||
|
|
||||||
List<String> orgIdList = primaryGridParam.getOrgIdList();
|
|
||||||
String beginTime = primaryGridParam.getBeginTime();
|
|
||||||
String endTime = primaryGridParam.getEndTime();
|
|
||||||
List<ROperatingIndexMPO> rOperatingIndexMPOList = new ArrayList<>();
|
|
||||||
|
|
||||||
orgIdList.forEach(orgid -> {
|
|
||||||
/*查询day表数据生成月表数据*/
|
|
||||||
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 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;
|
|
||||||
/*看day表is_unusual时候存在1存在返回1,数据否异常(0:正常 1:异常)*/
|
|
||||||
Integer is_unusual = list.stream().
|
|
||||||
map(ROperatingIndexDPO::getIsUnusual).
|
|
||||||
collect(Collectors.toList())
|
|
||||||
.contains(1) ? 1 : 0;
|
|
||||||
|
|
||||||
|
|
||||||
ROperatingIndexMPO rOperatingIndexMPO = new ROperatingIndexMPO();
|
|
||||||
rOperatingIndexMPO.setOrgNo(orgid);
|
|
||||||
rOperatingIndexMPO.setDataDate(LocalDate.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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description: hanlderOracleDay
|
|
||||||
* @Param: [primaryGridParam]
|
|
||||||
* @return: void
|
|
||||||
* @Author: clam
|
|
||||||
* @Date: 2022/11/25
|
|
||||||
*/
|
|
||||||
@SneakyThrows
|
|
||||||
private void hanlderOracleDay(PrimaryGridParam primaryGridParam) {
|
|
||||||
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 -> {
|
|
||||||
|
|
||||||
/*measurement_run_points:在运监测点个数*/
|
|
||||||
List<Monitor> pmsMonitorPOS = pmsMonitorPOService.qurymeasurementRunPoints(orgid);
|
|
||||||
Integer measurement_run_points = pmsMonitorPOS.size();
|
|
||||||
/*获取mysql与Oracle监测点id对应关系*/
|
|
||||||
List<String> mysqlIndexList = pmsMonitorPOS.stream().map(Monitor::getId).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());
|
|
||||||
|
|
||||||
/*主网单位有效接入监测点个数 effective_access_measurement_count*/
|
|
||||||
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();
|
|
||||||
|
|
||||||
/*在运监测终端个数 online_measurement_count*/
|
|
||||||
String state = redisUtil.getStringByKey(NAME_KEY +
|
|
||||||
StrUtil.DASHED + DicDataTypeEnum.DEV_STATUS.getCode() +
|
|
||||||
StrUtil.DASHED + 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);
|
|
||||||
/*求平均值*/
|
|
||||||
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());
|
|
||||||
|
|
||||||
ROperatingIndexDPO rOperatingIndexDPO = new ROperatingIndexDPO();
|
|
||||||
rOperatingIndexDPO.setOrgNo(orgid);
|
|
||||||
rOperatingIndexDPO.setDataDate(LocalDate.parse(primaryGridParam.getDataDate()));
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description: queryIsUnusualCount :用监测点id在r_stat_abnormal_d表中查找value_alarm为0的监测点个数
|
|
||||||
* @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)) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
return integer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description: 主网单位有效接入监测点个数
|
|
||||||
* 1.获取pms_monitor表中监测点状态为投运的监测点id列表
|
|
||||||
* 2.根据id查询r_mp_integrity_d表中当天各项指标个数,采用以下公式计算数据完整率
|
|
||||||
* 3.〖数据完整率〗_日统计=(频率+相电压+线电压+畸变率+不平衡度)/(有效值数据个数*5)*100%
|
|
||||||
* 判定监测点数据完整率是否大于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
|
|
||||||
*/
|
|
||||||
private Integer queryEffectiveAccessMeasurementCount(List<String> indexlist, String 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());
|
|
||||||
/*获取完整率>0.95条件下value_alarm为1的监测点id*/
|
|
||||||
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);
|
|
||||||
|
|
||||||
return rStatAbnormalDPOS.size();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description: hanlderOracleQtr
|
|
||||||
* @Param: [primaryGridParam]
|
|
||||||
* @return: void
|
|
||||||
* @Author: clam
|
|
||||||
* @Date: 2022/11/25
|
|
||||||
*/
|
|
||||||
@SneakyThrows
|
|
||||||
private void hanlderOracleQtr(PrimaryGridParam primaryGridParam) {
|
|
||||||
|
|
||||||
List<String> orgIdList = primaryGridParam.getOrgIdList();
|
|
||||||
String beginTime = primaryGridParam.getBeginTime();
|
|
||||||
String endTime = primaryGridParam.getEndTime();
|
|
||||||
List<ROperatingIndexQPO> rOperatingIndexQPOList = new ArrayList<>();
|
|
||||||
|
|
||||||
orgIdList.forEach(orgid -> {
|
|
||||||
/*查询Mouth表数据生成季表数据*/
|
|
||||||
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 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;
|
|
||||||
/*看day表is_unusual时候存在1存在返回1,数据否异常(0:正常 1:异常)*/
|
|
||||||
Integer is_unusual = list.stream().
|
|
||||||
map(ROperatingIndexMPO::getIsUnusual).
|
|
||||||
collect(Collectors.toList())
|
|
||||||
.contains(1) ? 1 : 0;
|
|
||||||
|
|
||||||
|
|
||||||
ROperatingIndexQPO rOperatingIndexQPO = new ROperatingIndexQPO();
|
|
||||||
rOperatingIndexQPO.setOrgNo(orgid);
|
|
||||||
rOperatingIndexQPO.setDataDate(LocalDate.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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description: hanlderOracleYear
|
|
||||||
* @Param: [primaryGridParam]
|
|
||||||
* @return: void
|
|
||||||
* @Author: clam
|
|
||||||
* @Date: 2022/11/25
|
|
||||||
*/
|
|
||||||
@SneakyThrows
|
|
||||||
private void hanlderOracleYear(PrimaryGridParam primaryGridParam) {
|
|
||||||
|
|
||||||
List<String> orgIdList = primaryGridParam.getOrgIdList();
|
|
||||||
String beginTime = primaryGridParam.getBeginTime();
|
|
||||||
String endTime = primaryGridParam.getEndTime();
|
|
||||||
List<ROperatingIndexYPO> rOperatingIndexYPOList = new ArrayList<>();
|
|
||||||
|
|
||||||
orgIdList.forEach(orgid -> {
|
|
||||||
/*查询Mouth表数据生成年表数据*/
|
|
||||||
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 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;
|
|
||||||
/*看day表is_unusual时候存在1存在返回1,数据否异常(0:正常 1:异常)*/
|
|
||||||
Integer is_unusual = list.stream().
|
|
||||||
map(ROperatingIndexMPO::getIsUnusual).
|
|
||||||
collect(Collectors.toList())
|
|
||||||
.contains(1) ? 1 : 0;
|
|
||||||
|
|
||||||
|
|
||||||
ROperatingIndexYPO rOperatingIndexYPO = new ROperatingIndexYPO();
|
|
||||||
rOperatingIndexYPO.setOrgNo(orgid);
|
|
||||||
rOperatingIndexYPO.setDataDate(LocalDate.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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -2,7 +2,6 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line;
|
|||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.date.TimeInterval;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
@@ -17,22 +16,16 @@ import com.njcn.influx.pojo.po.DataV;
|
|||||||
import com.njcn.influx.utils.InfluxDbUtils;
|
import com.njcn.influx.utils.InfluxDbUtils;
|
||||||
import com.njcn.prepare.harmonic.enums.PrepareResponseEnum;
|
import com.njcn.prepare.harmonic.enums.PrepareResponseEnum;
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.day.*;
|
import com.njcn.prepare.harmonic.mapper.mysql.day.*;
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.line.AbnormalMapper;
|
|
||||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.prepare.harmonic.pojo.mysql.po.line.MpSurplusAbnormalD;
|
import com.njcn.prepare.harmonic.pojo.mysql.po.line.MpSurplusAbnormalD;
|
||||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
|
||||||
import com.njcn.prepare.harmonic.service.mysql.line.HarmonicMetricService;
|
import com.njcn.prepare.harmonic.service.mysql.line.HarmonicMetricService;
|
||||||
import com.njcn.prepare.harmonic.service.mysql.line.NormalLimitService;
|
import com.njcn.prepare.harmonic.service.mysql.line.NormalLimitService;
|
||||||
import com.njcn.user.api.DeptFeignClient;
|
import com.njcn.user.api.DeptFeignClient;
|
||||||
import com.njcn.user.pojo.po.Dept;
|
import com.njcn.user.pojo.po.Dept;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.influxdb.InfluxDB;
|
|
||||||
import org.influxdb.dto.BatchPoints;
|
|
||||||
import org.influxdb.dto.Point;
|
|
||||||
import org.influxdb.dto.QueryResult;
|
import org.influxdb.dto.QueryResult;
|
||||||
import org.influxdb.impl.InfluxDBResultMapper;
|
import org.influxdb.impl.InfluxDBResultMapper;
|
||||||
import org.springframework.scheduling.annotation.Async;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
@@ -40,7 +33,6 @@ import java.math.BigDecimal;
|
|||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|||||||
@@ -1,34 +1,13 @@
|
|||||||
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
|
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
|
||||||
import cn.hutool.core.date.TimeInterval;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.device.pq.api.GeneralDeviceInfoClient;
|
|
||||||
import com.njcn.device.pq.api.OverLimitClient;
|
|
||||||
import com.njcn.harmonic.pojo.po.day.*;
|
|
||||||
import com.njcn.influx.deprecated.InfluxDBPublicParam;
|
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.day.*;
|
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.line.AbnormalMapper;
|
import com.njcn.prepare.harmonic.mapper.mysql.line.AbnormalMapper;
|
||||||
import com.njcn.prepare.harmonic.pojo.mysql.po.line.MpSurplusAbnormalD;
|
import com.njcn.prepare.harmonic.pojo.mysql.po.line.MpSurplusAbnormalD;
|
||||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
|
||||||
import com.njcn.prepare.harmonic.service.mysql.line.NormalLimitService;
|
import com.njcn.prepare.harmonic.service.mysql.line.NormalLimitService;
|
||||||
import com.njcn.user.api.DeptFeignClient;
|
|
||||||
import com.njcn.user.pojo.po.Dept;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.function.Function;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author denghuajun
|
* @author denghuajun
|
||||||
@@ -41,509 +20,7 @@ import java.util.stream.Collectors;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class NormalLimitServiceImpl extends MppServiceImpl<AbnormalMapper, MpSurplusAbnormalD> implements NormalLimitService {
|
public class NormalLimitServiceImpl extends MppServiceImpl<AbnormalMapper, MpSurplusAbnormalD> implements NormalLimitService {
|
||||||
|
|
||||||
private final GeneralDeviceInfoClient generalDeviceInfoClient;
|
|
||||||
|
|
||||||
private final DeptFeignClient deptFeignClient;
|
|
||||||
|
|
||||||
private final OverLimitClient overLimitClient;
|
|
||||||
|
|
||||||
private final RStatDataHarmRateVDMapper rStatDataHarmRateVDMapper;
|
|
||||||
|
|
||||||
private final RStatDataInHarmVDMapper rStatDataInHarmVDMapper;
|
|
||||||
|
|
||||||
private final RStatDataVDMapper rStatDataVDMapper;
|
|
||||||
|
|
||||||
private final RStatDataIDMapper rStatDataIDMapper;
|
|
||||||
|
|
||||||
private final RStatDataPltDMapper rStatDataPltDMapper;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
//@Async("asyncExecutor")
|
|
||||||
public Boolean abnormalLineData(LineParam lineParam) {
|
|
||||||
TimeInterval timeInterval = new TimeInterval();
|
|
||||||
|
|
||||||
List<String> lineIds = new ArrayList<>();
|
|
||||||
List<MpSurplusAbnormalD> all = new ArrayList<>();
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(lineParam.getLineIds())) {
|
|
||||||
Dept dept = deptFeignClient.getRootDept().getData();
|
|
||||||
lineIds = generalDeviceInfoClient.deptGetRunLine(dept.getId()).getData();
|
|
||||||
} else {
|
|
||||||
//不为空则为补招
|
|
||||||
lineIds = lineParam.getLineIds();
|
|
||||||
}
|
|
||||||
if (CollUtil.isNotEmpty(lineIds)) {
|
|
||||||
List<Map<String, Object>> overLimitMap = overLimitClient.getLimitMapsByLineIds(lineIds).getData();
|
|
||||||
Map<String, Map<String, Object>> ovMap = overLimitMap.stream().collect(Collectors.toMap(item -> item.get("id").toString(), Function.identity()));
|
|
||||||
|
|
||||||
for (String lineIndex : lineIds) {
|
|
||||||
Boolean flag = false;
|
|
||||||
//获取当前监测点的限值详情
|
|
||||||
if (!ovMap.containsKey(lineIndex)) {
|
|
||||||
log.error(LocalDateTime.now() + "--监测点<" + lineIndex + ">不存在限值!");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Map<String, Object> overLimit = ovMap.get(lineIndex);
|
|
||||||
|
|
||||||
//谐波电压
|
|
||||||
LambdaQueryWrapper<RStatDataHarmrateVDPO> lambdaQueryV = new LambdaQueryWrapper<>();
|
|
||||||
lambdaQueryV.eq(RStatDataHarmrateVDPO::getLineId, lineIndex).eq(RStatDataHarmrateVDPO::getTime, lineParam.getDataDate() + InfluxDBPublicParam.START_TIME);
|
|
||||||
List<Map<String, Object>> harmVMap = rStatDataHarmRateVDMapper.selectMaps(lambdaQueryV);
|
|
||||||
Map<String, List<Map<String, Object>>> tenMap = harmVMap.stream().collect(Collectors.groupingBy(item -> item.get("phaseType").toString()));
|
|
||||||
|
|
||||||
//谐波电流幅值
|
|
||||||
LambdaQueryWrapper<RStatDataIDPO> lambdaQueryI = new LambdaQueryWrapper<>();
|
|
||||||
lambdaQueryI.eq(RStatDataIDPO::getLineId, lineIndex).eq(RStatDataIDPO::getTime, lineParam.getDataDate() + InfluxDBPublicParam.START_TIME);
|
|
||||||
List<Map<String, Object>> harmIMap = rStatDataIDMapper.selectMaps(lambdaQueryI);
|
|
||||||
Map<String, List<Map<String, Object>>> iMap = harmIMap.stream().collect(Collectors.groupingBy(item -> item.get("phaseType").toString()));
|
|
||||||
|
|
||||||
//间谐波电压
|
|
||||||
LambdaQueryWrapper<RStatDataInharmVDPO> lambdaQueryInV = new LambdaQueryWrapper<>();
|
|
||||||
lambdaQueryInV.eq(RStatDataInharmVDPO::getLineId, lineIndex).eq(RStatDataInharmVDPO::getTime, lineParam.getDataDate() + InfluxDBPublicParam.START_TIME);
|
|
||||||
List<Map<String, Object>> harmInVMap = rStatDataInHarmVDMapper.selectMaps(lambdaQueryInV);
|
|
||||||
Map<String, List<Map<String, Object>>> inMap = harmInVMap.stream().collect(Collectors.groupingBy(item -> item.get("phaseType").toString()));
|
|
||||||
|
|
||||||
//三相电压
|
|
||||||
LambdaQueryWrapper<RStatDataVDPO> lambdaQueryDataV = new LambdaQueryWrapper<>();
|
|
||||||
lambdaQueryDataV.eq(RStatDataVDPO::getLineId, lineIndex).eq(RStatDataVDPO::getTime, lineParam.getDataDate() + InfluxDBPublicParam.START_TIME);
|
|
||||||
List<RStatDataVDPO> rStatDataVDPOList = rStatDataVDMapper.selectList(lambdaQueryDataV);
|
|
||||||
Map<String, List<RStatDataVDPO>> dataVMap = rStatDataVDPOList.stream().collect(Collectors.groupingBy(RStatDataVDPO::getPhaseType));
|
|
||||||
|
|
||||||
//电流
|
|
||||||
LambdaQueryWrapper<RStatDataIDPO> lambdaQueryDataI = new LambdaQueryWrapper<>();
|
|
||||||
lambdaQueryDataI.eq(RStatDataIDPO::getLineId, lineIndex).eq(RStatDataIDPO::getTime, lineParam.getDataDate() + InfluxDBPublicParam.START_TIME);
|
|
||||||
List<RStatDataIDPO> rStatDataIDPOList = rStatDataIDMapper.selectList(lambdaQueryDataI);
|
|
||||||
Map<String, List<RStatDataIDPO>> dataIMap = rStatDataIDPOList.stream().collect(Collectors.groupingBy(RStatDataIDPO::getPhaseType));
|
|
||||||
|
|
||||||
//长时闪变
|
|
||||||
LambdaQueryWrapper<RStatDataPltDPO> lambdaQueryDataPlt = new LambdaQueryWrapper<>();
|
|
||||||
lambdaQueryDataPlt.eq(RStatDataPltDPO::getLineId, lineIndex).eq(RStatDataPltDPO::getTime, lineParam.getDataDate() + InfluxDBPublicParam.START_TIME);
|
|
||||||
List<RStatDataPltDPO> rStatDataPltDPOList = rStatDataPltDMapper.selectList(lambdaQueryDataPlt);
|
|
||||||
Map<String, List<RStatDataPltDPO>> dataPltMap = rStatDataPltDPOList.stream().collect(Collectors.groupingBy(RStatDataPltDPO::getPhaseType));
|
|
||||||
|
|
||||||
String phasic = "";
|
|
||||||
for (int phase = 1; phase < 5; phase++) {
|
|
||||||
switch (phase) {
|
|
||||||
case 1:
|
|
||||||
phasic = "A";
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
phasic = "B";
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
phasic = "C";
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
phasic = "T";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
MpSurplusAbnormalD mpSurplusAbnormalCp95 = new MpSurplusAbnormalD();
|
|
||||||
mpSurplusAbnormalCp95.setPhasicType(phasic);
|
|
||||||
mpSurplusAbnormalCp95.setValueType("CP95");
|
|
||||||
mpSurplusAbnormalCp95.setLineId(lineIndex);
|
|
||||||
mpSurplusAbnormalCp95.setTimeId(LocalDateTime.parse(lineParam.getDataDate() + InfluxDBPublicParam.START_TIME, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
||||||
|
|
||||||
MpSurplusAbnormalD mpSurplusAbnormalAvg = new MpSurplusAbnormalD();
|
|
||||||
mpSurplusAbnormalAvg.setPhasicType(phasic);
|
|
||||||
mpSurplusAbnormalAvg.setValueType("AVG");
|
|
||||||
mpSurplusAbnormalAvg.setLineId(lineIndex);
|
|
||||||
mpSurplusAbnormalAvg.setTimeId(LocalDateTime.parse(lineParam.getDataDate() + InfluxDBPublicParam.START_TIME, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
||||||
|
|
||||||
MpSurplusAbnormalD mpSurplusAbnormalMax = new MpSurplusAbnormalD();
|
|
||||||
mpSurplusAbnormalMax.setPhasicType(phasic);
|
|
||||||
mpSurplusAbnormalMax.setValueType("MAX");
|
|
||||||
mpSurplusAbnormalMax.setLineId(lineIndex);
|
|
||||||
mpSurplusAbnormalMax.setTimeId(LocalDateTime.parse(lineParam.getDataDate() + InfluxDBPublicParam.START_TIME, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
||||||
|
|
||||||
MpSurplusAbnormalD mpSurplusAbnormalMin = new MpSurplusAbnormalD();
|
|
||||||
mpSurplusAbnormalMin.setPhasicType(phasic);
|
|
||||||
mpSurplusAbnormalMin.setValueType("MIN");
|
|
||||||
mpSurplusAbnormalMin.setLineId(lineIndex);
|
|
||||||
mpSurplusAbnormalMin.setTimeId(LocalDateTime.parse(lineParam.getDataDate() + InfluxDBPublicParam.START_TIME, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
||||||
|
|
||||||
if (dataVMap.containsKey(phasic)) {
|
|
||||||
List<RStatDataVDPO> mapList = dataVMap.get(phasic);
|
|
||||||
Map<String, RStatDataVDPO> vMap = mapList.stream().collect(Collectors.toMap(RStatDataVDPO::getValueType, Function.identity()));
|
|
||||||
|
|
||||||
//三项电压不平衡度
|
|
||||||
if (vMap.get("CP95").getVUnbalance() > (Double) overLimit.get("ubalance")) {
|
|
||||||
mpSurplusAbnormalCp95.setUbalance(vMap.get("CP95").getVUnbalance().floatValue());
|
|
||||||
mpSurplusAbnormalAvg.setUbalance(vMap.get("AVG").getVUnbalance().floatValue());
|
|
||||||
mpSurplusAbnormalMin.setUbalance(vMap.get("MIN").getVUnbalance().floatValue());
|
|
||||||
mpSurplusAbnormalMax.setUbalance(vMap.get("MAX").getVUnbalance().floatValue());
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//电压畸变
|
|
||||||
if (vMap.get("CP95").getVThd() > (Double) overLimit.get("uaberrance")) {
|
|
||||||
mpSurplusAbnormalCp95.setUaberrance(vMap.get("CP95").getVThd().floatValue());
|
|
||||||
mpSurplusAbnormalAvg.setUaberrance(vMap.get("AVG").getVThd().floatValue());
|
|
||||||
mpSurplusAbnormalMin.setUaberrance(vMap.get("MIN").getVThd().floatValue());
|
|
||||||
mpSurplusAbnormalMax.setUaberrance(vMap.get("MAX").getVThd().floatValue());
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//频率偏差
|
|
||||||
if (Math.abs(vMap.get("MAX").getFreqDev()) > (Double) overLimit.get("freq_dev") || Math.abs(vMap.get("MIN").getFreqDev()) > (Double) overLimit.get("freq_dev")) {
|
|
||||||
mpSurplusAbnormalCp95.setFreq(vMap.get("CP95").getFreqDev().floatValue());
|
|
||||||
mpSurplusAbnormalAvg.setFreq(vMap.get("AVG").getFreqDev().floatValue());
|
|
||||||
mpSurplusAbnormalMin.setFreq(vMap.get("MIN").getFreqDev().floatValue());
|
|
||||||
mpSurplusAbnormalMax.setFreq(vMap.get("MAX").getFreqDev().floatValue());
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//电压上偏差
|
|
||||||
if (Math.abs(vMap.get("MAX").getVlDev()) > (Double) overLimit.get("voltage_dev")) {
|
|
||||||
mpSurplusAbnormalCp95.setVoltageDev(vMap.get("CP95").getVlDev().floatValue());
|
|
||||||
mpSurplusAbnormalAvg.setVoltageDev(vMap.get("AVG").getVlDev().floatValue());
|
|
||||||
mpSurplusAbnormalMin.setVoltageDev(vMap.get("MIN").getVlDev().floatValue());
|
|
||||||
mpSurplusAbnormalMax.setVoltageDev(vMap.get("MAX").getVlDev().floatValue());
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//负序电流
|
|
||||||
if (dataIMap.containsKey(phasic)) {
|
|
||||||
List<RStatDataIDPO> mapList = dataIMap.get(phasic);
|
|
||||||
Map<String, RStatDataIDPO> inegMap = mapList.stream().collect(Collectors.toMap(RStatDataIDPO::getValueType, Function.identity()));
|
|
||||||
if (inegMap.get("CP95").getINeg() > (Double) overLimit.get("i_neg")) {
|
|
||||||
mpSurplusAbnormalCp95.setINeg(inegMap.get("CP95").getINeg().floatValue());
|
|
||||||
mpSurplusAbnormalAvg.setINeg(inegMap.get("AVG").getINeg().floatValue());
|
|
||||||
mpSurplusAbnormalMin.setINeg(inegMap.get("MIN").getINeg().floatValue());
|
|
||||||
mpSurplusAbnormalMax.setINeg(inegMap.get("MAX").getINeg().floatValue());
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//长时闪变
|
|
||||||
if (dataPltMap.containsKey(phasic)) {
|
|
||||||
List<RStatDataPltDPO> mapList = dataPltMap.get(phasic);
|
|
||||||
Map<String, RStatDataPltDPO> pltMap = mapList.stream().collect(Collectors.toMap(RStatDataPltDPO::getValueType, Function.identity()));
|
|
||||||
if (pltMap.get("MAX").getPlt() > (Double) overLimit.get("flicker")) {
|
|
||||||
mpSurplusAbnormalCp95.setFlicker(pltMap.get("CP95").getPlt().floatValue());
|
|
||||||
mpSurplusAbnormalAvg.setFlicker(pltMap.get("AVG").getPlt().floatValue());
|
|
||||||
mpSurplusAbnormalMin.setFlicker(pltMap.get("MIN").getPlt().floatValue());
|
|
||||||
mpSurplusAbnormalMax.setFlicker(pltMap.get("MAX").getPlt().floatValue());
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//谐波电压
|
|
||||||
dealData(tenMap,phasic,overLimit,flag,mpSurplusAbnormalCp95,mpSurplusAbnormalAvg,mpSurplusAbnormalMax,mpSurplusAbnormalMin,2,26,1,"uharm_","v_");
|
|
||||||
|
|
||||||
//谐波电流
|
|
||||||
dealData(iMap,phasic,overLimit,flag,mpSurplusAbnormalCp95,mpSurplusAbnormalAvg,mpSurplusAbnormalMax,mpSurplusAbnormalMin,2,26,2,"iharm_","i_");
|
|
||||||
|
|
||||||
//间谐波电压
|
|
||||||
dealData(inMap,phasic,overLimit,flag,mpSurplusAbnormalCp95,mpSurplusAbnormalAvg,mpSurplusAbnormalMax,mpSurplusAbnormalMin,1,17,3,"inuharm_","v_");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(flag){
|
|
||||||
all.add(mpSurplusAbnormalCp95);
|
|
||||||
all.add(mpSurplusAbnormalAvg);
|
|
||||||
all.add(mpSurplusAbnormalMax);
|
|
||||||
all.add(mpSurplusAbnormalMin);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CollUtil.isNotEmpty(all)) {
|
|
||||||
//入库操作
|
|
||||||
this.saveBatch(all,1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
log.info("运行时长:"+timeInterval.intervalSecond());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* type 1.谐波电压含有率 2.谐波电流幅值 其他.间谐波电流
|
|
||||||
*
|
|
||||||
* @author cdf
|
|
||||||
* @date 2023/8/22
|
|
||||||
*/
|
|
||||||
private void assPojo(Map<String, Object> map, MpSurplusAbnormalD mpSurplusAbnormalD, Integer type) {
|
|
||||||
if (type == 1) {
|
|
||||||
//谐波电压
|
|
||||||
map.forEach((key, val) -> {
|
|
||||||
switch (key) {
|
|
||||||
case "v_2":
|
|
||||||
mpSurplusAbnormalD.setUharm2(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_3":
|
|
||||||
mpSurplusAbnormalD.setUharm3(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_4":
|
|
||||||
mpSurplusAbnormalD.setUharm4(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_5":
|
|
||||||
mpSurplusAbnormalD.setUharm5(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_6":
|
|
||||||
mpSurplusAbnormalD.setUharm6(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_7":
|
|
||||||
mpSurplusAbnormalD.setUharm7(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_8":
|
|
||||||
mpSurplusAbnormalD.setUharm8(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_9":
|
|
||||||
mpSurplusAbnormalD.setUharm9(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_10":
|
|
||||||
mpSurplusAbnormalD.setUharm10(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_11":
|
|
||||||
mpSurplusAbnormalD.setUharm11(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_12":
|
|
||||||
mpSurplusAbnormalD.setUharm12(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_13":
|
|
||||||
mpSurplusAbnormalD.setUharm13(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_14":
|
|
||||||
mpSurplusAbnormalD.setUharm14(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_15":
|
|
||||||
mpSurplusAbnormalD.setUharm15(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_16":
|
|
||||||
mpSurplusAbnormalD.setUharm16(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_17":
|
|
||||||
mpSurplusAbnormalD.setUharm17(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_18":
|
|
||||||
mpSurplusAbnormalD.setUharm18(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_19":
|
|
||||||
mpSurplusAbnormalD.setUharm19(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_20":
|
|
||||||
mpSurplusAbnormalD.setUharm20(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_21":
|
|
||||||
mpSurplusAbnormalD.setUharm21(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_22":
|
|
||||||
mpSurplusAbnormalD.setUharm22(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_23":
|
|
||||||
mpSurplusAbnormalD.setUharm23(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_24":
|
|
||||||
mpSurplusAbnormalD.setUharm24(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_25":
|
|
||||||
mpSurplusAbnormalD.setUharm25(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "time":
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new IllegalStateException("Unexpected value: " + key);
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
} else if (type == 2) {
|
|
||||||
//谐波电流
|
|
||||||
map.forEach((key, val) -> {
|
|
||||||
switch (key) {
|
|
||||||
case "i_2":
|
|
||||||
mpSurplusAbnormalD.setIharm2(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_3":
|
|
||||||
mpSurplusAbnormalD.setIharm3(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_4":
|
|
||||||
mpSurplusAbnormalD.setIharm4(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_5":
|
|
||||||
mpSurplusAbnormalD.setIharm5(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_6":
|
|
||||||
mpSurplusAbnormalD.setIharm6(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_7":
|
|
||||||
mpSurplusAbnormalD.setIharm7(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_8":
|
|
||||||
mpSurplusAbnormalD.setIharm8(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_9":
|
|
||||||
mpSurplusAbnormalD.setIharm9(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_10":
|
|
||||||
mpSurplusAbnormalD.setIharm10(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_11":
|
|
||||||
mpSurplusAbnormalD.setIharm11(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_12":
|
|
||||||
mpSurplusAbnormalD.setIharm12(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_13":
|
|
||||||
mpSurplusAbnormalD.setIharm13(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_14":
|
|
||||||
mpSurplusAbnormalD.setIharm14(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_15":
|
|
||||||
mpSurplusAbnormalD.setIharm15(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_16":
|
|
||||||
mpSurplusAbnormalD.setIharm16(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_17":
|
|
||||||
mpSurplusAbnormalD.setIharm17(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_18":
|
|
||||||
mpSurplusAbnormalD.setIharm18(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_19":
|
|
||||||
mpSurplusAbnormalD.setIharm19(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_20":
|
|
||||||
mpSurplusAbnormalD.setIharm20(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_21":
|
|
||||||
mpSurplusAbnormalD.setIharm21(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_22":
|
|
||||||
mpSurplusAbnormalD.setIharm22(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_23":
|
|
||||||
mpSurplusAbnormalD.setIharm23(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_24":
|
|
||||||
mpSurplusAbnormalD.setIharm24(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "i_25":
|
|
||||||
mpSurplusAbnormalD.setIharm25(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "time":
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new IllegalStateException("Unexpected value: " + key);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
//间谐波电压
|
|
||||||
map.forEach((key, val) -> {
|
|
||||||
switch (key) {
|
|
||||||
case "v_1":
|
|
||||||
mpSurplusAbnormalD.setInuharm1(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_2":
|
|
||||||
mpSurplusAbnormalD.setInuharm2(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_3":
|
|
||||||
mpSurplusAbnormalD.setInuharm3(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_4":
|
|
||||||
mpSurplusAbnormalD.setInuharm4(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_5":
|
|
||||||
mpSurplusAbnormalD.setInuharm5(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_6":
|
|
||||||
mpSurplusAbnormalD.setInuharm6(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_7":
|
|
||||||
mpSurplusAbnormalD.setInuharm7(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_8":
|
|
||||||
mpSurplusAbnormalD.setInuharm8(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_9":
|
|
||||||
mpSurplusAbnormalD.setInuharm9(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_10":
|
|
||||||
mpSurplusAbnormalD.setInuharm10(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_11":
|
|
||||||
mpSurplusAbnormalD.setInuharm11(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_12":
|
|
||||||
mpSurplusAbnormalD.setInuharm12(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_13":
|
|
||||||
mpSurplusAbnormalD.setInuharm13(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_14":
|
|
||||||
mpSurplusAbnormalD.setInuharm14(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_15":
|
|
||||||
mpSurplusAbnormalD.setInuharm15(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "v_16":
|
|
||||||
mpSurplusAbnormalD.setInuharm16(Float.parseFloat(val.toString()));
|
|
||||||
break;
|
|
||||||
case "time":
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new IllegalStateException("Unexpected value: " + key);
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author cdf
|
|
||||||
* @date 2023/8/23
|
|
||||||
*/
|
|
||||||
private void dealData(Map<String, List<Map<String, Object>>> inMap,
|
|
||||||
String phasic,Map<String, Object> overLimit,
|
|
||||||
Boolean flag,MpSurplusAbnormalD mpSurplusAbnormalCp95,MpSurplusAbnormalD mpSurplusAbnormalAvg,MpSurplusAbnormalD mpSurplusAbnormalMax,MpSurplusAbnormalD mpSurplusAbnormalMin
|
|
||||||
,int start,int count,int type,String overTag,String temTag){
|
|
||||||
if (inMap.containsKey(phasic)) {
|
|
||||||
List<Map<String, Object>> mapList = inMap.get(phasic);
|
|
||||||
|
|
||||||
Map<String, Map<String, Object>> harmMap = mapList.stream().collect(Collectors.toMap(item -> item.get("value_type").toString(), Function.identity()));
|
|
||||||
|
|
||||||
Map<String, Object> mCP95 = harmMap.get("CP95");
|
|
||||||
Map<String, Object> mAVG = harmMap.get("AVG");
|
|
||||||
Map<String, Object> mMAX = harmMap.get("MAX");
|
|
||||||
Map<String, Object> mMIN = harmMap.get("MIN");
|
|
||||||
Map<String, Object> moreValueCp95 = new HashMap<>();
|
|
||||||
Map<String, Object> moreValueAvg = new HashMap<>();
|
|
||||||
Map<String, Object> moreValueMax = new HashMap<>();
|
|
||||||
Map<String, Object> moreValueMin = new HashMap<>();
|
|
||||||
for (int i = start; i < count; i++) {
|
|
||||||
BigDecimal hv = (BigDecimal) mCP95.get(temTag + i);
|
|
||||||
String t = overTag + i;
|
|
||||||
BigDecimal over = BigDecimal.valueOf((Double) overLimit.get(t));
|
|
||||||
if (hv.compareTo(over) > 0) {
|
|
||||||
moreValueCp95.put(temTag + i, hv.floatValue());
|
|
||||||
moreValueAvg.put(temTag + i, mAVG.get(temTag + i));
|
|
||||||
moreValueMax.put(temTag + i, mMAX.get(temTag + i));
|
|
||||||
moreValueMin.put(temTag + i, mMIN.get(temTag + i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (moreValueCp95.size() > 0) {
|
|
||||||
flag = true;
|
|
||||||
assPojo(moreValueCp95, mpSurplusAbnormalCp95, type);
|
|
||||||
assPojo(moreValueAvg, mpSurplusAbnormalAvg, type);
|
|
||||||
assPojo(moreValueMax, mpSurplusAbnormalMax, type);
|
|
||||||
assPojo(moreValueMin, mpSurplusAbnormalMin, type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
package com.njcn.prepare.harmonic.service.mysql.area;
|
|
||||||
|
|
||||||
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridDataIntegrityParam;
|
|
||||||
import com.njcn.prepare.harmonic.pojo.param.PrimaryGridParam;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description:
|
|
||||||
* 接口文档访问地址:http://serverIP:port/swagger-ui.html
|
|
||||||
* Date: 2022/11/25 8:46【需求编号】
|
|
||||||
*
|
|
||||||
* @author clam
|
|
||||||
* @version V1.0.0
|
|
||||||
*/
|
|
||||||
public interface PrimaryGridDataService {
|
|
||||||
/**
|
|
||||||
* @Description: primaryGridDataHanlder
|
|
||||||
* @Author: clam
|
|
||||||
* @Date: 2022/11/25
|
|
||||||
*/
|
|
||||||
void primaryGridDataHanlder(PrimaryGridParam primaryGridParam);
|
|
||||||
/**
|
|
||||||
* @Description: 主网终端数据完整率月统计
|
|
||||||
* @Author: clam
|
|
||||||
* @Date: 2022/11/30
|
|
||||||
*/
|
|
||||||
void primaryGridDataIntegrityHanlder(PrimaryGridDataIntegrityParam primaryGridDataIntegrityParam);
|
|
||||||
}
|
|
||||||
@@ -13,7 +13,4 @@ public interface NormalLimitService extends IMppService<MpSurplusAbnormalD> {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Boolean abnormalLineData(LineParam lineParam);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user