| | |
| | | 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; |
| | |
| | | |
| | | private IQualityManageService qualityManageService; |
| | | |
| | | private IDictBizClient dictBizClient; |
| | | |
| | | /** |
| | | * 指标匹配空值 |
| | | * |
| | | * @param key condition |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 指标对指标匹配 |
| | | * @param key condition |
| | | * |
| | | * @param key condition |
| | | * @param target 指标 |
| | | * @param val 值 |
| | | * @param val 值 |
| | | * @return |
| | | */ |
| | | private String getConditionSqlStrByTarget(String key, String target, String val) { |
| | |
| | | |
| | | /** |
| | | * 指标对值匹配 |
| | | * |
| | | * @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": //大于 |
| | |
| | | return retStr; |
| | | } |
| | | |
| | | private String getDictValue(String key) { |
| | | return dictBizClient.getValue("CON_BASIC", key).getData(); |
| | | } |
| | | |
| | | @Override |
| | | public R createDataRules(Long id) { |
| | | log.info("规则匹配中......"); |
| | |
| | | // 开始拼接条件 where |
| | | String sqlStr = ""; |
| | | String relation = ""; |
| | | String varStr = ""; |
| | | for (RulesCondition rc : rcList) { |
| | | |
| | | // 指标1 |
| | |
| | | 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 += 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()) + ": " + "'" + "," + getPropSqlStr(rc.getBasic()); |
| | | } else { |
| | | varStr += "," + "'\n'" + ",'" + getDictValue(rc.getBasic()) + ": " + "'" + "," + getPropSqlStr(rc.getBasic()); |
| | | } |
| | | |
| | | } |
| | | if (rc.getProp().equals("TARGET")) { |
| | | varStr += "," + "'\n'" + ",'" + getDictValue(rc.getTarget()) + ": " + "'" + "," + getPropSqlStr(rc.getTarget()); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | varStr = "concat(" + varStr +") AS val"; |
| | | |
| | | if (StringUtil.isNotBlank(rules.getIsGate())) { |
| | | sqlStr += "a.\"is_gate\" = " + rules.getIsGate(); |
| | | sqlStr += " and a.\"is_gate\" = " + rules.getIsGate(); |
| | | } |
| | | |
| | | // 拼接条件有问题,不操作 |
| | | if (sqlStr.indexOf("-1") > 0) { |
| | | log.info("查询条件错误,请检查规则设置......:",sqlStr); |
| | | return R.fail(-1,sqlStr + "\\n 查询条件错误,请检查规则设置"); |
| | | log.info("查询条件错误,请检查规则设置......:", sqlStr); |
| | | return R.fail(-1, sqlStr + "\\n 查询条件错误,请检查规则设置"); |
| | | } |
| | | |
| | | Integer ret = 0; |
| | | try { |
| | | qualityManageService.addQualityManage(id,sqlStr); |
| | | ret = qualityManageService.addQualityManage(id, varStr, sqlStr); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.info("查询条件错误,请检查规则设置......:",sqlStr); |
| | | log.info("查询条件错误,请检查规则设置......:", sqlStr); |
| | | } finally { |
| | | log.info("执行完成......:"); |
| | | } |
| | | |
| | | // 执行sql |
| | | return R.success(""); |
| | | return R.data(ret); |
| | | } |
| | | } |