Przeglądaj źródła

健康度公式配置获取数据

wukai 9 miesięcy temu
rodzic
commit
0cdbab0c21

+ 44 - 0
jjt-admin/src/test/java/com/test/RuleEngine.java

@@ -0,0 +1,44 @@
+package com.test;
+
+
+import com.googlecode.aviator.AviatorEvaluator;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class RuleEngine {
+    public static void main(String[] args) {
+//        evaluator();
+        match("${pp.1s}/${pp.tot}*100<99");
+        match("${hh}/${hoho}*100<99");
+
+    }
+
+    private static void evaluator(String exp) {
+        Map<String, Object> env = new HashMap<>();
+        env.put("pp1s", 98.0);
+        env.put("pptot", 100);
+        env.put("hh", 98.0);
+        env.put("hoho", 100);
+        Object result = AviatorEvaluator.execute(exp, env);
+        System.out.println("Rule matching result: " + result);
+    }
+
+    public static void match(String exp) {
+        System.err.println("exp-old:" + exp);
+        //正则表达式匹配变量
+        Pattern pattern = Pattern.compile("\\$\\{(.+?)\\}");
+        Matcher matcher = pattern.matcher(exp);
+        while (matcher.find()) {
+            String code = matcher.group(1);
+            String old = String.format("${%s}", code);
+            exp = exp.replace(old, code.replace(".", ""));
+        }
+
+        System.err.println("exp-new:" + exp);
+        evaluator(exp);
+
+    }
+}

+ 40 - 10
jjt-admin/src/test/java/com/test/Test.java

@@ -1,8 +1,9 @@
 package com.test;
 
