添加电压含有率

This commit is contained in:
hzj
2025-02-21 15:34:50 +08:00
parent 92d540e497
commit fa09ac7a67
13 changed files with 666 additions and 3 deletions

View File

@@ -47,6 +47,23 @@ public class MessageDataV {
@JsonProperty("MIN_VRMS")
private Double minVrms;
//95值 电压有效值
@JsonProperty("G_VRMS_LVR")
private Double gVrmsLvr;
//平均值 电压有效值
@JsonProperty("VRMS_LVR")
private Double vrmsLvr;
//最大值 电压有效值
@JsonProperty("MAX_VRMS_LVR")
private Double maxVrmsLvr;
//最小值 电压有效值
@JsonProperty("MIN_VRMS_LVR")
private Double minVrmsLvr;
//95值 电压总谐波畸变率
@JsonProperty("G_VTHD")
private Double gVthd;

View File

@@ -3,6 +3,7 @@ package com.njcn.stat.utils;
import com.njcn.dataProcess.dto.DataHarmphasicVDTO;
import com.njcn.dataProcess.dto.DataHarmrateVDTO;
import com.njcn.dataProcess.dto.DataInharmVDTO;
import com.njcn.dataProcess.dto.DataVDTO;
import com.njcn.stat.messagedto.MessageDataV;
@@ -278,7 +279,7 @@ public class BeanVConverter {
};
//T项
public static DataVDTO messageDataVTODataV(MessageDataVT messageDataVT){
public static DataVDTO messageDataVTODataV(MessageDataVT messageDataVT,MessageDataV messageDataVa,MessageDataV messageDataVb,MessageDataV messageDataVc){
DataVDTO dataVRelation = new DataVDTO();
if(Objects.nonNull(messageDataVT)){
dataVRelation.setFreq(messageDataVT.getFreq());
@@ -308,7 +309,29 @@ public class BeanVConverter {
dataVRelation.setVPosCp95(messageDataVT.getGvpseq());
dataVRelation.setVNegCp95(messageDataVT.getGvnseq());
dataVRelation.setVZeroCp95(messageDataVT.getGvzseq());
}
if(Objects.nonNull(messageDataVa)){
dataVRelation.setRmsab(messageDataVa.getVrmsLvr());
dataVRelation.setRmsabMax(messageDataVa.getMaxVrmsLvr());
dataVRelation.setRmsabMin(messageDataVa.getMinVrmsLvr());
dataVRelation.setRmsabCp95(messageDataVa.getGVrmsLvr());
}
if(Objects.nonNull(messageDataVb)){
dataVRelation.setRmsab(messageDataVb.getVrmsLvr());
dataVRelation.setRmsabMax(messageDataVb.getMaxVrmsLvr());
dataVRelation.setRmsabMin(messageDataVb.getMinVrmsLvr());
dataVRelation.setRmsabCp95(messageDataVb.getGVrmsLvr());
}
if(Objects.nonNull(messageDataVc)){
dataVRelation.setRmsbc(messageDataVc.getVrmsLvr());
dataVRelation.setRmsbcMax(messageDataVc.getMaxVrmsLvr());
dataVRelation.setRmsbcMin(messageDataVc.getMinVrmsLvr());
dataVRelation.setRmsbcCp95(messageDataVc.getGVrmsLvr());
}
return dataVRelation;
}
@@ -739,4 +762,213 @@ public class BeanVConverter {
}
public static DataHarmrateVDTO messageDataVTODataHarmprateV(MessageDataV a) {
DataHarmrateVDTO dataHarmrateVDTO = new DataHarmrateVDTO();
if(Objects.nonNull(a)){
dataHarmrateVDTO.setV2(a.getV2());
dataHarmrateVDTO.setV3(a.getV3());
dataHarmrateVDTO.setV4(a.getV4());
dataHarmrateVDTO.setV5(a.getV5());
dataHarmrateVDTO.setV6(a.getV6());
dataHarmrateVDTO.setV7(a.getV7());
dataHarmrateVDTO.setV8(a.getV8());
dataHarmrateVDTO.setV9(a.getV9());
dataHarmrateVDTO.setV10(a.getV10());
dataHarmrateVDTO.setV11(a.getV11());
dataHarmrateVDTO.setV12(a.getV12());
dataHarmrateVDTO.setV13(a.getV13());
dataHarmrateVDTO.setV14(a.getV14());
dataHarmrateVDTO.setV15(a.getV15());
dataHarmrateVDTO.setV16(a.getV16());
dataHarmrateVDTO.setV17(a.getV17());
dataHarmrateVDTO.setV18(a.getV18());
dataHarmrateVDTO.setV19(a.getV19());
dataHarmrateVDTO.setV20(a.getV20());
dataHarmrateVDTO.setV21(a.getV21());
dataHarmrateVDTO.setV22(a.getV22());
dataHarmrateVDTO.setV23(a.getV23());
dataHarmrateVDTO.setV24(a.getV24());
dataHarmrateVDTO.setV25(a.getV25());
dataHarmrateVDTO.setV26(a.getV26());
dataHarmrateVDTO.setV27(a.getV27());
dataHarmrateVDTO.setV28(a.getV28());
dataHarmrateVDTO.setV29(a.getV29());
dataHarmrateVDTO.setV30(a.getV30());
dataHarmrateVDTO.setV31(a.getV31());
dataHarmrateVDTO.setV32(a.getV32());
dataHarmrateVDTO.setV33(a.getV33());
dataHarmrateVDTO.setV34(a.getV34());
dataHarmrateVDTO.setV35(a.getV35());
dataHarmrateVDTO.setV36(a.getV36());
dataHarmrateVDTO.setV37(a.getV37());
dataHarmrateVDTO.setV38(a.getV38());
dataHarmrateVDTO.setV39(a.getV39());
dataHarmrateVDTO.setV40(a.getV40());
dataHarmrateVDTO.setV41(a.getV41());
dataHarmrateVDTO.setV42(a.getV42());
dataHarmrateVDTO.setV43(a.getV43());
dataHarmrateVDTO.setV44(a.getV44());
dataHarmrateVDTO.setV45(a.getV45());
dataHarmrateVDTO.setV46(a.getV46());
dataHarmrateVDTO.setV47(a.getV47());
dataHarmrateVDTO.setV48(a.getV48());
dataHarmrateVDTO.setV49(a.getV49());
dataHarmrateVDTO.setV50(a.getV50());
dataHarmrateVDTO.setV2Max(a.getMaxV2());
dataHarmrateVDTO.setV3Max(a.getMaxV3());
dataHarmrateVDTO.setV4Max(a.getMaxV4());
dataHarmrateVDTO.setV5Max(a.getMaxV5());
dataHarmrateVDTO.setV6Max(a.getMaxV6());
dataHarmrateVDTO.setV7Max(a.getMaxV7());
dataHarmrateVDTO.setV8Max(a.getMaxV8());
dataHarmrateVDTO.setV9Max(a.getMaxV9());
dataHarmrateVDTO.setV10Max(a.getMaxV10());
dataHarmrateVDTO.setV11Max(a.getMaxV11());
dataHarmrateVDTO.setV12Max(a.getMaxV12());
dataHarmrateVDTO.setV13Max(a.getMaxV13());
dataHarmrateVDTO.setV14Max(a.getMaxV14());
dataHarmrateVDTO.setV15Max(a.getMaxV15());
dataHarmrateVDTO.setV16Max(a.getMaxV16());
dataHarmrateVDTO.setV17Max(a.getMaxV17());
dataHarmrateVDTO.setV18Max(a.getMaxV18());
dataHarmrateVDTO.setV19Max(a.getMaxV19());
dataHarmrateVDTO.setV20Max(a.getMaxV20());
dataHarmrateVDTO.setV21Max(a.getMaxV21());
dataHarmrateVDTO.setV22Max(a.getMaxV22());
dataHarmrateVDTO.setV23Max(a.getMaxV23());
dataHarmrateVDTO.setV24Max(a.getMaxV24());
dataHarmrateVDTO.setV25Max(a.getMaxV25());
dataHarmrateVDTO.setV26Max(a.getMaxV26());
dataHarmrateVDTO.setV27Max(a.getMaxV27());
dataHarmrateVDTO.setV28Max(a.getMaxV28());
dataHarmrateVDTO.setV29Max(a.getMaxV29());
dataHarmrateVDTO.setV30Max(a.getMaxV30());
dataHarmrateVDTO.setV31Max(a.getMaxV31());
dataHarmrateVDTO.setV32Max(a.getMaxV32());
dataHarmrateVDTO.setV33Max(a.getMaxV33());
dataHarmrateVDTO.setV34Max(a.getMaxV34());
dataHarmrateVDTO.setV35Max(a.getMaxV35());
dataHarmrateVDTO.setV36Max(a.getMaxV36());
dataHarmrateVDTO.setV37Max(a.getMaxV37());
dataHarmrateVDTO.setV38Max(a.getMaxV38());
dataHarmrateVDTO.setV39Max(a.getMaxV39());
dataHarmrateVDTO.setV40Max(a.getMaxV40());
dataHarmrateVDTO.setV41Max(a.getMaxV41());
dataHarmrateVDTO.setV42Max(a.getMaxV42());
dataHarmrateVDTO.setV43Max(a.getMaxV43());
dataHarmrateVDTO.setV44Max(a.getMaxV44());
dataHarmrateVDTO.setV45Max(a.getMaxV45());
dataHarmrateVDTO.setV46Max(a.getMaxV46());
dataHarmrateVDTO.setV47Max(a.getMaxV47());
dataHarmrateVDTO.setV48Max(a.getMaxV48());
dataHarmrateVDTO.setV49Max(a.getMaxV49());
dataHarmrateVDTO.setV50Max(a.getMaxV50());
dataHarmrateVDTO.setV2Min(a.getMinV2());
dataHarmrateVDTO.setV3Min(a.getMinV3());
dataHarmrateVDTO.setV4Min(a.getMinV4());
dataHarmrateVDTO.setV5Min(a.getMinV5());
dataHarmrateVDTO.setV6Min(a.getMinV6());
dataHarmrateVDTO.setV7Min(a.getMinV7());
dataHarmrateVDTO.setV8Min(a.getMinV8());
dataHarmrateVDTO.setV9Min(a.getMinV9());
dataHarmrateVDTO.setV10Min(a.getMinV10());
dataHarmrateVDTO.setV11Min(a.getMinV11());
dataHarmrateVDTO.setV12Min(a.getMinV12());
dataHarmrateVDTO.setV13Min(a.getMinV13());
dataHarmrateVDTO.setV14Min(a.getMinV14());
dataHarmrateVDTO.setV15Min(a.getMinV15());
dataHarmrateVDTO.setV16Min(a.getMinV16());
dataHarmrateVDTO.setV17Min(a.getMinV17());
dataHarmrateVDTO.setV18Min(a.getMinV18());
dataHarmrateVDTO.setV19Min(a.getMinV19());
dataHarmrateVDTO.setV20Min(a.getMinV20());
dataHarmrateVDTO.setV21Min(a.getMinV21());
dataHarmrateVDTO.setV22Min(a.getMinV22());
dataHarmrateVDTO.setV23Min(a.getMinV23());
dataHarmrateVDTO.setV24Min(a.getMinV24());
dataHarmrateVDTO.setV25Min(a.getMinV25());
dataHarmrateVDTO.setV26Min(a.getMinV26());
dataHarmrateVDTO.setV27Min(a.getMinV27());
dataHarmrateVDTO.setV28Min(a.getMinV28());
dataHarmrateVDTO.setV29Min(a.getMinV29());
dataHarmrateVDTO.setV30Min(a.getMinV30());
dataHarmrateVDTO.setV31Min(a.getMinV31());
dataHarmrateVDTO.setV32Min(a.getMinV32());
dataHarmrateVDTO.setV33Min(a.getMinV33());
dataHarmrateVDTO.setV34Min(a.getMinV34());
dataHarmrateVDTO.setV35Min(a.getMinV35());
dataHarmrateVDTO.setV36Min(a.getMinV36());
dataHarmrateVDTO.setV37Min(a.getMinV37());
dataHarmrateVDTO.setV38Min(a.getMinV38());
dataHarmrateVDTO.setV39Min(a.getMinV39());
dataHarmrateVDTO.setV40Min(a.getMinV40());
dataHarmrateVDTO.setV41Min(a.getMinV41());
dataHarmrateVDTO.setV42Min(a.getMinV42());
dataHarmrateVDTO.setV43Min(a.getMinV43());
dataHarmrateVDTO.setV44Min(a.getMinV44());
dataHarmrateVDTO.setV45Min(a.getMinV45());
dataHarmrateVDTO.setV46Min(a.getMinV46());
dataHarmrateVDTO.setV47Min(a.getMinV47());
dataHarmrateVDTO.setV48Min(a.getMinV48());
dataHarmrateVDTO.setV49Min(a.getMinV49());
dataHarmrateVDTO.setV50Min(a.getMinV50());
dataHarmrateVDTO.setV2Cp95(a.getGv2());
dataHarmrateVDTO.setV3Cp95(a.getGv3());
dataHarmrateVDTO.setV4Cp95(a.getGv4());
dataHarmrateVDTO.setV5Cp95(a.getGv5());
dataHarmrateVDTO.setV6Cp95(a.getGv6());
dataHarmrateVDTO.setV7Cp95(a.getGv7());
dataHarmrateVDTO.setV8Cp95(a.getGv8());
dataHarmrateVDTO.setV9Cp95(a.getGv9());
dataHarmrateVDTO.setV10Cp95(a.getGv10());
dataHarmrateVDTO.setV11Cp95(a.getGv11());
dataHarmrateVDTO.setV12Cp95(a.getGv12());
dataHarmrateVDTO.setV13Cp95(a.getGv13());
dataHarmrateVDTO.setV14Cp95(a.getGv14());
dataHarmrateVDTO.setV15Cp95(a.getGv15());
dataHarmrateVDTO.setV16Cp95(a.getGv16());
dataHarmrateVDTO.setV17Cp95(a.getGv17());
dataHarmrateVDTO.setV18Cp95(a.getGv18());
dataHarmrateVDTO.setV19Cp95(a.getGv19());
dataHarmrateVDTO.setV20Cp95(a.getGv20());
dataHarmrateVDTO.setV21Cp95(a.getGv21());
dataHarmrateVDTO.setV22Cp95(a.getGv22());
dataHarmrateVDTO.setV23Cp95(a.getGv23());
dataHarmrateVDTO.setV24Cp95(a.getGv24());
dataHarmrateVDTO.setV25Cp95(a.getGv25());
dataHarmrateVDTO.setV26Cp95(a.getGv26());
dataHarmrateVDTO.setV27Cp95(a.getGv27());
dataHarmrateVDTO.setV28Cp95(a.getGv28());
dataHarmrateVDTO.setV29Cp95(a.getGv29());
dataHarmrateVDTO.setV30Cp95(a.getGv30());
dataHarmrateVDTO.setV31Cp95(a.getGv31());
dataHarmrateVDTO.setV32Cp95(a.getGv32());
dataHarmrateVDTO.setV33Cp95(a.getGv33());
dataHarmrateVDTO.setV34Cp95(a.getGv34());
dataHarmrateVDTO.setV35Cp95(a.getGv35());
dataHarmrateVDTO.setV36Cp95(a.getGv36());
dataHarmrateVDTO.setV37Cp95(a.getGv37());
dataHarmrateVDTO.setV38Cp95(a.getGv38());
dataHarmrateVDTO.setV39Cp95(a.getGv39());
dataHarmrateVDTO.setV40Cp95(a.getGv40());
dataHarmrateVDTO.setV41Cp95(a.getGv41());
dataHarmrateVDTO.setV42Cp95(a.getGv42());
dataHarmrateVDTO.setV43Cp95(a.getGv43());
dataHarmrateVDTO.setV44Cp95(a.getGv44());
dataHarmrateVDTO.setV45Cp95(a.getGv45());
dataHarmrateVDTO.setV46Cp95(a.getGv46());
dataHarmrateVDTO.setV47Cp95(a.getGv47());
dataHarmrateVDTO.setV48Cp95(a.getGv48());
dataHarmrateVDTO.setV49Cp95(a.getGv49());
dataHarmrateVDTO.setV50Cp95(a.getGv50());
}
return dataHarmrateVDTO;
}
}

View File

@@ -41,6 +41,7 @@ public class MessageAnalysisServiceImpl implements MessageAnalysisService {
//12张表数据
List<DataVDTO> dataVList = new ArrayList<>();
List<DataHarmphasicVDTO> dataHarmphasicVDTOList = new ArrayList<>();
List<DataHarmrateVDTO> dataHarmrateVDTOList = new ArrayList<>();
List<DataInharmVDTO> dataInharmVDTOList = new ArrayList<>();
List<DataIDTO> dataIDTOList = new ArrayList<>();
List<DataHarmphasicIDTO> dataHarmphasicIDTOList = new ArrayList<>();
@@ -70,8 +71,7 @@ public class MessageAnalysisServiceImpl implements MessageAnalysisService {
DataVDTO dataVa = BeanVConverter.messageDataVTODataV(v.getA());
DataVDTO dataVb = BeanVConverter.messageDataVTODataV(v.getB());
DataVDTO dataVc = BeanVConverter.messageDataVTODataV(v.getC());
DataVDTO dataVt = BeanVConverter.messageDataVTODataV(v.getT());
DataVDTO dataVt = BeanVConverter.messageDataVTODataV(v.getT(),v.getA(),v.getB(),v.getC());
dataVa.setTimeid(localDateTime);
dataVa.setLineid(lineId);
dataVa.setPhasicType("A");
@@ -135,6 +135,24 @@ public class MessageAnalysisServiceImpl implements MessageAnalysisService {
dataInharmVc.setPhasicType("C");
dataInharmVc.setQualityflag(flag);
DataHarmrateVDTO dataHarmrateVDTOa = BeanVConverter.messageDataVTODataHarmprateV(v.getA());
DataHarmrateVDTO dataHarmrateVDTOb = BeanVConverter.messageDataVTODataHarmprateV(v.getB());
DataHarmrateVDTO dataHarmrateVDTOc = BeanVConverter.messageDataVTODataHarmprateV(v.getC());
dataHarmrateVDTOa.setTimeid(localDateTime);
dataHarmrateVDTOa.setLineid(lineId);
dataHarmrateVDTOa.setPhasicType("A");
dataHarmrateVDTOa.setQualityflag(flag);
dataHarmrateVDTOb.setTimeid(localDateTime);
dataHarmrateVDTOb.setLineid(lineId);
dataHarmrateVDTOb.setPhasicType("B");
dataHarmrateVDTOb.setQualityflag(flag);
dataHarmrateVDTOc.setTimeid(localDateTime);
dataHarmrateVDTOc.setLineid(lineId);
dataHarmrateVDTOc.setPhasicType("C");
dataHarmrateVDTOc.setQualityflag(flag);
dataInharmVDTOList.add(dataInharmVa);
dataInharmVDTOList.add(dataInharmVb);
dataInharmVDTOList.add(dataInharmVc);
@@ -142,6 +160,10 @@ public class MessageAnalysisServiceImpl implements MessageAnalysisService {
dataVList.add(dataVb);
dataVList.add(dataVc);
dataVList.add(dataVt);
dataHarmrateVDTOList.add(dataHarmrateVDTOa);
dataHarmrateVDTOList.add(dataHarmrateVDTOb);
dataHarmrateVDTOList.add(dataHarmrateVDTOc);
}
//解析出电流数据ABCT
@@ -471,6 +493,7 @@ public class MessageAnalysisServiceImpl implements MessageAnalysisService {
});
LnDataDTO lnDataDTO = new LnDataDTO();
lnDataDTO.setDataVList(dataVList);
lnDataDTO.setDataHarmrateVDTOList(dataHarmrateVDTOList);
lnDataDTO.setDataHarmphasicVDTOList(dataHarmphasicVDTOList);
lnDataDTO.setDataInharmVDTOList(dataInharmVDTOList);
lnDataDTO.setDataIDTOList(dataIDTOList);

View File

@@ -17,6 +17,7 @@ import java.util.List;
public class LnDataDTO {
private List<DataVDTO> dataVList;
private List<DataHarmphasicVDTO> dataHarmphasicVDTOList;
private List<DataHarmrateVDTO> dataHarmrateVDTOList;
private List<DataInharmVDTO> dataInharmVDTOList;
private List<DataIDTO> dataIDTOList;
private List<DataHarmphasicIDTO> dataHarmphasicIDTOList;

View File

@@ -44,6 +44,24 @@
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>common-device-biz</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>pqs-influx</artifactId>
<groupId>com.njcn</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.njcn.platform</groupId>
<artifactId>message-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

View File

@@ -14,6 +14,7 @@ import org.springframework.context.annotation.DependsOn;
@Slf4j
@DependsOn("proxyMapperRegister")
@MapperScan("com.njcn.**.mapper")
@EnableFeignClients(basePackages = "com.njcn")
@SpringBootApplication(scanBasePackages = "com.njcn")
public class DataProcessBootApplication {

View File

@@ -0,0 +1,64 @@
package com.njcn.dataProcess.controller;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.dataProcess.annotation.InsertBean;
import com.njcn.dataProcess.annotation.QueryBean;
import com.njcn.dataProcess.dto.DataHarmphasicIDTO;
import com.njcn.dataProcess.dto.DataHarmrateVDTO;
import com.njcn.dataProcess.po.influx.DataHarmrateV;
import com.njcn.dataProcess.service.IDataHarmphasicI;
import com.njcn.dataProcess.service.IDataHarmrateV;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author hongawen
* @version 1.0
* @data 2024/11/6 19:48
*/
@Validated
@Slf4j
@Controller
@RestController
@RequestMapping("/dataHarmratev")
@Api(tags = "谐波电流角度数据")
public class DataHarmrateVController extends BaseController {
@QueryBean
private IDataHarmrateV dataHarmrateVQuery;
@InsertBean
private IDataHarmrateV dataHarmrateVInsert;
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
@PostMapping("/batchInsertion")
@ApiOperation("批量插入")
public HttpResult<String> batchInsertion(@RequestBody List<DataHarmrateVDTO> dataHarmrateVDTOList) {
String methodDescribe = getMethodDescribe("batchInsertion");
dataHarmrateVInsert.batchInsertion(dataHarmrateVDTOList);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -0,0 +1,161 @@
package com.njcn.dataProcess.controller;//package com.njcn.message.websocket;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.alibaba.fastjson.JSONObject;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.dataProcess.annotation.QueryBean;
import com.njcn.dataProcess.api.DataVFeignClient;
import com.njcn.dataProcess.service.IDataV;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.message.api.ProduceFeignClient;
import com.njcn.message.message.RecallMessage;
import com.njcn.middle.rocket.domain.BaseMessage;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author hongawen
*/
@RestController
@RequiredArgsConstructor
@Api(tags = "数据补招")
@RequestMapping("/data")
public class DataRecallController extends BaseController {
@QueryBean
private IDataV dataVQuery;
private final CommTerminalGeneralClient commTerminalGeneralClient;
private final ProduceFeignClient produceFeignClient;
/**
* 算法保存
*/
@PostMapping("/recall")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("数据补招")
@ApiImplicitParam(name = "param", value = "参数", required = true)
public HttpResult<Boolean> recall(@RequestBody List<RecallMessage.RecallDTO> param) {
String methodDescribe = getMethodDescribe("recall");
RecallMessage message = new RecallMessage();
BaseMessage baseMessage = new BaseMessage();
if(CollectionUtils.isEmpty(param)){
LocalDate localDate =LocalDate.now().plusDays(-1);
List<String> runMonitorIds = commTerminalGeneralClient.getRunMonitorIds().getData();
List<RecallMessage.RecallDTO> recallDTOList = new ArrayList<>();
runMonitorIds.forEach(temp->{
LineDevGetDTO data = commTerminalGeneralClient.getMonitorDetail(temp).getData();
Integer timeInterval = data.getTimeInterval();
List<LocalDateTime> localDateTimeList = generateTimeIntervals(localDate, timeInterval);
List<LocalDateTime> data1 = dataVQuery.monitoringTime(temp, LocalDateTimeUtil.format(localDate, DatePattern.NORM_DATE_PATTERN));
localDateTimeList.removeAll(data1);
if(!CollectionUtils.isEmpty(localDateTimeList)){
List<String> timePeriod = mergeTimeIntervals(localDateTimeList, timeInterval);
RecallMessage.RecallDTO recallDTO = new RecallMessage.RecallDTO();
recallDTO.setDataType("0");
recallDTO.setMonitorId(Stream.of(temp).collect(Collectors.toList()));
recallDTO.setTimeInterval(timePeriod);
recallDTOList.add(recallDTO);
}
});
if(!CollectionUtils.isEmpty(recallDTOList)){
message.setData(recallDTOList);
// baseMessage.setMessageBody(JSONObject.toJSONString(message));
produceFeignClient.recall(message);
}
}else {
message.setData(param);
// baseMessage.setMessageBody(JSONObject.toJSONString(message));
produceFeignClient.recall(message);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
public List<LocalDateTime> generateTimeIntervals(LocalDate date, int intervalMinutes) {
List<LocalDateTime> dateTimeList = new ArrayList<>();
// Create the starting LocalDateTime
LocalDateTime startDateTime = LocalDateTime.of(date, LocalTime.MIDNIGHT);
// Create the ending LocalDateTime
LocalDateTime endDateTime = LocalDateTime.of(date, LocalTime.MAX);
// Generate LocalDateTime list with the given interval
LocalDateTime currentDateTime = startDateTime;
while (!currentDateTime.isAfter(endDateTime)) {
dateTimeList.add(currentDateTime);
currentDateTime = currentDateTime.plusMinutes(intervalMinutes);
}
return dateTimeList;
}
public static List<String> mergeTimeIntervals(List<LocalDateTime> times, int intervalMinutes) {
List<String> mergedIntervals = new ArrayList<>();
if (times == null || times.isEmpty()) {
return mergedIntervals;
}
// Sort the list to ensure the times are in order
times.sort(LocalDateTime::compareTo);
LocalDateTime start = times.get(0);
LocalDateTime end = start;
for (int i = 1; i < times.size(); i++) {
LocalDateTime current = times.get(i);
if (current.isAfter(end.plusMinutes(intervalMinutes))) {
// If the current time is more than interval minutes after the end, close the current interval
mergedIntervals.add(formatInterval(start, end));
start = current; // Start a new interval
}
end = current; // Update the end of the current interval
}
// Add the last interval
mergedIntervals.add(formatInterval(start, end));
return mergedIntervals;
}
private static String formatInterval(LocalDateTime start, LocalDateTime end) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return start.format(formatter) + "~" + end.format(formatter);
}
}

View File

@@ -0,0 +1,18 @@
package com.njcn.dataProcess.dao.imapper;
import com.njcn.dataProcess.po.influx.DataHarmphasicV;
import com.njcn.dataProcess.po.influx.DataHarmrateV;
import com.njcn.influx.base.InfluxDbBaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hongawen
* @since 2023-12-28
*/
public interface DataHarmrateVMapper extends InfluxDbBaseMapper<DataHarmrateV> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.dataProcess.service;
import com.njcn.dataProcess.dto.DataHarmphasicIDTO;
import com.njcn.dataProcess.dto.DataHarmrateVDTO;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IDataHarmrateV {
void batchInsertion(List<DataHarmrateVDTO> dataHarmrateVDTOList);
}

View File

@@ -22,6 +22,9 @@ public class LnDataDealServiceImpl implements LnDataDealService {
private IDataHarmphasicI dataHarmphasicIInsert;
@InsertBean
private IDataHarmphasicV dataHarmphasicVInsert;
@InsertBean
private IDataHarmrateV dataHarmrateVInsert;
@InsertBean
private IDataHarmpowerP dataHarmpowerPService;
@InsertBean
@@ -42,6 +45,7 @@ public class LnDataDealServiceImpl implements LnDataDealService {
@Override
public void batchInsertion(LnDataDTO lnDataDTO) {
dataVService.batchInsertion(lnDataDTO.getDataVList());
dataHarmrateVInsert.batchInsertion(lnDataDTO.getDataHarmrateVDTOList());
dataFlickerInsert.batchInsertion(lnDataDTO.getDataFlickerDTOList());
dataFlucInsert.batchInsertion(lnDataDTO.getDataFlucDTOList());
dataHarmphasicIInsert.batchInsertion(lnDataDTO.getDataHarmphasicIDTOList());

View File

@@ -0,0 +1,51 @@
package com.njcn.dataProcess.service.impl.influxdb;
import com.njcn.dataProcess.dao.imapper.DataHarmphasicVMapper;
import com.njcn.dataProcess.dao.imapper.DataHarmrateVMapper;
import com.njcn.dataProcess.dto.DataHarmphasicVDTO;
import com.njcn.dataProcess.dto.DataHarmrateVDTO;
import com.njcn.dataProcess.po.influx.DataHarmphasicV;
import com.njcn.dataProcess.po.influx.DataHarmrateV;
import com.njcn.dataProcess.service.IDataHarmphasicV;
import com.njcn.dataProcess.service.IDataHarmrateV;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* Description:
* Date: 2024/11/18 14:33【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service("InfluxdbDataHarmrateVImpl")
@RequiredArgsConstructor
public class InfluxdbDataHarmrateVImpl implements IDataHarmrateV {
private final DataHarmrateVMapper dataHarmrateVMapper;
@Override
public void batchInsertion(List<DataHarmrateVDTO> dataHarmrateVDTOList) {
int totalCount = dataHarmrateVDTOList.size();
if(totalCount<=0){
return;
}
List<DataHarmrateV> collect = dataHarmrateVDTOList.stream().flatMap(temp -> DataHarmrateV.relationToInfluxDB(temp).stream()).collect(Collectors.toList());
int minSize = Math.min(1200000, collect.size());
List<List<DataHarmrateV>> partition = ListUtils.partition(collect, minSize);
for (List<DataHarmrateV> dataHarmrateVList : partition) {
List<DataHarmrateV> sublistAsOriginalListType = new ArrayList<>(dataHarmrateVList);
dataHarmrateVMapper.insertBatch(sublistAsOriginalListType);
}
}
}

View File

@@ -0,0 +1,56 @@
package com.njcn.dataProcess.service.impl.relation;
import com.njcn.dataProcess.dao.relation.mapper.DataHarmphasicVRelationMapper;
import com.njcn.dataProcess.dao.relation.mapper.DataHarmrateVRelationMapper;
import com.njcn.dataProcess.dto.DataHarmrateVDTO;
import com.njcn.dataProcess.po.relation.DataHarmphasicV;
import com.njcn.dataProcess.po.relation.DataHarmrateV;
import com.njcn.dataProcess.service.IDataHarmrateV;
import com.njcn.dataProcess.util.BeanFeildUtils;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* Description:
* Date: 2025/02/21 下午 3:15【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service("RelationDataHarmrateVImpl")
@RequiredArgsConstructor
public class RelationDataHarmrateVImpl implements IDataHarmrateV {
private final DataHarmrateVRelationMapper dataHarmrateVRelationMapper;
@Override
public void batchInsertion(List<DataHarmrateVDTO> dataHarmrateVDTOList) {
int totalCount = dataHarmrateVDTOList.size();
int minSize = Math.min(120, totalCount);
if(totalCount<=0){
return;
}
List<DataHarmrateV> collect = dataHarmrateVDTOList.stream().map(temp -> {
DataHarmrateV dataHarmrateV = new DataHarmrateV();
BeanUtils.copyProperties(temp, dataHarmrateV, BeanFeildUtils.getNullPropertyNames(temp));
return dataHarmrateV;
}).collect(Collectors.toList());
collect = collect.stream().collect(Collectors.toMap(
temp -> temp.getTimeid() + temp.getLineid() + temp.getPhasicType(),
temp -> temp,
(exist, replace) -> exist
)).values().stream().collect(Collectors.toList());
List<List<DataHarmrateV>> partition = ListUtils.partition(collect, minSize);
for (List<DataHarmrateV> dataHarmphasicVList : partition) {
dataHarmrateVRelationMapper.insertBatchSomeColumn(dataHarmphasicVList);
}
}
}