oralce数据转入mysql

This commit is contained in:
xy
2024-06-01 18:03:03 +08:00
parent 3a03a2e9af
commit 4cc4336521
10 changed files with 696 additions and 15 deletions

View File

@@ -0,0 +1,535 @@
package com.njcn.mysql.bo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "r_stat_limit_rate_d")
public class RStatLimitRateD {
/**
* 监测点ID合格率的变电站/装置/母线/线路序号
*/
@MppMultiId
@TableField(value = "my_index")
private String lineId;
/**
* 数据类型,A表示A相B表示B相,C表示C相,M表示ABC三项总和T表示总
*/
@MppMultiId
@TableField(value = "phasic_type")
private String phasicType;
/**
* 合格率时间
*/
@MppMultiId
@TableField(value = "time_id")
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
private LocalDate time;
/**
* 总计算次数
*/
@TableField(value = "all_time")
private Integer allTime;
/**
* 闪变越限次数
*/
@TableField(value = "flicker_overtime")
private Integer flickerOvertime;
/**
* 闪变总计算次数
*/
@TableField(value = "flicker_all_time")
private Integer flickerAllTime;
/**
* 频率偏差越限次数
*/
@TableField(value = "freq_dev_overtime")
private Integer freqDevOvertime;
/**
* 电压偏差越限次数
*/
@TableField(value = "voltage_dev_overtime")
private Integer voltageDevOvertime;
/**
* 三相电压不平衡度越限次数
*/
@TableField(value = "ubalance_overtime")
private Integer ubalanceOvertime;
/**
* 电压谐波畸变率越限次数
*/
@TableField(value = "uaberrance_overtime")
private Integer uaberranceOvertime;
/**
* 负序电流限值次数
*/
@TableField(value = "i_neg_overtime")
private Integer iNegOvertime;
/**
* 2次电压谐波含有率越限次数
*/
@TableField(value = "uharm_2_overtime")
private Integer uharm2Overtime;
/**
* 3次电压谐波含有率越限次数
*/
@TableField(value = "uharm_3_overtime")
private Integer uharm3Overtime;
/**
* 4次电压谐波含有率越限次数
*/
@TableField(value = "uharm_4_overtime")
private Integer uharm4Overtime;
/**
* 5次电压谐波含有率越限次数
*/
@TableField(value = "uharm_5_overtime")
private Integer uharm5Overtime;
/**
* 6次电压谐波含有率越限次数
*/
@TableField(value = "uharm_6_overtime")
private Integer uharm6Overtime;
/**
* 7次电压谐波含有率越限次数
*/
@TableField(value = "uharm_7_overtime")
private Integer uharm7Overtime;
/**
* 8次电压谐波含有率越限次数
*/
@TableField(value = "uharm_8_overtime")
private Integer uharm8Overtime;
/**
* 9次电压谐波含有率越限次数
*/
@TableField(value = "uharm_9_overtime")
private Integer uharm9Overtime;
/**
* 10次电压谐波含有率越限次数
*/
@TableField(value = "uharm_10_overtime")
private Integer uharm10Overtime;
/**
* 11次电压谐波含有率越限次数
*/
@TableField(value = "uharm_11_overtime")
private Integer uharm11Overtime;
/**
* 12次电压谐波含有率越限次数
*/
@TableField(value = "uharm_12_overtime")
private Integer uharm12Overtime;
/**
* 13次电压谐波含有率越限次数
*/
@TableField(value = "uharm_13_overtime")
private Integer uharm13Overtime;
/**
* 14次电压谐波含有率越限次数
*/
@TableField(value = "uharm_14_overtime")
private Integer uharm14Overtime;
/**
* 15次电压谐波含有率越限次数
*/
@TableField(value = "uharm_15_overtime")
private Integer uharm15Overtime;
/**
* 16次电压谐波含有率越限次数
*/
@TableField(value = "uharm_16_overtime")
private Integer uharm16Overtime;
/**
* 17次电压谐波含有率越限次数
*/
@TableField(value = "uharm_17_overtime")
private Integer uharm17Overtime;
/**
* 18次电压谐波含有率越限次数
*/
@TableField(value = "uharm_18_overtime")
private Integer uharm18Overtime;
/**
* 19次电压谐波含有率越限次数
*/
@TableField(value = "uharm_19_overtime")
private Integer uharm19Overtime;
/**
* 20次电压谐波含有率越限次数
*/
@TableField(value = "uharm_20_overtime")
private Integer uharm20Overtime;
/**
* 21次电压谐波含有率越限次数
*/
@TableField(value = "uharm_21_overtime")
private Integer uharm21Overtime;
/**
* 22次电压谐波含有率越限次数
*/
@TableField(value = "uharm_22_overtime")
private Integer uharm22Overtime;
/**
* 23次电压谐波含有率越限次数
*/
@TableField(value = "uharm_23_overtime")
private Integer uharm23Overtime;
/**
* 24次电压谐波含有率越限次数
*/
@TableField(value = "uharm_24_overtime")
private Integer uharm24Overtime;
/**
* 25次电压谐波含有率越限次数
*/
@TableField(value = "uharm_25_overtime")
private Integer uharm25Overtime;
/**
* 2次电流谐波幅值越限次数
*/
@TableField(value = "iharm_2_overtime")
private Integer iharm2Overtime;
/**
* 3次电流谐波幅值越限次数
*/
@TableField(value = "iharm_3_overtime")
private Integer iharm3Overtime;
/**
* 4次电流谐波幅值越限次数
*/
@TableField(value = "iharm_4_overtime")
private Integer iharm4Overtime;
/**
* 5次电流谐波幅值越限次数
*/
@TableField(value = "iharm_5_overtime")
private Integer iharm5Overtime;
/**
* 6次电流谐波幅值越限次数
*/
@TableField(value = "iharm_6_overtime")
private Integer iharm6Overtime;
/**
* 7次电流谐波幅值越限次数
*/
@TableField(value = "iharm_7_overtime")
private Integer iharm7Overtime;
/**
* 8次电流谐波幅值越限次数
*/
@TableField(value = "iharm_8_overtime")
private Integer iharm8Overtime;
/**
* 9次电流谐波幅值越限次数
*/
@TableField(value = "iharm_9_overtime")
private Integer iharm9Overtime;
/**
* 10次电流谐波幅值越限次数
*/
@TableField(value = "iharm_10_overtime")
private Integer iharm10Overtime;
/**
* 11次电流谐波幅值越限次数
*/
@TableField(value = "iharm_11_overtime")
private Integer iharm11Overtime;
/**
* 12次电流谐波幅值越限次数
*/
@TableField(value = "iharm_12_overtime")
private Integer iharm12Overtime;
/**
* 13次电流谐波幅值越限次数
*/
@TableField(value = "iharm_13_overtime")
private Integer iharm13Overtime;
/**
* 14次电流谐波幅值越限次数
*/
@TableField(value = "iharm_14_overtime")
private Integer iharm14Overtime;
/**
* 15次电流谐波幅值越限次数
*/
@TableField(value = "iharm_15_overtime")
private Integer iharm15Overtime;
/**
* 16次电流谐波幅值越限次数
*/
@TableField(value = "iharm_16_overtime")
private Integer iharm16Overtime;
/**
* 17次电流谐波幅值越限次数
*/
@TableField(value = "iharm_17_overtime")
private Integer iharm17Overtime;
/**
* 18次电流谐波幅值越限次数
*/
@TableField(value = "iharm_18_overtime")
private Integer iharm18Overtime;
/**
* 19次电流谐波幅值越限次数
*/
@TableField(value = "iharm_19_overtime")
private Integer iharm19Overtime;
/**
* 20次电流谐波幅值越限次数
*/
@TableField(value = "iharm_20_overtime")
private Integer iharm20Overtime;
/**
* 21次电流谐波幅值越限次数
*/
@TableField(value = "iharm_21_overtime")
private Integer iharm21Overtime;
/**
* 22次电流谐波幅值越限次数
*/
@TableField(value = "iharm_22_overtime")
private Integer iharm22Overtime;
/**
* 23次电流谐波幅值越限次数
*/
@TableField(value = "iharm_23_overtime")
private Integer iharm23Overtime;
/**
* 24次电流谐波幅值越限次数
*/
@TableField(value = "iharm_24_overtime")
private Integer iharm24Overtime;
/**
* 25次电流谐波幅值越限次数
*/
@TableField(value = "iharm_25_overtime")
private Integer iharm25Overtime;
/**
* 0.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_1_overtime")
private Integer inuharm1Overtime;
/**
* 1.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_2_overtime")
private Integer inuharm2Overtime;
/**
* 2.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_3_overtime")
private Integer inuharm3Overtime;
/**
* 3.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_4_overtime")
private Integer inuharm4Overtime;
/**
* 4.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_5_overtime")
private Integer inuharm5Overtime;
/**
* 5.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_6_overtime")
private Integer inuharm6Overtime;
/**
* 6.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_7_overtime")
private Integer inuharm7Overtime;
/**
* 7.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_8_overtime")
private Integer inuharm8Overtime;
/**
* 8.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_9_overtime")
private Integer inuharm9Overtime;
/**
* 9.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_10_overtime")
private Integer inuharm10Overtime;
/**
* 10.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_11_overtime")
private Integer inuharm11Overtime;
/**
* 11.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_12_overtime")
private Integer inuharm12Overtime;
/**
* 12.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_13_overtime")
private Integer inuharm13Overtime;
/**
* 13.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_14_overtime")
private Integer inuharm14Overtime;
/**
* 14.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_15_overtime")
private Integer inuharm15Overtime;
/**
* 15.5次间谐波电压限值次数
*/
@TableField(value = "inuharm_16_overtime")
private Integer inuharm16Overtime;
}

