Merge branch 'devhf' into dev

dev
huangfeng 1 month ago
commit 798c2477f5

@ -0,0 +1,8 @@
ALTER TABLE `ied_dl_config`
ADD COLUMN `upload` INT NULL COMMENT '0:不传; 1:要传;' AFTER `active`;
ALTER TABLE `ied_dl_record`
ADD COLUMN `upload` INT(11) NULL DEFAULT NULL COMMENT '0:未传; 1:已传;' AFTER `data`;
ALTER TABLE `i2sync_field`
ADD COLUMN `conversion` VARCHAR(45) NULL COMMENT '单位换算' AFTER `attach`;

@ -36,4 +36,7 @@ public class I2syncField {
@Column(name = "attach") @Column(name = "attach")
private String attach; private String attach;
@Column(name = "conversion")
private String conversion;
} }

@ -58,6 +58,10 @@ public class IedDlConfig {
@Column(name = "active") @Column(name = "active")
private Integer active; private Integer active;
@ApiModelProperty("是否上传健康评估 0:不传 1:要传")
@Column(name = "upload")
private Integer upload;
@Transient @Transient
private NSensor sensor; private NSensor sensor;
@Transient @Transient

@ -61,6 +61,13 @@ public class IedDlRecord {
@Column(name = "data") @Column(name = "data")
private String data; private String data;
@ApiModelProperty("是否上传健康评估 0:未传 1:已传")
@Column(name = "upload")
private Integer upload;
@Transient
String localFullPath;
@Transient @Transient
IedDlConfig config; IedDlConfig config;
@Transient @Transient

@ -12,6 +12,7 @@ import com.xydl.cac.service.IedDlRecordService;
import com.xydl.cac.socket.WebSocketServer; import com.xydl.cac.socket.WebSocketServer;
import com.xydl.cac.spectrogram.SpectrogramHandler; import com.xydl.cac.spectrogram.SpectrogramHandler;
import com.xydl.cac.util.DateUtil; import com.xydl.cac.util.DateUtil;
import com.xydl.cac.util.JkpgFtp;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -36,6 +37,7 @@ public class IEDCollectService {
WarningRepository _warningRepository; WarningRepository _warningRepository;
SpectrogramHandler _spectrogramHandler; SpectrogramHandler _spectrogramHandler;
boolean _warning; boolean _warning;
JkpgFtp _jkpgFtp;
String folder = "/record"; String folder = "/record";
HashMap<Integer, String> eqmidTimeMap = new HashMap<>(); HashMap<Integer, String> eqmidTimeMap = new HashMap<>();
@ -45,7 +47,8 @@ public class IEDCollectService {
IedDlRecordService dlRecordService, DataService dataService, IedDlRecordService dlRecordService, DataService dataService,
String xml, IcdIed ied, String xml, IcdIed ied,
WebSocketServer webSocketServer, BizConfig bizConfig, boolean warning, WebSocketServer webSocketServer, BizConfig bizConfig, boolean warning,
WarningRepository warningRepository, SpectrogramHandler spectrogramHandler) { WarningRepository warningRepository, SpectrogramHandler spectrogramHandler,
JkpgFtp jkpgFtp) {
_configRepository = configRepository; _configRepository = configRepository;
_attRepository = attRepository; _attRepository = attRepository;
_instRepository = instRepository; _instRepository = instRepository;
@ -59,6 +62,7 @@ public class IEDCollectService {
_warning = warning; _warning = warning;
_warningRepository = warningRepository; _warningRepository = warningRepository;
_spectrogramHandler = spectrogramHandler; _spectrogramHandler = spectrogramHandler;
_jkpgFtp = jkpgFtp;
iecClient = new IecClient(); iecClient = new IecClient();
} }
@ -236,10 +240,14 @@ public class IEDCollectService {
if (!exist) { if (!exist) {
String relativePath = localPath + "/" + filename; String relativePath = localPath + "/" + filename;
String localFullPath = _bizConfig.getDatapath() + relativePath; String localFullPath = _bizConfig.getDatapath() + relativePath;
record.setLocalFullPath(localFullPath);
iecClient.getFile(record.getRemotePath(), localFullPath, config.getTodel()); iecClient.getFile(record.getRemotePath(), localFullPath, config.getTodel());
record.setPath(_bizConfig.getDataNginxPath() + relativePath); record.setPath(_bizConfig.getDataNginxPath() + relativePath);
log.info("采集到" + record.getRemotePath()); log.info("采集到" + record.getRemotePath());
_spectrogramHandler.processFile(record); _spectrogramHandler.processFile(record);
if (config.getUpload() != null && config.getUpload().intValue() == Constants.TRUE) {
_jkpgFtp.upload(record);
}
_dlRecordService.add(record); _dlRecordService.add(record);
} }
} }

@ -8,6 +8,7 @@ import com.xydl.cac.service.DataService;
import com.xydl.cac.service.IedDlRecordService; import com.xydl.cac.service.IedDlRecordService;
import com.xydl.cac.socket.WebSocketServer; import com.xydl.cac.socket.WebSocketServer;
import com.xydl.cac.spectrogram.SpectrogramHandler; import com.xydl.cac.spectrogram.SpectrogramHandler;
import com.xydl.cac.util.JkpgFtp;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -39,6 +40,8 @@ public class AsyncTask {
WarningRepository warningRepository; WarningRepository warningRepository;
@Resource @Resource
SpectrogramHandler spectrogramHandler; SpectrogramHandler spectrogramHandler;
@Resource
JkpgFtp jkpgFtp;
@Async @Async
public void collectIed(String xml, IcdIed ied, List<Rptparamindex> rptList, List<IedDlConfig> dlList) { public void collectIed(String xml, IcdIed ied, List<Rptparamindex> rptList, List<IedDlConfig> dlList) {
@ -47,7 +50,8 @@ public class AsyncTask {
dlRecordService, dataService, dlRecordService, dataService,
xml, ied, xml, ied,
webSocketServer, bizConfig, warning, webSocketServer, bizConfig, warning,
warningRepository, spectrogramHandler); warningRepository, spectrogramHandler,
jkpgFtp);
iedService.collectAndSave(rptList, dlList); iedService.collectAndSave(rptList, dlList);
} }
} }

