xieb
2023-07-05 2043641a98572ef3779ad17351cb1098845c1c9a
数据校验规则
3 files modified
1 files renamed
210 ■■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/resDataCheck/feign/IRulesClient.java 3 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/controller/RulesController.java 9 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/entity/QualityManage.java patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/feign/RulesClient.java 198 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/resDataCheck/feign/IRulesClient.java
@@ -3,6 +3,7 @@
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
 * @PROJECT_NAME: skjcmanager
@@ -20,6 +21,6 @@
    String CREATE_DATA_RULES = API_PREFIX + "/createDataRules";
    @GetMapping(CREATE_DATA_RULES)
    R createDataRules(Long id);
    R createDataRules(@RequestParam("id") Long id);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/controller/RulesController.java
@@ -1,6 +1,7 @@
package cn.gistack.sm.resDataCheck.controller;
import cn.gistack.sm.resDataCheck.entity.Rules;
import cn.gistack.sm.resDataCheck.feign.IRulesClient;
import cn.gistack.sm.resDataCheck.service.IRulesService;
import cn.gistack.sm.resDataCheck.vo.RulesVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -28,6 +29,14 @@
    private IRulesService rulesService;
    private IRulesClient rulesClient;
    @GetMapping(value = "/test")
    public R test(@RequestParam(name = "id", required = true) Long id) {
        rulesClient.createDataRules(id);
        return R.data(0);
    }
    /**
     * 分页列表查询
     */
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/entity/QualityManage.java
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/resDataCheck/feign/RulesClient.java
@@ -29,6 +29,174 @@
    private IRulesConditionService rulesConditionService;
    /**
     * 指标匹配空值
     * @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,12 +208,38 @@
        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 = "";
            }
            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;
    }