cvt算法

This commit is contained in:
hzj
2025-03-03 20:06:11 +08:00
parent 6321c68282
commit 5f18dd4fb6
8 changed files with 235 additions and 14 deletions

View File

@@ -2,12 +2,12 @@ package com.njcn.algorithm.serviceimpl.line;
import com.njcn.algorithm.pojo.bo.CalculatedParam; import com.njcn.algorithm.pojo.bo.CalculatedParam;
import com.njcn.algorithm.service.line.IDataVCvtService; import com.njcn.algorithm.service.line.IDataVCvtService;
import com.njcn.dataProcess.api.DataVCvtFeignClient; import com.njcn.dataProcess.api.DataHarmRateVCvtFeignClient;
import com.njcn.dataProcess.api.DataVFeignClient; import com.njcn.dataProcess.api.DataHarmRateVFeignClient;
import com.njcn.dataProcess.constant.InfluxDBTableConstant; import com.njcn.dataProcess.constant.InfluxDBTableConstant;
import com.njcn.dataProcess.param.LineCountEvaluateParam; import com.njcn.dataProcess.param.LineCountEvaluateParam;
import com.njcn.dataProcess.po.influx.DataVCvt; import com.njcn.dataProcess.pojo.dto.DataHarmRateVCvtDto;
import com.njcn.dataProcess.pojo.dto.DataVCvtDto; import com.njcn.dataProcess.pojo.dto.DataHarmRateVDto;
import com.njcn.dataProcess.util.TimeUtils; import com.njcn.dataProcess.util.TimeUtils;
import com.njcn.device.pq.api.CvtRelationFeignClient; import com.njcn.device.pq.api.CvtRelationFeignClient;
import com.njcn.device.pq.pojo.dto.CvtHarmonicCorrectionFactorsDTO; import com.njcn.device.pq.pojo.dto.CvtHarmonicCorrectionFactorsDTO;
@@ -38,9 +38,10 @@ public class DataVCvtServiceImpl implements IDataVCvtService {
@Resource @Resource
private CvtRelationFeignClient cvtRelationFeignClient; private CvtRelationFeignClient cvtRelationFeignClient;
@Resource @Resource
private DataVCvtFeignClient dataVCvtFeignClient; private DataHarmRateVCvtFeignClient dataHarmRateVCvtFeignClient;
@Resource @Resource
private DataVFeignClient dataVFeignClient; private DataHarmRateVFeignClient dataHarmRateVFeignClient;
@Override @Override
public void dataVCvtHandler(CalculatedParam calculatedParam) { public void dataVCvtHandler(CalculatedParam calculatedParam) {
LineCountEvaluateParam lineParam = new LineCountEvaluateParam(); LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
@@ -51,23 +52,30 @@ public class DataVCvtServiceImpl implements IDataVCvtService {
lineCountEvaluateParam.setLineId(calculatedParam.getIdList()); lineCountEvaluateParam.setLineId(calculatedParam.getIdList());
lineCountEvaluateParam.setEndTime(calculatedParam.getDataDate()+ InfluxDBTableConstant.END_TIME); lineCountEvaluateParam.setEndTime(calculatedParam.getDataDate()+ InfluxDBTableConstant.END_TIME);
lineCountEvaluateParam.setStartTime(calculatedParam.getDataDate()+ InfluxDBTableConstant.START_TIME); lineCountEvaluateParam.setStartTime(calculatedParam.getDataDate()+ InfluxDBTableConstant.START_TIME);
List<DataVCvtDto> data = dataVCvtFeignClient.getRawData(lineCountEvaluateParam).getData();
Map<String, List<DataVCvtDto>> collect = data.stream().collect(Collectors.groupingBy(DataVCvtDto::getLineId)); List<DataHarmRateVCvtDto> data = dataHarmRateVCvtFeignClient.getRawData(lineCountEvaluateParam).getData();
List<DataVCvtDto> result = new ArrayList<>();
Map<String, List<DataHarmRateVCvtDto>> collect = data.stream().collect(Collectors.groupingBy(DataHarmRateVCvtDto::getLineId));
List<DataHarmRateVDto> result = new ArrayList<>();
collect.forEach((k,v)->{ collect.forEach((k,v)->{
CvtHarmonicCorrectionFactorsDTO cvtHarmonicCorrectionFactorsDTO = cvtRelationFeignClient.queryByLineId(k).getData(); CvtHarmonicCorrectionFactorsDTO cvtHarmonicCorrectionFactorsDTO = cvtRelationFeignClient.queryByLineId(k).getData();
if(Objects.nonNull(cvtHarmonicCorrectionFactorsDTO)&& if(Objects.nonNull(cvtHarmonicCorrectionFactorsDTO)&&
StringUtils.isNotEmpty(cvtHarmonicCorrectionFactorsDTO.getId())){ StringUtils.isNotEmpty(cvtHarmonicCorrectionFactorsDTO.getId())){
v = cvtChange(v,cvtHarmonicCorrectionFactorsDTO); v = cvtChange(v,cvtHarmonicCorrectionFactorsDTO);
} }
List<DataHarmRateVDto> dataVCvtDtoList = v.stream().map(temp -> {
DataHarmRateVDto dataHarmRateVDto = new DataHarmRateVDto();
BeanUtils.copyProperties(temp, dataHarmRateVDto);
return dataHarmRateVDto;
}).collect(Collectors.toList());
result.addAll(v); result.addAll(dataVCvtDtoList);
}); });
dataVFeignClient.batchInsertionCvtDTO(result); dataHarmRateVFeignClient.addList(result);
} }
private List<DataVCvtDto> cvtChange(List<DataVCvtDto> v, CvtHarmonicCorrectionFactorsDTO cvtHarmonicCorrectionFactorsDTO) { private List<DataHarmRateVCvtDto> cvtChange(List<DataHarmRateVCvtDto> v, CvtHarmonicCorrectionFactorsDTO cvtHarmonicCorrectionFactorsDTO) {
v.stream().forEach(temp->{ v.stream().forEach(temp->{
//目前知道的只有v2到v50乘以系数 //目前知道的只有v2到v50乘以系数
// temp.setLineId(); // temp.setLineId();

View File

@@ -0,0 +1,92 @@
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.dao.imapper.DataHarmRateVCvtMapper;
import com.njcn.dataProcess.param.LineCountEvaluateParam;
import com.njcn.dataProcess.po.influx.DataHarmRateVCvt;
import com.njcn.dataProcess.po.influx.DataV;
import com.njcn.dataProcess.pojo.dto.DataHarmRateVCvtDto;
import com.njcn.dataProcess.pojo.dto.DataVCvtDto;
import com.njcn.dataProcess.service.IDataHarmRateVCvt;
import com.njcn.dataProcess.service.IDataVCvt;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
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 javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author hongawen
* @version 1.0
* @data 2024/11/6 19:48
*/
@Validated
@Slf4j
@Controller
@RestController
@RequestMapping("/dataHarmRateVCvt")
@Api(tags = "电压好含有率数(cvt表)据获取")
public class DataHarmRateVCvtController extends BaseController {
@QueryBean
private IDataHarmRateVCvt dataHarmRateVCvtQuery;
@InsertBean
private IDataHarmRateVCvt dataHarmRateVCvtInsert;
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
@QueryBean
private IDataVCvt dataVCvtQuery;
@Resource
private DataHarmRateVCvtMapper dataHarmRateVCvtMapper;
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.QUERY)
@PostMapping("/getRawData")
@ApiOperation("获取原始数据")
public HttpResult<List<DataHarmRateVCvtDto>> getRawData(@RequestBody LineCountEvaluateParam lineParam) {
String methodDescribe = getMethodDescribe("getRawData");
List<DataHarmRateVCvtDto> data = dataHarmRateVCvtInsert.getRawData(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, data, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.QUERY)
@PostMapping("/createData")
@ApiOperation("获取原始数据")
public HttpResult<String> createData(@RequestBody LineCountEvaluateParam lineParam) {
String methodDescribe = getMethodDescribe("createData");
List<DataVCvtDto> rawData = dataVCvtQuery.getRawData(lineParam);
List<DataHarmRateVCvt> collect = rawData.stream().map(temp ->
{
DataHarmRateVCvt dataV = new DataHarmRateVCvt();
BeanUtils.copyProperties(temp, dataV);
dataV.setTime(LocalDateTime.parse(temp.getMinTime(), DATE_TIME_FORMATTER).atZone(ZoneId.systemDefault()).toInstant());
return dataV;
}).collect(Collectors.toList());
dataHarmRateVCvtMapper.insertBatch(collect);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
}

View File

@@ -0,0 +1,11 @@
package com.njcn.dataProcess.dao.imapper;
import com.njcn.dataProcess.po.influx.DataHarmRateVCvt;
import com.njcn.influx.base.InfluxDbBaseMapper;
/**
* @author xy
*/
public interface DataHarmRateVCvtMapper extends InfluxDbBaseMapper<DataHarmRateVCvt> {
}

View File

@@ -0,0 +1,27 @@
package com.njcn.dataProcess.service;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.dataProcess.dto.DataHarmrateVDTO;
import com.njcn.dataProcess.param.LineCountEvaluateParam;
import com.njcn.dataProcess.pojo.dto.CommonMinuteDto;
import com.njcn.dataProcess.pojo.dto.DataHarmDto;
import com.njcn.dataProcess.pojo.dto.DataHarmRateVCvtDto;
import com.njcn.dataProcess.pojo.dto.DataHarmRateVDto;
import com.njcn.dataProcess.pojo.po.RStatDataHarmRateVD;
import java.util.List;
/**
* @author xy
*/
public interface IDataHarmRateVCvt {
/**
* 获取原始数据
* @param lineParam
* @return
*/
List<DataHarmRateVCvtDto> getRawData(LineCountEvaluateParam lineParam);
}

View File

@@ -0,0 +1,50 @@
package com.njcn.dataProcess.service.impl.influxdb;
import com.njcn.dataProcess.dao.imapper.DataHarmRateVCvtMapper;
import com.njcn.dataProcess.param.LineCountEvaluateParam;
import com.njcn.dataProcess.po.influx.DataHarmRateVCvt;
import com.njcn.dataProcess.pojo.dto.DataHarmRateVCvtDto;
import com.njcn.dataProcess.service.IDataHarmRateVCvt;
import com.njcn.influx.query.InfluxQueryWrapper;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Date: 2025/03/03 下午 6:27【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service("InfluxdbDataHarmRateVCvtImpl")
@RequiredArgsConstructor
public class InfluxdbDataHarmRateVCvtImpl implements IDataHarmRateVCvt {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataHarmRateVCvtMapper dataHarmRateVCvtMapper;
@Override
public List<DataHarmRateVCvtDto> getRawData(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmRateVCvt.class);
influxQueryWrapper.regular(DataHarmRateVCvt::getLineId,lineParam.getLineId()).between(DataHarmRateVCvt::getTime, lineParam.getStartTime(), lineParam.getEndTime());
List<DataHarmRateVCvt> dataVCvts = dataHarmRateVCvtMapper.selectByQueryWrapper(influxQueryWrapper);
List<DataHarmRateVCvtDto> result = new ArrayList<>();
dataVCvts.forEach(item->{
DataHarmRateVCvtDto dto = new DataHarmRateVCvtDto();
BeanUtils.copyProperties(item,dto);
dto.setMinTime(DATE_TIME_FORMATTER.format(item.getTime()));
result.add(dto);
});
return result;
}
}

View File

@@ -8,6 +8,7 @@ import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmRateVRelationMapper
import com.njcn.dataProcess.dto.DataHarmrateVDTO; import com.njcn.dataProcess.dto.DataHarmrateVDTO;
import com.njcn.dataProcess.param.LineCountEvaluateParam; import com.njcn.dataProcess.param.LineCountEvaluateParam;
import com.njcn.dataProcess.po.influx.DataHarmrateV; import com.njcn.dataProcess.po.influx.DataHarmrateV;
import com.njcn.dataProcess.po.influx.DataV;
import com.njcn.dataProcess.pojo.dto.CommonMinuteDto; import com.njcn.dataProcess.pojo.dto.CommonMinuteDto;
import com.njcn.dataProcess.pojo.dto.DataHarmDto; import com.njcn.dataProcess.pojo.dto.DataHarmDto;
import com.njcn.dataProcess.pojo.dto.DataHarmRateVDto; import com.njcn.dataProcess.pojo.dto.DataHarmRateVDto;
@@ -21,6 +22,7 @@ import org.apache.commons.collections4.ListUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
@@ -170,7 +172,14 @@ public class InfluxdbDataHarmRateVImpl extends MppServiceImpl<RStatDataHarmRateV
@Override @Override
public void addList(List<DataHarmRateVDto> list) { public void addList(List<DataHarmRateVDto> list) {
List<DataHarmrateV> result = new ArrayList<>();
list.forEach(item->{
DataHarmrateV dataV = new DataHarmrateV();
BeanUtils.copyProperties(item, dataV);
dataV.setTime(LocalDateTime.parse(item.getMinTime(), DATE_TIME_FORMATTER).atZone(ZoneId.systemDefault()).toInstant());
result.add(dataV);
});
dataHarmRateVMapper.insertBatch(result);
} }
/** /**

View File

@@ -49,7 +49,7 @@ public class InfluxdbDataVCvtImpl implements IDataVCvt {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataVCvt.class); InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataVCvt.class);
influxQueryWrapper.regular(DataV::getLineId,lineParam.getLineId()).between(DataV::getTime, lineParam.getStartTime(), lineParam.getEndTime()); influxQueryWrapper.regular(DataV::getLineId,lineParam.getLineId()).between(DataVCvt::getTime, lineParam.getStartTime(), lineParam.getEndTime());
List<DataVCvt> dataVCvts = dataVCvtMapper.selectByQueryWrapper(influxQueryWrapper); List<DataVCvt> dataVCvts = dataVCvtMapper.selectByQueryWrapper(influxQueryWrapper);

View File

@@ -0,0 +1,24 @@
package com.njcn.dataProcess.service.impl.relation;
import com.njcn.dataProcess.param.LineCountEvaluateParam;
import com.njcn.dataProcess.pojo.dto.DataHarmDto;
import com.njcn.dataProcess.pojo.dto.DataHarmRateVCvtDto;
import com.njcn.dataProcess.service.IDataHarmRateVCvt;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Description:
* Date: 2025/03/03 下午 6:27【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class RelationDataHarmRateVCvtImpl implements IDataHarmRateVCvt {
@Override
public List<DataHarmRateVCvtDto> getRawData(LineCountEvaluateParam lineParam) {
return null;
}
}