feat: 增加i2传数据时候可以单位换算

dev
huangfeng 2 months ago
parent aa3a3c5c8a
commit 247e6fcfd4

@ -3,3 +3,6 @@ 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")
private String attach;
@Column(name = "conversion")
private String conversion;
}

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

@ -66,4 +66,28 @@ public class DataUtil {
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;
}
}

Loading…
Cancel
Save