完成influxdb迁移工具

This commit is contained in:
wr
2025-04-24 19:57:31 +08:00
parent 90e247a59d
commit 7bd3853222
120 changed files with 1015 additions and 427 deletions

View File

@@ -38,6 +38,85 @@
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<!-- CGLIB -->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.3.0</version>
</dependency>
<!-- ASM -->
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>7.3.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<compilerArgument>-Xlint:unchecked</compilerArgument>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<id>build-image</id>
<phase>${docker.operate}</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!--<serverId>36dockerHarbor</serverId>-->
<registryUrl>http://${docker.repostory}</registryUrl>
<!-- 镜像名称 -->
<imageName>${docker.repostory}/${docker.registry.name}/${project.artifactId}</imageName>
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<dockerHost>${docker.url}</dockerHost>
<dockerDirectory>${basedir}/</dockerDirectory>
<resources>
<resource>
<targetPath>/ROOT</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -1,4 +1,4 @@
package com.njcn.read;
package com.njcn.migration.read;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
@@ -6,12 +6,14 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.DependsOn;
import org.springframework.scheduling.annotation.EnableAsync;
/**
* @author xy
*/
@Slf4j
@EnableAsync
@DependsOn("proxyMapperRegister")
@MapperScan("com.njcn.**.mapper")
@EnableFeignClients(basePackages = "com.njcn")
@@ -20,6 +22,7 @@ public class MigrationReadBootApplication {
public static void main(String[] args) {
SpringApplication.run(MigrationReadBootApplication.class, args);
}
}

View File

@@ -0,0 +1,110 @@
package com.njcn.migration.read.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.CharsetUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.njcn.migration.read.service.IDataV;
import com.njcn.migration.read.service.IPqsCommunicate;
import com.njcn.migration.read.util.TimeUtil;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.migration.read.service.MigrationService;
import com.njcn.po.influx.DataV;
import com.njcn.po.influx.PqsCommunicate;
import io.swagger.annotations.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Description:
* Date: 2024/1/15 18:47【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Validated
@Slf4j
@RestController
@RequestMapping("/data")
@Api(tags = "迁移信息数据同步")
@AllArgsConstructor
public class MigrationInfluxDBController {
private final MigrationService migrationService;
private final IDataV dataV;
private final IPqsCommunicate communicate;
@GetMapping("/influxdb")
@ApiOperation("influxdb数据同步->天数按小时进行分组同步")
@ApiImplicitParams({
@ApiImplicitParam(name = "startDate", value = "开始时间(yyyy-MM-dd HH:mm:ss)", required = true),
@ApiImplicitParam(name = "endDate", value = "结束时间(yyyy-MM-dd HH:mm:ss)", required = true)
})
public Boolean eventBatch(@RequestParam("startDate") String startDateTime,@RequestParam("endDate") String endDateTime) {
try {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN);
LineCountEvaluateParam param=new LineCountEvaluateParam();
param.setIsManual(true);
LocalDateTime startDate = LocalDateTimeUtil.parse(startDateTime, DatePattern.NORM_DATETIME_PATTERN);
LocalDateTime endDate = LocalDateTimeUtil.parse(endDateTime, DatePattern.NORM_DATETIME_PATTERN);
long betweenDay = LocalDateTimeUtil.between(startDate, endDate, ChronoUnit.HOURS);
param.setStartTime(startDate.format(dateTimeFormatter));
param.setEndTime(startDate.with(LocalTime.of(startDate.getHour(), 59, 59)).format(dateTimeFormatter));
migrationService.hourseLineDataBacthSysc(param);
migrationService.hourseDevDataBacthSysc(param);
for (int i = 0; i <betweenDay; i++) {
LineCountEvaluateParam countEvaluateParam=new LineCountEvaluateParam();
countEvaluateParam.setIsManual(true);
startDate = LocalDateTimeUtil.offset(startDate, 1, ChronoUnit.HOURS);
countEvaluateParam.setStartTime(startDate.format(dateTimeFormatter));
countEvaluateParam.setEndTime(startDate.with(LocalTime.of(startDate.getHour(), 59, 59)).format(dateTimeFormatter));
migrationService.hourseLineDataBacthSysc(countEvaluateParam);
migrationService.hourseDevDataBacthSysc(countEvaluateParam);
}
} catch (Exception exception) {
exception.printStackTrace();
}
return true;
}
@GetMapping(value = "/importExcel",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@ApiOperation(value ="获取最新数据信息文件", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public void importDistributionAreaExcel(HttpServletResponse response) throws IOException {
ClassPathResource picPathResource = new ClassPathResource("file/sj.xlsx");
migrationService.initializeExcel();
response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode("最新数据信息.xlsx", CharsetUtil.UTF_8));
// 输出文件内容
InputStream fileInputStream = picPathResource.getInputStream();
OutputStream responseOutputStream = response.getOutputStream();
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
responseOutputStream.write(buffer, 0, bytesRead);
}
fileInputStream.close();
responseOutputStream.close();
}
}

