|
@@ -44,52 +44,76 @@ public class RatAnalogTask {
|
|
|
private HadDataLogMapper hadDataLogMapper;
|
|
|
|
|
|
public void addAll(){
|
|
|
- List<HtAnalogData> list = null;
|
|
|
- Integer id = 0;
|
|
|
- Integer index = 1;
|
|
|
- Date startTime = null;
|
|
|
- Date endTime = null;
|
|
|
- List<HadDataLogVO> hadVoList = new ArrayList<>();
|
|
|
- do {
|
|
|
- Page<HtAnalogData> page = new Page<>(index, 2000);
|
|
|
- page = htAnalogDataMapper.page(page, null,null,id);
|
|
|
- list = page.getRecords();
|
|
|
- if (!CollectionUtils.isEmpty(list)){
|
|
|
- if (id == 0){
|
|
|
- startTime = DateUtils.getDayStartTime(list.get(0).getDataTime());
|
|
|
- endTime = DateUtils.getDayEndTime(list.get(0).getDataTime());
|
|
|
+ Integer index = 0;
|
|
|
+ Date date = new Date();
|
|
|
+ date = DateUtils.setDays(date,27);
|
|
|
+ date = DateUtils.setMonths(date,4);
|
|
|
+ Date dayStartTime = DateUtils.getDayStartTime(date);
|
|
|
+ Date dayStartTime1 = DateUtils.getDayEndTime(date);
|
|
|
+ Date startTime = dayStartTime;
|
|
|
+ Date endTime = dayStartTime1;
|
|
|
+ Integer integer = htAnalogDataMapper.selectMaxId();
|
|
|
+ Integer maxId = integer;
|
|
|
+ boolean flag = true;
|
|
|
+ while (flag){
|
|
|
+ List<HadDataLogVO> hadVoList = new ArrayList<>();
|
|
|
+ List<HtAnalogData> htAnalogDatas = htAnalogDataMapper.page(index, 500, startTime, endTime);
|
|
|
+ if (!CollectionUtils.isEmpty(htAnalogDatas)){
|
|
|
+ for (HtAnalogData htAnalogData:htAnalogDatas) {
|
|
|
+ hadVoList.add(insertList(htAnalogData));
|
|
|
}
|
|
|
- id = list.get(list.size()-1).getId();
|
|
|
- index++;
|
|
|
- for (HtAnalogData htAnalogData:list) {
|
|
|
- if (htAnalogData.getDataTime().after(startTime) && htAnalogData.getDataTime().before(endTime)){
|
|
|
- insertList(hadVoList,htAnalogData,startTime);
|
|
|
- }else {
|
|
|
- List<HadDataLogVO> collect = hadVoList.stream().sorted(Comparator.comparing(HadDataLogVO::getSiteId)).collect(Collectors.toList());
|
|
|
- List<List<HadDataLogVO>> rsList = Lists.partition(collect, 2000);
|
|
|
- for (List<HadDataLogVO> logVOS:rsList) {
|
|
|
- ArrayList<HadDataLogVO> distant = logVOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(HadDataLogVO::getSiteId))), ArrayList::new));
|
|
|
- List<Integer> siteList = distant.stream().map(HadDataLogVO::getSiteId).collect(Collectors.toList());
|
|
|
- HadDataLog hadDataLog = new HadDataLog();
|
|
|
- hadDataLog.setDataTime(startTime);
|
|
|
- hadDataLog.setSiteIdList(JsonUtils.toJson(siteList));
|
|
|
- hadDataLog.setHadData(JsonUtils.toJson(logVOS));
|
|
|
- hadDataLogMapper.insert(hadDataLog);
|
|
|
- }
|
|
|
- startTime = DateUtils.getDayStartTime(htAnalogData.getDataTime());
|
|
|
- endTime = DateUtils.getDayEndTime(htAnalogData.getDataTime());
|
|
|
- hadVoList = new ArrayList<>();
|
|
|
- insertList(hadVoList,htAnalogData,startTime);
|
|
|
- }
|
|
|
+ insertHadDateLog(hadVoList,startTime);
|
|
|
+ if (htAnalogDatas.size() < 500){
|
|
|
+ //要进行下个天数的查询
|
|
|
+ startTime = DateUtils.addDays(startTime,1);
|
|
|
+ endTime = DateUtils.addDays(endTime,1);
|
|
|
+ index = 0;
|
|
|
+ }else {
|
|
|
+ index+=500;
|
|
|
}
|
|
|
+ if (htAnalogDatas.get(htAnalogDatas.size()-1).getId() >= maxId){
|
|
|
+ flag = false;
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ //要进行下个天数的查询
|
|
|
+ startTime = DateUtils.addDays(startTime,1);
|
|
|
+ endTime = DateUtils.addDays(endTime,1);
|
|
|
+ index = 0;
|
|
|
}
|
|
|
- log.info("处理到最大id"+id);
|
|
|
- }while (!CollectionUtils.isEmpty(list));
|
|
|
+ }
|
|
|
+ log.info("批量导入数据处理完成");
|
|
|
}
|
|
|
|
|
|
- public void insertList(List<HadDataLogVO> hadVoList,HtAnalogData htAnalogData,Date startTime){
|
|
|
+
|
|
|
+ public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {
|
|
|
+ Calendar date = Calendar.getInstance();
|
|
|
+ date.setTime(nowTime);
|
|
|
+ Calendar begin = Calendar.getInstance();
|
|
|
+ begin.setTime(beginTime);
|
|
|
+ Calendar end = Calendar.getInstance();
|
|
|
+ end.setTime(endTime);
|
|
|
+ if (date.after(begin) && date.before(end)) {
|
|
|
+ return true;
|
|
|
+ } else if (nowTime.compareTo(beginTime) == 0 || nowTime.compareTo(endTime) == 0) {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void insertHadDateLog(List<HadDataLogVO> hadVoList,Date startTime){
|
|
|
+ ArrayList<HadDataLogVO> distant = hadVoList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(HadDataLogVO::getSiteId))), ArrayList::new));
|
|
|
+ List<Integer> siteList = distant.stream().map(HadDataLogVO::getSiteId).collect(Collectors.toList());
|
|
|
+ HadDataLog hadDataLog = new HadDataLog();
|
|
|
+ hadDataLog.setDataTime(startTime);
|
|
|
+ hadDataLog.setSiteIdList(JsonUtils.toJson(siteList));
|
|
|
+ hadDataLog.setHadData(JsonUtils.toJson(hadVoList));
|
|
|
+ hadDataLogMapper.insert(hadDataLog);
|
|
|
+ }
|
|
|
+
|
|
|
+ public HadDataLogVO insertList(HtAnalogData htAnalogData){
|
|
|
HadDataLogVO hadDataLogVO = HadDataLogVO.builder()
|
|
|
- .dataTime(startTime)
|
|
|
+ .dataTime(htAnalogData.getDataTime())
|
|
|
.deviceCode(htAnalogData.getDeviceName())
|
|
|
.epp(htAnalogData.getEpp())
|
|
|
.ia(htAnalogData.getIa())
|
|
@@ -101,31 +125,25 @@ public class RatAnalogTask {
|
|
|
.siteId(htAnalogData.getSiteId())
|
|
|
.demand(htAnalogData.getDemand())
|
|
|
.build();
|
|
|
- hadVoList.add(hadDataLogVO);
|
|
|
+ return hadDataLogVO;
|
|
|
}
|
|
|
|
|
|
// @Scheduled(cron = "*/5 * * * * ?")
|
|
|
@Scheduled(cron = "0 0 0 */1 * ?")
|
|
|
public void addHadJob(){
|
|
|
- List<HtAnalogData> list = null;
|
|
|
Integer index = 1;
|
|
|
Date date = new Date();
|
|
|
+ List<HtAnalogData> list;
|
|
|
do {
|
|
|
- Page<HtAnalogData> page = new Page<>(index, 4000);
|
|
|
- page = htAnalogDataMapper.page(page, DateUtils.getDayStartTime(date),DateUtils.getDayEndTime(date),null);
|
|
|
- list = page.getRecords();
|
|
|
+ List<HadDataLogVO> hadVoList = new ArrayList<>();
|
|
|
+ Date dayStartTime = DateUtils.getDayStartTime(date);
|
|
|
+ list = htAnalogDataMapper.page(index, 2000, dayStartTime, DateUtils.getDayEndTime(date));
|
|
|
if (!CollectionUtils.isEmpty(list)){
|
|
|
- List<HtAnalogData> collect = list.stream().sorted(Comparator.comparing(HtAnalogData::getSiteId)).collect(Collectors.toList());
|
|
|
- List<List<HtAnalogData>> rsList = Lists.partition(collect, 2000);
|
|
|
- for (List<HtAnalogData> logVOS:rsList) {
|
|
|
- ArrayList<HtAnalogData> distant = logVOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(HtAnalogData::getSiteId))), ArrayList::new));
|
|
|
- List<Integer> siteList = distant.stream().map(HtAnalogData::getSiteId).collect(Collectors.toList());
|
|
|
- HadDataLog hadDataLog = new HadDataLog();
|
|
|
- hadDataLog.setDataTime(DateUtils.getDayStartTime(date));
|
|
|
- hadDataLog.setSiteIdList(JsonUtils.toJson(siteList));
|
|
|
- hadDataLog.setHadData(JsonUtils.toJson(logVOS));
|
|
|
- hadDataLogMapper.insert(hadDataLog);
|
|
|
+ for (HtAnalogData htAnalogData:list) {
|
|
|
+ hadVoList.add(insertList(htAnalogData));
|
|
|
}
|
|
|
+ insertHadDateLog(hadVoList,dayStartTime);
|
|
|
+ index++;
|
|
|
}
|
|
|
}while (!CollectionUtils.isEmpty(list));
|
|
|
log.info("处理完成");
|