This commit is contained in:
wr
2025-04-25 10:27:11 +08:00
parent 7bd3853222
commit d07b9d61bb
134 changed files with 0 additions and 45 deletions

View File

@@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.njcn.platform</groupId>
<artifactId>migration-influxdb</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>migration-influxdb-read-boot</artifactId>
<name>migration-influxdb-boot</name>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>common-web</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>common-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>common-swagger</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.njcn.platform</groupId>
<artifactId>migration-influxdb-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<!-- 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

@@ -0,0 +1,28 @@
package com.njcn.migration.read;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.DependsOn;
import org.springframework.scheduling.annotation.EnableAsync;
/**
* @author xy
*/
@Slf4j
@EnableAsync
@DependsOn("proxyMapperRegister")
@MapperScan("com.njcn.**.mapper")
@EnableFeignClients(basePackages = "com.njcn")
@SpringBootApplication(scanBasePackages = "com.njcn")
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

@@ -0,0 +1,17 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataFlicker;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hongawen
* @since 2023-12-28
*/
public interface DataFlickerMapper extends InfluxDbBaseMapper<DataFlicker> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataFluc;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hongawen
* @since 2023-12-28
*/
public interface DataFlucMapper extends InfluxDbBaseMapper<DataFluc> {
}

View File

@@ -0,0 +1,11 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataHarmrateI;
/**
* @author xy
*/
public interface DataHarmRateIMapper extends InfluxDbBaseMapper<DataHarmrateI> {
}

View File

@@ -0,0 +1,11 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataHarmrateV;
/**
* @author xy
*/
public interface DataHarmRateVMapper extends InfluxDbBaseMapper<DataHarmrateV> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataHarmphasicI;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hongawen
* @since 2023-12-28
*/
public interface DataHarmphasicIMapper extends InfluxDbBaseMapper<DataHarmphasicI> {
}

View File

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

View File

@@ -0,0 +1,17 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataHarmpowerP;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hongawen
* @since 2023-12-28
*/
public interface DataHarmpowerPMapper extends InfluxDbBaseMapper<DataHarmpowerP> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataHarmpowerQ;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hongawen
* @since 2023-12-28
*/
public interface DataHarmpowerQMapper extends InfluxDbBaseMapper<DataHarmpowerQ> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataHarmpowerS;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hongawen
* @since 2023-12-28
*/
public interface DataHarmpowerSMapper extends InfluxDbBaseMapper<DataHarmpowerS> {
}

View File

@@ -0,0 +1,16 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataI;
/**
* @author hongawen
* @version 1.0
* @data 2024/11/7 18:49
*/
public interface DataIMapper extends InfluxDbBaseMapper<DataI> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataInharmI;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hongawen
* @since 2023-12-28
*/
public interface DataInharmIMapper extends InfluxDbBaseMapper<DataInharmI> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataInharmV;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hongawen
* @since 2023-12-28
*/
public interface DataInharmVMapper extends InfluxDbBaseMapper<DataInharmV> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataPlt;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hongawen
* @since 2023-12-28
*/
public interface DataPltMapper extends InfluxDbBaseMapper<DataPlt> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.DataV;
/**
* @author hongawen
* @version 1.0
* @data 2024/11/7 18:49
*/
public interface DataVMapper extends InfluxDbBaseMapper<DataV> {
}

View File

@@ -0,0 +1,16 @@
package com.njcn.migration.read.imapper;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.po.influx.PqsCommunicate;
/**
* @Description:
* @Author: wr
* @Date: 2025/3/10 9:49
*/
public interface PqsCommunicateMapper extends InfluxDbBaseMapper<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

@@ -0,0 +1,17 @@
package com.njcn.migration.read.mapper;
import com.njcn.db.mapper.BatchBaseMapper;
import com.njcn.po.mysql.RmpEventDetail;
/**
* pqs
*
* @author cdf
* @date 2023/6/19
*/
public interface RmpEventDetailMapper extends BatchBaseMapper<RmpEventDetail> {
}

View File

@@ -0,0 +1,21 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IDataFlicker {
List<DataFlicker> listDataFlicker(LineCountEvaluateParam lineParam);
void insertDataFlicker(List<DataFlicker> list);
}

View File