View File

@@ -1,4 +1,4 @@
package com.njcn.read.imapper;
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.imapper;
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataHarmrateI;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.imapper;
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataHarmrateV;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.imapper;
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataI;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.imapper;
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.imapper;
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataV;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.imapper;
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.PqsCommunicate;

View File

@@ -0,0 +1,101 @@
package com.njcn.migration.read.job;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.EasyExcel;
import com.njcn.migration.read.service.IDataV;
import com.njcn.migration.read.service.IPqsCommunicate;
import com.njcn.migration.read.service.MigrationService;
import com.njcn.migration.read.util.TimeUtil;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataV;
import com.njcn.po.influx.PqsCommunicate;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.ClassPathResource;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.stream.Collectors;
/**
* Description:
* Date: 2024/1/18 10:15【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Component
@EnableScheduling
@RequiredArgsConstructor
@Slf4j
public class MigrationInfluxDBJob {
private final MigrationService migrationService;
private final IDataV dataV;
private final IPqsCommunicate communicate;
@Scheduled(cron = "0 2 * * * ?")
public void InfluxDBJob() {
// 获取当前时间
LocalDateTime now = LocalDateTime.now();
// 减去一个小时
LocalDateTime oneHourAgo = now.minusHours(1);
// 将分钟和秒设置为0
LocalDateTime result = oneHourAgo.truncatedTo(ChronoUnit.HOURS);
// 加上59分钟59秒
LocalDateTime modifiedResult = result.plusMinutes(59).plusSeconds(59);
LineCountEvaluateParam param = new LineCountEvaluateParam();
param.setIsManual(false);
param.setStartTime(result.format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
param.setEndTime(modifiedResult.format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
migrationService.hourseLineDataBacthSysc(param);
migrationService.hourseDevDataBacthSysc(param);
}
@Scheduled(cron = "0 0 22 * * ?")
public void mapJob() throws IOException {
ClassPathResource picPathResource = new ClassPathResource("file/sj.xlsx");
List<DataV> excelDataV = EasyExcel.read(picPathResource.getFile())
.head(DataV.class)
.sheet(0).doReadSync();
List<DataV> datav = dataV.listDataVDesc(new LineCountEvaluateParam());
if (CollUtil.isNotEmpty(excelDataV)) {
//获取最新监测点最新数据集合
List<String> ids = excelDataV.stream().map(DataV::getLineId).collect(Collectors.toList());
List<DataV> notExcel = datav.stream().filter(x -> !ids.contains(x.getLineId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(notExcel)) {
for (DataV v : notExcel) {
TimeUtil.putLineTime(v.getLineId(), DateUtil.format(DateUtil.beginOfDay(DateUtil.parse(v.getTimeId(), DatePattern.NORM_DATETIME_FORMAT)), DatePattern.NORM_DATETIME_FORMAT));
}
}
}
List<PqsCommunicate> excelCommunicates = EasyExcel.read(picPathResource.getFile())
.head(PqsCommunicate.class)
.sheet(1).doReadSync();
List<PqsCommunicate> communicates = communicate.listPqsCommunicateDesc(new LineCountEvaluateParam());
if (CollUtil.isNotEmpty(excelCommunicates)) {
//获取最新监测点最新数据集合
List<String> ids = excelCommunicates.stream().map(PqsCommunicate::getDevId).collect(Collectors.toList());
List<PqsCommunicate> notExcel = communicates.stream().filter(x -> !ids.contains(x.getDevId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(notExcel)) {
for (PqsCommunicate v : notExcel) {
TimeUtil.putDevTime(v.getDevId(), DateUtil.format(DateUtil.beginOfDay(DateUtil.parse(v.getTimeId(), DatePattern.NORM_DATETIME_FORMAT)), DatePattern.NORM_DATETIME_FORMAT));
}
}
}
}
}

View File

@@ -1,4 +1,4 @@
package com.njcn.read.mapper;
package com.njcn.migration.read.mapper;
import com.njcn.db.mapper.BatchBaseMapper;
import com.njcn.po.mysql.RmpEventDetail;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service;
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service;
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service;
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service;
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service;
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service;
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service;
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service;
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service;
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service;
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service;
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service;
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service;
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
@@ -16,5 +16,7 @@ public interface IPqsCommunicate {
List<PqsCommunicate> listPqsCommunicate(LineCountEvaluateParam lineParam);
List<PqsCommunicate> listPqsCommunicateDesc(LineCountEvaluateParam lineParam);
void insertPqsCommunicate(List<PqsCommunicate> list);
}

View File

@@ -0,0 +1,27 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.mysql.RmpEventDetail;
import java.util.List;
/**
* Description:
* Date: 2024/11/28 9:04【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IRmpEventDetail {
/**
* 获取时间范围数据
* @param lineParam
* @return
*/
List<RmpEventDetail> getRawData(LineCountEvaluateParam lineParam);
}

