perf: 增加61850采集的数据转换到字符型和日期型的处理

main
huangfeng 4 months ago
parent b2cbcfa905
commit 0a337daa20

@ -38,15 +38,15 @@ public class WarnRuleController extends BasicController {
public Response<List<ColumnModel>> listComparator() throws Exception {
List<ColumnModel> result = new ArrayList<>();
ColumnModel item = new ColumnModel();
item.setType(Constants.FloatCompare);
item.setType(Constants.Float);
item.setComment("浮点型数据比较器");
result.add(item);
item = new ColumnModel();
item.setType(Constants.IntCompare);
item.setType(Constants.Int);
item.setComment("整型数据比较器");
result.add(item);
item = new ColumnModel();
item.setType(Constants.MissCompare);
item.setType(Constants.Miss);
item.setComment("数据缺失比较器");
result.add(item);
return Response.success(result);
@ -60,11 +60,11 @@ public class WarnRuleController extends BasicController {
}
private Comparator getComparator(String name) throws BusinessException {
if (Constants.FloatCompare.equalsIgnoreCase(name)) {
if (Constants.Float.equalsIgnoreCase(name)) {
return floatCompare;
} else if (Constants.IntCompare.equalsIgnoreCase(name)) {
} else if (Constants.Int.equalsIgnoreCase(name)) {
return intCompare;
} else if (Constants.MissCompare.equalsIgnoreCase(name)) {
} else if (Constants.Miss.equalsIgnoreCase(name)) {
return missCompare;
} else {
throw new BusinessException("未找到该比较器");
@ -76,15 +76,15 @@ public class WarnRuleController extends BasicController {
public Response<List<WarnRule>> listAll(Integer sensorId) throws Exception {
List<WarnRule> result = service.listAll(sensorId);
for (WarnRule item : result) {
if (Constants.FloatCompare.equalsIgnoreCase(item.getComparator())) {
if (Constants.Float.equalsIgnoreCase(item.getComparator())) {
item.setComparatorDesc("浮点型数据比较器");
String name = floatCompare.supportedOperator().get(item.getOperator());
item.setOperatorDesc(name);
} else if (Constants.IntCompare.equalsIgnoreCase(item.getComparator())) {
} else if (Constants.Int.equalsIgnoreCase(item.getComparator())) {
item.setComparatorDesc("整型数据比较器");
String name = intCompare.supportedOperator().get(item.getOperator());
item.setOperatorDesc(name);
} else if (Constants.MissCompare.equalsIgnoreCase(item.getComparator())) {
} else if (Constants.Miss.equalsIgnoreCase(item.getComparator())) {
item.setComparatorDesc("数据缺失比较器");
String name = missCompare.supportedOperator().get(item.getOperator());
item.setOperatorDesc(name);

@ -105,13 +105,13 @@ public class WarnRule {
} else {
this.comparator = comparator;
this.operator = operator;
if (Constants.FloatCompare.equalsIgnoreCase(comparator)) {
if (Constants.Float.equalsIgnoreCase(comparator)) {
actualComp = new FloatCompare();
actualComp.setOperator(operator);
} else if (Constants.IntCompare.equalsIgnoreCase(comparator)) {
} else if (Constants.Int.equalsIgnoreCase(comparator)) {
actualComp = new IntCompare();
actualComp.setOperator(operator);
} else if (Constants.MissCompare.equalsIgnoreCase(comparator)) {
} else if (Constants.Miss.equalsIgnoreCase(comparator)) {
actualComp = new MissCompare();
actualComp.setOperator(operator);
} else {
@ -141,7 +141,7 @@ public class WarnRule {
public List<TriggerModel> checkData(List<Map<String, Object>> list) throws Exception {
List<TriggerModel> result = null;
if (CollectionUtils.isEmpty(list)) {
if (Constants.MissCompare.equalsIgnoreCase(comparator)) {
if (Constants.Miss.equalsIgnoreCase(comparator)) {
boolean r = this.triggerRule(null);
if (r) {
result = new ArrayList<>();

@ -13,7 +13,10 @@ public class Constants {
public static final Integer Server = 1;
public static final Integer Client = 0;
public static String FloatCompare = "float";
public static String IntCompare = "int";
public static String MissCompare = "miss";
public static String Float = "float";
public static String Int = "int";
public static String Varchar = "varchar";
public static String Text = "text";
public static String DateTime = "datetime";
public static String Miss = "miss";
}

@ -12,7 +12,7 @@ public interface DataService {
List<ColumnModel> getDataTables() throws Exception;
List<ColumnModel> getDataTableColumns(String tableName) throws Exception;
List<ColumnModel> getDataTableColumns(String tableName);
OnePage<Map<String, Object>> getData(String tableName, Integer devId, List<ModevTypePoint> points, ConditionModel model) throws Exception;

@ -1,6 +1,7 @@
package com.xydl.cac.service.impl;
import com.xydl.cac.entity.*;
import com.xydl.cac.entity.constants.Constants;
import com.xydl.cac.model.ColumnModel;
import com.xydl.cac.model.ConditionModel;
import com.xydl.cac.model.OnePage;
@ -59,7 +60,7 @@ public class DataServiceImpl implements DataService {
}
@Override
public List<ColumnModel> getDataTableColumns(String tableName) throws Exception {
public List<ColumnModel> getDataTableColumns(String tableName) {
if (StringUtils.isBlank(schema)) {
this.getDatabase();
}
@ -100,6 +101,19 @@ public class DataServiceImpl implements DataService {
return field;
}
@Cacheable(value = "fieldType", key = "#tableName + '-' + #field")
public String getFieldType(String tableName, String field) {
String type = "";
List<ColumnModel> columnList = this.getDataTableColumns(tableName);
for (ColumnModel col : columnList) {
if (col.getName().equals(field)) {
type = col.getType();
break;
}
}
return type;
}
private void getDatabase() {
String sql = "select database()";
List<String> list = jdbcTemplate.queryForList(sql, String.class);
@ -281,6 +295,21 @@ public class DataServiceImpl implements DataService {
String sqlCount = "SELECT count(*)" + sqlFrom + sqlWhere;
Long count = jdbcTemplate.queryForObject(sqlCount, Long.class);
String type = this.getFieldType(tableName, colname);
if (Constants.Varchar.equalsIgnoreCase(type)) {
value = "'" + value + "'";
} else if (Constants.Text.equalsIgnoreCase(type)) {
value = "'" + value + "'";
} else if (Constants.DateTime.equalsIgnoreCase(type)) {
if (value.length() == 10) {
value = value + "000";
}
if (value.length() == 13) {
Date date = new Date(Long.parseLong(value));
value = DateUtil.format(date);
}
value = "'" + value + "'";
}
if (count > 0) {
String sql = "UPDATE " + tableName + " set " + colname + "=" + value
+ sqlWhere;

Loading…
Cancel
Save