Commit 671dae38 authored by suhuiguang's avatar suhuiguang

1.96333数据同步,自测调整,增加代码健壮性及记录异常日志

parent f18ac6a3
......@@ -35,18 +35,24 @@ public class SynElevator2EsJob {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
ElevatorSynLog synLog = getOrCreateSynLog();
// 2.循环写入或者更新数据
Page<Map<String, Object>> page = new Page<>(0, 1000);
page = elevatorMapper.selectElevatorOfIntoManage(page, synLog.getVersion());
long allPages = page.getPages();
while (allPages > 0) {
allPages--;
Page<Map<String, Object>> result = elevatorMapper.selectElevatorOfIntoManage(page, synLog.getVersion());
List<Map<String, Object>> elevators = result.getRecords();
esElevatorService.saveEsElevator2ES(elevators, synLog.getVersion());
try {
// 2.循环写入或者更新数据
Page<Map<String, Object>> page = new Page<>(0, 1000);
page = elevatorMapper.selectElevatorOfIntoManage(page, synLog.getVersion());
long allPages = page.getPages();
while (allPages > 0) {
allPages--;
Page<Map<String, Object>> result = elevatorMapper.selectElevatorOfIntoManage(page, synLog.getVersion());
List<Map<String, Object>> elevators = result.getRecords();
esElevatorService.saveEsElevator2ES(elevators, synLog.getVersion());
}
// 3.非最新版本号es索引数据删除及更新同步日志
this.clearNoUsingEsDataAndUpLog(synLog);
} catch (Exception e) {
log.error(e.getMessage(), "elev同步数据失败");
synLog.setRemark(e.getMessage());
elevatorSynLogService.updateById(synLog);
}
// 3.非最新版本号es索引数据删除及更新同步日志
this.clearNoUsingEsDataAndUpLog(synLog);
stopWatch.stop();
log.info("本次同步数据耗时:{}秒,数据详情:{}", stopWatch.getTotalTimeSeconds(), JSONObject.toJSONString(synLog));
}
......@@ -60,7 +66,7 @@ public class SynElevator2EsJob {
synLog.setAfterNum(esElevatorService.getESElavtorRepository().countByVersion(synLog.getVersion()));
// 删掉非最新版本号数据
esElevatorService.getESElavtorRepository().deleteByVersionIsNot(synLog.getVersion());
synLog.setDeleteNum(synLog.getBeforeNum() - synLog.getAfterNum());
synLog.setDeleteNum(synLog.getAfterNum() - synLog.getBeforeNum());
elevatorSynLogService.updateById(synLog);
}
......@@ -78,6 +84,7 @@ public class SynElevator2EsJob {
daySynLog.setBeforeNum(esElevatorService.getESElavtorRepository().count());
daySynLog.setVersion(daySynLog.getVersion() + 1);
daySynLog.setSynTime(DateUtil.date());
daySynLog.setRemark("");
elevatorSynLogService.updateById(daySynLog);
return daySynLog;
}
......@@ -89,7 +96,7 @@ public class SynElevator2EsJob {
if (lastDaySynLog != null) {
synLog.setVersion(lastDaySynLog.getVersion() == null ? 1 : lastDaySynLog.getVersion() + 1);
} else {
synLog.setVersion(1L);
synLog.setVersion(10L);
}
}
......
......@@ -617,18 +617,24 @@ public class ESElevatorServiceImpl {
esElevator.setSequenceNbr(String.valueOf(map.get("sequenceNbr")));
esElevator.setInnerNum(String.valueOf(map.get("innerNum")));
if (!ObjectUtils.isEmpty(map.get("longitude")) && !ObjectUtils.isEmpty(map.get("latitude"))) {
// 经度 -90° ~ 90°
Double lat = Double.parseDouble(String.valueOf(map.get("latitude")));
// 维度 -180° ~ 180°
Double lon = Double.parseDouble(String.valueOf(map.get("longitude")));
esElevator.setLocation(new GeoPoint(lat, lon));
if(lat > 90 || lat < -90 || lon > 180 || lon < -180) {
log.warn("设备record:{},经纬度不正确, 不再记录GeoPoint",esElevator.getSequenceNbr());
} else {
esElevator.setLocation(new GeoPoint(lat, lon));
}
}
esElevatorList.add(esElevator);
recordList.add(String.valueOf(map.get("sequenceNbr")));
}
esElavtorRepository.saveAll(esElevatorList);
StopWatch watch2 = new StopWatch();
watch2.start();
superviseInfoMapper.updateRecordBatch(recordList, version);
watch2.stop();
esElavtorRepository.saveAll(esElevatorList);
log.info("批量更新:【{}】条业务数据,耗时:{} 毫秒", elevatorList.size(), watch2.getTotalTimeSeconds());
watch.stop();
log.info("创建电梯索引数据整体耗时:【{}】条业务数据,耗时:{} 毫秒", elevatorList.size(), watch.getTotalTimeSeconds());
......
......@@ -42,6 +42,7 @@ public class ElevatorSynLogServiceImpl extends BaseService<ElevatorSynLogDto, El
LambdaQueryWrapper<ElevatorSynLog> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.le(ElevatorSynLog::getSynDate, DateUtil.formatDate(synDate));
queryWrapper.select(BaseEntity::getSequenceNbr,ElevatorSynLog::getVersion);
queryWrapper.orderByDesc(ElevatorSynLog::getSynDate);
queryWrapper.last("limit 1");
return this.getOne(queryWrapper);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment