From 0e30da1f9eea98df487bf656af39a73823d3f342 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Fri, 08 Mar 2024 16:25:14 +0800
Subject: [PATCH] 水位值统一保留3位小数
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/feign/RulesClient.java | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 151 insertions(+), 25 deletions(-)
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/feign/RulesClient.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/feign/RulesClient.java
index e08c100..3dfc0ec 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/feign/RulesClient.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/feign/RulesClient.java
@@ -5,10 +5,15 @@
import cn.gistack.sm.resDataCheck.service.IQualityManageService;
import cn.gistack.sm.resDataCheck.service.IRulesConditionService;
import cn.gistack.sm.resDataCheck.service.IRulesService;
+import cn.gistack.system.feign.IDictBizClient;
+import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.core.tool.utils.StringUtil;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
@@ -24,6 +29,7 @@
@ApiIgnore
@RestController
@AllArgsConstructor
+@Slf4j
public class RulesClient implements IRulesClient {
private IRulesService rulesService;
@@ -32,8 +38,11 @@
private IQualityManageService qualityManageService;
+ private IDictBizClient dictBizClient;
+
/**
* 指标匹配空值
+ *
* @param key condition
* @return
*/
@@ -41,7 +50,7 @@
String retStr = "-1";
switch (key) {
case "EQUAL": //等于
- retStr = " is null OR = '' ";
+ retStr = " is null";
break;
case "UNEQUAL": //不等于
retStr = " is not null ";
@@ -52,49 +61,50 @@
/**
* 指标对指标匹配
- * @param key condition
+ *
+ * @param key condition
* @param target 指标
- * @param val 值
+ * @param val 值
* @return
*/
private String getConditionSqlStrByTarget(String key, String target, String val) {
String retStr = "-1";
switch (key) {
case "GREATER": //大于
- retStr = " > " + target;
+ retStr = " > " + target;
break;
case "GREATER_EQUAL": //大于等于
- retStr = " >= " + target;
+ retStr = " >= " + target;
break;
case "EQUAL": //等于
retStr = " = " + target;
break;
case "LESS_EQUAL": //小于等于
- retStr = " <= " + target;
+ retStr = " <= " + target;
break;
case "LESS": //小于
- retStr = " < " + target;
+ retStr = " < " + target;
break;
case "UNEQUAL": //不等于
- retStr = " <> " + target;
+ retStr = " <> " + target;
break;
case "DIFFER_GRATER": //差值大于
- retStr = " - " + target + " > " + val;
+ retStr = " - " + target + " > " + val;
break;
case "DIFFER_GRATER_EQUAL": //差值大于等于
- retStr = " - " + target + " >= " + val;
+ retStr = " - " + target + " >= " + val;
break;
case "DIFFER_EQUAL": //差值等于
retStr = " - " + target + " = " + val;
break;
case "DIFFER_LESS_EQUAL": //差值小于等于
- retStr = " - " + target + " < " + val;
+ retStr = " - " + target + " < " + val;
break;
case "DIFFER_LESS": //差值小于
- retStr = " - " + target + " <= " + val;
+ retStr = " - " + target + " <= " + val;
break;
case "DIFFER_UNEQUAL": //差值不等于
- retStr = " - " + target + " <> " + val;
+ retStr = " - " + target + " <> " + val;
break;
}
return retStr;
@@ -102,31 +112,100 @@
/**
* 指标对值匹配
+ *
* @param key condition
* @param val 值
* @return
*/
- private String getConditionSqlStrByVal(String key,String val) {
+ private String getConditionSqlStrByVal(String key, String val) {
String retStr = "-1";
switch (key) {
case "GREATER": //大于
- retStr = " > " + val;
+ retStr = " > " + val;
break;
case "GREATER_EQUAL": //大于等于
- retStr = " >= " + val;
+ retStr = " >= " + val;
break;
case "EQUAL": //等于
retStr = " = " + val;
break;
case "LESS_EQUAL": //小于等于
- retStr = " <= " + val;
+ retStr = " <= " + val;
break;
case "LESS": //小于
- retStr = " < " + val;
+ retStr = " < " + val;
break;
case "UNEQUAL": //不等于
- retStr = " <> " + val;
+ retStr = " <> " + val;
break;
+ }
+ return retStr;
+ }
+
+ /**
+ * 指标封装数据库字段 用于格式化数据格式
+ * @param key 指标值
+ * @return
+ */
+ private String getPropValStr(String key) {
+ String retStr = "";
+ switch (key) {
+ case "BASIC_1": // 水库名称
+ retStr = "a.\"name\"";
+ break;
+ case "BASIC_2": // 管理行政区
+ retStr = "a.\"interior_ad_guid\"";
+ break;
+ case "BASIC_3": // 注册登记号
+ retStr = "a.\"res_reg_code\"";
+ break;
+ case "RESERVOIR_1": // 总库容(万m³)
+ retStr = "c.\"tb_tot_cap\"";
+ break;
+ case "RESERVOIR_2": // 死库容(万m³)
+ retStr = "c.\"tb_dead_cap\"";
+ break;
+ case "RESERVOIR_3": // 校核洪水位(m)
+ retStr = "CAST(c.\"tb_chec_fl_stag\" AS DECIMAL(10, 3))";
+ break;
+ case "RESERVOIR_4": // 设计洪水位(m)
+ retStr = "CAST(c.\"tb_des_fl_stag\" AS DECIMAL(10, 3))";
+ break;
+ case "RESERVOIR_5": // 正常蓄水位(m)
+ retStr = "CAST(c.\"tb_norm_pool_stag\" AS DECIMAL(10, 3))";
+ break;
+ case "RESERVOIR_6": // 防洪高水位(m)
+ retStr = "CAST(c.\"tb_flpr_high_stag\" AS DECIMAL(10, 3))";
+ break;
+ case "RESERVOIR_7": // 死水位(m)
+ retStr = "CAST(c.\"tb_dead_stag\" AS DECIMAL(10, 3))";
+ break;
+ case "RESERVOIR_8": // 控制运行水位(m)
+ retStr = "CAST(b.\"tb_control_z\" AS DECIMAL(10, 3))";
+ break;
+ case "RESERVOIR_9": // 集雨面积
+ retStr = "CAST(c.\"wat_shed_area\" AS DECIMAL(10, 3))";
+ break;
+ case "RESERVOIR_10": // 实时水位(m)
+ retStr = "CAST(f.\"rz\" AS DECIMAL(10, 3)) AS rz";
+ break;
+ case "DRAINAGE_1": // 堰顶高程(m)
+ retStr = "CAST(g.\"tb_weir_top_elevation\" AS DECIMAL(10, 3))";
+ break;
+ case "RETAINING_3": // 坝顶高程(m)
+ retStr = "CAST(h.\"tb_dam_top_elevation\" AS DECIMAL(10, 3))";
+ break;
+ case "FLOOD_1": // 前汛期(m)
+ retStr = "CAST(d1.\"tb_flse_lim_stag\" AS DECIMAL(10, 3))";
+ break;
+ case "FLOOD_2": // 主汛期(m)
+ retStr = "CAST(d2.\"tb_flse_lim_stag\" AS DECIMAL(10, 3))";
+ break;
+ case "FLOOD_3": // 后汛期(m)
+ retStr = "CAST(d3.\"tb_flse_lim_stag\" AS DECIMAL(10, 3))";
+ break;
+ default:
+ retStr = "";
}
return retStr;
}
@@ -200,8 +279,13 @@
return retStr;
}
+ private String getDictValue(String key) {
+ return dictBizClient.getValue("CON_BASIC", key).getData();
+ }
+
@Override
public R createDataRules(Long id) {
+ log.info("规则匹配中......");
// 获取规则对象 返回值有关联水库,只匹配关联水库,为空表示匹配所有水库
Rules rules = rulesService.getById(id);
@@ -213,6 +297,7 @@
// 开始拼接条件 where
String sqlStr = "";
String relation = "";
+ String varStr = "";
for (RulesCondition rc : rcList) {
// 指标1
@@ -221,7 +306,7 @@
} else if (rc.getRelation().equals("OR")) {
relation = " OR ";
} else {
- relation = "";
+ relation = " WHERE (";
}
sqlStr += relation + getPropSqlStr(rc.getBasic());
@@ -230,18 +315,59 @@
if (rc.getProp().equals("NULLVAL")) { // 空值
sqlStr += getConditionSqlStrByNullVal(rc.getCondition());
} else if (rc.getProp().equals("TARGET")) { // 指标
- sqlStr += getConditionSqlStrByTarget(rc.getCondition(),getPropSqlStr(rc.getTarget()),rc.getValue());
+ sqlStr += ObjectUtil.isNotEmpty(rc.getFixValue())?
+ getConditionSqlStrByTarget(rc.getCondition(), getPropSqlStr(rc.getTarget()), rc.getValue())+"-"+rc.getFixValue() :
+ getConditionSqlStrByTarget(rc.getCondition(), getPropSqlStr(rc.getTarget()), rc.getValue());
} else {
- sqlStr += getConditionSqlStrByVal(rc.getCondition(),rc.getValue());
+ sqlStr += getConditionSqlStrByVal(rc.getCondition(), rc.getValue());
}
+ // 获取对应规则的值 concat('水库名称:',a."name",'\n','水库注册码:',a."interior_ad_guid")
+ if (varStr.indexOf(getPropSqlStr(rc.getBasic())) < 0) {
+ if (StringUtil.isBlank(varStr)) {
+ varStr = "'" + getDictValue(rc.getBasic()) + ": " + "'" + "," + getPropValStr(rc.getBasic());
+ } else {
+ varStr += "," + "'\n'" + ",'" + getDictValue(rc.getBasic()) + ": " + "'" + "," + getPropValStr(rc.getBasic());
+ }
+
+ }
+ if (rc.getProp().equals("TARGET")) {
+ varStr += "," + "'\n'" + ",'" + getDictValue(rc.getTarget()) + ": " + "'" + "," + getPropValStr(rc.getTarget());
+ }
+
+
}
+ sqlStr += ")";
+
+ varStr = "concat(" + varStr +") AS val";
+
+ if (StringUtil.isNotBlank(rules.getIsGate())) {
+
+ String gateStr = rules.getIsGate().equals("1") ?"'有闸控制'":"'无闸控制'";
+
+ sqlStr += " and a.\"is_gate\" = " + gateStr;
+ }
+
+ // 拼接条件有问题,不操作
if (sqlStr.indexOf("-1") > 0) {
- return R.fail(-1,sqlStr + "\\n 查询条件错误,请检查规则设置");
+ log.info("查询条件错误,请检查规则设置......:", sqlStr);
+ return R.fail(-1, sqlStr + "\\n 查询条件错误,请检查规则设置");
}
- // 执行sql
- return R.data(qualityManageService.addQualityManage(id,sqlStr));
+
+ Integer ret = 0;
+
+ try {
+ ret = qualityManageService.addQualityManage(id, varStr, sqlStr);
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.info("查询条件错误,请检查规则设置......:", sqlStr);
+ } finally {
+ log.info("执行完成......:");
+ }
+
+// 执行sql
+ return R.data(ret);
}
}
--
Gitblit v1.9.3