-import java.math.BigDecimal;
-import java.text.DecimalFormat;
-import java.util.Random;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Test$
@@ -12,13 +13,42 @@ import java.util.Random;
  */
 public class Test {
     public static void main(String[] args) {
-        Random r = new Random();
-        DecimalFormat df = new DecimalFormat("#0.00");
-        for (int i = 0; i < 10; i++) {
-            float f = r.nextFloat()*100;
-            System.err.println(df.format(f));
+        Map<String, List<Float>> originalMap = new HashMap<>();
+        List<Float> list1 = new ArrayList<>();
+        list1.add(1f);
+        list1.add(2f);
+        list1.add(3f);
+        originalMap.put("code1", list1);
+        List<Float> list2 = new ArrayList<>();
+        list2.add(4f);
+        list2.add(5f);
+        list2.add(6f);
+        originalMap.put("code2", list2);
+        // 创建一个新的 List 来存储新的 Map 结构
+        List<Map<String, Float>> newList = new ArrayList<>();
+        // 确保两个列表长度相等
+        int size = 0;
+        for (String s : originalMap.keySet()) {
+            size = originalMap.get(s).size();
+            break;
+        }
+//        if (size != originalMap.get("code2").size()) {
+//            throw new IllegalArgumentException("Lists must be of the same size");
+//        }
+
+        // 遍历列表并创建新的 Map
+        for (int i = 0; i < size; i++) {
+            Map<String, Float> singleEntryMap = new HashMap<>();
+            for (String s : originalMap.keySet()) {
+                singleEntryMap.put(s, originalMap.get(s).get(i));
+
+            }
+            newList.add(singleEntryMap);
+        }
+
+        // 输出转换后的 List<Map<String, Float>>
+        for (Map<String, Float> map : newList) {
+            System.out.println(map);
         }
-        String xx = "pp.jvm.gc";
-        System.err.println(!xx.startsWith("pp.jvm."));
     }
 }

+ 5 - 1
jjt-biz/pom.xml

@@ -26,7 +26,11 @@
             <groupId>io.springfox</groupId>
             <artifactId>springfox-boot-starter</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>com.googlecode.aviator</groupId>
+            <artifactId>aviator</artifactId>
+            <version>5.2.6</version>
+        </dependency>
         <!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 -->
         <dependency>
             <groupId>io.swagger</groupId>

+ 1 - 1
jjt-biz/src/main/java/com/jjt/biz/controller/HlMetricsRelaController.java

@@ -28,7 +28,7 @@ import com.jjt.common.core.page.TableDataInfo;
  * 健康指标关系Controller
  *
  * @author jjt
- * @date 2024-09-01
+ * @date 2024-09-02
  */
 @Api(tags="健康指标关系")
 @RestController

+ 55 - 25
jjt-biz/src/main/java/com/jjt/biz/domain/HlMetricsRela.java

@@ -1,48 +1,78 @@
 package com.jjt.biz.domain;
 
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.jjt.common.annotation.Excel;
-import com.jjt.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.jjt.common.annotation.Excel;
+import com.jjt.common.core.domain.BaseEntity;
 
 /**
  * 健康指标关系对象 hl_metrics_rela
  *
  * @author jjt
- * @date 2024-09-01
+ * @date 2024-09-02
  */
 @ApiModel(value = "HlMetricsRela", description = "健康指标关系")
-@Data
-public class HlMetricsRela extends BaseEntity {
+public class HlMetricsRela extends BaseEntity
+{
     private static final long serialVersionUID = 1L;
 
-    /**
-     * 关系ID
-     */
+    /** 关系ID */
     @ApiModelProperty("关系ID")
     @TableId
     private Long relaId;
 
-    /**
-     * 健康度编码
-     */
+    /** 健康度编码 */
     @ApiModelProperty("健康度编码")
     @Excel(name = "健康度编码")
     private String hlCode;
 
-    /**
-     * 指标ID
-     */
-    @ApiModelProperty("指标ID")
-    @Excel(name = "指标ID")
-    private Long metricsId;
-
-    /**
-     * 指标名称
-     */
-    @ApiModelProperty("指标名称")
-    @Excel(name = "指标名称")
-    private String metricsName;
+    /** 计算公式 */
+    @ApiModelProperty("计算公式")
+    @Excel(name = "计算公式")
+    private String exp;
+
+    public void setRelaId(Long relaId)
+    {
+        this.relaId = relaId;
+    }
+
+    public Long getRelaId()
+    {
+        return relaId;
+    }
+    public void setHlCode(String hlCode)
+    {
+        this.hlCode = hlCode;
+    }
+
+    public String getHlCode()
+    {
+        return hlCode;
+    }
+    public void setExp(String exp)
+    {
+        this.exp = exp;
+    }
+
+    public String getExp()
+    {
+        return exp;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("relaId", getRelaId())
+            .append("hlCode", getHlCode())
+            .append("exp", getExp())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
 }

+ 8 - 0
jjt-biz/src/main/java/com/jjt/biz/mapper/BizModelMapper.java

@@ -3,6 +3,7 @@ package com.jjt.biz.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jjt.biz.domain.BizModel;
 import com.jjt.biz.domain.BizObj;
+import com.jjt.biz.domain.BizObjMetrics;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -68,4 +69,11 @@ public interface BizModelMapper extends BaseMapper<BizModel> {
      * @return 结果
      */
     List<BizObj> selectObjList(Long modelId);
+    /**
+     * 根据模型ID查询指标
+     *
+     * @param modelId 模型ID
+     * @return 结果
+     */
+    List<BizObjMetrics> selectBizModelMetricsList(Long modelId);
 }

+ 1 - 1
jjt-biz/src/main/java/com/jjt/biz/mapper/HlMetricsRelaMapper.java

@@ -8,7 +8,7 @@ import com.jjt.biz.domain.HlMetricsRela;
  * 健康指标关系Mapper接口
  * 
  * @author jjt
- * @date 2024-09-01
+ * @date 2024-09-02
  */
 public interface HlMetricsRelaMapper extends BaseMapper<HlMetricsRela>
 {

+ 9 - 1
jjt-biz/src/main/java/com/jjt/biz/service/IBizModelService.java

@@ -2,7 +2,7 @@ package com.jjt.biz.service;
 
 import com.jjt.biz.domain.BizModel;
 import com.jjt.biz.domain.BizObj;
-import com.jjt.biz.domain.MetricsDef;
+import com.jjt.biz.domain.BizObjMetrics;
 
 import java.util.List;
 
@@ -77,4 +77,12 @@ public interface IBizModelService {
      * @return 结果
      */
     int insertObj(Long modelId, Long[] objIds);
+
+    /**
+     * 根据模型ID查询指标
+     *
+     * @param modelId 模型ID
+     * @return 结果
+     */
+    List<BizObjMetrics> selectBizModelMetricsList(Long modelId);
 }

+ 1 - 1
jjt-biz/src/main/java/com/jjt/biz/service/IHlMetricsRelaService.java

@@ -7,7 +7,7 @@ import com.jjt.biz.domain.HlMetricsRela;
  * 健康指标关系Service接口
  * 
  * @author jjt
- * @date 2024-09-01
+ * @date 2024-09-02
  */
 public interface IHlMetricsRelaService 
 {

+ 12 - 0
jjt-biz/src/main/java/com/jjt/biz/service/impl/BizModelServiceImpl.java

@@ -3,6 +3,7 @@ package com.jjt.biz.service.impl;
 import com.jjt.biz.domain.BizModel;
 import com.jjt.biz.domain.BizModelDetail;
 import com.jjt.biz.domain.BizObj;
+import com.jjt.biz.domain.BizObjMetrics;
 import com.jjt.biz.mapper.BizModelMapper;
 import com.jjt.biz.service.IBizModelDetailService;
 import com.jjt.biz.service.IBizModelService;
@@ -142,4 +143,15 @@ public class BizModelServiceImpl implements IBizModelService {
         }
         return 0;
     }
+
+    /**
+     * 根据模型ID查询指标
+     *
+     * @param modelId 模型ID
+     * @return 结果
+     */
+    @Override
+    public List<BizObjMetrics> selectBizModelMetricsList(Long modelId) {
+        return bizModelMapper.selectBizModelMetricsList(modelId);
+    }
 }

+ 76 - 7
jjt-biz/src/main/java/com/jjt/biz/service/impl/HlBaseServiceImpl.java

@@ -1,9 +1,11 @@
 package com.jjt.biz.service.impl;
 
+import com.googlecode.aviator.AviatorEvaluator;
 import com.jjt.biz.domain.*;
 import com.jjt.biz.mapper.HlBaseMapper;
 import com.jjt.biz.service.*;
 import com.jjt.common.utils.DateUtils;
+import com.jjt.common.utils.StringUtils;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
@@ -13,6 +15,8 @@ import java.time.LocalDate;
 import java.time.ZoneId;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -43,6 +47,10 @@ public class HlBaseServiceImpl implements IHlBaseService {
     private IHlDayDetailService dayDetailService;
     @Resource
     private IHlMetricsRelaService relaService;
+    @Resource
+    private IMetricsDefService defService;
+    @Resource
+    private IBizModelService modelService;
 
 
     /**
@@ -193,11 +201,14 @@ public class HlBaseServiceImpl implements IHlBaseService {
      */
     @Override
     public void score() {
-        Map<String, Long> relaMap = relaService.selectHlMetricsRelaList(new HlMetricsRela()).stream()
-                .collect(Collectors.toMap(HlMetricsRela::getHlCode, HlMetricsRela::getMetricsId));
+        Map<String, String> expMap = relaService.selectHlMetricsRelaList(new HlMetricsRela()).stream()
+                .collect(Collectors.toMap(HlMetricsRela::getHlCode, HlMetricsRela::getExp));
+        Map<String, Long> defMap = defService.selectMetricsDefList(new MetricsDef()).stream().collect(Collectors.toMap(MetricsDef::getMetricsCode, MetricsDef::getMetricsId));
+
         List<HlBase> list = selectHlBaseList(new HlBase());
         list.forEach(base -> {
             if (base.getModelId() != -1) {
+                Map<Long, List<BizObjMetrics>> metricsGroup = modelService.selectBizModelMetricsList(base.getModelId()).stream().collect(Collectors.groupingBy(BizObjMetrics::getMetricsId));
                 HlScore score = new HlScore();
                 score.setModelId(base.getModelId());
                 scoreService.insertHlScore(score);
@@ -223,14 +234,49 @@ public class HlBaseServiceImpl implements IHlBaseService {
                                 scoreDetail.setHlScoreId(score.getHlScoreId());
                                 scoreDetail.setHlType("DETAIL");
                                 scoreDetail.setHlCode(d.getHlDetailCode());
-                                switch (d.getHlDetailCode()) {
+                                String hlCode = d.getHlDetailCode();
+                                String exp = expMap.get(hlCode);
+                                BigDecimal standScore = new BigDecimal(d.getHlDetailScore());
+                                switch (hlCode) {
                                     case "C01":
                                     case "C02":
                                     case "C03":
-                                        BigDecimal dc = random(d.getHlDetailScore());
-                                        scoreDetail.setHlScore(dc);
-                                        sc.set(sc.get().add(dc));
-                                        scoreDetailService.insertHlScoreDetail(scoreDetail);
+                                        if (StringUtils.isNotEmpty(exp)) {
+                                            Matcher matcher = match(exp);
+                                            Map<String, List<BizObjMetrics>> originalMap = new HashMap<>();
+                                            //先拿到一个code,好获取组件数量
+                                            String oneCode = "";
+                                            while (matcher.find()) {
+                                                String code = matcher.group(1);
+                                                String old = String.format("${%s}", code);
+                                                String newCode = code.replace(".", "");
+                                                oneCode = newCode;
+                                                exp = exp.replace(old, newCode);
+
+                                                Long mid = defMap.get(code);
+                                                List<BizObjMetrics> omList = metricsGroup.get(mid);
+                                                originalMap.put(newCode, omList);
+                                            }
+                                            // 获取组件数量
+                                            int size = originalMap.get(oneCode).size();
+                                            int alarmSize = 0;
+                                            // 遍历列表并创建新的 Map
+                                            for (int i = 0; i < size; i++) {
+                                                Map<String, Object> singleEntryMap = new HashMap<>();
+                                                for (String s : originalMap.keySet()) {
+                                                    singleEntryMap.put(s, originalMap.get(s).get(i).getDValue().floatValue());
+                                                }
+
+                                                boolean flag = evaluator(exp, singleEntryMap);
+                                                if (flag) {
+                                                    alarmSize++;
+                                                }
+                                            }
+                                            //最终得分(告警组件数量/总数量 )*细项分
+                                            BigDecimal df = standScore.subtract(BigDecimal.valueOf(alarmSize).divide(BigDecimal.valueOf(size)).multiply(standScore));
+                                            scoreDetail.setHlScore(df);
+                                            scoreDetailService.insertHlScoreDetail(scoreDetail);
+                                        }
                                         break;
                                     default:
                                         break;
@@ -326,4 +372,27 @@ public class HlBaseServiceImpl implements IHlBaseService {
         int v = s.intValue() - randomNumber;
         return BigDecimal.valueOf(v);
     }
+
+    /**
+     * 公式计算
+     *
+     * @param exp 表达式
+     * @param env 值
+     * @return 结果
+     */
+    private boolean evaluator(String exp, Map<String, Object> env) {
+        return (boolean) AviatorEvaluator.execute(exp, env);
+    }
+
+    /**
+     * 正则匹配
+     *
+     * @param exp 表达式
+     * @return 结果
+     */
+    private Matcher match(String exp) {
+        //正则表达式匹配变量
+        Pattern pattern = Pattern.compile("\\$\\{(.+?)\\}");
+        return pattern.matcher(exp);
+    }
 }

+ 1 - 1
jjt-biz/src/main/java/com/jjt/biz/service/impl/HlMetricsRelaServiceImpl.java

@@ -12,7 +12,7 @@ import javax.annotation.Resource;
  * 健康指标关系Service业务层处理
  *
  * @author jjt
- * @date 2024-09-01
+ * @date 2024-09-02
  */
 @Service
 public class HlMetricsRelaServiceImpl implements IHlMetricsRelaService {

+ 42 - 32
jjt-biz/src/main/java/com/jjt/biz/service/impl/PinpointServiceImpl.java

@@ -99,14 +99,17 @@ public class PinpointServiceImpl implements IPinpointService {
 
         String result = HttpUtils.sendGet(uri);
         JSONObject jsonObject = JSONObject.parseObject(result);
-        JSONArray array = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("TPS_TOTAL");
         Float tps = 0F;
-        for (int i = 0; i < array.size(); i++) {
-            JSONArray arr = array.getJSONArray(i);
-            Float v = arr.getFloat(1);
-            if (v != 0F && v > tps) {
-                tps = v;
+        try {
+            JSONArray array = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("TPS_TOTAL");
+            for (int i = 0; i < array.size(); i++) {
+                JSONArray arr = array.getJSONArray(i);
+                Float v = arr.getFloat(1);
+                if (v != 0F && v > tps) {
+                    tps = v;
+                }
             }
+        } catch (Exception ignored) {
         }
         return tps;
     }
@@ -128,14 +131,18 @@ public class PinpointServiceImpl implements IPinpointService {
 
         String result = HttpUtils.sendGet(uri);
         JSONObject jsonObject = JSONObject.parseObject(result);
-        JSONArray array = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("OPEN_FILE_DESCRIPTOR_COUNT");
         int num = 0;
-        for (int i = 0; i < array.size(); i++) {
-            JSONArray arr = array.getJSONArray(i);
-            int v = arr.getInteger(1);
-            if (v != 0 && v > num) {
-                num = v;
+        try {
+            JSONArray array = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("OPEN_FILE_DESCRIPTOR_COUNT");
+            for (int i = 0; i < array.size(); i++) {
+                JSONArray arr = array.getJSONArray(i);
+                int v = arr.getInteger(1);
+                if (v != 0 && v > num) {
+                    num = v;
+                }
             }
+        } catch (Exception ignored) {
+
         }
         return num;
     }
@@ -157,30 +164,33 @@ public class PinpointServiceImpl implements IPinpointService {
 
         String result = HttpUtils.sendGet(uri);
         JSONObject jsonObject = JSONObject.parseObject(result);
-        JSONArray heapUsed = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("JVM_MEMORY_HEAP_USED");
-        JSONArray heapMax = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("JVM_MEMORY_HEAP_MAX");
-        JSONArray noHeapUsed = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("JVM_MEMORY_HEAP_MAX");
-        JSONArray noHeapMax = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("JVM_MEMORY_HEAP_MAX");
-        JSONArray gc = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("JVM_GC_OLD_COUNT");
-
-        Float used = 0F;
-        Float max = 0F;
         float usage = 0;
         int gcTimes = 0;
-        if (heapUsed.size() > 0) {
-            for (int i = 0; i < heapUsed.size(); i++) {
-                float v = heapUsed.getJSONArray(i).getFloat(1);
-                int gcV = gc.getJSONArray(i).getInteger(1);
-                if (gcV > 0) {
-                    //如果有gc则增加
-                    gcTimes += gcV;
-                }
-                if (v != 0f && v > used) {
-                    used = v;
-                    max = heapMax.getJSONArray(i).getFloat(1);
+        try {
+            JSONArray heapUsed = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("JVM_MEMORY_HEAP_USED");
+            JSONArray heapMax = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("JVM_MEMORY_HEAP_MAX");
+            JSONArray noHeapUsed = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("JVM_MEMORY_HEAP_MAX");
+            JSONArray noHeapMax = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("JVM_MEMORY_HEAP_MAX");
+            JSONArray gc = jsonObject.getJSONObject("charts").getJSONObject("y").getJSONArray("JVM_GC_OLD_COUNT");
+
+            float used = 0F;
+            float max = 0F;
+            if (heapUsed.size() > 0) {
+                for (int i = 0; i < heapUsed.size(); i++) {
+                    float v = heapUsed.getJSONArray(i).getFloat(1);
+                    int gcV = gc.getJSONArray(i).getInteger(1);
+                    if (gcV > 0) {
+                        //如果有gc则增加
+                        gcTimes += gcV;
+                    }
+                    if (v != 0f && v > used) {
+                        used = v;
+                        max = heapMax.getJSONArray(i).getFloat(1);
+                    }
                 }
+                usage = BigDecimal.valueOf(used).divide(BigDecimal.valueOf(max), 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).floatValue();
             }
-            usage = BigDecimal.valueOf(used).divide(BigDecimal.valueOf(max), 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).floatValue();
+        } catch (Exception ignored) {
         }
         Map<String, Object> map = new HashMap<>(16);
         map.put("usage", usage);

+ 5 - 0
jjt-biz/src/main/resources/mapper/hl/BizModelMapper.xml

@@ -74,6 +74,11 @@
         from biz_obj
         where obj_id not in (select obj_id from biz_model_detail where model_id = #{modelId})
     </select>
+    <select id="selectBizModelMetricsList" resultType="com.jjt.biz.domain.BizObjMetrics">
+        SELECT *
+        from biz_obj_metrics
+        WHERE obj_id IN (SELECT obj_id FROM biz_model_detail WHERE model_id = #{modelId})
+    </select>
 
     <insert id="insertBizModel" parameterType="BizModel" useGeneratedKeys="true"
             keyProperty="modelId">

+ 8 - 19
jjt-biz/src/main/resources/mapper/hl/HlMetricsRelaMapper.xml

@@ -7,8 +7,7 @@
     <resultMap type="HlMetricsRela" id="HlMetricsRelaResult">
             <result property="relaId" column="RELA_ID"/>
             <result property="hlCode" column="HL_CODE"/>
-            <result property="metricsId" column="METRICS_ID"/>
-            <result property="metricsName" column="METRICS_NAME"/>
+            <result property="exp" column="EXP"/>
             <result property="createBy" column="CREATE_BY"/>
             <result property="createTime" column="CREATE_TIME"/>
             <result property="updateBy" column="UPDATE_BY"/>
@@ -17,7 +16,7 @@
     </resultMap>
 
     <sql id="selectHlMetricsRelaVo">
-        select RELA_ID, HL_CODE, METRICS_ID, METRICS_NAME, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, REMARK
+        select RELA_ID, HL_CODE, EXP, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, REMARK
         from hl_metrics_rela
     </sql>
 
@@ -27,11 +26,8 @@
                         <if test="hlCode != null  and hlCode != ''">
                             and HL_CODE = #{hlCode}
                         </if>
-                        <if test="metricsId != null ">
-                            and METRICS_ID = #{metricsId}
-                        </if>
-                        <if test="metricsName != null  and metricsName != ''">
-                            and METRICS_NAME like concat('%', #{metricsName}, '%')
+                        <if test="exp != null  and exp != ''">
+                            and EXP = #{exp}
                         </if>
                         <if test="createBy != null  and createBy != ''">
                             and CREATE_BY = #{createBy}
@@ -63,9 +59,7 @@
         <trim prefix="(" suffix=")" suffixOverrides=",">
                     <if test="hlCode != null">HL_CODE,
                     </if>
-                    <if test="metricsId != null">METRICS_ID,
-                    </if>
-                    <if test="metricsName != null">METRICS_NAME,
+                    <if test="exp != null">EXP,
                     </if>
                     <if test="createBy != null">CREATE_BY,
                     </if>
@@ -81,9 +75,7 @@
         <trim prefix="values (" suffix=")" suffixOverrides=",">
                     <if test="hlCode != null">#{hlCode},
                     </if>
-                    <if test="metricsId != null">#{metricsId},
-                    </if>
-                    <if test="metricsName != null">#{metricsName},
+                    <if test="exp != null">#{exp},
                     </if>
                     <if test="createBy != null">#{createBy},
                     </if>
@@ -104,11 +96,8 @@
                     <if test="hlCode != null">HL_CODE =
                         #{hlCode},
                     </if>
-                    <if test="metricsId != null">METRICS_ID =
-                        #{metricsId},
-                    </if>
-                    <if test="metricsName != null">METRICS_NAME =
-                        #{metricsName},
+                    <if test="exp != null">EXP =
+                        #{exp},
                     </if>
                     <if test="createBy != null">CREATE_BY =
                         #{createBy},