View File

@@ -0,0 +1,21 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import java.io.IOException;
/**
* @author wr
* @description
* @date 2025/4/23 16:19
*/
public interface MigrationService {
void hourseLineDataBacthSysc(LineCountEvaluateParam param);
void hourseDevDataBacthSysc(LineCountEvaluateParam param);
void initializeExcel() throws IOException;
}

View File

@@ -1,13 +1,12 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataV;
import com.njcn.read.imapper.DataFlickerMapper;
import com.njcn.read.service.IDataFlicker;
import com.njcn.migration.read.imapper.DataFlickerMapper;
import com.njcn.migration.read.service.IDataFlicker;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;

View File

@@ -1,13 +1,12 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.migration.read.imapper.DataFlucMapper;
import com.njcn.migration.read.service.IDataFluc;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataFluc;
import com.njcn.read.imapper.DataFlucMapper;
import com.njcn.read.service.IDataFluc;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;

View File

@@ -1,15 +1,14 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.common.utils.HarmonicTimesUtil;
import com.njcn.influx.constant.InfluxDbSqlConstant;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.migration.read.imapper.DataHarmRateIMapper;
import com.njcn.migration.read.service.IDataHarmRateI;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataHarmpowerS;
import com.njcn.po.influx.DataHarmrateI;
import com.njcn.read.imapper.DataHarmRateIMapper;
import com.njcn.read.service.IDataHarmRateI;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
@@ -6,10 +6,9 @@ import com.njcn.common.utils.HarmonicTimesUtil;
import com.njcn.influx.constant.InfluxDbSqlConstant;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataHarmrateI;
import com.njcn.po.influx.DataHarmrateV;
import com.njcn.read.imapper.DataHarmRateVMapper;
import com.njcn.read.service.IDataHarmRateV;
import com.njcn.migration.read.imapper.DataHarmRateVMapper;
import com.njcn.migration.read.service.IDataHarmRateV;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;

View File

@@ -1,15 +1,14 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.common.utils.HarmonicTimesUtil;
import com.njcn.influx.constant.InfluxDbSqlConstant;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.migration.read.imapper.DataHarmphasicIMapper;
import com.njcn.migration.read.service.IDataHarmphasicI;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFluc;
import com.njcn.po.influx.DataHarmphasicI;
import com.njcn.read.imapper.DataHarmphasicIMapper;
import com.njcn.read.service.IDataHarmphasicI;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;

View File

@@ -1,15 +1,14 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.common.utils.HarmonicTimesUtil;
import com.njcn.influx.constant.InfluxDbSqlConstant;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.migration.read.imapper.DataHarmphasicVMapper;
import com.njcn.migration.read.service.IDataHarmphasicV;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataHarmphasicI;
import com.njcn.po.influx.DataHarmphasicV;
import com.njcn.read.imapper.DataHarmphasicVMapper;
import com.njcn.read.service.IDataHarmphasicV;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;

View File

@@ -1,15 +1,14 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.common.utils.HarmonicTimesUtil;
import com.njcn.influx.constant.InfluxDbSqlConstant;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.migration.read.imapper.DataHarmpowerPMapper;
import com.njcn.migration.read.service.IDataHarmpowerP;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataHarmphasicV;
import com.njcn.po.influx.DataHarmpowerP;
import com.njcn.read.imapper.DataHarmpowerPMapper;
import com.njcn.read.service.IDataHarmpowerP;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;

View File

@@ -1,15 +1,15 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.common.utils.HarmonicTimesUtil;
import com.njcn.influx.constant.InfluxDbSqlConstant;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.migration.read.imapper.DataHarmpowerQMapper;
import com.njcn.migration.read.service.IDataHarmpowerQ;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataHarmpowerP;
import com.njcn.po.influx.DataHarmpowerQ;
import com.njcn.read.imapper.DataHarmpowerQMapper;
import com.njcn.read.service.IDataHarmpowerQ;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;

View File

