oralce同步到influxDB

This commit is contained in:
hzj
2024-01-18 19:36:33 +08:00
parent 013e8ffc73
commit 85e88b1c28
6 changed files with 29 additions and 6 deletions

View File

@@ -21,5 +21,7 @@ public class DataAsynParam {
//指标名,对应表映射后的实体名 //指标名,对应表映射后的实体名
private List<String> tableNames; private List<String> tableNames;
//执行同步数据类型1重网页端2跑批处理
private Integer excuteType=1;
} }

View File

@@ -1,5 +1,8 @@
package com.njcn.oracle.bo.param; package com.njcn.oracle.bo.param;
import lombok.Data;
import lombok.Getter;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -11,6 +14,7 @@ import java.util.stream.Collectors;
* @author clam * @author clam
* @version V1.0.0 * @version V1.0.0
*/ */
@Getter
public enum ServiceTypeEnum { public enum ServiceTypeEnum {
DATAFLICKER("DataFlicker","电压闪变数据表"), DATAFLICKER("DataFlicker","电压闪变数据表"),
DATAFLUC("DataFluc","电压波动数据表"), DATAFLUC("DataFluc","电压波动数据表"),

View File

@@ -16,8 +16,8 @@ public class LocalDateUtil {
public static List<LocalDate> getDateList(LocalDate startDate, LocalDate endDate) { public static List<LocalDate> getDateList(LocalDate startDate, LocalDate endDate) {
List<LocalDate> dateList = new ArrayList<>(); List<LocalDate> dateList = new ArrayList<>();
long daysBetween = ChronoUnit.DAYS.between(startDate, endDate); long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
dateList.add(startDate);
for (long i = 1; i < daysBetween; i++) { for (long i = 0; i <= daysBetween; i++) {
dateList.add(startDate.plusDays(i)); dateList.add(startDate.plusDays(i));
} }
return dateList; return dateList;

View File

@@ -45,6 +45,7 @@ public class OracleToOralceJob {
private String endtime; private String endtime;
@Scheduled(cron="0 5 0 * * ?") @Scheduled(cron="0 5 0 * * ?")
// @Scheduled(fixedDelay=3000000)
public void execute() { public void execute() {
QueryWrapper<JobHistoryLog> queryWrapper = new QueryWrapper<>(); QueryWrapper<JobHistoryLog> queryWrapper = new QueryWrapper<>();
queryWrapper.select("max(LAST_DATE) as LAST_DATE"); queryWrapper.select("max(LAST_DATE) as LAST_DATE");
@@ -53,11 +54,13 @@ public class OracleToOralceJob {
JobHistoryLog one = jobHistoryLogService.getBaseMapper().selectOne(queryWrapper); JobHistoryLog one = jobHistoryLogService.getBaseMapper().selectOne(queryWrapper);
if (Objects.isNull(one)){ if (Objects.isNull(one)){
startDate =LocalDate.parse(startime); startDate =LocalDate.parse(startime);
}else { }else {
startDate = one.getLastDate(); startDate = one.getLastDate();
startDate = startDate.plusDays(1);
} }
//获取配置的endtime。现在时间减1天开始时间+时间间隔最小值当enddate //获取配置的endtime。现在时间减1天开始时间+时间间隔最小值当enddate
List<LocalDate> dates = Arrays.asList(LocalDate.parse(endtime), LocalDate.now().plusDays(-1), startDate.plusDays(slice)); List<LocalDate> dates = Arrays.asList(LocalDate.parse(endtime), LocalDate.now().plusDays(-1), startDate.plusDays(slice-1));
endDate = dates.stream().min(LocalDate::compareTo).get(); endDate = dates.stream().min(LocalDate::compareTo).get();
@@ -66,8 +69,8 @@ public class OracleToOralceJob {
dataAsynParam.setStartTime(startDate); dataAsynParam.setStartTime(startDate);
dataAsynParam.setEndTime(endDate); dataAsynParam.setEndTime(endDate);
dataAsynParam.setTableNames(ServiceTypeEnum.getExecutableTypes()); dataAsynParam.setTableNames(ServiceTypeEnum.getExecutableTypes());
dataAsynParam.setExcuteType(2);
oracleService.dataBacthSysc(dataAsynParam); oracleService.dataBacthSysc(dataAsynParam);
jobHistoryLogService.save(new JobHistoryLog(endDate, LocalDateTime.now()));
} }
} }

View File

@@ -7,10 +7,13 @@ import cn.hutool.core.text.StrPool;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import com.njcn.oracle.bo.param.DataAsynParam; import com.njcn.oracle.bo.param.DataAsynParam;
import com.njcn.oracle.bo.param.MigrationParam; import com.njcn.oracle.bo.param.MigrationParam;
import com.njcn.oracle.bo.param.ServiceTypeEnum;
import com.njcn.oracle.bo.po.JobDetail; import com.njcn.oracle.bo.po.JobDetail;
import com.njcn.oracle.bo.po.JobHistoryLog;
import com.njcn.oracle.mybatis.service.IReplenishMybatisService; import com.njcn.oracle.mybatis.service.IReplenishMybatisService;
import com.njcn.oracle.service.IOracleService; import com.njcn.oracle.service.IOracleService;
import com.njcn.oracle.service.JobDetailService; import com.njcn.oracle.service.JobDetailService;
import com.njcn.oracle.service.JobHistoryLogService;
import com.njcn.oracle.util.LocalDateUtil; import com.njcn.oracle.util.LocalDateUtil;
import lombok.Data; import lombok.Data;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -34,6 +37,7 @@ public class OracleServiceImpl implements IOracleService {
private final static String PACKAGE_SUFFIX = "ServiceImpl"; private final static String PACKAGE_SUFFIX = "ServiceImpl";
private final JobDetailService jobDetailService; private final JobDetailService jobDetailService;
private final JobHistoryLogService jobHistoryLogService;
@Value("${business.slice:2}") @Value("${business.slice:2}")
private int slice; private int slice;
@@ -62,6 +66,12 @@ public class OracleServiceImpl implements IOracleService {
} }
List<LocalDate> dateList = LocalDateUtil.getDateList(dataAsynParam.getStartTime(), dataAsynParam.getEndTime()); List<LocalDate> dateList = LocalDateUtil.getDateList(dataAsynParam.getStartTime(), dataAsynParam.getEndTime());
for (LocalDate date : dateList) { for (LocalDate date : dateList) {
//添加记录批处理日志,执行为批处理且最后一张表执行完记录
if(dataAsynParam.getExcuteType()==2&&Objects.equals(tableName, ServiceTypeEnum.LIMITTARGET.getCode())){
JobHistoryLog jobHistoryLog = new JobHistoryLog(date,LocalDateTime.now());
jobHistoryLogService.save(jobHistoryLog);
}
//日志记录 //日志记录
JobDetail jobDetail = jobDetailService.select(tableName, date); JobDetail jobDetail = jobDetailService.select(tableName, date);
if (Objects.nonNull(jobDetail) && (jobDetail.getState() == 1 || jobDetail.getState() == 0)) { if (Objects.nonNull(jobDetail) && (jobDetail.getState() == 1 || jobDetail.getState() == 0)) {
@@ -122,10 +132,14 @@ public class OracleServiceImpl implements IOracleService {
jobDetail.setUpdateTime(LocalDateTime.now()); jobDetail.setUpdateTime(LocalDateTime.now());
jobDetailService.updateByMultiId(jobDetail); jobDetailService.updateByMultiId(jobDetail);
} }
System.out.println("执行后总堆内存为:" + runtime.totalMemory() / (1024 * 1024) + " MB"); System.out.println("执行后总堆内存为:" + runtime.totalMemory() / (1024 * 1024) + " MB");
System.out.println("执行后已用堆内存为:" + (runtime.totalMemory() - runtime.freeMemory()) / (1024 * 1024) + " MB"); System.out.println("执行后已用堆内存为:" + (runtime.totalMemory() - runtime.freeMemory()) / (1024 * 1024) + " MB");
System.out.println("执行后空闲堆内存为:" + runtime.freeMemory() / (1024 * 1024) + " MB"); System.out.println("执行后空闲堆内存为:" + runtime.freeMemory() / (1024 * 1024) + " MB");
} }
} }

View File

@@ -90,5 +90,5 @@ business:
job: job:
startime: 2023-01-01 startime: 2023-01-01
endtime: 2023-04-01 endtime: 2023-04-01
#每天执行数据量(天数) #每天执行数据量(天数)大于1
slice: 1 slice: 2