View File

@@ -1,8 +1,6 @@
package com.njcn.mysql.service;
import com.njcn.oracle.bo.po.DayHarmrateV;
import com.njcn.oracle.bo.po.DayV;
import com.njcn.oracle.bo.po.PqsIntegrity;
import com.njcn.oracle.bo.po.*;
import java.util.List;
@@ -29,5 +27,17 @@ public interface OracleDataService {
*/
List<DayV> getDayV(String time);
/**
* 查询oracle中LIMIT_RATE数据
* @param time
* @return
*/
List<LimitRate> getLimitRate(String time);
/**
* 查询oracle中LIMIT_Target数据
* @param time
* @return
*/
List<LimitTarget> getLimitTarget(String time);
}

View File

@@ -2,15 +2,12 @@ package com.njcn.mysql.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.mysql.service.OracleDataService;
import com.njcn.oracle.bo.po.DayHarmrateV;
import com.njcn.oracle.bo.po.DayV;
import com.njcn.oracle.bo.po.PqsIntegrity;
import com.njcn.oracle.mapper.DayHarmrateVMapper;
import com.njcn.oracle.mapper.DayVMapper;
import com.njcn.oracle.mapper.PqsIntegrityMapper;
import com.njcn.oracle.bo.po.*;
import com.njcn.oracle.mapper.*;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
/**
@@ -26,6 +23,10 @@ public class OracleDataServiceImpl implements OracleDataService {
private final DayVMapper dayVMapper;
private final LimitRateMapper limitRateMapper;
private final LimitTargetMapper limitTargetMapper;
@Override
public List<DayHarmrateV> getDayHarmRate(String time) {
LambdaQueryWrapper<DayHarmrateV> lambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -46,4 +47,18 @@ public class OracleDataServiceImpl implements OracleDataService {
lambdaQueryWrapper.apply("TIMEID = to_date({0},'yyyy-mm-dd')",time);
return dayVMapper.selectList(lambdaQueryWrapper);
}
@Override
public List<LimitRate> getLimitRate(String time) {
LambdaQueryWrapper<LimitRate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.apply("TIMEID = to_date({0},'yyyy-mm-dd')",time);
return limitRateMapper.selectList(lambdaQueryWrapper);
}
@Override
public List<LimitTarget> getLimitTarget(String time) {
LambdaQueryWrapper<LimitTarget> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.apply("TIMEID = to_date({0},'yyyy-mm-dd')",time);
return limitTargetMapper.selectList(lambdaQueryWrapper);
}
}

View File

@@ -54,5 +54,25 @@ public class OracleToMysqlController {
return true;// HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, "数据同步");
}
@GetMapping("/limitRateSync")
@ApiOperation("limit_rate转成r_stat_limit_rate_d")
public Boolean limitRateSync(@RequestParam("startDateTime")String startDateTime, @RequestParam("endDateTime")String endDateTime) {
DataAsynParam dataAsynParam = new DataAsynParam();
dataAsynParam.setStartDateTime(LocalDateTimeUtil.parse(startDateTime, DatePattern.NORM_DATE_PATTERN));
dataAsynParam.setEndDateTime(LocalDateTimeUtil.parse(endDateTime, DatePattern.NORM_DATE_PATTERN));
oracleToMysqlService.insertLimitRate(startDateTime,endDateTime);
return true;// HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, "数据同步");
}
@GetMapping("/limitTargetSync")
@ApiOperation("limit_target转成r_stat_limit_target_d")
public Boolean limitTargetSync(@RequestParam("startDateTime")String startDateTime, @RequestParam("endDateTime")String endDateTime) {
DataAsynParam dataAsynParam = new DataAsynParam();
dataAsynParam.setStartDateTime(LocalDateTimeUtil.parse(startDateTime, DatePattern.NORM_DATE_PATTERN));
dataAsynParam.setEndDateTime(LocalDateTimeUtil.parse(endDateTime, DatePattern.NORM_DATE_PATTERN));
oracleToMysqlService.insertLimitTarget(startDateTime,endDateTime);
return true;// HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, "数据同步");
}
}

View File

@@ -0,0 +1,7 @@
package com.njcn.mysql.mapper;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.mysql.bo.po.RStatLimitRateD;
public interface RStatLimitRateDMapper extends MppBaseMapper<RStatLimitRateD> {
}

View File

@@ -0,0 +1,11 @@
package com.njcn.mysql.service;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.mysql.bo.po.RStatLimitRateD;
import java.util.List;
public interface IRStatLimitRateDService extends IMppService<RStatLimitRateD> {
void insert(List<RStatLimitRateD> list);
}

View File

@@ -22,4 +22,18 @@ public interface OracleToMysqlService {
* @param endTime
*/
void insertDayV(String startTime, String endTime);
/**
* r_stat_limit_rate_d数据插入
* @param startTime
* @param endTime
*/
void insertLimitRate(String startTime, String endTime);
/**
* r_stat_limit_target_d数据插入
* @param startTime
* @param endTime
*/
void insertLimitTarget(String startTime, String endTime);
}