@@ -1,15 +1,14 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.common.utils.HarmonicTimesUtil;
import com.njcn.influx.constant.InfluxDbSqlConstant;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.migration.read.imapper.DataHarmpowerSMapper;
import com.njcn.migration.read.service.IDataHarmpowerS;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataHarmpowerQ;
import com.njcn.po.influx.DataHarmpowerS;
import com.njcn.read.imapper.DataHarmpowerSMapper;
import com.njcn.read.service.IDataHarmpowerS;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
@@ -6,10 +6,9 @@ import com.njcn.common.utils.HarmonicTimesUtil;
import com.njcn.influx.constant.InfluxDbSqlConstant;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataHarmrateV;
import com.njcn.po.influx.DataI;
import com.njcn.read.imapper.DataIMapper;
import com.njcn.read.service.IDataI;
import com.njcn.migration.read.imapper.DataIMapper;
import com.njcn.migration.read.service.IDataI;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;

View File

@@ -1,15 +1,14 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.common.utils.HarmonicTimesUtil;
import com.njcn.influx.constant.InfluxDbSqlConstant;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.migration.read.imapper.DataInharmIMapper;
import com.njcn.migration.read.service.IDataInharmI;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataI;
import com.njcn.po.influx.DataInharmI;
import com.njcn.read.imapper.DataInharmIMapper;
import com.njcn.read.service.IDataInharmI;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;

View File

@@ -1,15 +1,14 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.common.utils.HarmonicTimesUtil;
import com.njcn.influx.constant.InfluxDbSqlConstant;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.migration.read.imapper.DataInharmVMapper;
import com.njcn.migration.read.service.IDataInharmV;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataInharmI;
import com.njcn.po.influx.DataInharmV;
import com.njcn.read.imapper.DataInharmVMapper;
import com.njcn.read.service.IDataInharmV;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;

View File

@@ -1,13 +1,12 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.migration.read.imapper.DataPltMapper;
import com.njcn.migration.read.service.IDataPlt;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataInharmV;
import com.njcn.po.influx.DataPlt;
import com.njcn.read.imapper.DataPltMapper;
import com.njcn.read.service.IDataPlt;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;

View File

@@ -1,4 +1,4 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
@@ -7,11 +7,10 @@ import com.njcn.influx.constant.InfluxDbSqlConstant;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataV;
import com.njcn.read.imapper.DataVMapper;
import com.njcn.read.service.IDataV;
import com.njcn.migration.read.imapper.DataVMapper;
import com.njcn.migration.read.service.IDataV;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.checkerframework.checker.units.qual.C;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
@@ -98,7 +97,13 @@ public class DataVImpl implements IDataV {
if (CollUtil.isNotEmpty(lineParam.getPhasicType())) {
influxQueryWrapper.regular(DataV::getPhasicType, lineParam.getPhasicType());
}
return dataVMapper.selectByQueryWrapper(influxQueryWrapper);
List<DataV> dataVS = dataVMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataVS)){
for (DataV dataV : dataVS) {
dataV.setTimeId(DATE_TIME_FORMATTER.format(dataV.getTime()));
}
}
return dataVS;
}
@Override

View File

