From 3ce737b52fca082ac3a2ecda4a848e2e4abcd0ee Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 06 Jul 2023 09:38:18 +0800
Subject: [PATCH] Merge branch 'jtdev' of https://hbsl-code.gistack.cn/hbwri/manager into jtdev
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/feign/RulesClient.java | 201 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 198 insertions(+), 3 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 0f7f993..969a40d 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
@@ -2,6 +2,7 @@
import cn.gistack.sm.resDataCheck.entity.Rules;
import cn.gistack.sm.resDataCheck.entity.RulesCondition;
+import cn.gistack.sm.resDataCheck.service.IQualityManageService;
import cn.gistack.sm.resDataCheck.service.IRulesConditionService;
import cn.gistack.sm.resDataCheck.service.IRulesService;
import lombok.AllArgsConstructor;
@@ -29,6 +30,176 @@
private IRulesConditionService rulesConditionService;
+ private IQualityManageService qualityManageService;
+
+ /**
+ * 指标匹配空值
+ * @param key condition
+ * @return
+ */
+ private String getConditionSqlStrByNullVal(String key) {
+ String retStr = "-1";
+ switch (key) {
+ case "EQUAL": //等于
+ retStr = " is null OR = '' ";
+ break;
+ case "UNEQUAL": //不等于
+ retStr = " is not null ";
+ break;
+ }
+ return retStr;
+ }
+
+ /**
+ * 指标对指标匹配
+ * @param key condition
+ * @param target 指标
+ * @param val 值
+ * @return
+ */
+ private String getConditionSqlStrByTarget(String key, String target, String val) {
+ String retStr = "-1";
+ switch (key) {
+ case "GREATER": //大于
+ retStr = " > " + target;
+ break;
+ case "GREATER_EQUAL": //大于等于
+ retStr = " >= " + target;
+ break;
+ case "EQUAL": //等于
+ retStr = " = " + target;
+ break;
+ case "LESS_EQUAL": //小于等于
+ retStr = " <= " + target;
+ break;
+ case "LESS": //小于
+ retStr = " < " + target;
+ break;
+ case "UNEQUAL": //不等于
+ retStr = " <> " + target;
+ break;
+ case "DIFFER_GRATER": //差值大于
+ retStr = " - " + target + " > " + val;
+ break;
+ case "DIFFER_GRATER_EQUAL": //差值大于等于
+ retStr = " - " + target + " >= " + val;
+ break;
+ case "DIFFER_EQUAL": //差值等于
+ retStr = " - " + target + " = " + val;
+ break;
+ case "DIFFER_LESS_EQUAL": //差值小于等于
+ retStr = " - " + target + " < " + val;
+ break;
+ case "DIFFER_LESS": //差值小于
+ retStr = " - " + target + " <= " + val;
+ break;
+ case "DIFFER_UNEQUAL": //差值不等于
+ retStr = " - " + target + " <> " + val;
+ break;
+ }
+ return retStr;
+ }
+
+ /**
+ * 指标对值匹配
+ * @param key condition
+ * @param val 值
+ * @return
+ */
+ private String getConditionSqlStrByVal(String key,String val) {
+ String retStr = "-1";
+ switch (key) {
+ case "GREATER": //大于
+ retStr = " > " + val;
+ break;
+ case "GREATER_EQUAL": //大于等于
+ retStr = " >= " + val;
+ break;
+ case "EQUAL": //等于
+ retStr = " = " + val;
+ break;
+ case "LESS_EQUAL": //小于等于
+ retStr = " <= " + val;
+ break;
+ case "LESS": //小于
+ retStr = " < " + val;
+ break;
+ case "UNEQUAL": //不等于
+ retStr = " <> " + val;
+ break;
+ }
+ return retStr;
+ }
+
+ /**
+ * 指标封装数据库字段
+ *
+ * @param key 指标值
+ * @return 数据库str
+ */
+ private String getPropSqlStr(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 = "c.\"tb_chec_fl_stag\"";
+ break;
+ case "RESERVOIR_4": // 设计洪水位(m)
+ retStr = "c.\"tb_des_fl_stag\"";
+ break;
+ case "RESERVOIR_5": // 正常蓄水位(m)
+ retStr = "c.\"tb_norm_pool_stag\"";
+ break;
+ case "RESERVOIR_6": // 防洪高水位(m)
+ retStr = "c.\"tb_flpr_high_stag\"";
+ break;
+ case "RESERVOIR_7": // 死水位(m)
+ retStr = "c.\"tb_dead_stag\"";
+ break;
+ case "RESERVOIR_8": // 控制运行水位(m)
+ retStr = "b.\"tb_control_z\"";
+ break;
+ case "RESERVOIR_9": // 集雨面积
+ retStr = "c.\"wat_shed_area\"";
+ break;
+ case "RESERVOIR_10": // 实时水位(m)
+ retStr = "f.\"rz\"";
+ break;
+ case "DRAINAGE_1": // 堰顶高程(m)
+ retStr = "g.\"tb_weir_top_elevation\"";
+ break;
+ case "RETAINING_3": // 坝顶高程(m)
+ retStr = "h.\"tb_dam_top_elevation\"";
+ break;
+ case "FLOOD_1": // 前汛期(m)
+ retStr = "d1.\"tb_flse_lim_stag\"";
+ break;
+ case "FLOOD_2": // 主汛期(m)
+ retStr = "d2.\"tb_flse_lim_stag\"";
+ break;
+ case "FLOOD_3": // 后汛期(m)
+ retStr = "d3.\"tb_flse_lim_stag\"";
+ break;
+ default:
+ retStr = "";
+ }
+ return retStr;
+ }
+
@Override
public R createDataRules(Long id) {
// 获取规则对象 返回值有关联水库,只匹配关联水库,为空表示匹配所有水库
@@ -40,13 +211,37 @@
List<RulesCondition> rcList = rulesConditionService.list(Condition.getQueryWrapper(rulesCondition));
// 开始拼接条件 where
+ String sqlStr = "";
+ String relation = "";
+ for (RulesCondition rc : rcList) {
- // 判断规则操作数据表
- if (rules.getType().equals("BASIC")) { // 水库基本类型
+ // 指标1
+ if (rc.getRelation().equals("AND")) {
+ relation = " AND ";
+ } else if (rc.getRelation().equals("OR")) {
+ relation = " OR ";
+ } else {
+ relation = " WHERE ";
+ }
+
+ sqlStr += relation + getPropSqlStr(rc.getBasic());
+
+ // 判断
+ if (rc.getProp().equals("NULLVAL")) { // 空值
+ sqlStr += getConditionSqlStrByNullVal(rc.getCondition());
+ } else if (rc.getProp().equals("TARGET")) { // 指标
+ sqlStr += getConditionSqlStrByTarget(rc.getCondition(),getPropSqlStr(rc.getTarget()),rc.getValue());
+ } else {
+ sqlStr += getConditionSqlStrByVal(rc.getCondition(),rc.getValue());
+ }
}
+ if (sqlStr.indexOf("-1") > 0) {
+ return R.fail(-1,sqlStr + "\\n 查询条件错误,请检查规则设置");
+ }
+
// 执行sql
- return null;
+ return R.data(qualityManageService.addQualityManage(id,sqlStr));
}
}
--
Gitblit v1.9.3