提交 1eb7c64b authored 作者: Your Name's avatar Your Name

[feature] 采集模式改为将采集的数据保存为文件

上级 9f4a2517
流水线 #198 已取消 于阶段
package com.zjty.fp.acq.vomp.subject.service.updater;
public interface VompFetcher {
void fetchData();
}
package com.zjty.fp.acq.vomp.subject.service.updater.impl;
import com.google.common.collect.Lists;
import com.zjty.fp.acq.misc.utils.FileReader;
import com.zjty.fp.acq.misc.utils.JacksonUtil;
import com.zjty.fp.acq.vomp.base.enums.VompCatalogs;
import com.zjty.fp.acq.vomp.base.enums.VompPlatform;
import com.zjty.fp.acq.vomp.subject.entity.localdo.*;
import com.zjty.fp.acq.vomp.subject.entity.remotedo.*;
import com.zjty.fp.acq.vomp.subject.repository.local.*;
import com.zjty.fp.acq.vomp.subject.service.api.VompTransHelper;
import com.zjty.fp.acq.vomp.subject.service.cache.VompTransCache;
import com.zjty.fp.acq.vomp.subject.service.updater.VompUpdater;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* <p>Description : fp-fp
* <p>Date : 2018/11/20 10:18
* <p>@author : C
* Rd意为Read。该组件的同步数据模式为直接读取文件然后解析保存。
*/
@SuppressWarnings({"SpringAutowiredFieldsWarningInspection", "Duplicates"})
@Service
@Slf4j
public class VompDataRdUpdater implements VompUpdater {
@Autowired
VompTransCache transCache;
@Autowired
VompTransHelper transHelper;
@Autowired
FileReader fileReader;
@Autowired
VompAlarmRepository alarmRepository;
@Autowired
VompHandingInfoRepository handingInfoRepository;
@Autowired
VompPcInfoRepository pcInfoRepository;
@Autowired
VompStatusRepository statusRepository;
@Autowired
VompZoneRepository zoneRepository;
@Override
public void updateData() {
//read file & parse & save to cache
readAllFilesAndSaveCache();
//trans date to local format & save
updateAllData();
log.info("[vomp] 数据更新完毕");
}
/*
<Private Methods Area>
*/
/**
* Remote Data
*/
private void readAllFilesAndSaveCache() {
readChkRoutesAndSaveCache();
readChkStatesAndSaveCache();
readPcLogAndSaveCache();
readServerStatusAndSaveCache();
readZoneAndSaveCache();
}
private String readFileFirstLine(String catalog) {
Optional<String> firstLine = fileReader.readFileData(VompPlatform.PLATFORM.getName(), catalog).stream().findFirst();
return firstLine.orElse("");
}
private void readChkRoutesAndSaveCache() {
String text = readFileFirstLine(VompCatalogs.CHKROUTES.getName());
ChkRoutes[] chkRoutesArrays = JacksonUtil.readValue(text, ChkRoutes[].class);
List<ChkRoutes> chkRoutesList = Lists.newArrayList();
if (chkRoutesArrays != null) {
chkRoutesList = Arrays.asList(chkRoutesArrays);
}
transCache.setChkRoutesList(chkRoutesList);
}
private void readChkStatesAndSaveCache() {
String text = readFileFirstLine(VompCatalogs.CHKSTATES.getName());
ChkStates[] chkStatesArrays = JacksonUtil.readValue(text, ChkStates[].class);
List<ChkStates> chkStatesList = Lists.newArrayList();
if (chkStatesArrays != null) {
chkStatesList = Arrays.asList(chkStatesArrays);
}
transCache.setChkStatesList(chkStatesList);
}
private void readPcLogAndSaveCache() {
String text = readFileFirstLine(VompCatalogs.PCLOG.getName());
PcLog[] pcLogArrays = JacksonUtil.readValue(text, PcLog[].class);
List<PcLog> pcLogList = Lists.newArrayList();
if (pcLogArrays != null) {
pcLogList = Arrays.asList(pcLogArrays);
}
transCache.setPcLogList(pcLogList);
}
private void readServerStatusAndSaveCache() {
String text = readFileFirstLine(VompCatalogs.SERVERSTATUS.getName());
ServerStatus[] serverStatusArrays = JacksonUtil.readValue(text, ServerStatus[].class);
List<ServerStatus> serverStatusList = Lists.newArrayList();
if (serverStatusArrays != null) {
serverStatusList = Arrays.asList(serverStatusArrays);
}
transCache.setServerStatusList(serverStatusList);
}
private void readZoneAndSaveCache() {
String text = readFileFirstLine(VompCatalogs.ZONE.getName());
Zone[] zoneArrays = JacksonUtil.readValue(text, Zone[].class);
List<Zone> zoneList = Lists.newArrayList();
if (zoneArrays != null) {
zoneList = Arrays.asList(zoneArrays);
}
transCache.setZoneList(zoneList);
}
/**
* Local Data
*/
private void updateAllData() {
updateVompAlarmDl();
updateVompHandingInfoDl();
updateVompPcInfoDl();
updateVompStatusDl();
updateZoneDl();
}
private void updateVompAlarmDl() {
List<VompAlarm> alarmList4Save = getAlarmList();
alarmRepository.save(alarmList4Save);
log.info("[vomp] VompAlarm更新了{}条数据", alarmList4Save.size());
}
private void updateVompHandingInfoDl() {
List<VompHandingInfo> handingInfoList4Save = getHandingInfoList();
handingInfoRepository.save(handingInfoList4Save);
log.info("[vomp] VompHandingInfo更新了{}条数据", handingInfoList4Save.size());
}
private void updateVompPcInfoDl() {
List<VompPcInfo> pcInfoList4Save = getPcInfoList();
pcInfoRepository.save(pcInfoList4Save);
log.info("[vomp] VompPcInfo更新了{}条数据", pcInfoList4Save.size());
}
private void updateVompStatusDl() {
List<VompStatus> statusList4Save = getStatusList();
statusRepository.save(statusList4Save);
log.info("[vomp] VompStatus更新了{}条数据", statusList4Save.size());
}
private void updateZoneDl() {
List<VompZone> zoneList4Save = getZoneList();
zoneRepository.save(zoneList4Save);
log.info("[vomp] VompZone更新了{}条数据", zoneList4Save.size());
}
/**
* VompAlarm
*/
private List<VompAlarm> getAlarmList() {
List<VompAlarm> vompAlarmList = Lists.newArrayList();
transCache.getChkStates_PcLog_Map().forEach((chkstates, pcLogs) -> pcLogs.forEach(pclog -> vompAlarmList.add(transHelper.transToVompAlarm(chkstates, pclog))));
return vompAlarmList;
}
/**
* VompHandingInfo
*/
private List<VompHandingInfo> getHandingInfoList() {
List<VompHandingInfo> vompHandingInfoList = Lists.newArrayList();
transCache.getChkStates_ChkRoutes_Map().forEach((chkstates, chkRoutes) -> chkRoutes.forEach(chkRoute -> vompHandingInfoList.add(transHelper.transToHandingInfo(chkstates, chkRoute))));
return vompHandingInfoList;
}
/**
* VompPcInfo
*/
private List<VompPcInfo> getPcInfoList() {
List<VompPcInfo> vompPcInfoList = Lists.newArrayList();
transCache.getZone_PcLog_Map().forEach((zone, pcLogList) -> vompPcInfoList.add(transHelper.transToVompPcInfoVo(zone, pcLogList)));
return vompPcInfoList;
}
/**
* Status
*/
private List<VompStatus> getStatusList() {
return transCache.getServerStatusList().stream()
.map(transHelper::transToStatus)
.collect(Collectors.toList());
}
/**
* VompZone
*/
private List<VompZone> getZoneList() {
return transCache.getZoneList().stream()
.map(transHelper::transToVompZone)
.map(transHelper::addParentZoneName)
.map(transHelper::addGrandParentZoneName)
.collect(Collectors.toList());
}
}
package com.zjty.fp.acq.vomp.subject.service.updater.impl;
import com.zjty.fp.acq.misc.utils.FileCreator;
import com.zjty.fp.acq.misc.utils.JacksonUtil;
import com.zjty.fp.acq.vomp.subject.repository.remote.*;
import com.zjty.fp.acq.vomp.subject.service.updater.VompFetcher;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import static com.zjty.fp.acq.vomp.base.enums.VompCatalogs.*;
import static com.zjty.fp.acq.vomp.base.enums.VompPlatform.PLATFORM;
@SuppressWarnings("SpringAutowiredFieldsWarningInspection")
@Slf4j
@Service
public class VompFetcherImpl implements VompFetcher {
@Autowired
ChkRoutesRepository chkRoutesRepository;
@Autowired
ChkStatesRepository chkStatesRepository;
@Autowired
PcLogRepository pcLogRepository;
@Autowired
ServerStatusRepository serverStatusRepository;
@Autowired
ZoneRepository zoneRepository;
@Autowired
FileCreator fileCreator;
@Override
public void fetchData() {
//5种数据分别写入
uploadChkRoutes();
uploadChkStates();
uploadPcLog();
uploadServerStatus();
uploadZone();
}
private void createFileThenUploadToFtp(String catalog,String data){
String subName = PLATFORM.getName();
fileCreator.createFile(subName, catalog, data);
log.info("[{}] {}写入完毕",subName,catalog);
}
private void uploadChkRoutes() {
String data = JacksonUtil.toJSon(chkRoutesRepository.findAll());
createFileThenUploadToFtp(CHKROUTES.getName(),data);
}
private void uploadChkStates() {
String data = JacksonUtil.toJSon(chkStatesRepository.findAll());
createFileThenUploadToFtp(CHKSTATES.getName(),data);
}
private void uploadPcLog() {
String data = JacksonUtil.toJSon(pcLogRepository.findAll());
createFileThenUploadToFtp(PCLOG.getName(),data);
}
private void uploadServerStatus() {
String data = JacksonUtil.toJSon(serverStatusRepository.findAll());
createFileThenUploadToFtp(SERVERSTATUS.getName(),data);
}
private void uploadZone() {
String data = JacksonUtil.toJSon(zoneRepository.findAll());
createFileThenUploadToFtp(ZONE.getName(),data);
}
}
package com.zjty.fp.acq.vomp.task; package com.zjty.fp.acq.vomp.task;
import com.zjty.fp.acq.vomp.subject.service.updater.impl.VompDataDbUpdater; import com.zjty.fp.acq.vomp.subject.service.updater.impl.VompDataDbUpdater;
import com.zjty.fp.acq.vomp.subject.service.updater.impl.VompDataRdUpdater;
import com.zjty.fp.acq.vomp.subject.service.updater.impl.VompFetcherImpl;
import com.zjty.fp.acq.vomp.subject.service.updater.impl.VompMapUpdater; import com.zjty.fp.acq.vomp.subject.service.updater.impl.VompMapUpdater;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -18,14 +20,26 @@ import org.springframework.stereotype.Component; ...@@ -18,14 +20,26 @@ import org.springframework.stereotype.Component;
@Slf4j @Slf4j
public class VompTasks { public class VompTasks {
@Autowired @Autowired
VompDataDbUpdater dataUpdater; VompFetcherImpl vompFetcher;
@Autowired
VompDataRdUpdater dataUpdater;
@Autowired @Autowired
VompMapUpdater mapUpdater; VompMapUpdater mapUpdater;
/** /**
* 60分钟执行一次 * 60分钟执行一次 采集
*/ */
@Scheduled(initialDelay = 4000, fixedRate = 60000 * 60) @Scheduled(initialDelay = 4000, fixedRate = 60000 * 60)
public void fetchData() {
vompFetcher.fetchData();
}
/**
* 60分钟执行一次 读取
*/
// @Scheduled(initialDelay = 4000, fixedRate = 60000 * 60)
public void updateData() { public void updateData() {
dataUpdater.updateData(); dataUpdater.updateData();
mapUpdater.updateData(); mapUpdater.updateData();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论