添加电压含有率
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -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> {
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user