diff --git a/algorithm/algorithm-api/pom.xml b/algorithm/algorithm-api/pom.xml index 35baec0..2d4cef9 100644 --- a/algorithm/algorithm-api/pom.xml +++ b/algorithm/algorithm-api/pom.xml @@ -17,4 +17,16 @@ 8 + + + com.njcn + common-db + ${project.version} + + + com.njcn + common-web + ${project.version} + + diff --git a/algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/bo/BaseParam.java b/algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/bo/BaseParam.java new file mode 100644 index 0000000..caf8828 --- /dev/null +++ b/algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/bo/BaseParam.java @@ -0,0 +1,62 @@ +package com.njcn.algorithm.pojo.bo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Set; + +/** + * + * ** 当补招表示为true时,起始时间和截止时间是必填的 ** + * @author hongawen + * @version 1.0.0 + * @date 2023年11月01日 16:17 + */ +@Data +public class BaseParam implements Serializable { + + /*** + * 是否全链路执行算法 + * 非全链路执行时,tag集合必须非空 + */ + @ApiModelProperty(name = "fullChain",value = "是否全链执行") + private boolean fullChain; + + /** + * 目前仅监测点日统计存在补招功能 by yxb + * 是否补招标识,默认不补招 + */ + @ApiModelProperty(name = "repair",value = "是否补招") + private boolean repair; + + + @ApiModelProperty(name = "beginTime",value = "补招起始日期_yyyy-MM-dd") + private String beginTime; + + + @ApiModelProperty(name = "endTime",value = "补招截止日期_yyyy-MM-dd") + private String endTime; + + + @ApiModelProperty(name = "dataDate",value = "时间日期_yyyy-MM-dd") + private String dataDate; + + + /*** + * 需要执行的组件 + * 当不需要全链路执行时,通过tag名称动态指定执行某个算法组件 + */ + @ApiModelProperty(name = "tagNames",value = "待执行链节点的tag集合") + private Set tagNames; + + + /** + * 待计算的对象索引集合,监测点、设备、母线、变电站、单位等等 + */ + @ApiModelProperty(name = "idList",value = "索引集合") + private List idList; + + +} diff --git a/algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/bo/CalculatedParam.java b/algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/bo/CalculatedParam.java new file mode 100644 index 0000000..341e37d --- /dev/null +++ b/algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/bo/CalculatedParam.java @@ -0,0 +1,51 @@ +package com.njcn.algorithm.pojo.bo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Set; + +/** + * 算法编排的计算参数 + * @author hongawen + * @version 1.0.0 + * @date 2023年11月03日 09:21 + */ +@Data +public class CalculatedParam implements Serializable { + + /*** + * 是否全链路执行算法 + * 非全链路执行时,tag集合必须非空 + */ + @ApiModelProperty(name = "fullChain",value = "是否全链执行") + private boolean fullChain; + + /** + * 目前仅监测点日统计存在补招功能 by yxb + * 是否补招标识,默认不补招 + */ + @ApiModelProperty(name = "repair",value = "是否补招") + private boolean repair; + + /** + * 日期_yyyy-MM-dd + */ + @ApiModelProperty(name = "dataDate",value = "时间日期_yyyy-MM-dd") + private String dataDate; + + /*** + * 需要执行的组件 + * 当不需要全链路执行时,通过tag名称动态指定执行某个算法组件 + */ + @ApiModelProperty(name = "tagNames",value = "待执行链节点的tag集合") + private Set tagNames; + + /** + * 待计算的对象索引集合,监测点、设备、母线、变电站、单位下监测点等等 + */ + @ApiModelProperty(name = "idList",value = "索引集合") + private List idList; +} diff --git a/algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/enums/PrepareResponseEnum.java b/algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/enums/PrepareResponseEnum.java new file mode 100644 index 0000000..a3f8de0 --- /dev/null +++ b/algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/enums/PrepareResponseEnum.java @@ -0,0 +1,40 @@ +package com.njcn.algorithm.pojo.enums; + +import lombok.Getter; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2021年04月13日 10:50 + */ +@Getter +public enum PrepareResponseEnum { + + PREPARE_INNER_ERROR("A0801", "业务功能内部错误"), + + NO_EXECUTOR_NODE("A0802", "无可执行节点"), + + NO_REPAIR_DATE("A0803", "未指定补招日期"), + + LIMIT_RATE_MISSING("A0804", "监测点限值缺失"), + + ; + + private final String code; + + private final String message; + + PrepareResponseEnum(String code, String message) { + this.code = code; + this.message = message; + } + + public static String getCodeByMsg(String msg){ + for (PrepareResponseEnum userCodeEnum : PrepareResponseEnum.values()) { + if (userCodeEnum.message.equalsIgnoreCase(msg)) { + return userCodeEnum.code; + } + } + return ""; + } +} diff --git a/algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/enums/UploadEnum.java b/algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/enums/UploadEnum.java new file mode 100644 index 0000000..ded82e4 --- /dev/null +++ b/algorithm/algorithm-api/src/main/java/com/njcn/algorithm/pojo/enums/UploadEnum.java @@ -0,0 +1,74 @@ +package com.njcn.algorithm.pojo.enums; + +import lombok.Getter; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/12/7 14:32 + */ +@Getter +public enum UploadEnum { + + /** + * 统计层级 + */ + STATISTICAL_LEVEL_3("3","省"), + STATISTICAL_LEVEL_4("4","市"), + STATISTICAL_LEVEL_5("5","县"), + + NJCN_DEPT_LEVEL_1("1","全国"), + NJCN_DEPT_LEVEL_2("2","省级"), + NJCN_DEPT_LEVEL_3("3","市级"), + NJCN_DEPT_LEVEL_4("4","县级"), + + /** + * 统计类型 + */ + STATISTICAL_TYPE_01("01","年数据"), + STATISTICAL_TYPE_02("02","月数据"), + STATISTICAL_TYPE_03("03","日数据"), + + /** + * 主配网标识 + */ + DISTRIBUTION_FLAG_01("1","主网"), + DISTRIBUTION_FLAG_02("0","配网"), + + /** + * 指标类型(01:电压 02:长时间闪变 03:三相电压不平衡 04:电压总谐波畸变率 05:各次谐波电压 06:负序电流) + */ + INDEX_TYPE_01("01","电压"), + INDEX_TYPE_02("02","长时间闪变"), + INDEX_TYPE_03("03","三相电压不平衡"), + INDEX_TYPE_04("04","电压总谐波畸变率"), + INDEX_TYPE_05("05","各次谐波电压"), + INDEX_TYPE_06("06","负序电流"), + + /** + * 数据来源(01:仅在线监测 02:在线监测与现场测试) + */ + DATA_SOURCES_01("01","仅在线监测"), + DATA_SOURCES_02("02","在线监测与现场测试"), + + /** + * 上送状态(0:未上送 1:已上送) + */ + UPLOAD_STATUS_0("0","未上送"), + UPLOAD_STATUS_1("1","已上送"), + + ; + + private final String code; + + private final String message; + + UploadEnum(String code, String message) { + this.code = code; + this.message = message; + } + + +} diff --git a/algorithm/algorithm-boot/pom.xml b/algorithm/algorithm-boot/pom.xml index f02cced..7f23a29 100644 --- a/algorithm/algorithm-boot/pom.xml +++ b/algorithm/algorithm-boot/pom.xml @@ -15,28 +15,89 @@ UTF-8 8 8 + 1.18.12 + 1.4.2.Final - - com.njcn - common-web - ${project.version} - - - com.njcn - common-core - ${project.version} - com.njcn common-swagger ${project.version} - org.mybatis - mybatis-spring - 2.0.5 + com.njcn + common-microservice + ${project.version} + + + com.njcn + common-redis + ${project.version} + + + + + com.njcn + pqs-influx + ${project.version} + + + com.njcn + user-api + ${project.version} + + + com.njcn.platform + algorithm-api + ${project.version} + + + com.njcn + common-device-biz + ${project.version} + + + com.njcn.platform + data-processing-api + ${project.version} + + + org.mapstruct + mapstruct + ${org.mapstruct.version} + + + org.mapstruct + mapstruct-processor + ${org.mapstruct.version} + + + org.projectlombok + lombok-mapstruct-binding + 0.2.0 + + + + org.projectlombok + lombok + ${org.projectlombok.version} + provided + + + com.njcn + common-oss + ${project.version} + + + com.yomahub + liteflow-spring-boot-starter + 2.11.2 + + + com.yomahub + liteflow-rule-nacos + 2.11.2 diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/AlgorithmBootApplication.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/AlgorithmBootApplication.java index ab750da..82af0d6 100644 --- a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/AlgorithmBootApplication.java +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/AlgorithmBootApplication.java @@ -1,9 +1,11 @@ package com.njcn.algorithm; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.DependsOn; /** @@ -12,6 +14,8 @@ import org.springframework.cloud.openfeign.EnableFeignClients; @Slf4j @EnableFeignClients(basePackages = "com.njcn") @SpringBootApplication(scanBasePackages = "com.njcn") +@MapperScan("com.njcn.**.mapper") +@DependsOn("proxyMapperRegister") public class AlgorithmBootApplication { public static void main(String[] args) { diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/ExecutionCenter.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/ExecutionCenter.java new file mode 100644 index 0000000..5f89acb --- /dev/null +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/ExecutionCenter.java @@ -0,0 +1,439 @@ +package com.njcn.algorithm; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.text.StrPool; +import cn.hutool.core.util.StrUtil; +import com.njcn.algorithm.pojo.bo.BaseParam; +import com.njcn.algorithm.pojo.bo.CalculatedParam; +import com.njcn.algorithm.pojo.enums.PrepareResponseEnum; +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.device.biz.commApi.CommTerminalGeneralClient; +import com.njcn.device.biz.pojo.dto.*; +import com.njcn.device.biz.pojo.param.DeptGetLineParam; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.po.Dept; +import com.njcn.web.controller.BaseController; +import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.flow.LiteflowResponse; +import com.yomahub.liteflow.flow.entity.CmpStep; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.annotation.Async; +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 javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2023年11月01日 10:20 + */ +@Slf4j +@Api(tags = "算法执行中心") +@RestController +@RequestMapping("/executor") +@RequiredArgsConstructor +public class ExecutionCenter extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(ExecutionCenter.class); + + @Resource + private CommTerminalGeneralClient commTerminalGeneralClient; + @Resource + private DeptFeignClient deptFeignClient; + @Resource + private FlowExecutor flowExecutor; + + + /*** + * 1、校验非全链执行时,tagNames节点标签集合必须为非空,否则提示---无可执行节点 + * 2、补招标识为true时,起始日期&截止日期不可为空 + * 3、算法需要的索引集合 + * @author hongawen + * @date 2023/11/3 11:36 + * @param baseParam 执行的基础参数 + */ + private CalculatedParam judgeExecuteParam(BaseParam baseParam) { + CalculatedParam calculatedParam = new CalculatedParam(); + + if (!baseParam.isFullChain() && CollectionUtil.isEmpty(baseParam.getTagNames())) { + throw new BusinessException(PrepareResponseEnum.NO_EXECUTOR_NODE); + } + + if (baseParam.isRepair() && StrUtil.isAllEmpty(baseParam.getBeginTime(), baseParam.getEndTime())) { + throw new BusinessException(PrepareResponseEnum.NO_REPAIR_DATE); + } + + BeanUtil.copyProperties(baseParam, calculatedParam); + return calculatedParam; + } + + /*** + * + * @author hongawen + * @date 2023/11/7 14:44 + */ + private void dealResponse(CalculatedParam calculatedParam, LiteflowResponse liteflowResponse, String methodDescribe) { + if (liteflowResponse.isSuccess()) { + logger.info("日期{},{}执行{}成功", calculatedParam.getDataDate(), methodDescribe, calculatedParam.isFullChain() ? "全链" : "指定节点:".concat(String.join(StrPool.COMMA, calculatedParam.getTagNames()))); + } else { + Map> executeSteps = liteflowResponse.getExecuteSteps(); + CmpStep failStep = null; + for (String key : executeSteps.keySet()) { + List cmpSteps = executeSteps.get(key); + cmpSteps = cmpSteps.stream().filter(cmpStep -> !cmpStep.isSuccess()).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(cmpSteps)) { + failStep = cmpSteps.get(0); + } + } + logger.error("日期{},{}执行{}失败,在执行{}失败,失败原因:{}" + , calculatedParam.getDataDate() + , methodDescribe + , calculatedParam.isFullChain() ? "全链" : "指定节点:".concat(String.join(StrPool.COMMA, calculatedParam.getTagNames())) + , failStep.getNodeId().concat(Objects.isNull(failStep.getTag()) ? "" : StrPool.DASHED.concat(failStep.getTag())) + , Objects.isNull(failStep.getException()) ? null : failStep.getException().getMessage()); + } + } + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("监测点算法执行链") + @PostMapping("/measurementPointExecutor") + @Async("asyncExecutor") + public void measurementPointExecutor(@RequestBody BaseParam baseParam) { + String methodDescribe = getMethodDescribe("measurementPointExecutor"); + //手动判断参数是否合法, + CalculatedParam calculatedParam = judgeExecuteParam(baseParam); + // 测点索引 + if (CollectionUtils.isEmpty(calculatedParam.getIdList())) { + calculatedParam.setIdList(commTerminalGeneralClient.getRunMonitorIds().getData()); + } + LiteflowResponse liteflowResponse; + if (baseParam.isRepair()) { + //补招时,起始日期、截止日期必填 + DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT); + DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT); + long betweenDay = DateUtil.betweenDay(startDate, endDate, true); + //递增日期执行算法链 + for (int i = 0; i < betweenDay; i++) { + if (i != 0) { + startDate = DateUtil.offsetDay(startDate, 1); + } + calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN)); + liteflowResponse = flowExecutor.execute2Resp("measurement_point", calculatedParam); + dealResponse(calculatedParam, liteflowResponse, methodDescribe); + } + } else { + //非补招 + liteflowResponse = flowExecutor.execute2Resp("measurement_point", calculatedParam); + dealResponse(calculatedParam, liteflowResponse, methodDescribe); + } + } + +// @OperateInfo(info = LogEnum.BUSINESS_COMMON) +// @ApiOperation("装置算法执行链") +// @PostMapping("/deviceExecutor") +// @Async("asyncExecutor") +// public void deviceExecutor(@RequestBody BaseParam baseParam) { +// String methodDescribe = getMethodDescribe("deviceExecutor"); +// //手动判断参数是否合法, +// CalculatedParam calculatedParam = judgeExecuteParam(baseParam); +// DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); +// // 设备索引 +// if (CollectionUtils.isEmpty(calculatedParam.getIdList())) { +// Dept data = deptFeignClient.getRootDept().getData(); +// deptGetLineParam.setDeptId(data.getId()); +// List list = commTerminalGeneralClient.deptGetDevice(deptGetLineParam).getData(); +// DeptGetDeviceDTO dto = list.stream().filter(po -> Objects.equals(po.getUnitId(), data.getId())).collect(Collectors.toList()).get(0); +// List devList = dto.getDeviceList(); +// calculatedParam.setIdList(devList.stream().map(LineDevGetDTO::getDevId).distinct().collect(Collectors.toList())); +// } +// LiteflowResponse liteflowResponse; +// if (baseParam.isRepair()) { +// //补招时,起始日期、截止日期必填 +// DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT); +// DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT); +// long betweenDay = DateUtil.betweenDay(startDate, endDate, true); +// //递增日期执行算法链 +// for (int i = 0; i < betweenDay; i++) { +// if (i != 0) { +// startDate = DateUtil.offsetDay(startDate, 1); +// } +// calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN)); +// liteflowResponse = flowExecutor.execute2Resp("device", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// } else { +// //非补招 +// liteflowResponse = flowExecutor.execute2Resp("device", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// } +// +// @OperateInfo(info = LogEnum.BUSINESS_COMMON) +// @ApiOperation("单位监测点算法执行链") +// @PostMapping("/orgPointExecutor") +// @Async("asyncExecutor") +// public void orgPointExecutor(@RequestBody BaseParam baseParam) { +// String methodDescribe = getMethodDescribe("OrgPointExecutor"); +// //手动判断参数是否合法, +// CalculatedParam calculatedParam = judgeExecuteParam(baseParam); +// // 测点索引 +// DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); +// +// if (CollectionUtils.isEmpty(calculatedParam.getIdList())) { +// Dept data = deptFeignClient.getRootDept().getData(); +// deptGetLineParam.setDeptId(data.getId()); +// calculatedParam.setIdList(commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData()); +// } +// LiteflowResponse liteflowResponse; +// if (baseParam.isRepair()) { +// //补招时,起始日期、截止日期必填 +// DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT); +// DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT); +// long betweenDay = DateUtil.betweenDay(startDate, endDate, true); +// //递增日期执行算法链 +// for (int i = 0; i < betweenDay; i++) { +// if (i != 0) { +// startDate = DateUtil.offsetDay(startDate, 1); +// } +// calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN)); +// liteflowResponse = flowExecutor.execute2Resp("org_point", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// } else { +// //非补招 +// liteflowResponse = flowExecutor.execute2Resp("org_point", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// +// } +// +// @OperateInfo(info = LogEnum.BUSINESS_COMMON) +// @ApiOperation("pms国网上送单位层级算法执行链") +// @PostMapping("/uploadOrgExecutor") +// @Async("asyncExecutor") +// public void uploadOrgExecutor(@RequestBody BaseParam baseParam) { +// String methodDescribe = getMethodDescribe("uploadOrgExecutor"); +// //手动判断参数是否合法, +// CalculatedParam calculatedParam = judgeExecuteParam(baseParam); +// // 测点索引 +// DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); +// +// if (CollectionUtils.isEmpty(calculatedParam.getIdList())) { +// Dept data = deptFeignClient.getRootDept().getData(); +// deptGetLineParam.setDeptId(data.getId()); +// calculatedParam.setIdList(commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData()); +// } +// LiteflowResponse liteflowResponse; +// if (baseParam.isRepair()) { +// //补招时,起始日期、截止日期必填 +// DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT); +// DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT); +// long betweenDay = DateUtil.betweenDay(startDate, endDate, true); +// //递增日期执行算法链 +// for (int i = 0; i < betweenDay; i++) { +// if (i != 0) { +// startDate = DateUtil.offsetDay(startDate, 1); +// } +// calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN)); +// liteflowResponse = flowExecutor.execute2Resp("upload_org", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// } else { +// //非补招 +// liteflowResponse = flowExecutor.execute2Resp("upload_org", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// +// } +// +// @OperateInfo(info = LogEnum.BUSINESS_COMMON) +// @ApiOperation("变电站算法执行链") +// @PostMapping("/substationExecutor") +// @Async("asyncExecutor") +// public void substationExecutor(@RequestBody BaseParam baseParam) { +// String methodDescribe = getMethodDescribe("substationExecutor"); +// //手动判断参数是否合法, +// CalculatedParam calculatedParam = judgeExecuteParam(baseParam); +// // 测点索引 +// DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); +// +// if (CollectionUtils.isEmpty(calculatedParam.getIdList())) { +// Dept data = deptFeignClient.getRootDept().getData(); +// deptGetLineParam.setDeptId(data.getId()); +// List data1 = commTerminalGeneralClient.deptSubStation(deptGetLineParam).getData(); +// List stationIds = new ArrayList<>(); +// for (DeptGetSubStationDTO deptGetSubStationDTO : data1) { +// Collection union = CollectionUtils.union(Optional.ofNullable(deptGetSubStationDTO.getStationIds()).orElse(new ArrayList()), +// Optional.ofNullable(deptGetSubStationDTO.getStationIds()).orElse(new ArrayList())); +// List collect = union.stream().distinct().collect(Collectors.toList()); +// stationIds.addAll(collect); +// } +// stationIds = stationIds.stream().distinct().collect(Collectors.toList()); +// calculatedParam.setIdList(stationIds); +// } +// LiteflowResponse liteflowResponse; +// if (baseParam.isRepair()) { +// //补招时,起始日期、截止日期必填 +// DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT); +// DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT); +// long betweenDay = DateUtil.betweenDay(startDate, endDate, true); +// //递增日期执行算法链 +// for (int i = 0; i < betweenDay; i++) { +// if (i != 0) { +// startDate = DateUtil.offsetDay(startDate, 1); +// } +// calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN)); +// liteflowResponse = flowExecutor.execute2Resp("sub_station", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// } else { +// //非补招 +// liteflowResponse = flowExecutor.execute2Resp("sub_station", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// +// } +// +// /** +// * pms dim母线,电站运行情况 +// * +// * @author cdf +// * @date 2023/11/17 +// */ +// @OperateInfo(info = LogEnum.BUSINESS_COMMON) +// @ApiOperation("pms变电站母线算法执行链") +// @PostMapping("/pmsdimexecutor") +// public void pmsDimExecutor(@RequestBody BaseParam baseParam) { +// String methodDescribe = getMethodDescribe("pmsdimexecutor"); +// //手动判断参数是否合法, +// CalculatedParam calculatedParam = judgeExecuteParam(baseParam); +// // 测点索引 +// DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); +// +// if (CollectionUtils.isEmpty(calculatedParam.getIdList())) { +// Dept data = deptFeignClient.getRootDept().getData(); +// deptGetLineParam.setDeptId(data.getId()); +// deptGetLineParam.setSystemType(0); +// List dept = commTerminalGeneralClient.deptGetLineList(deptGetLineParam).getData(); +// calculatedParam.setIdList(dept); +// } +// LiteflowResponse liteflowResponse; +// if (baseParam.isRepair()) { +// //补招时,起始日期、截止日期必填 +// DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT); +// DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT); +// long betweenDay = DateUtil.betweenDay(startDate, endDate, true); +// //递增日期执行算法链 +// for (int i = 0; i < betweenDay; i++) { +// if (i != 0) { +// startDate = DateUtil.offsetDay(startDate, 1); +// } +// calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN)); +// liteflowResponse = flowExecutor.execute2Resp("dim_station_busbar", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// } else { +// //非补招 +// liteflowResponse = flowExecutor.execute2Resp("dim_station_busbar", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// +// } +// +// @OperateInfo(info = LogEnum.BUSINESS_COMMON) +// @ApiOperation("母线算法执行链(主网测点)") +// @PostMapping("/generaTrixExecutor") +// @Async("asyncExecutor") +// public void generaTrixExecutor(@RequestBody BaseParam baseParam) { +// String methodDescribe = getMethodDescribe("generaTrixExecutor"); +// //手动判断参数是否合法, +// CalculatedParam calculatedParam = judgeExecuteParam(baseParam); +// //母线索引 +// if (CollectionUtils.isEmpty(calculatedParam.getIdList())) { +// Dept dept = deptFeignClient.getRootDept().getData(); +// DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); +// deptGetLineParam.setDeptId(dept.getId()); +// deptGetLineParam.setSystemType(0); +// List busBarList = commTerminalGeneralClient.deptBusBar(deptGetLineParam).getData(); +// calculatedParam.setIdList(busBarList); +// } +// LiteflowResponse liteflowResponse; +// if (baseParam.isRepair()) { +// //补招时,起始日期、截止日期必填 +// DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT); +// DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT); +// long betweenDay = DateUtil.betweenDay(startDate, endDate, true); +// //递增日期执行算法链 +// for (int i = 0; i < betweenDay; i++) { +// if (i != 0) { +// startDate = DateUtil.offsetDay(startDate, 1); +// } +// calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN)); +// liteflowResponse = flowExecutor.execute2Resp("genera_trix", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// } else { +// //非补招 +// liteflowResponse = flowExecutor.execute2Resp("genera_trix", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// } +// +// @OperateInfo(info = LogEnum.BUSINESS_COMMON) +// @ApiOperation("单位变电站算法执行链") +// @PostMapping("/orgSubStationExecutor") +// @Async("asyncExecutor") +// public void orgSubStationExecutor(@RequestBody BaseParam baseParam) { +// String methodDescribe = getMethodDescribe("orgSubStationExecutor"); +// //手动判断参数是否合法, +// CalculatedParam calculatedParam = judgeExecuteParam(baseParam); +// // 测点索引 +// DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); +// if (CollectionUtils.isEmpty(calculatedParam.getIdList())) { +// Dept data = deptFeignClient.getRootDept().getData(); +// deptGetLineParam.setDeptId(data.getId()); +// List data1 = commTerminalGeneralClient.deptGetSubStationInfo(deptGetLineParam).getData(); +// calculatedParam.setIdList(data1); +// } +// LiteflowResponse liteflowResponse; +// if (baseParam.isRepair()) { +// //补招时,起始日期、截止日期必填 +// DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT); +// DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT); +// long betweenDay = DateUtil.betweenDay(startDate, endDate, true); +// //递增日期执行算法链 +// for (int i = 0; i < betweenDay; i++) { +// if (i != 0) { +// startDate = DateUtil.offsetDay(startDate, 1); +// } +// calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN)); +// liteflowResponse = flowExecutor.execute2Resp("orgSub_station", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// } else { +// //非补招 +// liteflowResponse = flowExecutor.execute2Resp("orgSub_station", calculatedParam); +// dealResponse(calculatedParam, liteflowResponse, methodDescribe); +// } +// } + +} diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/executor/BaseExecutor.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/executor/BaseExecutor.java new file mode 100644 index 0000000..72b5222 --- /dev/null +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/executor/BaseExecutor.java @@ -0,0 +1,38 @@ +package com.njcn.algorithm.executor; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.njcn.algorithm.pojo.bo.CalculatedParam; +import com.yomahub.liteflow.core.NodeComponent; + +import java.util.Set; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2023年11月07日 09:02 + */ +public class BaseExecutor { + + + /*** + * 判断当前节点是否执行 + * @author hongawen + * @date 2023/11/6 16:17 + * @param bindCmp 执行链绑定的上下文 + * @return boolean + */ + public boolean isAccess(NodeComponent bindCmp) { + String tag = bindCmp.getTag(); + if (StrUtil.isBlank(tag)) { + //没有指定tag的,使用node自己的名称判断 + tag = bindCmp.getNodeId(); + } + CalculatedParam requestData = bindCmp.getRequestData(); + Set tagNames = requestData.getTagNames(); + if (requestData.isFullChain() || (CollectionUtil.isNotEmpty(tagNames) && tagNames.contains(tag))) { + return true; + } + return false; + } +} diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/executor/MeasurementExecutor.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/executor/MeasurementExecutor.java new file mode 100644 index 0000000..3e63a0f --- /dev/null +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/executor/MeasurementExecutor.java @@ -0,0 +1,45 @@ +package com.njcn.algorithm.executor; + +import com.njcn.algorithm.service.line.DayDataService; +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.annotation.LiteflowMethod; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.enums.LiteFlowMethodEnum; +import com.yomahub.liteflow.enums.NodeTypeEnum; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import javax.annotation.Resource; + + +/** + * @author xy + * @version 1.0.0 + * @date 2025年1月16日 + */ +@Slf4j +@LiteflowComponent +@RequiredArgsConstructor +public class MeasurementExecutor extends BaseExecutor { + + @Resource + private DayDataService dayDataService; + + /********************************************算法负责人:xy***********************************************************/ + /** + * 算法名: 3.4.1.1-----监测点报表_日表(r_stat_data_*_d) + * @author xuyang + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dataV", nodeType = NodeTypeEnum.COMMON) + public boolean dataVToDayAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dataV", nodeType = NodeTypeEnum.COMMON) + public void dataVToDayProcess(NodeComponent bindCmp) { + dayDataService.dataVHandler(bindCmp.getRequestData()); + } + + + + /********************************************算法负责人:xy结束***********************************************************/ +} diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/liteflow/NjcnNodeComponent.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/liteflow/NjcnNodeComponent.java new file mode 100644 index 0000000..4aa15b6 --- /dev/null +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/liteflow/NjcnNodeComponent.java @@ -0,0 +1,36 @@ +package com.njcn.algorithm.liteflow; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.njcn.algorithm.pojo.bo.CalculatedParam; +import com.yomahub.liteflow.core.NodeComponent; + +import java.util.Set; + +/** + * @author hongawen + * @version 1.0.0 + * @date 2023年11月03日 14:42 + */ +public abstract class NjcnNodeComponent extends NodeComponent { + + /*** + * 判断是否进入该节点 + * 1、全链路执行时 + * 2、非全链路执行,但是需要执行的tag集合中包含了当前tag + */ + @Override + public boolean isAccess() { + String tag = this.getTag(); + if (StrUtil.isBlank(tag)) { + //没有指定tag的,使用node自己的名称判断 + tag = this.getNodeId(); + } + CalculatedParam requestData = this.getRequestData(); + Set tagNames = requestData.getTagNames(); + if (requestData.isFullChain() || (CollectionUtil.isNotEmpty(tagNames) && tagNames.contains(tag))) { + return true; + } + return false; + } +} diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/service/line/DayDataService.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/service/line/DayDataService.java new file mode 100644 index 0000000..7a82c13 --- /dev/null +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/service/line/DayDataService.java @@ -0,0 +1,19 @@ +package com.njcn.algorithm.service.line; + +import com.njcn.algorithm.pojo.bo.CalculatedParam; + +/** + * @author xy + */ +public interface DayDataService { + + + /*** + * dataV转r_stat_data_v_d + * @author xuyang + * @date 2025/01/18 21:18 + * @param calculatedParam 查询条件 + */ + void dataVHandler(CalculatedParam calculatedParam); + +} diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DayDataServiceImpl.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DayDataServiceImpl.java new file mode 100644 index 0000000..77de24e --- /dev/null +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DayDataServiceImpl.java @@ -0,0 +1,216 @@ +package com.njcn.algorithm.serviceimpl.line; + +import cn.hutool.core.collection.CollUtil; +import com.njcn.algorithm.pojo.bo.CalculatedParam; +import com.njcn.algorithm.service.line.DayDataService; +import com.njcn.dataProcess.api.DataVFeignClient; +import com.njcn.dataProcess.param.LineCountEvaluateParam; +import com.njcn.dataProcess.pojo.dto.CommonMinuteDto; +import com.njcn.dataProcess.pojo.dto.DataVDto; +import com.njcn.dataProcess.util.TimeUtils; +import com.njcn.influx.constant.InfluxDbSqlConstant; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.*; + +/** + * @author xy + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class DayDataServiceImpl implements DayDataService { + + private static final Logger logger = LoggerFactory.getLogger(DayDataServiceImpl.class); + private final static Integer NUM = 100; + @Resource + private DataVFeignClient dataVFeignClient; + + @Override + public void dataVHandler(CalculatedParam calculatedParam) { + logger.info("{},dataV表转r_stat_data_v_d开始=====》", LocalDateTime.now()); + List result = new ArrayList<>(); + //远程接口获取分钟数据 + LineCountEvaluateParam lineParam = new LineCountEvaluateParam(); + lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate())); + lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate())); + //以100个监测点分片处理 + List> pendingIds = ListUtils.partition(calculatedParam.getIdList(),NUM); + pendingIds.forEach(list->{ + lineParam.setLineId(list); + List partList = dataVFeignClient.getBaseData(lineParam).getData(); + if (CollUtil.isNotEmpty(partList)) { + partList.forEach(item->{ + //相别 + List phasicTypeList = item.getPhasicTypeList(); + phasicTypeList.forEach(item2->{ + //数据类型 + List valueTypeList = item2.getValueTypeList(); + //获取平均值集合 + CommonMinuteDto.ValueType valueTypes = valueTypeList.stream().filter(type-> type.getValueType().equalsIgnoreCase(InfluxDbSqlConstant.AVG_WEB)).findFirst().orElse(null); + valueTypeList.forEach(item3->{ + DataVDto dto = new DataVDto(); + dto.setTime(item.getTime()); + dto.setLineId(item.getLineId()); + dto.setPhasicType(item2.getPhasicType()); + dto.setValueType(item3.getValueType()); + //todo 数据清洗的功能需要讨论在哪完成 + dto.setQualityFlag(0); + channelDataVHandler(item3,valueTypes,dto,true); + result.add(dto); + }); + }); + }); + } + }); + if (CollUtil.isNotEmpty(result)) { + //存储数据 + dataVFeignClient.addList(result); + } + } + + + //指标处理 + //pojo1 为正常数据集合 + //pojo2 为平均值数据集合,根据不同情况用来计算cp95 + public void channelDataVHandler(CommonMinuteDto.ValueType pojo1, CommonMinuteDto.ValueType pojo2, DataVDto dto, boolean scheme) { + CommonMinuteDto.ValueType valueType; + if (dto.getValueType().equalsIgnoreCase(InfluxDbSqlConstant.CP95) && !scheme) { + valueType = pojo2; + } else { + valueType = pojo1; + } + //todo 按照集合排列顺序取值 + dto.setFreq(getData(valueType.getValueType(),valueType.getValueList().get(0),scheme)); + dto.setFreqDev(getData(valueType.getValueType(),valueType.getValueList().get(1),scheme)); + dto.setRms(getData(valueType.getValueType(),valueType.getValueList().get(2),scheme)); + dto.setRmsLvr(getData(valueType.getValueType(),valueType.getValueList().get(3),scheme)); + dto.setVNeg(getData(valueType.getValueType(),valueType.getValueList().get(4),scheme)); + dto.setVPos(getData(valueType.getValueType(),valueType.getValueList().get(5),scheme)); + dto.setVThd(getData(valueType.getValueType(),valueType.getValueList().get(6),scheme)); + dto.setVUnbalance(getData(valueType.getValueType(),valueType.getValueList().get(7),scheme)); + dto.setVZero(getData(valueType.getValueType(),valueType.getValueList().get(8),scheme)); + dto.setVlDev(getData(valueType.getValueType(),valueType.getValueList().get(9),scheme)); + dto.setVuDev(getData(valueType.getValueType(),valueType.getValueList().get(10),scheme)); + + dto.setV1(getData(valueType.getValueType(),valueType.getValueList().get(11),scheme)); + dto.setV2(getData(valueType.getValueType(),valueType.getValueList().get(12),scheme)); + dto.setV3(getData(valueType.getValueType(),valueType.getValueList().get(13),scheme)); + dto.setV4(getData(valueType.getValueType(),valueType.getValueList().get(14),scheme)); + dto.setV5(getData(valueType.getValueType(),valueType.getValueList().get(15),scheme)); + dto.setV6(getData(valueType.getValueType(),valueType.getValueList().get(16),scheme)); + dto.setV7(getData(valueType.getValueType(),valueType.getValueList().get(17),scheme)); + dto.setV8(getData(valueType.getValueType(),valueType.getValueList().get(18),scheme)); + dto.setV9(getData(valueType.getValueType(),valueType.getValueList().get(19),scheme)); + dto.setV10(getData(valueType.getValueType(),valueType.getValueList().get(20),scheme)); + + dto.setV11(getData(valueType.getValueType(),valueType.getValueList().get(21),scheme)); + dto.setV12(getData(valueType.getValueType(),valueType.getValueList().get(22),scheme)); + dto.setV13(getData(valueType.getValueType(),valueType.getValueList().get(23),scheme)); + dto.setV14(getData(valueType.getValueType(),valueType.getValueList().get(24),scheme)); + dto.setV15(getData(valueType.getValueType(),valueType.getValueList().get(25),scheme)); + dto.setV16(getData(valueType.getValueType(),valueType.getValueList().get(26),scheme)); + dto.setV17(getData(valueType.getValueType(),valueType.getValueList().get(27),scheme)); + dto.setV18(getData(valueType.getValueType(),valueType.getValueList().get(28),scheme)); + dto.setV19(getData(valueType.getValueType(),valueType.getValueList().get(29),scheme)); + dto.setV20(getData(valueType.getValueType(),valueType.getValueList().get(30),scheme)); + + dto.setV21(getData(valueType.getValueType(),valueType.getValueList().get(31),scheme)); + dto.setV22(getData(valueType.getValueType(),valueType.getValueList().get(32),scheme)); + dto.setV23(getData(valueType.getValueType(),valueType.getValueList().get(33),scheme)); + dto.setV24(getData(valueType.getValueType(),valueType.getValueList().get(34),scheme)); + dto.setV25(getData(valueType.getValueType(),valueType.getValueList().get(35),scheme)); + dto.setV26(getData(valueType.getValueType(),valueType.getValueList().get(36),scheme)); + dto.setV27(getData(valueType.getValueType(),valueType.getValueList().get(37),scheme)); + dto.setV28(getData(valueType.getValueType(),valueType.getValueList().get(38),scheme)); + dto.setV29(getData(valueType.getValueType(),valueType.getValueList().get(39),scheme)); + dto.setV30(getData(valueType.getValueType(),valueType.getValueList().get(40),scheme)); + + dto.setV31(getData(valueType.getValueType(),valueType.getValueList().get(41),scheme)); + dto.setV32(getData(valueType.getValueType(),valueType.getValueList().get(42),scheme)); + dto.setV33(getData(valueType.getValueType(),valueType.getValueList().get(43),scheme)); + dto.setV34(getData(valueType.getValueType(),valueType.getValueList().get(44),scheme)); + dto.setV35(getData(valueType.getValueType(),valueType.getValueList().get(45),scheme)); + dto.setV36(getData(valueType.getValueType(),valueType.getValueList().get(46),scheme)); + dto.setV37(getData(valueType.getValueType(),valueType.getValueList().get(47),scheme)); + dto.setV38(getData(valueType.getValueType(),valueType.getValueList().get(48),scheme)); + dto.setV39(getData(valueType.getValueType(),valueType.getValueList().get(49),scheme)); + dto.setV40(getData(valueType.getValueType(),valueType.getValueList().get(50),scheme)); + + dto.setV41(getData(valueType.getValueType(),valueType.getValueList().get(51),scheme)); + dto.setV42(getData(valueType.getValueType(),valueType.getValueList().get(52),scheme)); + dto.setV43(getData(valueType.getValueType(),valueType.getValueList().get(53),scheme)); + dto.setV44(getData(valueType.getValueType(),valueType.getValueList().get(54),scheme)); + dto.setV45(getData(valueType.getValueType(),valueType.getValueList().get(55),scheme)); + dto.setV46(getData(valueType.getValueType(),valueType.getValueList().get(56),scheme)); + dto.setV47(getData(valueType.getValueType(),valueType.getValueList().get(57),scheme)); + dto.setV48(getData(valueType.getValueType(),valueType.getValueList().get(58),scheme)); + dto.setV49(getData(valueType.getValueType(),valueType.getValueList().get(59),scheme)); + dto.setV50(getData(valueType.getValueType(),valueType.getValueList().get(60),scheme)); + } + + + //数据类型处理 + //cp95值的计算有点区别,会用到cp95的集合或者平均值的集合 + public Double getData(String valueType, List list, boolean scheme) { + Double result = null; + valueType = valueType.toUpperCase(); + if (scheme) { + switch (valueType) { + case InfluxDbSqlConstant.MAX: + case InfluxDbSqlConstant.CP95: + Optional max = list.stream().filter(Objects::nonNull).max(Double::compare); + result = max.orElse(null); + break; + case InfluxDbSqlConstant.MIN: + Optional min = list.stream().filter(Objects::nonNull).min(Double::compare); + result = min.orElse(null); + break; + case InfluxDbSqlConstant.AVG_WEB: + OptionalDouble average = list.stream() + .filter(Objects::nonNull) + .mapToDouble(Double::doubleValue) + .average(); + result = average.isPresent() ? average.getAsDouble() : null; + break; + default: + break; + } + } else { + switch (valueType) { + case InfluxDbSqlConstant.MAX: + Optional max = list.stream().filter(Objects::nonNull).max(Double::compare); + result = max.orElse(null); + break; + case InfluxDbSqlConstant.MIN: + Optional min = list.stream().filter(Objects::nonNull).min(Double::compare); + result = min.orElse(null); + break; + case InfluxDbSqlConstant.AVG_WEB: + OptionalDouble average = list.stream() + .filter(Objects::nonNull) + .mapToDouble(Double::doubleValue) + .average(); + result = average.isPresent() ? average.getAsDouble() : null; + break; + case InfluxDbSqlConstant.CP95: + list.sort(Collections.reverseOrder()); + int discardCount = (int) Math.ceil(list.size() * 0.05); + List remainingList = list.subList(discardCount, list.size()); + result = remainingList.isEmpty() ? null : remainingList.get(0); + break; + default: + break; + } + } + return result; + } + +} \ No newline at end of file diff --git a/algorithm/algorithm-boot/src/main/resources/bootstrap.yml b/algorithm/algorithm-boot/src/main/resources/bootstrap.yml index ab4f921..bf50866 100644 --- a/algorithm/algorithm-boot/src/main/resources/bootstrap.yml +++ b/algorithm/algorithm-boot/src/main/resources/bootstrap.yml @@ -29,11 +29,20 @@ spring: shared-configs: - data-id: share-config.yaml refresh: true - - data-Id: algorithm-config.yaml + - data-Id: share-config-datasource-db.yaml refresh: true main: allow-bean-definition-overriding: true +liteflow: + rule-source-ext-data-map: + serverAddr: @nacos.url@ + dataId: prepare_liteflow + group: DEFAULT_GROUP + namespace: @nacos.namespace@ + when-max-wait-time: 600000 + print-banner: false + #项目日志的配置 logging: diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/DataVFeignClient.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/DataVFeignClient.java index 679d18d..cea7287 100644 --- a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/DataVFeignClient.java +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/DataVFeignClient.java @@ -2,9 +2,11 @@ package com.njcn.dataProcess.api; import com.njcn.common.pojo.constant.ServerInfo; import com.njcn.common.pojo.response.HttpResult; - import com.njcn.dataProcess.api.fallback.DataVFeignClientFallbackFactory; import com.njcn.dataProcess.dto.DataVDTO; +import com.njcn.dataProcess.param.LineCountEvaluateParam; +import com.njcn.dataProcess.pojo.dto.CommonMinuteDto; +import com.njcn.dataProcess.pojo.dto.DataVDto; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -21,10 +23,15 @@ import java.util.List; @FeignClient(value = ServerInfo.PLATFORM_DATA_PROCESSING_BOOT, path = "/dataV", fallbackFactory = DataVFeignClientFallbackFactory.class, contextId = "dataV") public interface DataVFeignClient { - - @PostMapping("/batchInsertion") HttpResult batchInsertion(@RequestBody List dataVDTOList); @PostMapping("/monitoringTime") HttpResult> monitoringTime(@RequestParam("lineId") String lineId, @RequestParam("localData") String localData) ; + //获取算法基础数据 + @PostMapping("/getBaseData") + HttpResult> getBaseData(@RequestBody LineCountEvaluateParam lineParam); + //批量插入数据 + @PostMapping("/addList") + HttpResult addList(@RequestBody List dataVDtoList); + } diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/fallback/DataVFeignClientFallbackFactory.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/fallback/DataVFeignClientFallbackFactory.java index 5f3d30a..0e901c1 100644 --- a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/fallback/DataVFeignClientFallbackFactory.java +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/fallback/DataVFeignClientFallbackFactory.java @@ -5,6 +5,9 @@ import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.response.HttpResult; import com.njcn.dataProcess.api.DataVFeignClient; import com.njcn.dataProcess.dto.DataVDTO; +import com.njcn.dataProcess.param.LineCountEvaluateParam; +import com.njcn.dataProcess.pojo.dto.CommonMinuteDto; +import com.njcn.dataProcess.pojo.dto.DataVDto; import com.njcn.dataProcess.util.DataProcessingEnumUtil; import com.njcn.system.utils.SystemEnumUtil; import feign.hystrix.FallbackFactory; @@ -51,6 +54,18 @@ public class DataVFeignClientFallbackFactory implements FallbackFactory> getBaseData(LineCountEvaluateParam lineParam) { + log.error("{}异常,降级处理,异常为:{}","获取算法基础数据",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + + @Override + public HttpResult addList(List dataVDtoList) { + log.error("{}异常,降级处理,异常为:{}","批量插入数据",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; } } diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/po/influx/DataV.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/po/influx/DataV.java index 96226e4..e1e441c 100644 --- a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/po/influx/DataV.java +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/po/influx/DataV.java @@ -34,190 +34,190 @@ public class DataV { private Instant time; @Column(name = "freq") - private Float freq; + private Double freq; @Column(name = "freq_dev") - private Float freqDev; + private Double freqDev; @Column(name = "quality_flag", tag = true) private String qualityFlag; @Column(name = "rms") - private Float rms; + private Double rms; @Column(name = "rms_lvr") - private Float rmsLvr; + private Double rmsLvr; @Column(name = "vl_dev") - private Float vlDev; + private Double vlDev; @Column(name = "vu_dev") - private Float vuDev; + private Double vuDev; @Column(name = "v_1") - private Float v1; + private Double v1; @Column(name = "v_2") - private Float v2; + private Double v2; @Column(name = "v_3") - private Float v3; + private Double v3; @Column(name = "v_4") - private Float v4; + private Double v4; @Column(name = "v_5") - private Float v5; + private Double v5; @Column(name = "v_6") - private Float v6; + private Double v6; @Column(name = "v_7") - private Float v7; + private Double v7; @Column(name = "v_8") - private Float v8; + private Double v8; @Column(name = "v_9") - private Float v9; + private Double v9; @Column(name = "v_10") - private Float v10; + private Double v10; @Column(name = "v_11") - private Float v11; + private Double v11; @Column(name = "v_12") - private Float v12; + private Double v12; @Column(name = "v_13") - private Float v13; + private Double v13; @Column(name = "v_14") - private Float v14; + private Double v14; @Column(name = "v_15") - private Float v15; + private Double v15; @Column(name = "v_16") - private Float v16; + private Double v16; @Column(name = "v_17") - private Float v17; + private Double v17; @Column(name = "v_18") - private Float v18; + private Double v18; @Column(name = "v_19") - private Float v19; + private Double v19; @Column(name = "v_20") - private Float v20; + private Double v20; @Column(name = "v_21") - private Float v21; + private Double v21; @Column(name = "v_22") - private Float v22; + private Double v22; @Column(name = "v_23") - private Float v23; + private Double v23; @Column(name = "v_24") - private Float v24; + private Double v24; @Column(name = "v_25") - private Float v25; + private Double v25; @Column(name = "v_26") - private Float v26; + private Double v26; @Column(name = "v_27") - private Float v27; + private Double v27; @Column(name = "v_28") - private Float v28; + private Double v28; @Column(name = "v_29") - private Float v29; + private Double v29; @Column(name = "v_30") - private Float v30; + private Double v30; @Column(name = "v_31") - private Float v31; + private Double v31; @Column(name = "v_32") - private Float v32; + private Double v32; @Column(name = "v_33") - private Float v33; + private Double v33; @Column(name = "v_34") - private Float v34; + private Double v34; @Column(name = "v_35") - private Float v35; + private Double v35; @Column(name = "v_36") - private Float v36; + private Double v36; @Column(name = "v_37") - private Float v37; + private Double v37; @Column(name = "v_38") - private Float v38; + private Double v38; @Column(name = "v_39") - private Float v39; + private Double v39; @Column(name = "v_40") - private Float v40; + private Double v40; @Column(name = "v_41") - private Float v41; + private Double v41; @Column(name = "v_42") - private Float v42; + private Double v42; @Column(name = "v_43") - private Float v43; + private Double v43; @Column(name = "v_44") - private Float v44; + private Double v44; @Column(name = "v_45") - private Float v45; + private Double v45; @Column(name = "v_46") - private Float v46; + private Double v46; @Column(name = "v_47") - private Float v47; + private Double v47; @Column(name = "v_48") - private Float v48; + private Double v48; @Column(name = "v_49") - private Float v49; + private Double v49; @Column(name = "v_50") - private Float v50; + private Double v50; @Column(name = "v_neg") - private Float vNeg; + private Double vNeg; @Column(name = "v_pos") - private Float vPos; + private Double vPos; @Column(name = "v_thd") - private Float vThd; + private Double vThd; @Column(name = "v_unbalance") - private Float vUnbalance; + private Double vUnbalance; @Column(name = "v_zero") - private Float vZero; + private Double vZero; @Column(name = "line_id", tag = true) private String lineId; @@ -235,7 +235,7 @@ public class DataV { //自定义字段 @Column(name = "mean") - private Float mean; + private Double mean; //自定义字段 @Column(name = "count") @@ -275,32 +275,32 @@ public class DataV { if (valueType.equals("AVG")) { - influxDBDataVA.setRmsLvr(Objects.isNull(dataV.getRmsab())?0.0f:dataV.getRmsab()); + influxDBDataVA.setRmsLvr(Objects.isNull(dataV.getRmsab())?0.0:dataV.getRmsab()); - influxDBDataVB.setRmsLvr(Objects.isNull(dataV.getRmsbc())?0.0f:dataV.getRmsbc()); + influxDBDataVB.setRmsLvr(Objects.isNull(dataV.getRmsbc())?0.0:dataV.getRmsbc()); - influxDBDataVC.setRmsLvr(Objects.isNull(dataV.getRmsca())?0.0f:dataV.getRmsca()); + influxDBDataVC.setRmsLvr(Objects.isNull(dataV.getRmsca())?0.0:dataV.getRmsca()); } else if (valueType.equals("MAX")){ - influxDBDataVA.setRmsLvr(Objects.isNull(dataV.getRmsabMax())?0.0f:dataV.getRmsabMax()); + influxDBDataVA.setRmsLvr(Objects.isNull(dataV.getRmsabMax())?0.0:dataV.getRmsabMax()); - influxDBDataVB.setRmsLvr(Objects.isNull(dataV.getRmsbcMax())?0.0f:dataV.getRmsbcMax()); + influxDBDataVB.setRmsLvr(Objects.isNull(dataV.getRmsbcMax())?0.0:dataV.getRmsbcMax()); - influxDBDataVC.setRmsLvr(Objects.isNull(dataV.getRmscaMax())?0.0f:dataV.getRmscaMax()); + influxDBDataVC.setRmsLvr(Objects.isNull(dataV.getRmscaMax())?0.0:dataV.getRmscaMax()); } else if (valueType.equals("MIN")){ - influxDBDataVA.setRmsLvr(Objects.isNull(dataV.getRmsabMin())?0.0f:dataV.getRmsabMin()); - influxDBDataVB.setRmsLvr(Objects.isNull(dataV.getRmsbcMin())?0.0f:dataV.getRmsbcMin()); - influxDBDataVC.setRmsLvr(Objects.isNull(dataV.getRmscaMin())?0.0f:dataV.getRmscaMin()); + influxDBDataVA.setRmsLvr(Objects.isNull(dataV.getRmsabMin())?0.0:dataV.getRmsabMin()); + influxDBDataVB.setRmsLvr(Objects.isNull(dataV.getRmsbcMin())?0.0:dataV.getRmsbcMin()); + influxDBDataVC.setRmsLvr(Objects.isNull(dataV.getRmscaMin())?0.0:dataV.getRmscaMin()); } else if (valueType.equals("CP95")){ - influxDBDataVA.setRmsLvr(Objects.isNull(dataV.getRmsabCp95())?0.0f:dataV.getRmsabCp95()); + influxDBDataVA.setRmsLvr(Objects.isNull(dataV.getRmsabCp95())?0.0:dataV.getRmsabCp95()); - influxDBDataVB.setRmsLvr(Objects.isNull(dataV.getRmsbcCp95())?0.0f:dataV.getRmsbcCp95()); + influxDBDataVB.setRmsLvr(Objects.isNull(dataV.getRmsbcCp95())?0.0:dataV.getRmsbcCp95()); - influxDBDataVC.setRmsLvr(Objects.isNull(dataV.getRmscaCp95())?0.0f:dataV.getRmscaCp95()); + influxDBDataVC.setRmsLvr(Objects.isNull(dataV.getRmscaCp95())?0.0:dataV.getRmscaCp95()); } influxDBDataVList.add(influxDBDataVA); influxDBDataVList.add(influxDBDataVB); @@ -310,263 +310,263 @@ public class DataV { } if (valueType.equals("AVG")) { - influxDBDataV.setVNeg(Objects.isNull(dataV.getVNeg())?0.0f:dataV.getVNeg()); - influxDBDataV.setVPos(Objects.isNull(dataV.getVPos())?0.0f:dataV.getVPos()); - influxDBDataV.setVThd(Objects.isNull(dataV.getVThd())?0.0f:dataV.getVThd()); - influxDBDataV.setVUnbalance(Objects.isNull(dataV.getVUnbalance())?0.0f:dataV.getVUnbalance()); - influxDBDataV.setVZero(Objects.isNull(dataV.getVZero())?0.0f:dataV.getVZero()); - influxDBDataV.setFreq(Objects.isNull(dataV.getFreq())?0.0f:dataV.getFreq()); - influxDBDataV.setFreqDev(Objects.isNull(dataV.getFreqDev())?0.0f:dataV.getFreqDev()); - influxDBDataV.setRms(Objects.isNull(dataV.getRms())?0.0f:dataV.getRms()); - influxDBDataV.setRmsLvr(Objects.isNull(dataV.getRmsab())?0.0f:dataV.getRmsab()); - influxDBDataV.setVlDev(Objects.isNull(dataV.getVlDev())?0.0f:dataV.getVlDev()); - influxDBDataV.setVuDev(Objects.isNull(dataV.getVuDev())?0.0f:dataV.getVuDev()); + influxDBDataV.setVNeg(Objects.isNull(dataV.getVNeg())?0.0:dataV.getVNeg()); + influxDBDataV.setVPos(Objects.isNull(dataV.getVPos())?0.0:dataV.getVPos()); + influxDBDataV.setVThd(Objects.isNull(dataV.getVThd())?0.0:dataV.getVThd()); + influxDBDataV.setVUnbalance(Objects.isNull(dataV.getVUnbalance())?0.0:dataV.getVUnbalance()); + influxDBDataV.setVZero(Objects.isNull(dataV.getVZero())?0.0:dataV.getVZero()); + influxDBDataV.setFreq(Objects.isNull(dataV.getFreq())?0.0:dataV.getFreq()); + influxDBDataV.setFreqDev(Objects.isNull(dataV.getFreqDev())?0.0:dataV.getFreqDev()); + influxDBDataV.setRms(Objects.isNull(dataV.getRms())?0.0:dataV.getRms()); + influxDBDataV.setRmsLvr(Objects.isNull(dataV.getRmsab())?0.0:dataV.getRmsab()); + influxDBDataV.setVlDev(Objects.isNull(dataV.getVlDev())?0.0:dataV.getVlDev()); + influxDBDataV.setVuDev(Objects.isNull(dataV.getVuDev())?0.0:dataV.getVuDev()); - influxDBDataV.setV1(Objects.isNull(dataV.getV1())?0.0f:dataV.getV1()); - influxDBDataV.setV2(Objects.isNull(dataV.getV2())?0.0f:dataV.getV2()); - influxDBDataV.setV3(Objects.isNull(dataV.getV3())?0.0f:dataV.getV3()); - influxDBDataV.setV4(Objects.isNull(dataV.getV4())?0.0f:dataV.getV4()); - influxDBDataV.setV5(Objects.isNull(dataV.getV5())?0.0f:dataV.getV5()); - influxDBDataV.setV6(Objects.isNull(dataV.getV6())?0.0f:dataV.getV6()); - influxDBDataV.setV7(Objects.isNull(dataV.getV7())?0.0f:dataV.getV7()); - influxDBDataV.setV8(Objects.isNull(dataV.getV8())?0.0f:dataV.getV8()); - influxDBDataV.setV9(Objects.isNull(dataV.getV9())?0.0f:dataV.getV9()); - influxDBDataV.setV10(Objects.isNull(dataV.getV10())?0.0f:dataV.getV10()); - influxDBDataV.setV11(Objects.isNull(dataV.getV11())?0.0f:dataV.getV11()); - influxDBDataV.setV12(Objects.isNull(dataV.getV12())?0.0f:dataV.getV12()); - influxDBDataV.setV13(Objects.isNull(dataV.getV13())?0.0f:dataV.getV13()); - influxDBDataV.setV14(Objects.isNull(dataV.getV14())?0.0f:dataV.getV14()); - influxDBDataV.setV15(Objects.isNull(dataV.getV15())?0.0f:dataV.getV15()); - influxDBDataV.setV16(Objects.isNull(dataV.getV16())?0.0f:dataV.getV16()); - influxDBDataV.setV17(Objects.isNull(dataV.getV17())?0.0f:dataV.getV17()); - influxDBDataV.setV18(Objects.isNull(dataV.getV18())?0.0f:dataV.getV18()); - influxDBDataV.setV19(Objects.isNull(dataV.getV19())?0.0f:dataV.getV19()); - influxDBDataV.setV20(Objects.isNull(dataV.getV20())?0.0f:dataV.getV20()); - influxDBDataV.setV21(Objects.isNull(dataV.getV21())?0.0f:dataV.getV21()); - influxDBDataV.setV22(Objects.isNull(dataV.getV22())?0.0f:dataV.getV22()); - influxDBDataV.setV23(Objects.isNull(dataV.getV23())?0.0f:dataV.getV23()); - influxDBDataV.setV24(Objects.isNull(dataV.getV24())?0.0f:dataV.getV24()); - influxDBDataV.setV25(Objects.isNull(dataV.getV25())?0.0f:dataV.getV25()); - influxDBDataV.setV26(Objects.isNull(dataV.getV26())?0.0f:dataV.getV26()); - influxDBDataV.setV27(Objects.isNull(dataV.getV27())?0.0f:dataV.getV27()); - influxDBDataV.setV28(Objects.isNull(dataV.getV28())?0.0f:dataV.getV28()); - influxDBDataV.setV29(Objects.isNull(dataV.getV29())?0.0f:dataV.getV29()); - influxDBDataV.setV30(Objects.isNull(dataV.getV30())?0.0f:dataV.getV30()); - influxDBDataV.setV31(Objects.isNull(dataV.getV31())?0.0f:dataV.getV31()); - influxDBDataV.setV32(Objects.isNull(dataV.getV32())?0.0f:dataV.getV32()); - influxDBDataV.setV33(Objects.isNull(dataV.getV33())?0.0f:dataV.getV33()); - influxDBDataV.setV34(Objects.isNull(dataV.getV34())?0.0f:dataV.getV34()); - influxDBDataV.setV35(Objects.isNull(dataV.getV35())?0.0f:dataV.getV35()); - influxDBDataV.setV36(Objects.isNull(dataV.getV36())?0.0f:dataV.getV36()); - influxDBDataV.setV37(Objects.isNull(dataV.getV37())?0.0f:dataV.getV37()); - influxDBDataV.setV38(Objects.isNull(dataV.getV38())?0.0f:dataV.getV38()); - influxDBDataV.setV39(Objects.isNull(dataV.getV39())?0.0f:dataV.getV39()); - influxDBDataV.setV40(Objects.isNull(dataV.getV40())?0.0f:dataV.getV40()); - influxDBDataV.setV41(Objects.isNull(dataV.getV41())?0.0f:dataV.getV41()); - influxDBDataV.setV42(Objects.isNull(dataV.getV42())?0.0f:dataV.getV42()); - influxDBDataV.setV43(Objects.isNull(dataV.getV43())?0.0f:dataV.getV43()); - influxDBDataV.setV44(Objects.isNull(dataV.getV44())?0.0f:dataV.getV44()); - influxDBDataV.setV45(Objects.isNull(dataV.getV45())?0.0f:dataV.getV45()); - influxDBDataV.setV46(Objects.isNull(dataV.getV46())?0.0f:dataV.getV46()); - influxDBDataV.setV47(Objects.isNull(dataV.getV47())?0.0f:dataV.getV47()); - influxDBDataV.setV48(Objects.isNull(dataV.getV48())?0.0f:dataV.getV48()); - influxDBDataV.setV49(Objects.isNull(dataV.getV49())?0.0f:dataV.getV49()); - influxDBDataV.setV50(Objects.isNull(dataV.getV50())?0.0f:dataV.getV50()); + influxDBDataV.setV1(Objects.isNull(dataV.getV1())?0.0:dataV.getV1()); + influxDBDataV.setV2(Objects.isNull(dataV.getV2())?0.0:dataV.getV2()); + influxDBDataV.setV3(Objects.isNull(dataV.getV3())?0.0:dataV.getV3()); + influxDBDataV.setV4(Objects.isNull(dataV.getV4())?0.0:dataV.getV4()); + influxDBDataV.setV5(Objects.isNull(dataV.getV5())?0.0:dataV.getV5()); + influxDBDataV.setV6(Objects.isNull(dataV.getV6())?0.0:dataV.getV6()); + influxDBDataV.setV7(Objects.isNull(dataV.getV7())?0.0:dataV.getV7()); + influxDBDataV.setV8(Objects.isNull(dataV.getV8())?0.0:dataV.getV8()); + influxDBDataV.setV9(Objects.isNull(dataV.getV9())?0.0:dataV.getV9()); + influxDBDataV.setV10(Objects.isNull(dataV.getV10())?0.0:dataV.getV10()); + influxDBDataV.setV11(Objects.isNull(dataV.getV11())?0.0:dataV.getV11()); + influxDBDataV.setV12(Objects.isNull(dataV.getV12())?0.0:dataV.getV12()); + influxDBDataV.setV13(Objects.isNull(dataV.getV13())?0.0:dataV.getV13()); + influxDBDataV.setV14(Objects.isNull(dataV.getV14())?0.0:dataV.getV14()); + influxDBDataV.setV15(Objects.isNull(dataV.getV15())?0.0:dataV.getV15()); + influxDBDataV.setV16(Objects.isNull(dataV.getV16())?0.0:dataV.getV16()); + influxDBDataV.setV17(Objects.isNull(dataV.getV17())?0.0:dataV.getV17()); + influxDBDataV.setV18(Objects.isNull(dataV.getV18())?0.0:dataV.getV18()); + influxDBDataV.setV19(Objects.isNull(dataV.getV19())?0.0:dataV.getV19()); + influxDBDataV.setV20(Objects.isNull(dataV.getV20())?0.0:dataV.getV20()); + influxDBDataV.setV21(Objects.isNull(dataV.getV21())?0.0:dataV.getV21()); + influxDBDataV.setV22(Objects.isNull(dataV.getV22())?0.0:dataV.getV22()); + influxDBDataV.setV23(Objects.isNull(dataV.getV23())?0.0:dataV.getV23()); + influxDBDataV.setV24(Objects.isNull(dataV.getV24())?0.0:dataV.getV24()); + influxDBDataV.setV25(Objects.isNull(dataV.getV25())?0.0:dataV.getV25()); + influxDBDataV.setV26(Objects.isNull(dataV.getV26())?0.0:dataV.getV26()); + influxDBDataV.setV27(Objects.isNull(dataV.getV27())?0.0:dataV.getV27()); + influxDBDataV.setV28(Objects.isNull(dataV.getV28())?0.0:dataV.getV28()); + influxDBDataV.setV29(Objects.isNull(dataV.getV29())?0.0:dataV.getV29()); + influxDBDataV.setV30(Objects.isNull(dataV.getV30())?0.0:dataV.getV30()); + influxDBDataV.setV31(Objects.isNull(dataV.getV31())?0.0:dataV.getV31()); + influxDBDataV.setV32(Objects.isNull(dataV.getV32())?0.0:dataV.getV32()); + influxDBDataV.setV33(Objects.isNull(dataV.getV33())?0.0:dataV.getV33()); + influxDBDataV.setV34(Objects.isNull(dataV.getV34())?0.0:dataV.getV34()); + influxDBDataV.setV35(Objects.isNull(dataV.getV35())?0.0:dataV.getV35()); + influxDBDataV.setV36(Objects.isNull(dataV.getV36())?0.0:dataV.getV36()); + influxDBDataV.setV37(Objects.isNull(dataV.getV37())?0.0:dataV.getV37()); + influxDBDataV.setV38(Objects.isNull(dataV.getV38())?0.0:dataV.getV38()); + influxDBDataV.setV39(Objects.isNull(dataV.getV39())?0.0:dataV.getV39()); + influxDBDataV.setV40(Objects.isNull(dataV.getV40())?0.0:dataV.getV40()); + influxDBDataV.setV41(Objects.isNull(dataV.getV41())?0.0:dataV.getV41()); + influxDBDataV.setV42(Objects.isNull(dataV.getV42())?0.0:dataV.getV42()); + influxDBDataV.setV43(Objects.isNull(dataV.getV43())?0.0:dataV.getV43()); + influxDBDataV.setV44(Objects.isNull(dataV.getV44())?0.0:dataV.getV44()); + influxDBDataV.setV45(Objects.isNull(dataV.getV45())?0.0:dataV.getV45()); + influxDBDataV.setV46(Objects.isNull(dataV.getV46())?0.0:dataV.getV46()); + influxDBDataV.setV47(Objects.isNull(dataV.getV47())?0.0:dataV.getV47()); + influxDBDataV.setV48(Objects.isNull(dataV.getV48())?0.0:dataV.getV48()); + influxDBDataV.setV49(Objects.isNull(dataV.getV49())?0.0:dataV.getV49()); + influxDBDataV.setV50(Objects.isNull(dataV.getV50())?0.0:dataV.getV50()); } else if (valueType.equals("MAX")){ - influxDBDataV.setVNeg(Objects.isNull(dataV.getVNegMax())?0.0f:dataV.getVNegMax()); - influxDBDataV.setVPos(Objects.isNull(dataV.getVPosMax())?0.0f:dataV.getVPosMax()); - influxDBDataV.setVThd(Objects.isNull(dataV.getVThdMax())?0.0f:dataV.getVThdMax()); - influxDBDataV.setVUnbalance(Objects.isNull(dataV.getVUnbalanceMax())?0.0f:dataV.getVUnbalanceMax()); - influxDBDataV.setVZero(Objects.isNull(dataV.getVZeroMax())?0.0f:dataV.getVZeroMax()); - influxDBDataV.setFreq(Objects.isNull(dataV.getFreqMax())?0.0f:dataV.getFreqMax()); - influxDBDataV.setFreqDev(Objects.isNull(dataV.getFreqDevMax())?0.0f:dataV.getFreqDevMax()); - influxDBDataV.setRms(Objects.isNull(dataV.getRmsMax())?0.0f:dataV.getRmsMax()); - influxDBDataV.setVlDev(Objects.isNull(dataV.getVlDevMax())?0.0f:dataV.getVlDevMax()); - influxDBDataV.setVuDev(Objects.isNull(dataV.getVuDevMax())?0.0f:dataV.getVuDevMax()); + influxDBDataV.setVNeg(Objects.isNull(dataV.getVNegMax())?0.0:dataV.getVNegMax()); + influxDBDataV.setVPos(Objects.isNull(dataV.getVPosMax())?0.0:dataV.getVPosMax()); + influxDBDataV.setVThd(Objects.isNull(dataV.getVThdMax())?0.0:dataV.getVThdMax()); + influxDBDataV.setVUnbalance(Objects.isNull(dataV.getVUnbalanceMax())?0.0:dataV.getVUnbalanceMax()); + influxDBDataV.setVZero(Objects.isNull(dataV.getVZeroMax())?0.0:dataV.getVZeroMax()); + influxDBDataV.setFreq(Objects.isNull(dataV.getFreqMax())?0.0:dataV.getFreqMax()); + influxDBDataV.setFreqDev(Objects.isNull(dataV.getFreqDevMax())?0.0:dataV.getFreqDevMax()); + influxDBDataV.setRms(Objects.isNull(dataV.getRmsMax())?0.0:dataV.getRmsMax()); + influxDBDataV.setVlDev(Objects.isNull(dataV.getVlDevMax())?0.0:dataV.getVlDevMax()); + influxDBDataV.setVuDev(Objects.isNull(dataV.getVuDevMax())?0.0:dataV.getVuDevMax()); - influxDBDataV.setV1(Objects.isNull(dataV.getV1Max())?0.0f:dataV.getV1Max()); - influxDBDataV.setV2(Objects.isNull(dataV.getV2Max())?0.0f:dataV.getV2Max()); - influxDBDataV.setV3(Objects.isNull(dataV.getV3Max())?0.0f:dataV.getV3Max()); - influxDBDataV.setV4(Objects.isNull(dataV.getV4Max())?0.0f:dataV.getV4Max()); - influxDBDataV.setV5(Objects.isNull(dataV.getV5Max())?0.0f:dataV.getV5Max()); - influxDBDataV.setV6(Objects.isNull(dataV.getV6Max())?0.0f:dataV.getV6Max()); - influxDBDataV.setV7(Objects.isNull(dataV.getV7Max())?0.0f:dataV.getV7Max()); - influxDBDataV.setV8(Objects.isNull(dataV.getV8Max())?0.0f:dataV.getV8Max()); - influxDBDataV.setV9(Objects.isNull(dataV.getV9Max())?0.0f:dataV.getV9Max()); - influxDBDataV.setV10(Objects.isNull(dataV.getV10Max())?0.0f:dataV.getV10Max()); - influxDBDataV.setV11(Objects.isNull(dataV.getV11Max())?0.0f:dataV.getV11Max()); - influxDBDataV.setV12(Objects.isNull(dataV.getV12Max())?0.0f:dataV.getV12Max()); - influxDBDataV.setV13(Objects.isNull(dataV.getV13Max())?0.0f:dataV.getV13Max()); - influxDBDataV.setV14(Objects.isNull(dataV.getV14Max())?0.0f:dataV.getV14Max()); - influxDBDataV.setV15(Objects.isNull(dataV.getV15Max())?0.0f:dataV.getV15Max()); - influxDBDataV.setV16(Objects.isNull(dataV.getV16Max())?0.0f:dataV.getV16Max()); - influxDBDataV.setV17(Objects.isNull(dataV.getV17Max())?0.0f:dataV.getV17Max()); - influxDBDataV.setV18(Objects.isNull(dataV.getV18Max())?0.0f:dataV.getV18Max()); - influxDBDataV.setV19(Objects.isNull(dataV.getV19Max())?0.0f:dataV.getV19Max()); - influxDBDataV.setV20(Objects.isNull(dataV.getV20Max())?0.0f:dataV.getV20Max()); - influxDBDataV.setV21(Objects.isNull(dataV.getV21Max())?0.0f:dataV.getV21Max()); - influxDBDataV.setV22(Objects.isNull(dataV.getV22Max())?0.0f:dataV.getV22Max()); - influxDBDataV.setV23(Objects.isNull(dataV.getV23Max())?0.0f:dataV.getV23Max()); - influxDBDataV.setV24(Objects.isNull(dataV.getV24Max())?0.0f:dataV.getV24Max()); - influxDBDataV.setV25(Objects.isNull(dataV.getV25Max())?0.0f:dataV.getV25Max()); - influxDBDataV.setV26(Objects.isNull(dataV.getV26Max())?0.0f:dataV.getV26Max()); - influxDBDataV.setV27(Objects.isNull(dataV.getV27Max())?0.0f:dataV.getV27Max()); - influxDBDataV.setV28(Objects.isNull(dataV.getV28Max())?0.0f:dataV.getV28Max()); - influxDBDataV.setV29(Objects.isNull(dataV.getV29Max())?0.0f:dataV.getV29Max()); - influxDBDataV.setV30(Objects.isNull(dataV.getV30Max())?0.0f:dataV.getV30Max()); - influxDBDataV.setV31(Objects.isNull(dataV.getV31Max())?0.0f:dataV.getV31Max()); - influxDBDataV.setV32(Objects.isNull(dataV.getV32Max())?0.0f:dataV.getV32Max()); - influxDBDataV.setV33(Objects.isNull(dataV.getV33Max())?0.0f:dataV.getV33Max()); - influxDBDataV.setV34(Objects.isNull(dataV.getV34Max())?0.0f:dataV.getV34Max()); - influxDBDataV.setV35(Objects.isNull(dataV.getV35Max())?0.0f:dataV.getV35Max()); - influxDBDataV.setV36(Objects.isNull(dataV.getV36Max())?0.0f:dataV.getV36Max()); - influxDBDataV.setV37(Objects.isNull(dataV.getV37Max())?0.0f:dataV.getV37Max()); - influxDBDataV.setV38(Objects.isNull(dataV.getV38Max())?0.0f:dataV.getV38Max()); - influxDBDataV.setV39(Objects.isNull(dataV.getV39Max())?0.0f:dataV.getV39Max()); - influxDBDataV.setV40(Objects.isNull(dataV.getV40Max())?0.0f:dataV.getV40Max()); - influxDBDataV.setV41(Objects.isNull(dataV.getV41Max())?0.0f:dataV.getV41Max()); - influxDBDataV.setV42(Objects.isNull(dataV.getV42Max())?0.0f:dataV.getV42Max()); - influxDBDataV.setV43(Objects.isNull(dataV.getV43Max())?0.0f:dataV.getV43Max()); - influxDBDataV.setV44(Objects.isNull(dataV.getV44Max())?0.0f:dataV.getV44Max()); - influxDBDataV.setV45(Objects.isNull(dataV.getV45Max())?0.0f:dataV.getV45Max()); - influxDBDataV.setV46(Objects.isNull(dataV.getV46Max())?0.0f:dataV.getV46Max()); - influxDBDataV.setV47(Objects.isNull(dataV.getV47Max())?0.0f:dataV.getV47Max()); - influxDBDataV.setV48(Objects.isNull(dataV.getV48Max())?0.0f:dataV.getV48Max()); - influxDBDataV.setV49(Objects.isNull(dataV.getV49Max())?0.0f:dataV.getV49Max()); - influxDBDataV.setV50(Objects.isNull(dataV.getV50Max())?0.0f:dataV.getV50Max()); + influxDBDataV.setV1(Objects.isNull(dataV.getV1Max())?0.0:dataV.getV1Max()); + influxDBDataV.setV2(Objects.isNull(dataV.getV2Max())?0.0:dataV.getV2Max()); + influxDBDataV.setV3(Objects.isNull(dataV.getV3Max())?0.0:dataV.getV3Max()); + influxDBDataV.setV4(Objects.isNull(dataV.getV4Max())?0.0:dataV.getV4Max()); + influxDBDataV.setV5(Objects.isNull(dataV.getV5Max())?0.0:dataV.getV5Max()); + influxDBDataV.setV6(Objects.isNull(dataV.getV6Max())?0.0:dataV.getV6Max()); + influxDBDataV.setV7(Objects.isNull(dataV.getV7Max())?0.0:dataV.getV7Max()); + influxDBDataV.setV8(Objects.isNull(dataV.getV8Max())?0.0:dataV.getV8Max()); + influxDBDataV.setV9(Objects.isNull(dataV.getV9Max())?0.0:dataV.getV9Max()); + influxDBDataV.setV10(Objects.isNull(dataV.getV10Max())?0.0:dataV.getV10Max()); + influxDBDataV.setV11(Objects.isNull(dataV.getV11Max())?0.0:dataV.getV11Max()); + influxDBDataV.setV12(Objects.isNull(dataV.getV12Max())?0.0:dataV.getV12Max()); + influxDBDataV.setV13(Objects.isNull(dataV.getV13Max())?0.0:dataV.getV13Max()); + influxDBDataV.setV14(Objects.isNull(dataV.getV14Max())?0.0:dataV.getV14Max()); + influxDBDataV.setV15(Objects.isNull(dataV.getV15Max())?0.0:dataV.getV15Max()); + influxDBDataV.setV16(Objects.isNull(dataV.getV16Max())?0.0:dataV.getV16Max()); + influxDBDataV.setV17(Objects.isNull(dataV.getV17Max())?0.0:dataV.getV17Max()); + influxDBDataV.setV18(Objects.isNull(dataV.getV18Max())?0.0:dataV.getV18Max()); + influxDBDataV.setV19(Objects.isNull(dataV.getV19Max())?0.0:dataV.getV19Max()); + influxDBDataV.setV20(Objects.isNull(dataV.getV20Max())?0.0:dataV.getV20Max()); + influxDBDataV.setV21(Objects.isNull(dataV.getV21Max())?0.0:dataV.getV21Max()); + influxDBDataV.setV22(Objects.isNull(dataV.getV22Max())?0.0:dataV.getV22Max()); + influxDBDataV.setV23(Objects.isNull(dataV.getV23Max())?0.0:dataV.getV23Max()); + influxDBDataV.setV24(Objects.isNull(dataV.getV24Max())?0.0:dataV.getV24Max()); + influxDBDataV.setV25(Objects.isNull(dataV.getV25Max())?0.0:dataV.getV25Max()); + influxDBDataV.setV26(Objects.isNull(dataV.getV26Max())?0.0:dataV.getV26Max()); + influxDBDataV.setV27(Objects.isNull(dataV.getV27Max())?0.0:dataV.getV27Max()); + influxDBDataV.setV28(Objects.isNull(dataV.getV28Max())?0.0:dataV.getV28Max()); + influxDBDataV.setV29(Objects.isNull(dataV.getV29Max())?0.0:dataV.getV29Max()); + influxDBDataV.setV30(Objects.isNull(dataV.getV30Max())?0.0:dataV.getV30Max()); + influxDBDataV.setV31(Objects.isNull(dataV.getV31Max())?0.0:dataV.getV31Max()); + influxDBDataV.setV32(Objects.isNull(dataV.getV32Max())?0.0:dataV.getV32Max()); + influxDBDataV.setV33(Objects.isNull(dataV.getV33Max())?0.0:dataV.getV33Max()); + influxDBDataV.setV34(Objects.isNull(dataV.getV34Max())?0.0:dataV.getV34Max()); + influxDBDataV.setV35(Objects.isNull(dataV.getV35Max())?0.0:dataV.getV35Max()); + influxDBDataV.setV36(Objects.isNull(dataV.getV36Max())?0.0:dataV.getV36Max()); + influxDBDataV.setV37(Objects.isNull(dataV.getV37Max())?0.0:dataV.getV37Max()); + influxDBDataV.setV38(Objects.isNull(dataV.getV38Max())?0.0:dataV.getV38Max()); + influxDBDataV.setV39(Objects.isNull(dataV.getV39Max())?0.0:dataV.getV39Max()); + influxDBDataV.setV40(Objects.isNull(dataV.getV40Max())?0.0:dataV.getV40Max()); + influxDBDataV.setV41(Objects.isNull(dataV.getV41Max())?0.0:dataV.getV41Max()); + influxDBDataV.setV42(Objects.isNull(dataV.getV42Max())?0.0:dataV.getV42Max()); + influxDBDataV.setV43(Objects.isNull(dataV.getV43Max())?0.0:dataV.getV43Max()); + influxDBDataV.setV44(Objects.isNull(dataV.getV44Max())?0.0:dataV.getV44Max()); + influxDBDataV.setV45(Objects.isNull(dataV.getV45Max())?0.0:dataV.getV45Max()); + influxDBDataV.setV46(Objects.isNull(dataV.getV46Max())?0.0:dataV.getV46Max()); + influxDBDataV.setV47(Objects.isNull(dataV.getV47Max())?0.0:dataV.getV47Max()); + influxDBDataV.setV48(Objects.isNull(dataV.getV48Max())?0.0:dataV.getV48Max()); + influxDBDataV.setV49(Objects.isNull(dataV.getV49Max())?0.0:dataV.getV49Max()); + influxDBDataV.setV50(Objects.isNull(dataV.getV50Max())?0.0:dataV.getV50Max()); } else if (valueType.equals("MIN")){ - influxDBDataV.setVNeg(Objects.isNull(dataV.getVNegMin())?0.0f:dataV.getVNegMin()); - influxDBDataV.setVPos(Objects.isNull(dataV.getVPosMin())?0.0f:dataV.getVPosMin()); - influxDBDataV.setVThd(Objects.isNull(dataV.getVThdMin())?0.0f:dataV.getVThdMin()); - influxDBDataV.setVUnbalance(Objects.isNull(dataV.getVUnbalanceMin())?0.0f:dataV.getVUnbalanceMin()); - influxDBDataV.setVZero(Objects.isNull(dataV.getVZeroMin())?0.0f:dataV.getVZeroMin()); - influxDBDataV.setFreq(Objects.isNull(dataV.getFreqMin())?0.0f:dataV.getFreqMin()); - influxDBDataV.setFreqDev(Objects.isNull(dataV.getFreqDevMin())?0.0f:dataV.getFreqDevMin()); - influxDBDataV.setRms(Objects.isNull(dataV.getRmsMin())?0.0f:dataV.getRmsMin()); - influxDBDataV.setVlDev(Objects.isNull(dataV.getVlDevMin())?0.0f:dataV.getVlDevMin()); - influxDBDataV.setVuDev(Objects.isNull(dataV.getVuDevMin())?0.0f:dataV.getVuDevMin()); + influxDBDataV.setVNeg(Objects.isNull(dataV.getVNegMin())?0.0:dataV.getVNegMin()); + influxDBDataV.setVPos(Objects.isNull(dataV.getVPosMin())?0.0:dataV.getVPosMin()); + influxDBDataV.setVThd(Objects.isNull(dataV.getVThdMin())?0.0:dataV.getVThdMin()); + influxDBDataV.setVUnbalance(Objects.isNull(dataV.getVUnbalanceMin())?0.0:dataV.getVUnbalanceMin()); + influxDBDataV.setVZero(Objects.isNull(dataV.getVZeroMin())?0.0:dataV.getVZeroMin()); + influxDBDataV.setFreq(Objects.isNull(dataV.getFreqMin())?0.0:dataV.getFreqMin()); + influxDBDataV.setFreqDev(Objects.isNull(dataV.getFreqDevMin())?0.0:dataV.getFreqDevMin()); + influxDBDataV.setRms(Objects.isNull(dataV.getRmsMin())?0.0:dataV.getRmsMin()); + influxDBDataV.setVlDev(Objects.isNull(dataV.getVlDevMin())?0.0:dataV.getVlDevMin()); + influxDBDataV.setVuDev(Objects.isNull(dataV.getVuDevMin())?0.0:dataV.getVuDevMin()); - influxDBDataV.setV1(Objects.isNull(dataV.getV1Min())?0.0f:dataV.getV1Min()); - influxDBDataV.setV2(Objects.isNull(dataV.getV2Min())?0.0f:dataV.getV2Min()); - influxDBDataV.setV3(Objects.isNull(dataV.getV3Min())?0.0f:dataV.getV3Min()); - influxDBDataV.setV4(Objects.isNull(dataV.getV4Min())?0.0f:dataV.getV4Min()); - influxDBDataV.setV5(Objects.isNull(dataV.getV5Min())?0.0f:dataV.getV5Min()); - influxDBDataV.setV6(Objects.isNull(dataV.getV6Min())?0.0f:dataV.getV6Min()); - influxDBDataV.setV7(Objects.isNull(dataV.getV7Min())?0.0f:dataV.getV7Min()); - influxDBDataV.setV8(Objects.isNull(dataV.getV8Min())?0.0f:dataV.getV8Min()); - influxDBDataV.setV9(Objects.isNull(dataV.getV9Min())?0.0f:dataV.getV9Min()); - influxDBDataV.setV10(Objects.isNull(dataV.getV10Min())?0.0f:dataV.getV10Min()); - influxDBDataV.setV11(Objects.isNull(dataV.getV11Min())?0.0f:dataV.getV11Min()); - influxDBDataV.setV12(Objects.isNull(dataV.getV12Min())?0.0f:dataV.getV12Min()); - influxDBDataV.setV13(Objects.isNull(dataV.getV13Min())?0.0f:dataV.getV13Min()); - influxDBDataV.setV14(Objects.isNull(dataV.getV14Min())?0.0f:dataV.getV14Min()); - influxDBDataV.setV15(Objects.isNull(dataV.getV15Min())?0.0f:dataV.getV15Min()); - influxDBDataV.setV16(Objects.isNull(dataV.getV16Min())?0.0f:dataV.getV16Min()); - influxDBDataV.setV17(Objects.isNull(dataV.getV17Min())?0.0f:dataV.getV17Min()); - influxDBDataV.setV18(Objects.isNull(dataV.getV18Min())?0.0f:dataV.getV18Min()); - influxDBDataV.setV19(Objects.isNull(dataV.getV19Min())?0.0f:dataV.getV19Min()); - influxDBDataV.setV20(Objects.isNull(dataV.getV20Min())?0.0f:dataV.getV20Min()); - influxDBDataV.setV21(Objects.isNull(dataV.getV21Min())?0.0f:dataV.getV21Min()); - influxDBDataV.setV22(Objects.isNull(dataV.getV22Min())?0.0f:dataV.getV22Min()); - influxDBDataV.setV23(Objects.isNull(dataV.getV23Min())?0.0f:dataV.getV23Min()); - influxDBDataV.setV24(Objects.isNull(dataV.getV24Min())?0.0f:dataV.getV24Min()); - influxDBDataV.setV25(Objects.isNull(dataV.getV25Min())?0.0f:dataV.getV25Min()); - influxDBDataV.setV26(Objects.isNull(dataV.getV26Min())?0.0f:dataV.getV26Min()); - influxDBDataV.setV27(Objects.isNull(dataV.getV27Min())?0.0f:dataV.getV27Min()); - influxDBDataV.setV28(Objects.isNull(dataV.getV28Min())?0.0f:dataV.getV28Min()); - influxDBDataV.setV29(Objects.isNull(dataV.getV29Min())?0.0f:dataV.getV29Min()); - influxDBDataV.setV30(Objects.isNull(dataV.getV30Min())?0.0f:dataV.getV30Min()); - influxDBDataV.setV31(Objects.isNull(dataV.getV31Min())?0.0f:dataV.getV31Min()); - influxDBDataV.setV32(Objects.isNull(dataV.getV32Min())?0.0f:dataV.getV32Min()); - influxDBDataV.setV33(Objects.isNull(dataV.getV33Min())?0.0f:dataV.getV33Min()); - influxDBDataV.setV34(Objects.isNull(dataV.getV34Min())?0.0f:dataV.getV34Min()); - influxDBDataV.setV35(Objects.isNull(dataV.getV35Min())?0.0f:dataV.getV35Min()); - influxDBDataV.setV36(Objects.isNull(dataV.getV36Min())?0.0f:dataV.getV36Min()); - influxDBDataV.setV37(Objects.isNull(dataV.getV37Min())?0.0f:dataV.getV37Min()); - influxDBDataV.setV38(Objects.isNull(dataV.getV38Min())?0.0f:dataV.getV38Min()); - influxDBDataV.setV39(Objects.isNull(dataV.getV39Min())?0.0f:dataV.getV39Min()); - influxDBDataV.setV40(Objects.isNull(dataV.getV40Min())?0.0f:dataV.getV40Min()); - influxDBDataV.setV41(Objects.isNull(dataV.getV41Min())?0.0f:dataV.getV41Min()); - influxDBDataV.setV42(Objects.isNull(dataV.getV42Min())?0.0f:dataV.getV42Min()); - influxDBDataV.setV43(Objects.isNull(dataV.getV43Min())?0.0f:dataV.getV43Min()); - influxDBDataV.setV44(Objects.isNull(dataV.getV44Min())?0.0f:dataV.getV44Min()); - influxDBDataV.setV45(Objects.isNull(dataV.getV45Min())?0.0f:dataV.getV45Min()); - influxDBDataV.setV46(Objects.isNull(dataV.getV46Min())?0.0f:dataV.getV46Min()); - influxDBDataV.setV47(Objects.isNull(dataV.getV47Min())?0.0f:dataV.getV47Min()); - influxDBDataV.setV48(Objects.isNull(dataV.getV48Min())?0.0f:dataV.getV48Min()); - influxDBDataV.setV49(Objects.isNull(dataV.getV49Min())?0.0f:dataV.getV49Min()); - influxDBDataV.setV50(Objects.isNull(dataV.getV50Min())?0.0f:dataV.getV50Min()); + influxDBDataV.setV1(Objects.isNull(dataV.getV1Min())?0.0:dataV.getV1Min()); + influxDBDataV.setV2(Objects.isNull(dataV.getV2Min())?0.0:dataV.getV2Min()); + influxDBDataV.setV3(Objects.isNull(dataV.getV3Min())?0.0:dataV.getV3Min()); + influxDBDataV.setV4(Objects.isNull(dataV.getV4Min())?0.0:dataV.getV4Min()); + influxDBDataV.setV5(Objects.isNull(dataV.getV5Min())?0.0:dataV.getV5Min()); + influxDBDataV.setV6(Objects.isNull(dataV.getV6Min())?0.0:dataV.getV6Min()); + influxDBDataV.setV7(Objects.isNull(dataV.getV7Min())?0.0:dataV.getV7Min()); + influxDBDataV.setV8(Objects.isNull(dataV.getV8Min())?0.0:dataV.getV8Min()); + influxDBDataV.setV9(Objects.isNull(dataV.getV9Min())?0.0:dataV.getV9Min()); + influxDBDataV.setV10(Objects.isNull(dataV.getV10Min())?0.0:dataV.getV10Min()); + influxDBDataV.setV11(Objects.isNull(dataV.getV11Min())?0.0:dataV.getV11Min()); + influxDBDataV.setV12(Objects.isNull(dataV.getV12Min())?0.0:dataV.getV12Min()); + influxDBDataV.setV13(Objects.isNull(dataV.getV13Min())?0.0:dataV.getV13Min()); + influxDBDataV.setV14(Objects.isNull(dataV.getV14Min())?0.0:dataV.getV14Min()); + influxDBDataV.setV15(Objects.isNull(dataV.getV15Min())?0.0:dataV.getV15Min()); + influxDBDataV.setV16(Objects.isNull(dataV.getV16Min())?0.0:dataV.getV16Min()); + influxDBDataV.setV17(Objects.isNull(dataV.getV17Min())?0.0:dataV.getV17Min()); + influxDBDataV.setV18(Objects.isNull(dataV.getV18Min())?0.0:dataV.getV18Min()); + influxDBDataV.setV19(Objects.isNull(dataV.getV19Min())?0.0:dataV.getV19Min()); + influxDBDataV.setV20(Objects.isNull(dataV.getV20Min())?0.0:dataV.getV20Min()); + influxDBDataV.setV21(Objects.isNull(dataV.getV21Min())?0.0:dataV.getV21Min()); + influxDBDataV.setV22(Objects.isNull(dataV.getV22Min())?0.0:dataV.getV22Min()); + influxDBDataV.setV23(Objects.isNull(dataV.getV23Min())?0.0:dataV.getV23Min()); + influxDBDataV.setV24(Objects.isNull(dataV.getV24Min())?0.0:dataV.getV24Min()); + influxDBDataV.setV25(Objects.isNull(dataV.getV25Min())?0.0:dataV.getV25Min()); + influxDBDataV.setV26(Objects.isNull(dataV.getV26Min())?0.0:dataV.getV26Min()); + influxDBDataV.setV27(Objects.isNull(dataV.getV27Min())?0.0:dataV.getV27Min()); + influxDBDataV.setV28(Objects.isNull(dataV.getV28Min())?0.0:dataV.getV28Min()); + influxDBDataV.setV29(Objects.isNull(dataV.getV29Min())?0.0:dataV.getV29Min()); + influxDBDataV.setV30(Objects.isNull(dataV.getV30Min())?0.0:dataV.getV30Min()); + influxDBDataV.setV31(Objects.isNull(dataV.getV31Min())?0.0:dataV.getV31Min()); + influxDBDataV.setV32(Objects.isNull(dataV.getV32Min())?0.0:dataV.getV32Min()); + influxDBDataV.setV33(Objects.isNull(dataV.getV33Min())?0.0:dataV.getV33Min()); + influxDBDataV.setV34(Objects.isNull(dataV.getV34Min())?0.0:dataV.getV34Min()); + influxDBDataV.setV35(Objects.isNull(dataV.getV35Min())?0.0:dataV.getV35Min()); + influxDBDataV.setV36(Objects.isNull(dataV.getV36Min())?0.0:dataV.getV36Min()); + influxDBDataV.setV37(Objects.isNull(dataV.getV37Min())?0.0:dataV.getV37Min()); + influxDBDataV.setV38(Objects.isNull(dataV.getV38Min())?0.0:dataV.getV38Min()); + influxDBDataV.setV39(Objects.isNull(dataV.getV39Min())?0.0:dataV.getV39Min()); + influxDBDataV.setV40(Objects.isNull(dataV.getV40Min())?0.0:dataV.getV40Min()); + influxDBDataV.setV41(Objects.isNull(dataV.getV41Min())?0.0:dataV.getV41Min()); + influxDBDataV.setV42(Objects.isNull(dataV.getV42Min())?0.0:dataV.getV42Min()); + influxDBDataV.setV43(Objects.isNull(dataV.getV43Min())?0.0:dataV.getV43Min()); + influxDBDataV.setV44(Objects.isNull(dataV.getV44Min())?0.0:dataV.getV44Min()); + influxDBDataV.setV45(Objects.isNull(dataV.getV45Min())?0.0:dataV.getV45Min()); + influxDBDataV.setV46(Objects.isNull(dataV.getV46Min())?0.0:dataV.getV46Min()); + influxDBDataV.setV47(Objects.isNull(dataV.getV47Min())?0.0:dataV.getV47Min()); + influxDBDataV.setV48(Objects.isNull(dataV.getV48Min())?0.0:dataV.getV48Min()); + influxDBDataV.setV49(Objects.isNull(dataV.getV49Min())?0.0:dataV.getV49Min()); + influxDBDataV.setV50(Objects.isNull(dataV.getV50Min())?0.0:dataV.getV50Min()); } else if (valueType.equals("CP95")){ - influxDBDataV.setVNeg(Objects.isNull(dataV.getVNegCp95())?0.0f:dataV.getVNegCp95()); - influxDBDataV.setVPos(Objects.isNull(dataV.getVPosCp95())?0.0f:dataV.getVPosCp95()); - influxDBDataV.setVThd(Objects.isNull(dataV.getVThdCp95())?0.0f:dataV.getVThdCp95()); - influxDBDataV.setVUnbalance(Objects.isNull(dataV.getVUnbalanceCp95())?0.0f:dataV.getVUnbalanceCp95()); - influxDBDataV.setVZero(Objects.isNull(dataV.getVZeroCp95())?0.0f:dataV.getVZeroCp95()); - influxDBDataV.setFreq(Objects.isNull(dataV.getFreqCp95())?0.0f:dataV.getFreqCp95()); - influxDBDataV.setFreqDev(Objects.isNull(dataV.getFreqDevCp95())?0.0f:dataV.getFreqDevCp95()); - influxDBDataV.setRms(Objects.isNull(dataV.getRmsCp95())?0.0f:dataV.getRmsCp95()); - influxDBDataV.setVlDev(Objects.isNull(dataV.getVlDevCp95())?0.0f:dataV.getVlDevCp95()); - influxDBDataV.setVuDev(Objects.isNull(dataV.getVuDevCp95())?0.0f:dataV.getVuDevCp95()); + influxDBDataV.setVNeg(Objects.isNull(dataV.getVNegCp95())?0.0:dataV.getVNegCp95()); + influxDBDataV.setVPos(Objects.isNull(dataV.getVPosCp95())?0.0:dataV.getVPosCp95()); + influxDBDataV.setVThd(Objects.isNull(dataV.getVThdCp95())?0.0:dataV.getVThdCp95()); + influxDBDataV.setVUnbalance(Objects.isNull(dataV.getVUnbalanceCp95())?0.0:dataV.getVUnbalanceCp95()); + influxDBDataV.setVZero(Objects.isNull(dataV.getVZeroCp95())?0.0:dataV.getVZeroCp95()); + influxDBDataV.setFreq(Objects.isNull(dataV.getFreqCp95())?0.0:dataV.getFreqCp95()); + influxDBDataV.setFreqDev(Objects.isNull(dataV.getFreqDevCp95())?0.0:dataV.getFreqDevCp95()); + influxDBDataV.setRms(Objects.isNull(dataV.getRmsCp95())?0.0:dataV.getRmsCp95()); + influxDBDataV.setVlDev(Objects.isNull(dataV.getVlDevCp95())?0.0:dataV.getVlDevCp95()); + influxDBDataV.setVuDev(Objects.isNull(dataV.getVuDevCp95())?0.0:dataV.getVuDevCp95()); - influxDBDataV.setV1(Objects.isNull(dataV.getV1Cp95())?0.0f:dataV.getV1Cp95()); - influxDBDataV.setV2(Objects.isNull(dataV.getV2Cp95())?0.0f:dataV.getV2Cp95()); - influxDBDataV.setV3(Objects.isNull(dataV.getV3Cp95())?0.0f:dataV.getV3Cp95()); - influxDBDataV.setV4(Objects.isNull(dataV.getV4Cp95())?0.0f:dataV.getV4Cp95()); - influxDBDataV.setV5(Objects.isNull(dataV.getV5Cp95())?0.0f:dataV.getV5Cp95()); - influxDBDataV.setV6(Objects.isNull(dataV.getV6Cp95())?0.0f:dataV.getV6Cp95()); - influxDBDataV.setV7(Objects.isNull(dataV.getV7Cp95())?0.0f:dataV.getV7Cp95()); - influxDBDataV.setV8(Objects.isNull(dataV.getV8Cp95())?0.0f:dataV.getV8Cp95()); - influxDBDataV.setV9(Objects.isNull(dataV.getV9Cp95())?0.0f:dataV.getV9Cp95()); - influxDBDataV.setV10(Objects.isNull(dataV.getV10Cp95())?0.0f:dataV.getV10Cp95()); - influxDBDataV.setV11(Objects.isNull(dataV.getV11Cp95())?0.0f:dataV.getV11Cp95()); - influxDBDataV.setV12(Objects.isNull(dataV.getV12Cp95())?0.0f:dataV.getV12Cp95()); - influxDBDataV.setV13(Objects.isNull(dataV.getV13Cp95())?0.0f:dataV.getV13Cp95()); - influxDBDataV.setV14(Objects.isNull(dataV.getV14Cp95())?0.0f:dataV.getV14Cp95()); - influxDBDataV.setV15(Objects.isNull(dataV.getV15Cp95())?0.0f:dataV.getV15Cp95()); - influxDBDataV.setV16(Objects.isNull(dataV.getV16Cp95())?0.0f:dataV.getV16Cp95()); - influxDBDataV.setV17(Objects.isNull(dataV.getV17Cp95())?0.0f:dataV.getV17Cp95()); - influxDBDataV.setV18(Objects.isNull(dataV.getV18Cp95())?0.0f:dataV.getV18Cp95()); - influxDBDataV.setV19(Objects.isNull(dataV.getV19Cp95())?0.0f:dataV.getV19Cp95()); - influxDBDataV.setV20(Objects.isNull(dataV.getV20Cp95())?0.0f:dataV.getV20Cp95()); - influxDBDataV.setV21(Objects.isNull(dataV.getV21Cp95())?0.0f:dataV.getV21Cp95()); - influxDBDataV.setV22(Objects.isNull(dataV.getV22Cp95())?0.0f:dataV.getV22Cp95()); - influxDBDataV.setV23(Objects.isNull(dataV.getV23Cp95())?0.0f:dataV.getV23Cp95()); - influxDBDataV.setV24(Objects.isNull(dataV.getV24Cp95())?0.0f:dataV.getV24Cp95()); - influxDBDataV.setV25(Objects.isNull(dataV.getV25Cp95())?0.0f:dataV.getV25Cp95()); - influxDBDataV.setV26(Objects.isNull(dataV.getV26Cp95())?0.0f:dataV.getV26Cp95()); - influxDBDataV.setV27(Objects.isNull(dataV.getV27Cp95())?0.0f:dataV.getV27Cp95()); - influxDBDataV.setV28(Objects.isNull(dataV.getV28Cp95())?0.0f:dataV.getV28Cp95()); - influxDBDataV.setV29(Objects.isNull(dataV.getV29Cp95())?0.0f:dataV.getV29Cp95()); - influxDBDataV.setV30(Objects.isNull(dataV.getV30Cp95())?0.0f:dataV.getV30Cp95()); - influxDBDataV.setV31(Objects.isNull(dataV.getV31Cp95())?0.0f:dataV.getV31Cp95()); - influxDBDataV.setV32(Objects.isNull(dataV.getV32Cp95())?0.0f:dataV.getV32Cp95()); - influxDBDataV.setV33(Objects.isNull(dataV.getV33Cp95())?0.0f:dataV.getV33Cp95()); - influxDBDataV.setV34(Objects.isNull(dataV.getV34Cp95())?0.0f:dataV.getV34Cp95()); - influxDBDataV.setV35(Objects.isNull(dataV.getV35Cp95())?0.0f:dataV.getV35Cp95()); - influxDBDataV.setV36(Objects.isNull(dataV.getV36Cp95())?0.0f:dataV.getV36Cp95()); - influxDBDataV.setV37(Objects.isNull(dataV.getV37Cp95())?0.0f:dataV.getV37Cp95()); - influxDBDataV.setV38(Objects.isNull(dataV.getV38Cp95())?0.0f:dataV.getV38Cp95()); - influxDBDataV.setV39(Objects.isNull(dataV.getV39Cp95())?0.0f:dataV.getV39Cp95()); - influxDBDataV.setV40(Objects.isNull(dataV.getV40Cp95())?0.0f:dataV.getV40Cp95()); - influxDBDataV.setV41(Objects.isNull(dataV.getV41Cp95())?0.0f:dataV.getV41Cp95()); - influxDBDataV.setV42(Objects.isNull(dataV.getV42Cp95())?0.0f:dataV.getV42Cp95()); - influxDBDataV.setV43(Objects.isNull(dataV.getV43Cp95())?0.0f:dataV.getV43Cp95()); - influxDBDataV.setV44(Objects.isNull(dataV.getV44Cp95())?0.0f:dataV.getV44Cp95()); - influxDBDataV.setV45(Objects.isNull(dataV.getV45Cp95())?0.0f:dataV.getV45Cp95()); - influxDBDataV.setV46(Objects.isNull(dataV.getV46Cp95())?0.0f:dataV.getV46Cp95()); - influxDBDataV.setV47(Objects.isNull(dataV.getV47Cp95())?0.0f:dataV.getV47Cp95()); - influxDBDataV.setV48(Objects.isNull(dataV.getV48Cp95())?0.0f:dataV.getV48Cp95()); - influxDBDataV.setV49(Objects.isNull(dataV.getV49Cp95())?0.0f:dataV.getV49Cp95()); - influxDBDataV.setV50(Objects.isNull(dataV.getV50Cp95())?0.0f:dataV.getV50Cp95()); + influxDBDataV.setV1(Objects.isNull(dataV.getV1Cp95())?0.0:dataV.getV1Cp95()); + influxDBDataV.setV2(Objects.isNull(dataV.getV2Cp95())?0.0:dataV.getV2Cp95()); + influxDBDataV.setV3(Objects.isNull(dataV.getV3Cp95())?0.0:dataV.getV3Cp95()); + influxDBDataV.setV4(Objects.isNull(dataV.getV4Cp95())?0.0:dataV.getV4Cp95()); + influxDBDataV.setV5(Objects.isNull(dataV.getV5Cp95())?0.0:dataV.getV5Cp95()); + influxDBDataV.setV6(Objects.isNull(dataV.getV6Cp95())?0.0:dataV.getV6Cp95()); + influxDBDataV.setV7(Objects.isNull(dataV.getV7Cp95())?0.0:dataV.getV7Cp95()); + influxDBDataV.setV8(Objects.isNull(dataV.getV8Cp95())?0.0:dataV.getV8Cp95()); + influxDBDataV.setV9(Objects.isNull(dataV.getV9Cp95())?0.0:dataV.getV9Cp95()); + influxDBDataV.setV10(Objects.isNull(dataV.getV10Cp95())?0.0:dataV.getV10Cp95()); + influxDBDataV.setV11(Objects.isNull(dataV.getV11Cp95())?0.0:dataV.getV11Cp95()); + influxDBDataV.setV12(Objects.isNull(dataV.getV12Cp95())?0.0:dataV.getV12Cp95()); + influxDBDataV.setV13(Objects.isNull(dataV.getV13Cp95())?0.0:dataV.getV13Cp95()); + influxDBDataV.setV14(Objects.isNull(dataV.getV14Cp95())?0.0:dataV.getV14Cp95()); + influxDBDataV.setV15(Objects.isNull(dataV.getV15Cp95())?0.0:dataV.getV15Cp95()); + influxDBDataV.setV16(Objects.isNull(dataV.getV16Cp95())?0.0:dataV.getV16Cp95()); + influxDBDataV.setV17(Objects.isNull(dataV.getV17Cp95())?0.0:dataV.getV17Cp95()); + influxDBDataV.setV18(Objects.isNull(dataV.getV18Cp95())?0.0:dataV.getV18Cp95()); + influxDBDataV.setV19(Objects.isNull(dataV.getV19Cp95())?0.0:dataV.getV19Cp95()); + influxDBDataV.setV20(Objects.isNull(dataV.getV20Cp95())?0.0:dataV.getV20Cp95()); + influxDBDataV.setV21(Objects.isNull(dataV.getV21Cp95())?0.0:dataV.getV21Cp95()); + influxDBDataV.setV22(Objects.isNull(dataV.getV22Cp95())?0.0:dataV.getV22Cp95()); + influxDBDataV.setV23(Objects.isNull(dataV.getV23Cp95())?0.0:dataV.getV23Cp95()); + influxDBDataV.setV24(Objects.isNull(dataV.getV24Cp95())?0.0:dataV.getV24Cp95()); + influxDBDataV.setV25(Objects.isNull(dataV.getV25Cp95())?0.0:dataV.getV25Cp95()); + influxDBDataV.setV26(Objects.isNull(dataV.getV26Cp95())?0.0:dataV.getV26Cp95()); + influxDBDataV.setV27(Objects.isNull(dataV.getV27Cp95())?0.0:dataV.getV27Cp95()); + influxDBDataV.setV28(Objects.isNull(dataV.getV28Cp95())?0.0:dataV.getV28Cp95()); + influxDBDataV.setV29(Objects.isNull(dataV.getV29Cp95())?0.0:dataV.getV29Cp95()); + influxDBDataV.setV30(Objects.isNull(dataV.getV30Cp95())?0.0:dataV.getV30Cp95()); + influxDBDataV.setV31(Objects.isNull(dataV.getV31Cp95())?0.0:dataV.getV31Cp95()); + influxDBDataV.setV32(Objects.isNull(dataV.getV32Cp95())?0.0:dataV.getV32Cp95()); + influxDBDataV.setV33(Objects.isNull(dataV.getV33Cp95())?0.0:dataV.getV33Cp95()); + influxDBDataV.setV34(Objects.isNull(dataV.getV34Cp95())?0.0:dataV.getV34Cp95()); + influxDBDataV.setV35(Objects.isNull(dataV.getV35Cp95())?0.0:dataV.getV35Cp95()); + influxDBDataV.setV36(Objects.isNull(dataV.getV36Cp95())?0.0:dataV.getV36Cp95()); + influxDBDataV.setV37(Objects.isNull(dataV.getV37Cp95())?0.0:dataV.getV37Cp95()); + influxDBDataV.setV38(Objects.isNull(dataV.getV38Cp95())?0.0:dataV.getV38Cp95()); + influxDBDataV.setV39(Objects.isNull(dataV.getV39Cp95())?0.0:dataV.getV39Cp95()); + influxDBDataV.setV40(Objects.isNull(dataV.getV40Cp95())?0.0:dataV.getV40Cp95()); + influxDBDataV.setV41(Objects.isNull(dataV.getV41Cp95())?0.0:dataV.getV41Cp95()); + influxDBDataV.setV42(Objects.isNull(dataV.getV42Cp95())?0.0:dataV.getV42Cp95()); + influxDBDataV.setV43(Objects.isNull(dataV.getV43Cp95())?0.0:dataV.getV43Cp95()); + influxDBDataV.setV44(Objects.isNull(dataV.getV44Cp95())?0.0:dataV.getV44Cp95()); + influxDBDataV.setV45(Objects.isNull(dataV.getV45Cp95())?0.0:dataV.getV45Cp95()); + influxDBDataV.setV46(Objects.isNull(dataV.getV46Cp95())?0.0:dataV.getV46Cp95()); + influxDBDataV.setV47(Objects.isNull(dataV.getV47Cp95())?0.0:dataV.getV47Cp95()); + influxDBDataV.setV48(Objects.isNull(dataV.getV48Cp95())?0.0:dataV.getV48Cp95()); + influxDBDataV.setV49(Objects.isNull(dataV.getV49Cp95())?0.0:dataV.getV49Cp95()); + influxDBDataV.setV50(Objects.isNull(dataV.getV50Cp95())?0.0:dataV.getV50Cp95()); } diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/pojo/dto/CommonMinuteDto.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/pojo/dto/CommonMinuteDto.java new file mode 100644 index 0000000..9b27351 --- /dev/null +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/pojo/dto/CommonMinuteDto.java @@ -0,0 +1,44 @@ +package com.njcn.dataProcess.pojo.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author xy + * 分钟数据入参实体 + */ +@Data +public class CommonMinuteDto implements Serializable { + + @JsonFormat(pattern = "yyyy-MM-dd") + private String time; + + @ApiModelProperty("监测点Id") + private String lineId; + + private List phasicTypeList; + + @Data + public static class PhasicType { + + @ApiModelProperty("相别,'A'表示A相,'B'表示B相,'C'表示C相,'T'表示总, 'M'表示无相别") + private String phasicType; + + private List valueTypeList; + } + + + @Data + public static class ValueType { + + @ApiModelProperty("数据类型 最大值:max、最小值:min、平均值:avg、95值:cp95") + private String valueType; + + @ApiModelProperty("数据集合") + private List> valueList; + } +} diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/pojo/dto/DataVDto.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/pojo/dto/DataVDto.java new file mode 100644 index 0000000..83f8b12 --- /dev/null +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/pojo/dto/DataVDto.java @@ -0,0 +1,172 @@ +package com.njcn.dataProcess.pojo.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author xy + */ +@Data +public class DataVDto implements Serializable { + + @JsonFormat(pattern = "yyyy-MM-dd") + private String time; + + @ApiModelProperty("监测点Id") + private String lineId; + + @ApiModelProperty("相别,'A'表示A相,'B'表示B相,'C'表示C相,'T'表示总, 'M'表示无相别") + private String phasicType; + + @ApiModelProperty("数据类型 最大值:max、最小值:min、平均值:avg、95值:cp95") + private String valueType; + + @ApiModelProperty("数据质量标志(0-表示是正常数据、1-表示是错误数据、2-表示是有事件的数据)数据库默认是0,污染数据不参与报表统计") + private Integer qualityFlag; + + @ApiModelProperty("频率") + private Double freq; + + @ApiModelProperty("频率偏差") + private Double freqDev; + + @ApiModelProperty("相电压有效值") + private Double rms; + + @ApiModelProperty("线电压有效值") + private Double rmsLvr; + + @ApiModelProperty("电压上偏差") + private Double vuDev; + + @ApiModelProperty("电压下偏差") + private Double vlDev; + + @ApiModelProperty("负序电压") + private Double vNeg; + + @ApiModelProperty("正序电压") + private Double vPos; + + @ApiModelProperty("零序电压") + private Double vZero; + + @ApiModelProperty("电压总谐波畸变率") + private Double vThd; + + @ApiModelProperty("三相电压不平衡度") + private Double vUnbalance; + + @ApiModelProperty("基波电压幅值") + private Double v1; + + @ApiModelProperty("2次谐波电压幅值") + private Double v2; + + @ApiModelProperty("3次谐波电压幅值") + private Double v3; + + @ApiModelProperty("4次谐波电压幅值") + private Double v4; + + @ApiModelProperty("5次谐波电压幅值") + private Double v5; + + @ApiModelProperty("6次谐波电压幅值") + private Double v6; + + @ApiModelProperty("7次谐波电压幅值") + private Double v7; + + @ApiModelProperty("8次谐波电压幅值") + private Double v8; + + private Double v9; + + private Double v10; + + private Double v11; + + private Double v12; + + private Double v13; + + private Double v14; + + private Double v15; + + private Double v16; + + private Double v17; + + private Double v18; + + private Double v19; + + private Double v20; + + private Double v21; + + private Double v22; + + private Double v23; + + private Double v24; + + private Double v25; + + private Double v26; + + private Double v27; + + private Double v28; + + private Double v29; + + private Double v30; + + private Double v31; + + private Double v32; + + private Double v33; + + private Double v34; + + private Double v35; + + private Double v36; + + private Double v37; + + private Double v38; + + private Double v39; + + private Double v40; + + private Double v41; + + private Double v42; + + private Double v43; + + private Double v44; + + private Double v45; + + private Double v46; + + private Double v47; + + private Double v48; + + private Double v49; + + @ApiModelProperty("50次谐波电压幅值") + private Double v50; + +} diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/pojo/po/RStatDataVD.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/pojo/po/RStatDataVD.java new file mode 100644 index 0000000..ca7e240 --- /dev/null +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/pojo/po/RStatDataVD.java @@ -0,0 +1,223 @@ +package com.njcn.dataProcess.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDate; + +/** + * 类的介绍: + * + * @author xy + * @version 1.0.0 + */ +@Data +@TableName(value = "r_stat_data_v_d") +public class RStatDataVD implements Serializable { + + @MppMultiId + @TableField(value = "time") + private LocalDate time; + + @MppMultiId + @TableField(value = "line_id") + private String lineId; + + @MppMultiId + @TableField(value = "phasic_type") + private String phasicType; + + @MppMultiId + @TableField(value = "value_type") + private String valueType; + + @TableField(value = "quality_flag") + private Integer qualityFlag; + + @TableField(value = "freq") + private Double freq; + + @TableField(value = "freq_dev") + private Double freqDev; + + @TableField(value = "rms") + private Double rms; + + @TableField(value = "rms_lvr") + private Double rmsLvr; + + @TableField(value = "v_neg") + private Double vNeg; + + @TableField(value = "v_pos") + private Double vPos; + + @TableField(value = "v_thd") + private Double vThd; + + @TableField(value = "v_unbalance") + private Double vUnbalance; + + @TableField(value = "v_zero") + private Double vZero; + + @TableField(value = "vl_dev") + private Double vlDev; + + @TableField(value = "vu_dev") + private Double vuDev; + + @TableField(value = "v_1") + private Double v1; + + @TableField(value = "v_2") + private Double v2; + + @TableField(value = "v_3") + private Double v3; + + @TableField(value = "v_4") + private Double v4; + + @TableField(value = "v_5") + private Double v5; + + @TableField(value = "v_6") + private Double v6; + + @TableField(value = "v_7") + private Double v7; + + @TableField(value = "v_8") + private Double v8; + + @TableField(value = "v_9") + private Double v9; + + @TableField(value = "v_10") + private Double v10; + + @TableField(value = "v_11") + private Double v11; + + @TableField(value = "v_12") + private Double v12; + + @TableField(value = "v_13") + private Double v13; + + @TableField(value = "v_14") + private Double v14; + + @TableField(value = "v_15") + private Double v15; + + @TableField(value = "v_16") + private Double v16; + + @TableField(value = "v_17") + private Double v17; + + @TableField(value = "v_18") + private Double v18; + + @TableField(value = "v_19") + private Double v19; + + @TableField(value = "v_20") + private Double v20; + + @TableField(value = "v_21") + private Double v21; + + @TableField(value = "v_22") + private Double v22; + + @TableField(value = "v_23") + private Double v23; + + @TableField(value = "v_24") + private Double v24; + + @TableField(value = "v_25") + private Double v25; + + @TableField(value = "v_26") + private Double v26; + + @TableField(value = "v_27") + private Double v27; + + @TableField(value = "v_28") + private Double v28; + + @TableField(value = "v_29") + private Double v29; + + @TableField(value = "v_30") + private Double v30; + + @TableField(value = "v_31") + private Double v31; + + @TableField(value = "v_32") + private Double v32; + + @TableField(value = "v_33") + private Double v33; + + @TableField(value = "v_34") + private Double v34; + + @TableField(value = "v_35") + private Double v35; + + @TableField(value = "v_36") + private Double v36; + + @TableField(value = "v_37") + private Double v37; + + @TableField(value = "v_38") + private Double v38; + + @TableField(value = "v_39") + private Double v39; + + @TableField(value = "v_40") + private Double v40; + + @TableField(value = "v_41") + private Double v41; + + @TableField(value = "v_42") + private Double v42; + + @TableField(value = "v_43") + private Double v43; + + @TableField(value = "v_44") + private Double v44; + + @TableField(value = "v_45") + private Double v45; + + @TableField(value = "v_46") + private Double v46; + + @TableField(value = "v_47") + private Double v47; + + @TableField(value = "v_48") + private Double v48; + + @TableField(value = "v_49") + private Double v49; + + @TableField(value = "v_50") + private Double v50; + +} diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/util/TimeUtils.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/util/TimeUtils.java new file mode 100644 index 0000000..fb859b4 --- /dev/null +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/util/TimeUtils.java @@ -0,0 +1,69 @@ +package com.njcn.dataProcess.util; + +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + * @author xy + * @description 时间、日期转换的公共方法 + */ + +public class TimeUtils { + + private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + /** + * String类型的yyyy-MM-dd HH:mm:ss转成yyyy-MM-dd + * @param time + * @return LocalDate + */ + public static LocalDate LocalDataTimeToLocalDate1(String time) { + LocalDateTime dateTime = LocalDateTime.parse(time, DATE_TIME_FORMATTER); + return dateTime.toLocalDate(); + } + + /** + * String类型的yyyy-MM-dd转成yyyy-MM-dd + * @param time + * @return LocalDate + */ + public static LocalDate LocalDataTimeToLocalDate2(String time) { + return LocalDate.parse(time, DATE_FORMATTER); + } + + /** + * String类型的yyyy-MM-dd HH:mm:ss转成yyyy-MM-dd + * @param time + * @return String + */ + public static String StringTimeToString(String time) { + LocalDateTime dateTime = LocalDateTime.parse(time, DATE_TIME_FORMATTER); + return dateTime.format(DATE_FORMATTER); + } + + /** + * 根据日期获取当天零点时间 + * String类型的yyyy-MM-dd转成yyyy-MM-dd HH:mm:ss + */ + public static String getBeginOfDay(String time) { + return LocalDateTimeUtil.format( + LocalDateTimeUtil.beginOfDay( + LocalDateTimeUtil.parse(time, DatePattern.NORM_DATE_PATTERN)), DatePattern.NORM_DATETIME_PATTERN); + } + + /** + * 根据日期获取当天结束时间 + * String类型的yyyy-MM-dd转成yyyy-MM-dd HH:mm:ss + */ + public static String getEndOfDay(String time) { + return LocalDateTimeUtil.format( + LocalDateTimeUtil.endOfDay( + LocalDateTimeUtil.parse(time, DatePattern.NORM_DATE_PATTERN)), DatePattern.NORM_DATETIME_PATTERN); + } + +} diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataVController.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataVController.java index c4dd39a..e34706b 100644 --- a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataVController.java +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/DataVController.java @@ -11,6 +11,8 @@ import com.njcn.dataProcess.dto.DataVFiveItemDTO; import com.njcn.dataProcess.annotation.InsertBean; import com.njcn.dataProcess.annotation.QueryBean; import com.njcn.dataProcess.param.LineCountEvaluateParam; +import com.njcn.dataProcess.pojo.dto.CommonMinuteDto; +import com.njcn.dataProcess.pojo.dto.DataVDto; import com.njcn.dataProcess.service.IDataV; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; @@ -73,9 +75,23 @@ public class DataVController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, localDateTimeList, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.QUERY) + @PostMapping("/getBaseData") + @ApiOperation("获取算法基础数据") + public HttpResult> getBaseData(@RequestBody LineCountEvaluateParam lineParam) { + String methodDescribe = getMethodDescribe("getBaseData"); + List data = dataVQuery.getBaseData(lineParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, data, methodDescribe); + } - - + @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD) + @PostMapping("/addList") + @ApiOperation("批量插入数据") + public HttpResult addList(@RequestBody List dataVDtoList) { + String methodDescribe = getMethodDescribe("addList"); + dataVInsert.addList(dataVDtoList); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "", methodDescribe); + } } diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/dao/relation/mapper/RStatDataVRelationMapper.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/dao/relation/mapper/RStatDataVRelationMapper.java new file mode 100644 index 0000000..b8cc817 --- /dev/null +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/dao/relation/mapper/RStatDataVRelationMapper.java @@ -0,0 +1,16 @@ +package com.njcn.dataProcess.dao.relation.mapper; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.dataProcess.pojo.po.RStatDataVD; + + +/** + *

+ * Mapper 接口 + *

+ */ +public interface RStatDataVRelationMapper extends MppBaseMapper { + + + +} diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IDataV.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IDataV.java index 603f475..d221373 100644 --- a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IDataV.java +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IDataV.java @@ -1,8 +1,12 @@ package com.njcn.dataProcess.service; +import com.github.jeffreyning.mybatisplus.service.IMppService; import com.njcn.dataProcess.dto.DataVDTO; import com.njcn.dataProcess.dto.DataVFiveItemDTO; import com.njcn.dataProcess.param.LineCountEvaluateParam; +import com.njcn.dataProcess.pojo.dto.CommonMinuteDto; +import com.njcn.dataProcess.pojo.dto.DataVDto; +import com.njcn.dataProcess.pojo.po.RStatDataVD; import java.time.LocalDateTime; import java.util.List; @@ -13,7 +17,7 @@ import java.util.Map; * @version 1.0 * @data 2024/11/7 10:54 */ -public interface IDataV { +public interface IDataV extends IMppService { /** * 根据监测点时间范围获取监测点统计数据 @@ -25,4 +29,15 @@ public interface IDataV { void batchInsertion(List dataVDTOList ); List monitoringTime(String lineId, String localData); + + /** + * 获取监测点原始数据 + * @param lineParam 监测点参数 + */ + List getBaseData(LineCountEvaluateParam lineParam); + + /** + * 批量插入数据 + */ + void addList(List dataVDtoList); } diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataVImpl.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataVImpl.java index 8c59681..dc54f33 100644 --- a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataVImpl.java +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/influxdb/InfluxdbDataVImpl.java @@ -3,8 +3,11 @@ package com.njcn.dataProcess.service.impl.influxdb; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.ListUtil; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.common.utils.HarmonicTimesUtil; import com.njcn.dataProcess.constant.InfluxDBTableConstant; import com.njcn.dataProcess.constant.PhaseType; +import com.njcn.dataProcess.dao.relation.mapper.RStatDataVRelationMapper; import com.njcn.dataProcess.dto.DataVDTO; import com.njcn.dataProcess.dto.DataVFiveItemDTO; import com.njcn.dataProcess.dto.LineDataVFiveItemDTO; @@ -12,17 +15,19 @@ import com.njcn.dataProcess.dto.LineDataVFiveItemDTO; import com.njcn.dataProcess.dao.imapper.DataVMapper; import com.njcn.dataProcess.param.LineCountEvaluateParam; import com.njcn.dataProcess.po.influx.DataV; +import com.njcn.dataProcess.pojo.dto.CommonMinuteDto; +import com.njcn.dataProcess.pojo.dto.DataVDto; +import com.njcn.dataProcess.pojo.po.RStatDataVD; import com.njcn.dataProcess.service.IDataV; +import com.njcn.dataProcess.util.TimeUtils; +import com.njcn.influx.constant.InfluxDbSqlConstant; import com.njcn.influx.query.InfluxQueryWrapper; import org.apache.commons.collections4.ListUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -31,7 +36,7 @@ import java.util.stream.Collectors; * @data 2024/11/7 11:02 */ @Service("InfluxdbDataVImpl") -public class InfluxdbDataVImpl implements IDataV { +public class InfluxdbDataVImpl extends MppServiceImpl implements IDataV { @Resource private DataVMapper dataVMapper; @@ -108,4 +113,143 @@ public class InfluxdbDataVImpl implements IDataV { return null; } + @Override + public List getBaseData(LineCountEvaluateParam lineParam) { + List result = new ArrayList<>(); + List dataVList = getMinuteDataV(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime()); + if (CollectionUtil.isNotEmpty(dataVList)) { + String time = TimeUtils.StringTimeToString(lineParam.getStartTime()); + //以监测点分组 + Map> lineMap = dataVList.stream().collect(Collectors.groupingBy(DataV::getLineId)); + lineMap.forEach((line,lineList)->{ + CommonMinuteDto dto = new CommonMinuteDto(); + dto.setLineId(line); + dto.setTime(time); + //以相别分组 + Map> phasicTypeMap = lineList.stream().collect(Collectors.groupingBy(DataV::getPhasicType)); + List phasicTypes = new ArrayList<>(); + phasicTypeMap.forEach((phasicType,phasicTypeList)->{ + CommonMinuteDto.PhasicType type = new CommonMinuteDto.PhasicType(); + type.setPhasicType(phasicType); + //以数据类型分组 + Map> valueTypeMap = phasicTypeList.stream().collect(Collectors.groupingBy(DataV::getValueType)); + List valueTypes = new ArrayList<>(); + valueTypeMap.forEach((valueType,valueTypeList)->{ + CommonMinuteDto.ValueType value = new CommonMinuteDto.ValueType(); + value.setValueType(valueType); + //todo 规定好集合指标参数 + List data1 = valueTypeList.stream().map(DataV::getFreq).collect(Collectors.toList()); + List data2 = valueTypeList.stream().map(DataV::getFreqDev).collect(Collectors.toList()); + List data3 = valueTypeList.stream().map(DataV::getRms).collect(Collectors.toList()); + List data4 = valueTypeList.stream().map(DataV::getRmsLvr).collect(Collectors.toList()); + List data5 = valueTypeList.stream().map(DataV::getVNeg).collect(Collectors.toList()); + List data6 = valueTypeList.stream().map(DataV::getVPos).collect(Collectors.toList()); + List data7 = valueTypeList.stream().map(DataV::getVThd).collect(Collectors.toList()); + List data8 = valueTypeList.stream().map(DataV::getVUnbalance).collect(Collectors.toList()); + List data9 = valueTypeList.stream().map(DataV::getVZero).collect(Collectors.toList()); + List data10 = valueTypeList.stream().map(DataV::getVlDev).collect(Collectors.toList()); + List data11 = valueTypeList.stream().map(DataV::getVuDev).collect(Collectors.toList()); + + List data12 = valueTypeList.stream().map(DataV::getV1).collect(Collectors.toList()); + List data13 = valueTypeList.stream().map(DataV::getV2).collect(Collectors.toList()); + List data14 = valueTypeList.stream().map(DataV::getV3).collect(Collectors.toList()); + List data15 = valueTypeList.stream().map(DataV::getV4).collect(Collectors.toList()); + List data16 = valueTypeList.stream().map(DataV::getV5).collect(Collectors.toList()); + List data17 = valueTypeList.stream().map(DataV::getV6).collect(Collectors.toList()); + List data18 = valueTypeList.stream().map(DataV::getV7).collect(Collectors.toList()); + List data19 = valueTypeList.stream().map(DataV::getV8).collect(Collectors.toList()); + List data20 = valueTypeList.stream().map(DataV::getV9).collect(Collectors.toList()); + List data21 = valueTypeList.stream().map(DataV::getV10).collect(Collectors.toList()); + List data22 = valueTypeList.stream().map(DataV::getV11).collect(Collectors.toList()); + List data23 = valueTypeList.stream().map(DataV::getV12).collect(Collectors.toList()); + List data24 = valueTypeList.stream().map(DataV::getV13).collect(Collectors.toList()); + List data25 = valueTypeList.stream().map(DataV::getV14).collect(Collectors.toList()); + List data26 = valueTypeList.stream().map(DataV::getV15).collect(Collectors.toList()); + List data27 = valueTypeList.stream().map(DataV::getV16).collect(Collectors.toList()); + List data28 = valueTypeList.stream().map(DataV::getV17).collect(Collectors.toList()); + List data29 = valueTypeList.stream().map(DataV::getV18).collect(Collectors.toList()); + List data30 = valueTypeList.stream().map(DataV::getV19).collect(Collectors.toList()); + List data31 = valueTypeList.stream().map(DataV::getV20).collect(Collectors.toList()); + List data32 = valueTypeList.stream().map(DataV::getV21).collect(Collectors.toList()); + List data33 = valueTypeList.stream().map(DataV::getV22).collect(Collectors.toList()); + List data34 = valueTypeList.stream().map(DataV::getV23).collect(Collectors.toList()); + List data35 = valueTypeList.stream().map(DataV::getV24).collect(Collectors.toList()); + List data36 = valueTypeList.stream().map(DataV::getV25).collect(Collectors.toList()); + List data37 = valueTypeList.stream().map(DataV::getV26).collect(Collectors.toList()); + List data38 = valueTypeList.stream().map(DataV::getV27).collect(Collectors.toList()); + List data39 = valueTypeList.stream().map(DataV::getV28).collect(Collectors.toList()); + List data40 = valueTypeList.stream().map(DataV::getV29).collect(Collectors.toList()); + List data41 = valueTypeList.stream().map(DataV::getV30).collect(Collectors.toList()); + List data42 = valueTypeList.stream().map(DataV::getV31).collect(Collectors.toList()); + List data43 = valueTypeList.stream().map(DataV::getV32).collect(Collectors.toList()); + List data44 = valueTypeList.stream().map(DataV::getV33).collect(Collectors.toList()); + List data45 = valueTypeList.stream().map(DataV::getV34).collect(Collectors.toList()); + List data46 = valueTypeList.stream().map(DataV::getV35).collect(Collectors.toList()); + List data47 = valueTypeList.stream().map(DataV::getV36).collect(Collectors.toList()); + List data48 = valueTypeList.stream().map(DataV::getV37).collect(Collectors.toList()); + List data49 = valueTypeList.stream().map(DataV::getV38).collect(Collectors.toList()); + List data50 = valueTypeList.stream().map(DataV::getV39).collect(Collectors.toList()); + List data51 = valueTypeList.stream().map(DataV::getV40).collect(Collectors.toList()); + List data52 = valueTypeList.stream().map(DataV::getV41).collect(Collectors.toList()); + List data53 = valueTypeList.stream().map(DataV::getV42).collect(Collectors.toList()); + List data54 = valueTypeList.stream().map(DataV::getV43).collect(Collectors.toList()); + List data55 = valueTypeList.stream().map(DataV::getV44).collect(Collectors.toList()); + List data56 = valueTypeList.stream().map(DataV::getV45).collect(Collectors.toList()); + List data57 = valueTypeList.stream().map(DataV::getV46).collect(Collectors.toList()); + List data58 = valueTypeList.stream().map(DataV::getV47).collect(Collectors.toList()); + List data59 = valueTypeList.stream().map(DataV::getV48).collect(Collectors.toList()); + List data60 = valueTypeList.stream().map(DataV::getV49).collect(Collectors.toList()); + List data61 = valueTypeList.stream().map(DataV::getV50).collect(Collectors.toList()); + + List> lists = Arrays.asList(data1,data2,data3,data4,data5,data6,data7,data8,data9,data10 + ,data11,data12,data13,data14,data15,data16,data17,data18,data19,data20 + ,data21,data22,data23,data24,data25,data26,data27,data28,data29,data30 + ,data31,data32,data33,data34,data35,data36,data37,data38,data39,data40 + ,data41,data42,data43,data44,data45,data46,data47,data48,data49,data50 + ,data51,data52,data53,data54,data55,data56,data57,data58,data59,data60 + ,data61); + value.setValueList(lists); + valueTypes.add(value); + }); + type.setValueTypeList(valueTypes); + phasicTypes.add(type); + }); + dto.setPhasicTypeList(phasicTypes); + result.add(dto); + }); + } + return result; + } + + @Override + public void addList(List dataVDtoList) { + + } + + /** + * 按监测点集合、时间条件获取dataV分钟数据 + */ + public List getMinuteDataV(List lineList, String startTime, String endTime) { + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class); + influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.V, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1)); + influxQueryWrapper.regular(DataV::getLineId, lineList) + .select(DataV::getLineId) + .select(DataV::getPhasicType) + .select(DataV::getValueType) + .select(DataV::getFreq) + .select(DataV::getFreqDev) + .select(DataV::getRms) + .select(DataV::getRmsLvr) + .select(DataV::getVNeg) + .select(DataV::getVPos) + .select(DataV::getVThd) + .select(DataV::getVUnbalance) + .select(DataV::getVZero) + .select(DataV::getVlDev) + .select(DataV::getVuDev) + .between(DataV::getTime, startTime, endTime); + System.out.println(influxQueryWrapper.generateSql()); + return dataVMapper.selectByQueryWrapper(influxQueryWrapper); + } + } diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/RelationDataVImpl.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/RelationDataVImpl.java index dc956f8..d3232b4 100644 --- a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/RelationDataVImpl.java +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/RelationDataVImpl.java @@ -1,14 +1,20 @@ package com.njcn.dataProcess.service.impl.relation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.dataProcess.dao.relation.mapper.RStatDataVRelationMapper; import com.njcn.dataProcess.dto.DataVDTO; import com.njcn.dataProcess.dto.DataVFiveItemDTO; import com.njcn.dataProcess.dao.relation.mapper.DataVRelationMapper; import com.njcn.dataProcess.param.LineCountEvaluateParam; import com.njcn.dataProcess.po.relation.DataV; +import com.njcn.dataProcess.pojo.dto.CommonMinuteDto; +import com.njcn.dataProcess.pojo.dto.DataVDto; +import com.njcn.dataProcess.pojo.po.RStatDataVD; import com.njcn.dataProcess.service.IDataV; import com.njcn.dataProcess.util.BeanFeildUtils; +import com.njcn.dataProcess.util.TimeUtils; import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.ListUtils; import org.springframework.beans.BeanUtils; @@ -16,6 +22,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -27,9 +35,11 @@ import java.util.stream.Collectors; */ @Service("RelationDataVImpl") @RequiredArgsConstructor -public class RelationDataVImpl implements IDataV { +public class RelationDataVImpl extends MppServiceImpl implements IDataV { @Resource private DataVRelationMapper dataVRelationMapper; + @Resource + private IDataV iDataV; @Override public Map> getLineCountEvaluate(LineCountEvaluateParam lineParam) { @@ -73,4 +83,22 @@ public class RelationDataVImpl implements IDataV { List result = dataVS.stream().map(DataV::getTimeid).distinct().collect(Collectors.toList()); return result; } + + @Override + public List getBaseData(LineCountEvaluateParam lineParam) { + return Collections.emptyList(); + } + + @Override + public void addList(List dataVDtoList) { + List result = new ArrayList<>(); + dataVDtoList.forEach(item->{ + RStatDataVD dataV = new RStatDataVD(); + dataV.setTime(TimeUtils.LocalDataTimeToLocalDate2(item.getTime())); + dataV.setPhasicType(item.getPhasicType()); + BeanUtils.copyProperties(item, dataV); + result.add(dataV); + }); + iDataV.saveOrUpdateBatchByMultiId(result); + } } diff --git a/data-processing/data-processing-boot/src/main/resources/bootstrap.yml b/data-processing/data-processing-boot/src/main/resources/bootstrap.yml index dda6359..66cce69 100644 --- a/data-processing/data-processing-boot/src/main/resources/bootstrap.yml +++ b/data-processing/data-processing-boot/src/main/resources/bootstrap.yml @@ -54,7 +54,7 @@ mqtt: data: source: - query: Relation + query: Influxdb insert: Relation #mybatis配置信息 mybatis-plus: