diff --git a/src/main/java/com/xydl/cac/controller/WarnRuleController.java b/src/main/java/com/xydl/cac/controller/WarnRuleController.java index 63ee4e8..b012ab5 100644 --- a/src/main/java/com/xydl/cac/controller/WarnRuleController.java +++ b/src/main/java/com/xydl/cac/controller/WarnRuleController.java @@ -38,15 +38,15 @@ public class WarnRuleController extends BasicController { public Response> listComparator() throws Exception { List 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> listAll(Integer sensorId) throws Exception { List 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); diff --git a/src/main/java/com/xydl/cac/entity/WarnRule.java b/src/main/java/com/xydl/cac/entity/WarnRule.java index 9bfac57..7612483 100644 --- a/src/main/java/com/xydl/cac/entity/WarnRule.java +++ b/src/main/java/com/xydl/cac/entity/WarnRule.java @@ -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 checkData(List> list) throws Exception { List 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<>(); diff --git a/src/main/java/com/xydl/cac/entity/constants/Constants.java b/src/main/java/com/xydl/cac/entity/constants/Constants.java index 8e32afc..a5f3c6d 100644 --- a/src/main/java/com/xydl/cac/entity/constants/Constants.java +++ b/src/main/java/com/xydl/cac/entity/constants/Constants.java @@ -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"; } diff --git a/src/main/java/com/xydl/cac/service/DataService.java b/src/main/java/com/xydl/cac/service/DataService.java index 8f981d5..0965e83 100644 --- a/src/main/java/com/xydl/cac/service/DataService.java +++ b/src/main/java/com/xydl/cac/service/DataService.java @@ -12,7 +12,7 @@ public interface DataService { List getDataTables() throws Exception; - List getDataTableColumns(String tableName) throws Exception; + List getDataTableColumns(String tableName); OnePage> getData(String tableName, Integer devId, List points, ConditionModel model) throws Exception; diff --git a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java index 29fa793..356eb29 100644 --- a/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/DataServiceImpl.java @@ -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 getDataTableColumns(String tableName) throws Exception { + public List 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 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 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;