@@ -0,0 +1,22 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataFluc;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IDataFluc {
List<DataFluc> listDataFluc(LineCountEvaluateParam lineParam);
void insertDataFluc(List<DataFluc> list);
}

View File

@@ -0,0 +1,21 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataHarmrateI;
import java.util.List;
/**
* @author xy
*/
public interface IDataHarmRateI {
List<DataHarmrateI> listDataHarmrateI(LineCountEvaluateParam lineParam);
void insertDataHarmrateI(List<DataHarmrateI> list);
}

View File

@@ -0,0 +1,20 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataHarmrateI;
import com.njcn.po.influx.DataHarmrateV;
import java.util.List;
/**
* @author xy
*/
public interface IDataHarmRateV {
List<DataHarmrateV> listDataHarmrateV(LineCountEvaluateParam lineParam);
void insertDataHarmrateV(List<DataHarmrateV> list);
}

View File

@@ -0,0 +1,24 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataHarmphasicI;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IDataHarmphasicI {
List<DataHarmphasicI> listDataHarmphasicI(LineCountEvaluateParam lineParam);
void insertDataHarmphasicI(List<DataHarmphasicI> list);
}

View File

@@ -0,0 +1,23 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataHarmphasicI;
import com.njcn.po.influx.DataHarmphasicV;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IDataHarmphasicV {
List<DataHarmphasicV> listDataHarmphasicV(LineCountEvaluateParam lineParam);
void insertDataHarmphasicV(List<DataHarmphasicV> list);
}

View File

@@ -0,0 +1,24 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataHarmphasicI;
import com.njcn.po.influx.DataHarmpowerP;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IDataHarmpowerP {
List<DataHarmpowerP> listDataHarmpowerP(LineCountEvaluateParam lineParam);
void insertDataHarmpowerP(List<DataHarmpowerP> list);
}

View File

@@ -0,0 +1,25 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataHarmpowerP;
import com.njcn.po.influx.DataHarmpowerQ;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IDataHarmpowerQ {
List<DataHarmpowerQ> listDataHarmpowerQ(LineCountEvaluateParam lineParam);
void insertDataHarmpowerQ(List<DataHarmpowerQ> list);
}

View File

@@ -0,0 +1,25 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataHarmpowerP;
import com.njcn.po.influx.DataHarmpowerS;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IDataHarmpowerS {
List<DataHarmpowerS> listDataHarmpowerS(LineCountEvaluateParam lineParam);
void insertDataHarmpowerS(List<DataHarmpowerS> list);
}

View File

@@ -0,0 +1,29 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataI;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IDataI {
/**
* 查询数据信息
* @param lineParam @return: java.util.List<com.njcn.po.influx.DataV>
* @Author: wr
* @Date: 2025/4/23 13:06
*/
List<DataI> listDataI(LineCountEvaluateParam lineParam);
void insertDataI(List<DataI> list);
}

View File

@@ -0,0 +1,22 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataInharmI;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 13:27【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IDataInharmI {
List<DataInharmI> listDataInharmI(LineCountEvaluateParam lineParam);
void insertDataInharmI(List<DataInharmI> list);
}

View File

@@ -0,0 +1,24 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataInharmI;
import com.njcn.po.influx.DataInharmV;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 13:27【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IDataInharmV {
List<DataInharmV> listDataInharmV(LineCountEvaluateParam lineParam);
void insertDataInharmV(List<DataInharmV> list);
}

View File

@@ -0,0 +1,23 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataPlt;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface IDataPlt {
List<DataPlt> listDataPlt(LineCountEvaluateParam lineParam);
void insertDataPlt(List<DataPlt> list);
}

View File

@@ -0,0 +1,29 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.DataV;
import java.util.List;
/**
* @author hongawen
* @version 1.0
* @data 2024/11/7 10:54
*/
public interface IDataV {
/**
* 查询数据信息
* @param lineParam @return: java.util.List<com.njcn.po.influx.DataV>
* @Author: wr
* @Date: 2025/4/23 13:06
*/
List<DataV> listDataV(LineCountEvaluateParam lineParam);
List<DataV> listDataVDesc(LineCountEvaluateParam lineParam);
void insertDataV(List<DataV> list);
}

View File