@@ -0,0 +1,164 @@
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.njcn.api.MigrationInsertFeignClient;
import com.njcn.migration.read.service.*;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataV;
import com.njcn.migration.read.util.TimeUtil;
import com.njcn.po.influx.PqsCommunicate;
import lombok.RequiredArgsConstructor;
import org.springframework.core.io.ClassPathResource;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* @author wr
* @description
* @date 2025/4/23 16:20
*/
@Service
@RequiredArgsConstructor
public class MigrationServiceImpl implements MigrationService {
private final IDataFlicker dataFlicker;
private final IDataFluc dataFluc;
private final IDataHarmphasicI dataHarmphasicI;
private final IDataHarmphasicV dataHarmphasicV;
private final IDataHarmpowerP dataHarmpowerP;
private final IDataHarmpowerQ dataHarmpowerQ;
private final IDataHarmpowerS dataHarmpowerS;
private final IDataHarmRateI dataHarmRateI;
private final IDataHarmRateV dataHarmRateV;
private final IDataI dataI;
private final IDataInharmI dataInharmI;
private final IDataInharmV dataInharmV;
private final IDataPlt dataPlt;
private final IDataV dataV;
private final IPqsCommunicate pqsCommunicate;
private final IRmpEventDetail eventDetail;
private final MigrationInsertFeignClient migrationInsertFeignClient;
@Override
@Async
public void hourseLineDataBacthSysc(LineCountEvaluateParam param) {
Map<String, String> map = TimeUtil.getLineMap();
int size = map.size();
final Integer[] num = {0};
map.forEach((lineId,time)->{
num[0] = num[0] + 1;
System.out.println("当前总监测点数量"+size+"当前第"+num[0]+"-》"+lineId+" "+param.getStartTime()+" "+param.getEndTime()+"剩余"+(size-num[0]));
String format=null;
if(!param.getIsManual()){
if(StrUtil.isNotBlank(time)){
param.setStartTime(time);
}
}
param.setLineId(Arrays.asList(lineId));
List<DataV> dataVS = dataV.listDataV(param);
if(CollUtil.isNotEmpty(dataVS)){
if(!param.getIsManual()){
format = dataVS.get(0).getTimeId();
}
migrationInsertFeignClient.insertDataV(dataVS);
}
migrationInsertFeignClient.insertDataFlicker(dataFlicker.listDataFlicker(param));
migrationInsertFeignClient.insertDataFluc(dataFluc.listDataFluc(param));
migrationInsertFeignClient.insertDataHarmphasicI(dataHarmphasicI.listDataHarmphasicI(param));
migrationInsertFeignClient.insertDataHarmphasicV(dataHarmphasicV.listDataHarmphasicV(param));
migrationInsertFeignClient.insertDataHarmpowerP(dataHarmpowerP.listDataHarmpowerP(param));
migrationInsertFeignClient.insertDataHarmpowerQ(dataHarmpowerQ.listDataHarmpowerQ(param));
migrationInsertFeignClient.insertDataHarmpowerS(dataHarmpowerS.listDataHarmpowerS(param));
migrationInsertFeignClient.insertDataHarmrateI(dataHarmRateI.listDataHarmrateI(param));
migrationInsertFeignClient.insertDataHarmrateV(dataHarmRateV.listDataHarmrateV(param));
migrationInsertFeignClient.insertDataI(dataI.listDataI(param));
migrationInsertFeignClient.insertDataInharmI(dataInharmI.listDataInharmI(param));
migrationInsertFeignClient.insertDataInharmV(dataInharmV.listDataInharmV(param));
migrationInsertFeignClient.insertDataPlt(dataPlt.listDataPlt(param));
migrationInsertFeignClient.batchInsertion(eventDetail.getRawData(param));
if(!param.getIsManual()&&StrUtil.isNotBlank(format)){
TimeUtil.putLineTime(lineId,format);
}
});
}
@Override
@Async
public void hourseDevDataBacthSysc(LineCountEvaluateParam param) {
Map<String, String> map = TimeUtil.getDevMap();
int size = map.size();
final Integer[] num = {0};
map.forEach((lineId,time)->{
num[0] = num[0] + 1;
System.out.println("当前总终端数量"+size+"当前第"+num[0]+"-》"+lineId+" "+param.getStartTime()+" "+param.getEndTime()+"剩余"+(size-num[0]));
String format=null;
if(!param.getIsManual()){
if(StrUtil.isNotBlank(time)){
param.setStartTime(time);
}
}
param.setLineId(Arrays.asList(lineId));
List<PqsCommunicate> pqsCommunicates = pqsCommunicate.listPqsCommunicate(param);
if(CollUtil.isNotEmpty(pqsCommunicates)){
if(!param.getIsManual()){
format = pqsCommunicates.get(0).getTimeId();
}
migrationInsertFeignClient.insertPqsCommunicate(pqsCommunicates);
}
if(!param.getIsManual()&&StrUtil.isNotBlank(format)){
TimeUtil.putDevTime(lineId,format);
}
});
}
@Override
public void initializeExcel() throws IOException {
ClassPathResource picPathResource = new ClassPathResource("file/sj.xlsx");
Map<String, String> map = TimeUtil.getLineMap();
List<DataV> lineExcel = new ArrayList<>();
map.forEach((line,value)->{
DataV data=new DataV();
data.setLineId(line);
data.setTimeId(value);
lineExcel.add(data);
});
Map<String, String> devmap = TimeUtil.getLineMap();
List<PqsCommunicate> devExcel = new ArrayList<>();
devmap.forEach((line,value)->{
PqsCommunicate data=new PqsCommunicate();
data.setDevId(line);
data.setTimeId(value);
devExcel.add(data);
});
ExcelWriter excelWriter = EasyExcel.write(picPathResource.getFile()).build();
//模板1
WriteSheet writeSheet = EasyExcel.writerSheet(0, "line" ).head(DataV.class)
.includeColumnFiledNames(Arrays.asList("lineId","timeId"))
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.build();
excelWriter.write(lineExcel, writeSheet);
//模板2
WriteSheet writeSheet2 = EasyExcel.writerSheet(1, "dev" ).head(PqsCommunicate.class)
.includeColumnFiledNames(Arrays.asList("devId","timeId"))
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.build();
excelWriter.write(devExcel, writeSheet2);
excelWriter.finish();
}
}

View File