View File

@@ -3,16 +3,15 @@ package com.njcn.mysql.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjUtil;
import com.njcn.mysql.bo.enums.TargetEnum;
import com.njcn.mysql.bo.po.PqLineBak;
import com.njcn.mysql.bo.po.RStatDataHarmrateVD;
import com.njcn.mysql.bo.po.RStatDataVD;
import com.njcn.mysql.bo.po.RStatIntegrityD;
import com.njcn.mysql.bo.po.*;
import com.njcn.mysql.service.*;
import com.njcn.mysql.util.PubUtils;
import com.njcn.oracle.bo.po.DayHarmrateV;
import com.njcn.oracle.bo.po.DayV;
import com.njcn.oracle.bo.po.LimitRate;
import com.njcn.oracle.bo.po.PqsIntegrity;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
@@ -37,6 +36,8 @@ public class OracleToMysqlServiceImpl implements OracleToMysqlService {
private final IRStatDataVDService rStatDataVDService;
private final IRStatLimitRateDService rLimitRateDService;
@Override
public void insertDayHarmRateV(String startTime, String endTime) {
List<String> timeList = PubUtils.getTimeList(startTime,endTime);
@@ -189,6 +190,47 @@ public class OracleToMysqlServiceImpl implements OracleToMysqlService {
System.out.println("查询oracle数据:"+(CollUtil.isNotEmpty(list)?list.size():0)+",插入mysql数据:"+ result.size() + ",执行时间:" + (system2-system1)/1000.0 + "s");
}
});
}
@Override
public void insertLimitRate(String startTime, String endTime) {
List<String> timeList = PubUtils.getTimeList(startTime,endTime);
List<PqLineBak> bakList = pqLineBakService.list();
//lineId:Oracle监测点ID id:Mysql监测点ID
Map<String, String> oracleRelationMysql = bakList.stream().collect(Collectors.toMap(PqLineBak::getLineId, PqLineBak::getId));
timeList.forEach(item->{
System.out.println("当前执行日期:"+ item);
List<RStatLimitRateD> result = new ArrayList<>();
long system1 = System.currentTimeMillis();
List<LimitRate> list = oracleDataService.getLimitRate(item);
if(CollUtil.isNotEmpty(list)){
list.forEach(data->{
if (ObjUtil.isNotNull(oracleRelationMysql.get(data.getMyindex().toString()))) {
RStatLimitRateD po = new RStatLimitRateD();
po.setTime(data.getTimeid().toLocalDate());
po.setLineId(oracleRelationMysql.get(data.getMyindex().toString()));
BeanUtils.copyProperties(data,po);
result.add(po);
}
});
} else {
long system2 = System.currentTimeMillis();
System.out.println("查询oracle数据:0,执行时间:" + (system2-system1)/1000.0 + "s");
}
if(CollUtil.isNotEmpty(result)){
rLimitRateDService.insert(result);
long system2 = System.currentTimeMillis();
System.out.println("查询oracle数据:"+(CollUtil.isNotEmpty(list)?list.size():0)+",插入mysql数据:"+ result.size() + ",执行时间:" + (system2-system1)/1000.0 + "s");
}
});
}
@Override
public void insertLimitTarget(String startTime, String endTime) {
}
public RStatDataHarmrateVD getData1(DayHarmrateV data, Map<String, String> oracleRelationMysql, String valueType) {

View File

@@ -0,0 +1,27 @@
package com.njcn.mysql.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.mysql.bo.po.RStatLimitRateD;
import com.njcn.mysql.mapper.RStatLimitRateDMapper;
import com.njcn.mysql.service.IRStatLimitRateDService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/3/24 9:53
*/
@DS("target")
@Service
public class RStatLimitRateDServiceImpl extends MppServiceImpl<RStatLimitRateDMapper, RStatLimitRateD> implements IRStatLimitRateDService {
@Override
public void insert(List<RStatLimitRateD> list) {
this.saveOrUpdateBatchByMultiId(list,50);
}
}

View File

@@ -69,8 +69,8 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver
# master:
# url: jdbc:oracle:thin:@10.118.135.139:1521:pqsbase
# username: pqsadmin
# password: Pqsadmin123
# username: pqsbase_xcs
# password: pqsadmin
# driver-class-name: oracle.jdbc.driver.OracleDriver
# target:
# url: jdbc:mysql://10.118.135.128:13306/pqsinfo?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=CTT