@ -6,6 +6,7 @@ import com.xydl.cac.model.i2sync.Attr;
import com.xydl.cac.model.i2sync.Datanode; import com.xydl.cac.model.i2sync.Datanode;
import com.xydl.cac.model.i2sync.Monitordata; import com.xydl.cac.model.i2sync.Monitordata;
import com.xydl.cac.model.i2sync.Request; import com.xydl.cac.model.i2sync.Request;
import com.xydl.cac.util.DataUtil;
import com.xydl.cac.util.DateUtil; import com.xydl.cac.util.DateUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -65,6 +66,9 @@ public class I2DataTransformer {
List<Attr> attrs = new ArrayList<>(); List<Attr> attrs = new ArrayList<>();
for (I2syncField field : fieldList) { for (I2syncField field : fieldList) {
Object value = dataMap.get(field.getFieldName()); Object value = dataMap.get(field.getFieldName());
if (StringUtils.isNotBlank(field.getConversion())) {
value = DataUtil.convert(value, field.getConversion());
}
if (value != null) { if (value != null) {
Attr attr = new Attr(); Attr attr = new Attr();
attr.setName(field.getDestFieldName()); attr.setName(field.getDestFieldName());

@ -66,4 +66,28 @@ public class DataUtil {
list.addAll(newlist); list.addAll(newlist);
} }
} }
public static Object convert(Object obj, String conversion) {
if (obj instanceof Number) {
float f = (float) obj;
if (conversion.startsWith("*")) {
float c = Float.parseFloat(conversion.replaceAll("\\*", "").
replaceAll(" ", ""));
return f * c;
} else if (conversion.startsWith("/")) {
float c = Float.parseFloat(conversion.replaceAll("\\/", "").
replaceAll(" ", ""));
return f / c;
} else if (conversion.startsWith("+")) {
float c = Float.parseFloat(conversion.replaceAll("\\+", "").
replaceAll(" ", ""));
return f + c;
} else if (conversion.startsWith("-")) {
float c = Float.parseFloat(conversion.replaceAll("\\-", "").
replaceAll(" ", ""));
return f - c;
}
}
return obj;
}
} }

@ -0,0 +1,59 @@
package com.xydl.cac.util;
import com.jcraft.jsch.JSchException;
import com.xydl.cac.entity.IedDlRecord;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class JkpgFtp {
@Value("${cac.jkpg.ip:}")
private String ip;
@Value("${cac.jkpg.port:22}")
private Integer port;
@Value("${cac.jkpg.user:}")
private String user;
@Value("${cac.jkpg.pass:}")
private String pass;
@Value("${cac.jkpg.pass:}")
private String path;
SFTPTool sftpTool = new SFTPTool();
boolean connected = false;
public void connect() {
if (StringUtils.isBlank(ip)) {
log.error("健康评估的IP未配置");
return;
}
if (StringUtils.isBlank(user)) {
log.error("健康评估的user未配置");
return;
}
try {
sftpTool.connect(ip, port, user, pass);
sftpTool.cdmkdir(path);
connected = true;
} catch (Exception e) {
log.error("SFTP连接健康评估失败", e);
connected = false;
}
}
public void upload(IedDlRecord record) {
if (!connected) {
this.connect();
}
if (connected) {
try {
sftpTool.upload(record.getLocalFullPath(), record.getFilename());
log.info("SFTP上传健康评估成功, " + record.getFilename());
} catch (Exception e) {
log.error("SFTP上传健康评估失败, " + record.getFilename(), e);
}
}
}
}

@ -55,3 +55,9 @@ cac:
name: ttyCH341USB0 name: ttyCH341USB0
intervaltime: 60 intervaltime: 60
warntime: 5 warntime: 5
jkpg:
ip: 192.168.1.190
port: 22
user: sftpuser
pass: 123456
path: filestore/comtrad

@ -55,3 +55,9 @@ cac:
name: ttyCH341USB0 name: ttyCH341USB0
intervaltime: 60 intervaltime: 60
warntime: 5 warntime: 5
jkpg:
ip: 192.168.1.190
port: 22
user: sftpuser
pass: 123456
path: filestore/comtrad

Loading…
Cancel
Save