提交 4ac2a6b6 authored 作者: 黄承天's avatar 黄承天

[feature] 由一体式改为读取文件形式纯api端

上级 0ea2acf8
流水线 #205 已失败 于阶段
......@@ -16,70 +16,55 @@ import javax.persistence.Table;
* 一个报警表单中可以包含多条报警记录
* routNo对应其所属的报警表单的statNO
*/
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Data
@Table(name = "chkroutes")
public class ChkRoutes {
/**
* 主键ID
*/
@Id
@Column(name = "routid")
private Integer routID;
/**
* 状态码
*/
@Column(name = "routno")
private String routNO;
/**
* 状态码编号
*/
@Column(name = "routstatus")
private String routStatus;
/**
* 地区编号
*/
@Column(name = "routfrom")
private String routFrom;
/**
* 操作者,admin,不确定
*/
@Column(name = "routoperator")
private String routOperator;
/**
* 最后修改时间
*/
@Column(name = "routstamp")
private String routStamp;
/**
* 内容,数据库无数据,不确定
*/
@Column(name = "routmemo", length = 2000)
private String routMemo;
/**
* 操作者,不确定字段
*/
@Column(name = "routinspector")
private String routInspector;
@Column(name = "routinspectorx")
private String routInspectorX;
@Column(name = "routconcerned")
private String routConcerned;
@Column(name = "routconcernedx")
private String routConcernedX;
@Column(name = "relationid")
private Integer relationId;
}
......@@ -15,34 +15,27 @@ import javax.persistence.Table;
* 一个报警表单中可以包含多条报警记录
* statNO对应其包含的报警记录的routNO
*/
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Data
@Table(name = "chkstates")
public class ChkStates {
/**
* 处理单号
*/
@Id
@Column(name = "statid")
private Integer statId;
/**
* 无内容
*/
@Column(name = "statmd")
private String statMd;
/**
* 状态码
*/
@Column(name = "statno")
private String statNo;
/**
* 处理方式状态码
*/
@Column(name = "statstatus")
private String statStatus;
}
......@@ -16,209 +16,173 @@ import java.util.Date;
* 一套报警记录中可以包含多条处理记录
* chkNO对应其所属报警记录
*/
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Data
@Table(name = "b_pclog")
public class PcLog {
/**
* 序号
*/
@Id
@Column(name = "RECNO")
private Integer recno;
/**
* 不详
*/
@Column(name = "Serverid")
private Integer serverId;
/**
* mac地址
*/
@Column(name = "MACSTR")
private String macStr;
/**
* 主机名
*/
@Column(name = "Hostname")
private String hostname;
/**
* 不详
*/
@Column(name = "Hostid")
private Integer hostID;
/**
* 内网ip地址
*/
@Column(name = "IPSTR")
private String ipStr;
/**
* 报警时间
*/
@Column(name = "Outbegin")
private Date outbegin;
/**
* 报警时间,同outbegin字段
*/
@Column(name = "Outend")
private Date outend;
/**
* 报警时间,精确到秒,string类型
*/
@Column(name = "STRbegin")
private String strBegin;
/**
* 同strbegin字段
*/
@Column(name = "STRend")
private String strEnd;
/**
* 无内容
*/
@Column(name = "Tlocate")
private String tlocate;
/**
* 操作系统名称
*/
@Column(name = "TOS")
private String tos;
/**
* 主板序列号
*/
@Column(name = "Mastercode")
private String masterCode;
/**
* 硬盘序列号
*/
@Column(name = "HDCode")
private String hdCode;
/**
* 责任人
*/
@Column(name = "Tuser")
private String tUser;
/**
* 均为0
*/
@Column(name = "SEClevel")
private Integer secLevel;
/**
* 用户端软件
*/
@Column(name = "TVer")
private String tver;
/**
* 外联描述信息
*/
@Column(name = "Tmemo")
private String tmemo;
/**
* 均为1
*/
@Column(name = "Tmode")
private String tmode;
/**
* 外网ip地址
*/
@Column(name = "Outipstr")
private String outIpstr;
/**
* 地区名称
*/
@Column(name = "zonecode")
private String zoneCode;
/**
* 均为null
*/
@Column(name = "unitcode")
private String unitCode;
/**
* 单位名称
*/
@Column(name = "unitname")
private String unitName;
/**
* 部门名称
*/
@Column(name = "deptment")
private String deptment;
/**
* 1或0,意思不详
*/
@Column(name = "Chkstatus")
private Integer chkStatus;
/**
* 网卡信息
*/
@Column(name = "TCard")
private String tCard;
/**
* 厂家编号
*/
@Column(name = "TCompany")
private String tCompany;
/**
* 转发
*/
@Column(name = "TReserve")
private String tReserve;
/**
* 时间类型,字义不知
*/
@Column(name = "Chkstamp")
private Date chkStamp;
/**
* 部门等级,不确定
*/
@Column(name = "unittype")
private Integer unitType;
/**
* 操作人
*/
@Column(name = "Chkoperator")
private String chkOperator;
/**
* 均为null,用途不明
*/
@Column(name = "chkmemo")
private String chkMemo;
/**
* 状态码,作关联用
*/
@Column(name = "chkno")
private String chkNo;
}
......@@ -13,78 +13,64 @@ import javax.persistence.Table;
* @author C
* 服务器运行状态
*/
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Data
@Table(name = "B_SERVERSTATUS")
public class ServerStatus {
/**
* 序号
*/
@Id
@Column(name = "serverstatusid")
private Integer serverStatusId;
/**
* 服务器名称
*/
@Column(name = "hname")
private String hName;
/**
* 地区编号
*/
@Column(name = "tzone")
private String tZone;
/**
* 最近连接时间
*/
@Column(name = "ltime")
private String lTime;
/**
* 不知用途
*/
@Column(name = "nip")
private String nip;
/**
* 电话
*/
@Column(name = "phone")
private String phone;
/**
* 联系人
*/
@Column(name = "contact")
private String contact;
/**
* 地址
*/
@Column(name = "address")
private String ads;
/**
* URI
*/
@Column(name = "uri")
private String uri;
/**
* 最近连接时间
*/
@Column(name = "utime")
private String uTime;
/**
* 不详
*/
@Column(name = "prop")
private String prop;
}
......@@ -17,131 +17,108 @@ import javax.persistence.Table;
* 报警数
* 报警率等等
*/
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Data
@Table(name = "b_zone")
public class Zone {
/**
* id,不知用途,有些为null
*/
@Column(name = "zoneid0")
private String zoneId0;
/**
* 主id
*/
@Id
@Column(name = "zoneid")
private String zoneId;
/**
* 地区名字
*/
@Column(name = "zonename")
private String zoneName;
/**
* 均为null
*/
@Column(name = "bmp")
private String bmp;
/**
* 坐标x
*/
@Column(name = "xorigin")
private String xOrigin;
/**
* 坐标y
*/
@Column(name = "yorigin")
private String yOrigin;
/**
* 不详字段
*/
@Column(name = "xterminus")
private String xTerminus;
/**
* 不详字段
*/
@Column(name = "yterminus")
private String yTerminus;
/**
* 背景颜色
*/
@Column(name = "bg")
private String bg;
/**
* 父地区id
*/
@Column(name = "parentid")
private String parentID;
/**
* 等级
*/
@Column(name = "levelid")
private Integer levelID;
/**
* 不详字段
*/
@Column(name = "zonecount")
private Integer zoneCount;
/**
* 监控终端数量
*/
@Column(name = "zonepccount")
private String zonePcCount;
/**
* 不详
*/
@Column(name = "xml", columnDefinition = "text")
private String xmls;
/**
* 0或1,不详
*/
@Column(name = "enterable")
private Integer enterable;
/**
* 不详
*/
@Column(name = "zoneinformant")
private String zoneInformant;
/**
* 不详
*/
@Column(name = "zoneapproved")
private String zoneApproved;
/**
* 操作者,admin,null,不确定
*/
@Column(name = "zoneoperator")
private String zoneOperator;
/**
* 时间,用途不详
*/
@Column(name = "zonestamp")
private String zoneStamp;
/**
* 涉密计算机数量
*/
@Column(name = "zonepacount")
private String zonePaCount;
}
package com.zjty.fp.api.vomp.subject.repository.remote;
import com.zjty.fp.api.vomp.subject.entity.remotedo.ChkRoutes;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* @author C
*/
@Repository
public interface ChkRoutesRepository extends JpaRepository<ChkRoutes, Integer> {
}
package com.zjty.fp.api.vomp.subject.repository.remote;
import com.zjty.fp.api.vomp.subject.entity.remotedo.ChkStates;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* @author C
*/
@Repository
public interface ChkStatesRepository extends JpaRepository<ChkStates, Integer> {
}
package com.zjty.fp.api.vomp.subject.repository.remote;
import com.zjty.fp.api.vomp.subject.entity.remotedo.PcLog;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* @author C
*/
@Repository
public interface PcLogRepository extends JpaRepository<PcLog, Integer> {
}
package com.zjty.fp.api.vomp.subject.repository.remote;
import com.zjty.fp.api.vomp.subject.entity.remotedo.ServerStatus;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* @author C
*/
@Repository
public interface ServerStatusRepository extends JpaRepository<ServerStatus, Integer> {
}
package com.zjty.fp.api.vomp.subject.repository.remote;
import com.zjty.fp.api.vomp.subject.entity.remotedo.Zone;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* @author C
*/
@Repository
public interface ZoneRepository extends JpaRepository<Zone, String> {
}
package com.zjty.fp.api.vomp.subject.service.updater;
public interface VompFetcher {
void fetchData();
}
package com.zjty.fp.api.vomp.subject.service.updater;
import com.zjty.fp.api.vomp.subject.service.updater.impl.VompDataDbUpdater;
import com.zjty.fp.api.vomp.subject.service.updater.impl.VompDataDlUpdater;
/**
......
package com.zjty.fp.api.vomp.subject.service.updater.impl;
import com.google.common.collect.Lists;
import com.zjty.fp.api.vomp.subject.entity.localdo.*;
import com.zjty.fp.api.vomp.subject.entity.remotedo.*;
import com.zjty.fp.api.vomp.subject.repository.local.*;
import com.zjty.fp.api.vomp.subject.repository.remote.*;
import com.zjty.fp.api.vomp.subject.service.api.VompTransHelper;
import com.zjty.fp.api.vomp.subject.service.cache.VompTransCache;
import com.zjty.fp.api.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.List;
import java.util.stream.Collectors;
/**
* <p>Description : fusion-platform
* <p>Date : 2019/1/2 11:24
* <p>@author : C
* Db意为Database。该组件的同步数据模式为直接从目标数据库读取数据并保存到自己的数据库。
*/
@SuppressWarnings("SpringAutowiredFieldsWarningInspection")
@Service
@Slf4j
public class VompDataDbUpdater implements VompUpdater {
@Autowired
VompTransCache transCache;
@Autowired
VompTransHelper transHelper;
@Autowired
ChkRoutesRepository chkRoutesRepository;
@Autowired
ChkStatesRepository chkStatesRepository;
@Autowired
PcLogRepository pcLogRepository;
@Autowired
ServerStatusRepository serverStatusRepository;
@Autowired
ZoneRepository zoneRepository;
@Autowired
VompAlarmRepository vompAlarmRepository;
@Autowired
VompHandingInfoRepository vompHandingInfoRepository;
@Autowired
VompPcInfoRepository vompPcInfoRepository;
@Autowired
VompStatusRepository vompStatusRepository;
@Autowired
VompZoneRepository vompZoneRepository;
@Override
public void updateData() {
//fetch data from remote database and save cache
fetchRemoteDataAndSaveCache();
//get data from cache and trans and save to local database
updateAllData();
}
private void fetchRemoteDataAndSaveCache() {
//chkroutes
List<ChkRoutes> chkRoutesList = chkRoutesRepository.findAll();
transCache.setChkRoutesList(chkRoutesList);
//chkroutes
List<ChkStates> chkStatesList = chkStatesRepository.findAll();
transCache.setChkStatesList(chkStatesList);
//pclog
List<PcLog> pcLogList = pcLogRepository.findAll();
transCache.setPcLogList(pcLogList);
//chkroutes
List<ServerStatus> serverStatusList = serverStatusRepository.findAll();
transCache.setServerStatusList(serverStatusList);
//chkroutes
List<Zone> zoneList = zoneRepository.findAll();
transCache.setZoneList(zoneList);
}
/**
* Local Data
*/
private void updateAllData() {
updateVompAlarmDb();
updateVompHandingInfoDb();
updateVompPcInfoDb();
updateVompStatusDb();
updateZoneDb();
}
private void updateVompAlarmDb() {
List<VompAlarm> alarmList4Save = getAlarmList();
vompAlarmRepository.save(alarmList4Save);
log.info("[vomp] VompAlarm更新了{}条数据", alarmList4Save.size());
}
private void updateVompHandingInfoDb() {
List<VompHandingInfo> handingInfoList4Save = getHandingInfoList();
vompHandingInfoRepository.save(handingInfoList4Save);
log.info("[vomp] VompHandingInfo更新了{}条数据", handingInfoList4Save.size());
}
private void updateVompPcInfoDb() {
List<VompPcInfo> pcInfoList4Save = getPcInfoList();
vompPcInfoRepository.save(pcInfoList4Save);
log.info("[vomp] VompPcInfo更新了{}条数据", pcInfoList4Save.size());
}
private void updateVompStatusDb() {
List<VompStatus> statusList4Save = getStatusList();
vompStatusRepository.save(statusList4Save);
log.info("[vomp] VompStatus更新了{}条数据", statusList4Save.size());
}
private void updateZoneDb() {
List<VompZone> zoneList4Save = getZoneList();
vompZoneRepository.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());
}
}
......@@ -2,6 +2,7 @@ package com.zjty.fp.api.vomp.subject.service.updater.impl;
import com.google.common.collect.Lists;
import com.zjty.fp.api.misc.utils.Downloader;
import com.zjty.fp.api.misc.utils.FileReader;
import com.zjty.fp.api.misc.utils.JacksonUtil;
import com.zjty.fp.api.vomp.base.enums.VompCatalogs;
import com.zjty.fp.api.vomp.base.enums.VompPlatform;
......
package com.zjty.fp.api.vomp.subject.service.updater.impl;
import com.zjty.fp.api.misc.utils.JacksonUtil;
import com.zjty.fp.api.vomp.subject.repository.remote.*;
import com.zjty.fp.api.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.api.vomp.base.enums.VompCatalogs.*;
import static com.zjty.fp.api.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.api.vomp.task;
import com.zjty.fp.api.vomp.subject.service.updater.VompFetcher;
import com.zjty.fp.api.vomp.subject.service.updater.impl.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -16,24 +15,14 @@ import org.springframework.stereotype.Component;
@Component
@Slf4j
public class VompTasks {
/**
* 采集工具类 将数据以文件形式保存
*/
@Autowired
VompFetcher vompFetcher;
/**
* 以直连数据库模式更新文件的工具类
*/
@Autowired
VompDataDbUpdater dataDbUpdater;
/**
* 以从FTP下载文件并读取的模式更新文件的工具类
* 以从FTP下载文件并读取的模式更新数据的工具类
*/
@Autowired
VompDataDlUpdater dataDlUpdater;
/**
* 以读取文件模式更新文件的工具类
* 以读取文件模式更新数据的工具类
*/
@Autowired
VompDataRdUpdater dataRdUpdater;
......@@ -48,7 +37,7 @@ public class VompTasks {
*/
// @Scheduled(initialDelay = 4000, fixedRate = 60000 * 60)
public void updateData() {
dataDbUpdater.updateData();
dataRdUpdater.updateData();
mapUpdater.updateData();
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论