@@ -1,13 +1,13 @@
package com.njcn.read.service.impl;
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataPlt;
import com.njcn.po.influx.DataV;
import com.njcn.po.influx.PqsCommunicate;
import com.njcn.read.imapper.PqsCommunicateMapper;
import com.njcn.read.service.IPqsCommunicate;
import com.njcn.migration.read.imapper.PqsCommunicateMapper;
import com.njcn.migration.read.service.IPqsCommunicate;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
@@ -50,6 +51,30 @@ public class PqsCommunicateImpl implements IPqsCommunicate {
return dataList;
}
@Override
public List<PqsCommunicate> listPqsCommunicateDesc(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(PqsCommunicate.class);
influxQueryWrapper
.select(PqsCommunicate::getTime)
.select(PqsCommunicate::getDevId)
.select(PqsCommunicate::getDescription)
.select(PqsCommunicate::getType)
.groupBy(PqsCommunicate::getDevId)
.timeDesc()
.limit(1);
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(PqsCommunicate::getDevId, lineParam.getLineId());
}
List<PqsCommunicate> dataList= pqsCommunicateMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataList)){
for (PqsCommunicate data : dataList) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataList;
}
@Override
public void insertPqsCommunicate(List<PqsCommunicate> list) {
if(CollUtil.isNotEmpty(list)){

View File

@@ -0,0 +1,38 @@
package com.njcn.migration.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.migration.read.mapper.RmpEventDetailMapper;
import com.njcn.migration.read.service.IRmpEventDetail;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.mysql.RmpEventDetail;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Date: 2024/11/28 9:04【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class RmpEventDetailImpl implements IRmpEventDetail {
private final RmpEventDetailMapper rmpEventDetailMapper;
@Override
public List<RmpEventDetail> getRawData(LineCountEvaluateParam lineParam) {
LambdaQueryWrapper<RmpEventDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(CollUtil.isNotEmpty(lineParam.getLineId()),RmpEventDetail::getMeasurementPointId,lineParam.getLineId())
.ge(RmpEventDetail::getStartTime,lineParam.getStartTime())
.le(RmpEventDetail::getStartTime,lineParam.getEndTime());
return rmpEventDetailMapper.selectList(lambdaQueryWrapper);
}
}

View File

@@ -0,0 +1,137 @@
package com.njcn.migration.read.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.njcn.migration.read.service.IDataV;
import com.njcn.migration.read.service.IPqsCommunicate;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataV;
import com.njcn.po.influx.PqsCommunicate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
* @author wr
* @description
* @date 2025/4/23 16:11
*/
@Component
public class TimeUtil {
@Autowired
private IDataV dataV;
@Autowired
private IPqsCommunicate communicate;
/**
* key:监测点id value:当前上次结束时间
*/
private static final Map<String, String> LINE_TIME_MAP = new ConcurrentHashMap<>();
private static final Map<String, String> DEV_TIME_MAP = new ConcurrentHashMap<>();
public static void putLineTime(String lineId, String time) {
LINE_TIME_MAP.put(lineId, time);
}
public static void putAllLineTime(Map<String, String> limeMap) {
LINE_TIME_MAP.putAll(limeMap);
}
public static String getLineTime(String lineId) {
if (LINE_TIME_MAP.containsKey(lineId)) {
return LINE_TIME_MAP.get(lineId);
}
return null;
}
public static Map<String, String> getLineMap() {
return LINE_TIME_MAP;
}
public static void putDevTime(String devId, String time) {
DEV_TIME_MAP.put(devId, time);
}
public static void putAllDevTime(Map<String, String> devMap) {
DEV_TIME_MAP.putAll(devMap);
}
public static String getDevTime(String devId) {
if (DEV_TIME_MAP.containsKey(devId)) {
return DEV_TIME_MAP.get(devId);
}
return null;
}
public static Map<String, String> getDevMap() {
return DEV_TIME_MAP;
}
@PostConstruct
public void init() throws IOException {
ClassPathResource picPathResource = new ClassPathResource("file/sj.xlsx");
List<DataV> excelDataV = EasyExcel.read(picPathResource.getFile())
.head(DataV.class)
.sheet(0).doReadSync();
List<DataV> datav = dataV.listDataVDesc(new LineCountEvaluateParam());
if(CollUtil.isNotEmpty(excelDataV)){
//获取最新监测点最新数据集合
List<String> ids = excelDataV.stream().map(DataV::getLineId).collect(Collectors.toList());
List<DataV> notExcel = datav.stream().filter(x -> !ids.contains(x.getLineId())).collect(Collectors.toList());
if(CollUtil.isNotEmpty(notExcel)){
for (DataV v : notExcel) {
v.setTimeId(DateUtil.format(DateUtil.beginOfDay(DateUtil.parse(v.getTimeId(), DatePattern.NORM_DATETIME_FORMAT)),DatePattern.NORM_DATETIME_FORMAT));
}
excelDataV.addAll(notExcel);
}
}else{
excelDataV.addAll(datav);
}
List<PqsCommunicate> excelCommunicates = EasyExcel.read(picPathResource.getFile())
.head(PqsCommunicate.class)
.sheet(1).doReadSync();
List<PqsCommunicate> communicates = communicate.listPqsCommunicateDesc(new LineCountEvaluateParam());
if(CollUtil.isNotEmpty(excelCommunicates)){
//获取最新监测点最新数据集合
List<String> ids = excelCommunicates.stream().map(PqsCommunicate::getDevId).collect(Collectors.toList());
List<PqsCommunicate> notExcel = communicates.stream().filter(x -> !ids.contains(x.getDevId())).collect(Collectors.toList());
if(CollUtil.isNotEmpty(notExcel)){
for (PqsCommunicate v : notExcel) {
v.setTimeId(DateUtil.format(DateUtil.beginOfDay(DateUtil.parse(v.getTimeId(), DatePattern.NORM_DATETIME_FORMAT)),DatePattern.NORM_DATETIME_FORMAT));
}
excelCommunicates.addAll(notExcel);
}
}else{
excelCommunicates.addAll(communicates);
}
ExcelWriter excelWriter = EasyExcel.write(picPathResource.getFile()).build();
//模板1
WriteSheet writeSheet = EasyExcel.writerSheet(0, "line" ).head(DataV.class)
.includeColumnFiledNames(Arrays.asList("lineId","timeId"))
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.build();
excelWriter.write(excelDataV, writeSheet);
//模板2
WriteSheet writeSheet2 = EasyExcel.writerSheet(1, "dev" ).head(PqsCommunicate.class)
.includeColumnFiledNames(Arrays.asList("devId","timeId"))
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.build();
excelWriter.write(excelCommunicates, writeSheet2);
excelWriter.finish();
TimeUtil.putAllLineTime(excelDataV.stream().collect(Collectors.toMap(DataV::getLineId, DataV::getTimeId)));
TimeUtil.putAllDevTime(excelCommunicates.stream().collect(Collectors.toMap(PqsCommunicate::getDevId, PqsCommunicate::getTimeId)));
}
}

View File

@@ -1,14 +0,0 @@
package com.njcn.read.service;
/**
* Description:
* Date: 2024/11/28 9:04【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IRmpEventDetail {
}

View File

@@ -1,13 +0,0 @@
package com.njcn.read.service;
import com.njcn.param.LineCountEvaluateParam;
/**
* @author wr
* @description
* @date 2025/4/23 16:19
*/
public interface MigrationService {
void hourseDataBacthSysc(LineCountEvaluateParam param);
}

View File

@@ -1,87 +0,0 @@
package com.njcn.read.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.njcn.api.MigrationInsertFeignClient;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataV;
import com.njcn.read.service.*;
import com.njcn.read.util.TimeUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* @author wr
* @description
* @date 2025/4/23 16:20
*/
@Service
@RequiredArgsConstructor
public class MigrationServiceImpl implements MigrationService {
DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final IDataFlicker dataFlicker;
private final IDataFluc dataFluc;
private final IDataHarmphasicI dataHarmphasicI;
private final IDataHarmphasicV dataHarmphasicV;
private final IDataHarmpowerP dataHarmpowerP;
private final IDataHarmpowerQ dataHarmpowerQ;
private final IDataHarmpowerS dataHarmpowerS;
private final IDataHarmRateI dataHarmRateI;
private final IDataHarmRateV dataHarmRateV;
private final IDataI dataI;
private final IDataInharmI dataInharmI;
private final IDataInharmV dataInharmV;
private final IDataPlt dataPlt;
private final IDataV dataV;
private final IPqsCommunicate pqsCommunicate;
private final MigrationInsertFeignClient migrationInsertFeignClient;
@Override
public void hourseDataBacthSysc(LineCountEvaluateParam param) {
Map<String, String> map = TimeUtil.getMap();
map.forEach((lineId,time)->{
System.out.println("正在测试监测点:-》"+lineId);
String format=null;
if(!param.getIsManual()){
if(StrUtil.isNotBlank(time)){
param.setStartTime(time);
}
}
param.setLineId(Arrays.asList(lineId));
List<DataV> dataVS = dataV.listDataV(param);
if(CollUtil.isNotEmpty(dataVS)){
if(!param.getIsManual()){
format = dataVS.get(0).getTimeId();
}
migrationInsertFeignClient.insertDataV(dataVS);
}
migrationInsertFeignClient.insertDataFlicker(dataFlicker.listDataFlicker(param));
migrationInsertFeignClient.insertDataFluc(dataFluc.listDataFluc(param));
migrationInsertFeignClient.insertDataHarmphasicI(dataHarmphasicI.listDataHarmphasicI(param));
migrationInsertFeignClient.insertDataHarmphasicV(dataHarmphasicV.listDataHarmphasicV(param));
migrationInsertFeignClient.insertDataHarmpowerP(dataHarmpowerP.listDataHarmpowerP(param));
migrationInsertFeignClient.insertDataHarmpowerQ(dataHarmpowerQ.listDataHarmpowerQ(param));
migrationInsertFeignClient.insertDataHarmpowerS(dataHarmpowerS.listDataHarmpowerS(param));
migrationInsertFeignClient.insertDataHarmrateI(dataHarmRateI.listDataHarmrateI(param));
migrationInsertFeignClient.insertDataHarmrateV(dataHarmRateV.listDataHarmrateV(param));
migrationInsertFeignClient.insertDataI(dataI.listDataI(param));
migrationInsertFeignClient.insertDataInharmI(dataInharmI.listDataInharmI(param));
migrationInsertFeignClient.insertDataInharmV(dataInharmV.listDataInharmV(param));
migrationInsertFeignClient.insertDataPlt(dataPlt.listDataPlt(param));
//todo 终端需要特殊处理
// migrationInsertFeignClient.insertPqsCommunicate(pqsCommunicate.listPqsCommunicate(param));
});
}
}

View File

@@ -1,16 +0,0 @@
package com.njcn.read.service.impl;
import com.njcn.read.service.IRmpEventDetail;
/**
* Description:
* Date: 2024/11/28 9:04【需求编号】
*
* @author clam
* @version V1.0.0
*/
public class RmpEventDetailImpl implements IRmpEventDetail {
}

View File

@@ -1,55 +0,0 @@
package com.njcn.read.util;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataV;
import com.njcn.read.service.IDataV;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
* @author wr
* @description
* @date 2025/4/23 16:11
*/
@Component
public class TimeUtil {
DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
@Autowired
private IDataV dataV;
/**
* key:监测点id value:当前上次结束时间
*/
private static final Map<String, String> TIME_MAP = new ConcurrentHashMap<>();
public static void putTime(String lineId, String time) {
TIME_MAP.put(lineId, time);
}
public static String getTime(String lineId) {
if (TIME_MAP.containsKey(lineId)) {
return TIME_MAP.get(lineId);
}
return null;
}
public static Map<String, String> getMap() {
return TIME_MAP;
}
@PostConstruct
public void init() {
List<DataV> dataVS = dataV.listDataVDesc(new LineCountEvaluateParam());
TIME_MAP.putAll(dataVS.stream().collect(Collectors.toMap(DataV::getLineId,x->DATE_TIME_FORMATTER.format(x.getTime()))));
}
}

View File

@@ -1,8 +1,12 @@
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.njcn.api.MigrationInsertFeignClient;
import com.njcn.migration.read.service.*;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.*;
import com.njcn.read.MigrationReadBootApplication;
import com.njcn.read.service.*;
import com.njcn.migration.read.MigrationReadBootApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
@@ -12,6 +16,8 @@ import org.springframework.test.context.web.WebAppConfiguration;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
@@ -90,11 +96,41 @@ public class BaseJunitTest {
public void test2() {
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
lineParam.setStartTime("2025-04-23 00:00:00");
lineParam.setEndTime("2025-04-23 00:05:00");
lineParam.setEndTime("2025-04-23 23:59:00");
lineParam.setIsManual(true);
migrationService.hourseDataBacthSysc(lineParam);
migrationService.hourseLineDataBacthSysc(lineParam);
System.out.println("");
}
@Test
public void test3() {
List<DataV> dataVS = dataV.listDataVDesc(new LineCountEvaluateParam());
String filePath = "C:\\Users\\web2023\\Desktop\\sj.xlsx";
// 使用 EasyExcel 写入数据到 Excel 文件
ExcelWriter excelWriter = EasyExcel.write(filePath).build();;
//模板1
WriteSheet writeSheet = EasyExcel.writerSheet(0, "line" )
.head(DataV.class)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.build();
excelWriter.write(dataVS, writeSheet);
excelWriter.finish();
}
public static void main(String[] args) {
String filePath = "C:\\Users\\web2023\\Desktop\\sj.xlsx";
// 使用 EasyExcel 写入数据到 Excel 文件
ExcelWriter excelWriter = EasyExcel.write(filePath).build();;
//模板1
WriteSheet writeSheet = EasyExcel.writerSheet(0, "line" ).head(DataV.class)
.includeColumnFiledNames(Arrays.asList("lineId","timeId"))
.build();
excelWriter.write(new ArrayList<>(), writeSheet);
excelWriter.finish();
}
}