@@ -0,0 +1,22 @@
package com.njcn.migration.read.service;
import com.njcn.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataFlicker;
import com.njcn.po.influx.PqsCommunicate;
import java.util.List;
/**
* @Description:
* @Author: wr
* @Date: 2025/3/6 10:22
*/
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

@@ -0,0 +1,67 @@
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.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;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class DataFlickerImpl implements IDataFlicker {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataFlickerMapper dataFlickerMapper;
@Override
public List<DataFlicker> listDataFlicker(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataFlicker.class);
influxQueryWrapper
.select(DataFlicker::getLineId)
.select(DataFlicker::getPhasicType)
.select(DataFlicker::getFluc)
.select(DataFlicker::getPst)
.select(DataFlicker::getPlt)
.select(DataFlicker::getQualityFlag)
.between(DataFlicker::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataFlicker::getLineId, lineParam.getLineId());
}
List<DataFlicker> dataFlickers = dataFlickerMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataFlickers)){
for (DataFlicker data : dataFlickers) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataFlickers;
}
@Override
public void insertDataFlicker(List<DataFlicker> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataFlicker>> partition = ListUtils.partition(list, 100000);
for (List<DataFlicker> dataFlickerList : partition) {
List<DataFlicker> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataFlickerMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

View File

@@ -0,0 +1,65 @@
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.DataFluc;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class DataFlucImpl implements IDataFluc {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataFlucMapper dataFlucMapper;
@Override
public List<DataFluc> listDataFluc(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataFluc.class);
influxQueryWrapper
.select(DataFluc::getLineId)
.select(DataFluc::getPhasicType)
.select(DataFluc::getFluc)
.select(DataFluc::getFluccf)
.select(DataFluc::getQualityFlag)
.between(DataFluc::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataFluc::getLineId, lineParam.getLineId());
}
List<DataFluc> dataFlucs= dataFlucMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataFlucs)){
for (DataFluc data : dataFlucs) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataFlucs;
}
@Override
public void insertDataFluc(List<DataFluc> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataFluc>> partition = ListUtils.partition(list, 100000);
for (List<DataFluc> dataFlickerList : partition) {
List<DataFluc> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataFlucMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

View File

@@ -0,0 +1,63 @@
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.DataHarmrateI;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* @author xy
*/
@Service
@RequiredArgsConstructor
public class DataHarmRateIImpl implements IDataHarmRateI {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataHarmRateIMapper dataHarmRateIMapper;
@Override
public List<DataHarmrateI> listDataHarmrateI(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmrateI.class);
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.I, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
influxQueryWrapper
.select(DataHarmrateI::getLineId)
.select(DataHarmrateI::getPhasicType)
.select(DataHarmrateI::getValueType)
.select(DataHarmrateI::getQualityFlag)
.between(DataHarmrateI::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataHarmrateI::getLineId, lineParam.getLineId());
}
List<DataHarmrateI> dataList= dataHarmRateIMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataList)){
for (DataHarmrateI data : dataList) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataList;
}
@Override
public void insertDataHarmrateI(List<DataHarmrateI> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataHarmrateI>> partition = ListUtils.partition(list, 100000);
for (List<DataHarmrateI> dataFlickerList : partition) {
List<DataHarmrateI> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataHarmRateIMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

View File

@@ -0,0 +1,66 @@
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.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataHarmrateV;
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;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* @author xy
*/
@Service
@RequiredArgsConstructor
public class DataHarmRateVImpl implements IDataHarmRateV {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataHarmRateVMapper dataHarmRateVMapper;
@Override
public List<DataHarmrateV> listDataHarmrateV(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmrateV.class);
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.V, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
influxQueryWrapper
.select(DataHarmrateV::getLineId)
.select(DataHarmrateV::getPhasicType)
.select(DataHarmrateV::getValueType)
.select(DataHarmrateV::getQualityFlag)
.between(DataHarmrateV::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataHarmrateV::getLineId, lineParam.getLineId());
}
if(CollUtil.isNotEmpty(lineParam.getPhasicType())){
influxQueryWrapper.regular(DataHarmrateV::getPhasicType,lineParam.getPhasicType());
}
List<DataHarmrateV> dataList= dataHarmRateVMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataList)){
for (DataHarmrateV data : dataList) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataList;
}
@Override
public void insertDataHarmrateV(List<DataHarmrateV> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataHarmrateV>> partition = ListUtils.partition(list, 100000);
for (List<DataHarmrateV> dataFlickerList : partition) {
List<DataHarmrateV> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataHarmRateVMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

View File

@@ -0,0 +1,69 @@
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.DataHarmphasicI;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class DataHarmphasicIImpl implements IDataHarmphasicI {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataHarmphasicIMapper dataHarmphasicIMapper;
@Override
public List<DataHarmphasicI> listDataHarmphasicI(LineCountEvaluateParam lineParam) {
List<DataHarmphasicI> result = new ArrayList<>();
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmphasicI.class);
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.I, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
influxQueryWrapper
.select(DataHarmphasicI::getLineId)
.select(DataHarmphasicI::getPhasicType)
.select(DataHarmphasicI::getValueType)
.select(DataHarmphasicI::getQualityFlag)
.between(DataHarmphasicI::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataHarmphasicI::getLineId, lineParam.getLineId());
}
List<DataHarmphasicI> dataList= dataHarmphasicIMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataList)){
for (DataHarmphasicI data : dataList) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataList;
}
@Override
public void insertDataHarmphasicI(List<DataHarmphasicI> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataHarmphasicI>> partition = ListUtils.partition(list, 100000);
for (List<DataHarmphasicI> dataFlickerList : partition) {
List<DataHarmphasicI> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataHarmphasicIMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

View File

@@ -0,0 +1,68 @@
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.DataHarmphasicV;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class DataHarmphasicVImpl implements IDataHarmphasicV {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataHarmphasicVMapper dataHarmphasicVMapper;
@Override
public List<DataHarmphasicV> listDataHarmphasicV(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmphasicV.class);
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.V, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
influxQueryWrapper
.select(DataHarmphasicV::getLineId)
.select(DataHarmphasicV::getPhasicType)
.select(DataHarmphasicV::getValueType)
.select(DataHarmphasicV::getQualityFlag)
.between(DataHarmphasicV::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataHarmphasicV::getLineId, lineParam.getLineId());
}
List<DataHarmphasicV> dataList= dataHarmphasicVMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataList)){
for (DataHarmphasicV data : dataList) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataList;
}
@Override
public void insertDataHarmphasicV(List<DataHarmphasicV> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataHarmphasicV>> partition = ListUtils.partition(list, 100000);
for (List<DataHarmphasicV> dataFlickerList : partition) {
List<DataHarmphasicV> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataHarmphasicVMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

View File

@@ -0,0 +1,71 @@
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.DataHarmpowerP;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class DataHarmpowerPImpl implements IDataHarmpowerP {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataHarmpowerPMapper dataHarmpowerPMapper;
@Override
public List<DataHarmpowerP> listDataHarmpowerP(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerP.class);
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.P, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
influxQueryWrapper
.select(DataHarmpowerP::getLineId)
.select(DataHarmpowerP::getPhasicType)
.select(DataHarmpowerP::getValueType)
.select(DataHarmpowerP::getP)
.select(DataHarmpowerP::getDf)
.select(DataHarmpowerP::getPf)
.select(DataHarmpowerP::getQualityFlag)
.between(DataHarmpowerP::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataHarmpowerP::getLineId, lineParam.getLineId());
}
List<DataHarmpowerP> dataList= dataHarmpowerPMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataList)){
for (DataHarmpowerP data : dataList) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataList;
}
@Override
public void insertDataHarmpowerP(List<DataHarmpowerP> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataHarmpowerP>> partition = ListUtils.partition(list, 100000);
for (List<DataHarmpowerP> dataFlickerList : partition) {
List<DataHarmpowerP> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataHarmpowerPMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

View File

@@ -0,0 +1,72 @@
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 lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class DataHarmpowerQImpl implements IDataHarmpowerQ {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataHarmpowerQMapper dataHarmpowerQMapper;
@Override
public List<DataHarmpowerQ> listDataHarmpowerQ(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerQ.class);
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.Q, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
influxQueryWrapper
.select(DataHarmpowerQ::getLineId)
.select(DataHarmpowerQ::getPhasicType)
.select(DataHarmpowerQ::getValueType)
.select(DataHarmpowerQ::getQ)
.select(DataHarmpowerQ::getQualityFlag)
.between(DataHarmpowerQ::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataHarmpowerQ::getLineId, lineParam.getLineId());
}
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataHarmpowerP::getLineId, lineParam.getLineId());
}
List<DataHarmpowerQ> dataList= dataHarmpowerQMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataList)){
for (DataHarmpowerQ data : dataList) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataList;
}
@Override
public void insertDataHarmpowerQ(List<DataHarmpowerQ> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataHarmpowerQ>> partition = ListUtils.partition(list, 100000);
for (List<DataHarmpowerQ> dataFlickerList : partition) {
List<DataHarmpowerQ> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataHarmpowerQMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

View File

@@ -0,0 +1,68 @@
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.DataHarmpowerS;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class DataHarmpowerSImpl implements IDataHarmpowerS {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataHarmpowerSMapper dataHarmpowerSMapper;
@Override
public List<DataHarmpowerS> listDataHarmpowerS(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerS.class);
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.S, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
influxQueryWrapper
.select(DataHarmpowerS::getLineId)
.select(DataHarmpowerS::getPhasicType)
.select(DataHarmpowerS::getValueType)
.select(DataHarmpowerS::getS)
.select(DataHarmpowerS::getQualityFlag)
.between(DataHarmpowerS::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataHarmpowerS::getLineId, lineParam.getLineId());
}
List<DataHarmpowerS> dataList= dataHarmpowerSMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataList)){
for (DataHarmpowerS data : dataList) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataList;
}
@Override
public void insertDataHarmpowerS(List<DataHarmpowerS> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataHarmpowerS>> partition = ListUtils.partition(list, 100000);
for (List<DataHarmpowerS> dataFlickerList : partition) {
List<DataHarmpowerS> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataHarmpowerSMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

View File

@@ -0,0 +1,77 @@
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.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataI;
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;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class DataIImpl implements IDataI {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataIMapper dataIMapper;
@Override
public List<DataI> listDataI(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataI.class);
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.I, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
influxQueryWrapper
.select(DataI::getLineId)
.select(DataI::getPhasicType)
.select(DataI::getValueType)
.select(DataI::getINeg)
.select(DataI::getIPos)
.select(DataI::getIThd)
.select(DataI::getIUnbalance)
.select(DataI::getIZero)
.select(DataI::getRms)
.select(DataI::getQualityFlag)
.between(DataI::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataI::getLineId, lineParam.getLineId());
}
if(CollUtil.isNotEmpty(lineParam.getPhasicType())){
influxQueryWrapper.regular(DataI::getPhasicType,lineParam.getPhasicType());
}
List<DataI> dataList= dataIMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataList)){
for (DataI data : dataList) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataList;
}
@Override
public void insertDataI(List<DataI> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataI>> partition = ListUtils.partition(list, 100000);
for (List<DataI> dataFlickerList : partition) {
List<DataI> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataIMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

View File

@@ -0,0 +1,67 @@
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.DataInharmI;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 13:27【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class DataInharmIImpl implements IDataInharmI {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataInharmIMapper dataInharmIMapper;
@Override
public List<DataInharmI> listDataInharmI(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataInharmI.class);
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.I, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
influxQueryWrapper
.select(DataInharmI::getLineId)
.select(DataInharmI::getPhasicType)
.select(DataInharmI::getValueType)
.select(DataInharmI::getQualityFlag)
.between(DataInharmI::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataInharmI::getLineId, lineParam.getLineId());
}
List<DataInharmI> dataList= dataInharmIMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataList)){
for (DataInharmI data : dataList) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataList;
}
@Override
public void insertDataInharmI(List<DataInharmI> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataInharmI>> partition = ListUtils.partition(list, 100000);
for (List<DataInharmI> dataFlickerList : partition) {
List<DataInharmI> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataInharmIMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

View File

@@ -0,0 +1,70 @@
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.DataInharmV;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 13:27【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class DataInharmVImpl implements IDataInharmV {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataInharmVMapper dataInharmVMapper;
@Override
public List<DataInharmV> listDataInharmV(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataInharmV.class);
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.V, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
influxQueryWrapper
.select(DataInharmV::getLineId)
.select(DataInharmV::getPhasicType)
.select(DataInharmV::getValueType)
.select(DataInharmV::getQualityFlag)
.between(DataInharmV::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataInharmV::getLineId, lineParam.getLineId());
}
if(CollUtil.isNotEmpty(lineParam.getPhasicType())){
influxQueryWrapper.regular(DataInharmV::getPhasicType,lineParam.getPhasicType());
}
List<DataInharmV> dataList= dataInharmVMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataList)){
for (DataInharmV data : dataList) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataList;
}
@Override
public void insertDataInharmV(List<DataInharmV> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataInharmV>> partition = ListUtils.partition(list, 100000);
for (List<DataInharmV> dataFlickerList : partition) {
List<DataInharmV> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataInharmVMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

View File

@@ -0,0 +1,64 @@
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.DataPlt;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Date: 2024/11/18 11:17【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class DataPltImpl implements IDataPlt {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataPltMapper dataPltMapper;
@Override
public List<DataPlt> listDataPlt(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataPlt.class);
influxQueryWrapper
.select(DataPlt::getLineId)
.select(DataPlt::getPhasicType)
.select(DataPlt::getPlt)
.select(DataPlt::getQualityFlag)
.between(DataPlt::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataPlt::getLineId, lineParam.getLineId());
}
List<DataPlt> dataList= dataPltMapper.selectByQueryWrapper(influxQueryWrapper);
if(CollUtil.isNotEmpty(dataList)){
for (DataPlt data : dataList) {
data.setTimeId(DATE_TIME_FORMATTER.format(data.getTime()));
}
}
return dataList;
}
@Override
public void insertDataPlt(List<DataPlt> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataPlt>> partition = ListUtils.partition(list, 100000);
for (List<DataPlt> dataFlickerList : partition) {
List<DataPlt> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataPltMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

View File

@@ -0,0 +1,119 @@
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.param.LineCountEvaluateParam;
import com.njcn.po.influx.DataV;
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.springframework.stereotype.Service;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* @author hongawen
* @version 1.0
* @data 2024/11/7 10:54
*/
@Service
@RequiredArgsConstructor
public class DataVImpl implements IDataV {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final DataVMapper dataVMapper;
@Override
public List<DataV> listDataV(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.V, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
influxQueryWrapper
.select(DataV::getLineId)
.select(DataV::getPhasicType)
.select(DataV::getValueType)
.select(DataV::getFreq)
.select(DataV::getFreqDev)
.select(DataV::getRms)
.select(DataV::getRmsLvr)
.select(DataV::getVNeg)
.select(DataV::getVPos)
.select(DataV::getVThd)
.select(DataV::getVUnbalance)
.select(DataV::getVZero)
.select(DataV::getVlDev)
.select(DataV::getVuDev)
.select(DataV::getQualityFlag)
.between(DataV::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataV::getLineId, lineParam.getLineId());
}
if (CollUtil.isNotEmpty(lineParam.getPhasicType())) {
influxQueryWrapper.regular(DataV::getPhasicType, lineParam.getPhasicType());
}
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
public List<DataV> listDataVDesc(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.V, "", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
influxQueryWrapper
.select(DataV::getLineId)
.select(DataV::getPhasicType)
.select(DataV::getValueType)
.select(DataV::getFreq)
.select(DataV::getFreqDev)
.select(DataV::getRms)
.select(DataV::getRmsLvr)
.select(DataV::getVNeg)
.select(DataV::getVPos)
.select(DataV::getVThd)
.select(DataV::getVUnbalance)
.select(DataV::getVZero)
.select(DataV::getVlDev)
.select(DataV::getVuDev)
.select(DataV::getQualityFlag)
.groupBy(DataV::getLineId)
.timeDesc()
.limit(1);
if(CollUtil.isNotEmpty(lineParam.getLineId())){
influxQueryWrapper.regular(DataV::getLineId, lineParam.getLineId());
}
if (CollUtil.isNotEmpty(lineParam.getPhasicType())) {
influxQueryWrapper.regular(DataV::getPhasicType, lineParam.getPhasicType());
}
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
public void insertDataV(List<DataV> list) {
if(CollUtil.isNotEmpty(list)){
List<List<DataV>> partition = ListUtils.partition(list, 100000);
for (List<DataV> dataFlickerList : partition) {
List<DataV> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
dataVMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

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

@@ -0,0 +1,88 @@
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.DataV;
import com.njcn.po.influx.PqsCommunicate;
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;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @Description:
* @Author: wr
* @Date: 2025/3/6 10:22
*/
@Service
@RequiredArgsConstructor
public class PqsCommunicateImpl implements IPqsCommunicate {
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
private final PqsCommunicateMapper pqsCommunicateMapper;
@Override
public List<PqsCommunicate> listPqsCommunicate(LineCountEvaluateParam lineParam) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(PqsCommunicate.class);
influxQueryWrapper
.select(PqsCommunicate::getTime)
.select(PqsCommunicate::getDevId)
.select(PqsCommunicate::getDescription)
.select(PqsCommunicate::getType)
.between(PqsCommunicate::getTime, lineParam.getStartTime(), lineParam.getEndTime())
.timeDesc()
;
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 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)){
List<List<PqsCommunicate>> partition = ListUtils.partition(list, 100000);
for (List<PqsCommunicate> dataFlickerList : partition) {
List<PqsCommunicate> sublistAsOriginalListType = new ArrayList<>(dataFlickerList);
pqsCommunicateMapper.insertBatch(sublistAsOriginalListType);
}
}
}
}

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,75 @@
package com.njcn.migration.read.util;
import lombok.Getter;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Getter
public enum TableEnum {
DATAFLICKER("DataFlicker","电压闪变数据表", 1),
DATAFLUC("DataFluc","电压波动数据表", 1),
DATAHARMPHASICI("DataHarmphasicI","谐波电流角度数据表", 4),
DATAHARMPHASICV("DataHarmphasicV","谐波电压角度数据表", 4),
DATAHARMPOWERP("DataHarmpowerP","有功功率数据表", 4),
DATAHARMPOWERQ("DataHarmpowerQ","无功功率数据表", 4),
DATAHARMPOWERS("DataHarmpowerS","视在功率数据表", 4),
DATAHARMRATEI("DataHarmrateI","谐波电流含有率数据表", 4),
DATAHARMRATEV("DataHarmrateV","谐波电压含有率数据表", 4),
DATAINHARMI("DataInharmI","电流简谐波幅值数据表", 4),
DATAINHARMV("DataInharmV","电压间谐波幅值数据表", 4),
DATAI("DataI","谐波电流幅值数据表", 4),
DATAPLT("DataPlt","长时闪变数据表", 1),
DATAV("DataV","谐波电压幅值数据表", 4),
PQSCOMMUNICATE("PqsCommunicate","终端状态变更表", 4),
;
private final String code;
private final String value;
private final Integer multiple;
TableEnum(String code, String value, Integer multiple) {
this.code = code;
this.value = value;
this.multiple = multiple;
}
/**
* 获取所有可执行的组件类型,
* 除了"目录"类型,其他都可以执行
* @return
*/
public static List<String> getExecutableTypes() {
return Arrays.stream(TableEnum.values()).map(tmep->{
return tmep.code;
}).collect(Collectors.toList());
}
/**
* 通过code获取枚举值
* @param code
* @return
*/
public static String getValueByCode(String code) {
for (TableEnum item : TableEnum.values()) {
if (item.code.equals(code)) {
return item.value;
}
}
return null;
}
public static Integer getMultipleByCode(String code) {
for (TableEnum item : TableEnum.values()) {
if (item.code.equals(code)) {
return item.multiple;
}
}
return null;
}
}

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

@@ -0,0 +1,68 @@
#当前服务的基本信息
microservice:
ename: @artifactId@
name: '@name@'
version: @version@
sentinel:
url: @sentinel.url@
gateway:
url: @gateway.url@
server:
port: 10406
#feign接口开启服务熔断降级处理
feign:
sentinel:
enabled: true
spring:
application:
name: @artifactId@
#nacos注册中心以及配置中心的指定
cloud:
nacos:
discovery:
ip: @service.server.url@
server-addr: @nacos.url@
namespace: @nacos.namespace@
config:
server-addr: @nacos.url@
namespace: @nacos.namespace@
file-extension: yaml
shared-configs:
- data-id: share-config.yaml
refresh: true
- data-Id: share-config-datasource-read-db.yaml
refresh: true
main:
allow-bean-definition-overriding: true
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
jackson:
time-zone: GMT+8
#项目日志的配置
logging:
config: http://@nacos.url@/nacos/v1/cs/configs?tenant=@nacos.namespace@&group=DEFAULT_GROUP&dataId=logback.xml
level:
root: info
mqtt:
client-id: @artifactId@${random.value}
#mybatis配置信息
mybatis-plus:
configuration:
#配置sql日志输出
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
# type-aliases-package: com.njcn.harmonic.pojo
# type-handlers-package: com.njcn.db.handler
# global-config:
# db-config:
# date-format: yyyy-MM-dd HH:mm:ss
# global-config:
# enable-sql-runner: true

View File

@@ -0,0 +1,136 @@
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.migration.read.MigrationReadBootApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
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;
/**
* @author hongawen
* @version 1.0.0
* @date 2021年12月10日 15:05
*/
@RunWith(SpringRunner.class)
@WebAppConfiguration
@SpringBootTest(classes = MigrationReadBootApplication.class)
public class BaseJunitTest {
@Autowired
private IDataFlicker dataFlicker;
@Autowired
private IDataFluc dataFluc;
@Autowired
private IDataHarmphasicI dataHarmphasicI;
@Autowired
private IDataHarmphasicV dataHarmphasicV;
@Autowired
private IDataHarmpowerP dataHarmpowerP;
@Autowired
private IDataHarmpowerQ dataHarmpowerQ;
@Autowired
private IDataHarmpowerS dataHarmpowerS;
@Autowired
private IDataHarmRateI dataHarmRateI;
@Autowired
private IDataHarmRateV dataHarmRateV;
@Autowired
private IDataI dataI;
@Autowired
private IDataInharmI dataInharmI;
@Autowired
private IDataInharmV dataInharmV;
@Autowired
private IDataPlt dataPlt;
@Autowired
private IDataV dataV;
@Autowired
private IPqsCommunicate pqsCommunicate;
@Autowired
private MigrationInsertFeignClient migrationInsertFeignClient;
@Autowired
private MigrationService migrationService;
@Test
public void test() {
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
lineParam.setStartTime("2025-04-23 00:00:00");
lineParam.setEndTime("2025-04-23 00:05:00");
// List<DataFlicker> dataFlickers = dataFlicker.listDataFlicker(lineParam);
// List<DataFluc> dataFlucs = dataFluc.listDataFluc(lineParam);
// List<DataHarmphasicI> dataHarmphasicIS = dataHarmphasicI.listDataHarmphasicI(lineParam);
// List<DataHarmphasicV> dataHarmphasicVS = dataHarmphasicV.listDataHarmphasicV(lineParam);
// List<DataHarmpowerP> dataHarmpowerPS = dataHarmpowerP.listDataHarmpowerP(lineParam);
// List<DataHarmpowerQ> dataHarmpowerQS = dataHarmpowerQ.listDataHarmpowerQ(lineParam);
// List<DataHarmpowerS> dataHarmpowerS1 = dataHarmpowerS.listDataHarmpowerS(lineParam);
// List<DataHarmrateI> dataHarmrateIS = dataHarmRateI.listDataHarmrateI(lineParam);
// List<DataHarmrateV> dataHarmrateVS = dataHarmRateV.listDataHarmrateV(lineParam);
// List<DataI> dataIS = dataI.listDataI(lineParam);
// List<DataInharmI> dataInharmIS = dataInharmI.listDataInharmI(lineParam);
// List<DataInharmV> dataInharmVS = dataInharmV.listDataInharmV(lineParam);
// List<DataPlt> dataPlts = dataPlt.listDataPlt(lineParam);
List<DataV> dataVS = dataV.listDataV(lineParam);
migrationInsertFeignClient.insertDataV(dataVS);
DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
// String format = DATE_TIME_FORMATTER.format(dataVS.get(0).getTime());
// List<PqsCommunicate> pqsCommunicates = pqsCommunicate.listPqsCommunicate(lineParam);
System.out.println(dataVS);
}
@Test
public void test2() {
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
lineParam.setStartTime("2025-04-23 00:00:00");
lineParam.setEndTime("2025-04-23 23:59:00");
lineParam.setIsManual(true);
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();
}
}