| | |
| | | |
| | | 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; |
| | |
| | | |
| | | 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) { |
| | | // 获取规则对象 返回值有关联水库,只匹配关联水库,为空表示匹配所有水库 |
| | |
| | | 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)); |
| | | } |
| | | } |