Explorar el Código

修改健康度配置

wukai hace 7 meses
padre
commit
8b5412c9ef

+ 11 - 3
jjt-biz/src/main/java/com/jjt/biz/controller/BizModelController.java

@@ -1,5 +1,6 @@
 package com.jjt.biz.controller;
 
+import com.github.pagehelper.PageHelper;
 import com.jjt.biz.domain.BizModel;
 import com.jjt.biz.domain.BizObj;
 import com.jjt.biz.service.IBizModelService;
@@ -48,7 +49,7 @@ public class BizModelController extends BaseController {
     @ApiOperation("选择对象")
     @GetMapping("/obj/select/{modelId}")
     public TableDataInfo objSelect(@ApiParam(value = "模型ID", required = true) @PathVariable("modelId") Long modelId) {
-        startPage();
+        PageHelper.startPage(1, 1000, "").setReasonable(true);
         List<BizObj> list = bizModelService.selectObjList(modelId);
         return getDataTable(list);
     }
@@ -66,6 +67,13 @@ public class BizModelController extends BaseController {
         return success(list);
     }
 
+    @ApiOperation("导入分类")
+    @GetMapping("/imp/{modelId}")
+    public AjaxResult imp(@ApiParam(value = "模型ID", required = true) @PathVariable("modelId") Long modelId) {
+        bizModelService.impClass(modelId);
+        return success();
+    }
+
     @ApiOperation("历史健康度得分情况")
     @GetMapping("/time/history")
     public List<ScoreVO> timeHistory() {
@@ -158,7 +166,7 @@ public class BizModelController extends BaseController {
         DataUtil.standTimeVO(standTime, result);
         return result;
     }
-//
+
 //     @ApiOperation("选择健康度指标")
 //    @GetMapping("/metrics/select/{modelId}")
 //    public TableDataInfo metricsSelect(@ApiParam(value = "模型ID", required = true) @PathVariable("modelId") Long modelId) {
@@ -227,7 +235,7 @@ public class BizModelController extends BaseController {
     @PreAuthorize("@ss.hasPermi('hl:bm:edit')")
     @Log(title = "业务模型", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
-   public AjaxResult edit(@RequestBody BizModel bizModel) {
+    public AjaxResult edit(@RequestBody BizModel bizModel) {
         return toAjax(bizModelService.updateBizModel(bizModel));
     }
 

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

@@ -2,6 +2,7 @@ package com.jjt.biz.controller;
 
 import com.jjt.biz.domain.BizModelDetail;
 import com.jjt.biz.service.IBizModelDetailService;
+import com.jjt.biz.service.IBizModelService;
 import com.jjt.common.annotation.Log;
 import com.jjt.common.core.controller.BaseController;
 import com.jjt.common.core.domain.AjaxResult;
@@ -29,6 +30,8 @@ import java.util.List;
 public class BizModelDetailController extends BaseController {
     @Resource
     private IBizModelDetailService bizModelDetailService;
+    @Resource
+    private IBizModelService modelService;
 
     /**
      * 查询业务模型明细列表
@@ -83,7 +86,7 @@ public class BizModelDetailController extends BaseController {
     @PreAuthorize("@ss.hasPermi('hl:bd:edit')")
     @Log(title = "业务模型明细", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
-   public AjaxResult edit(@RequestBody BizModelDetail bizModelDetail) {
+    public AjaxResult edit(@RequestBody BizModelDetail bizModelDetail) {
         return toAjax(bizModelDetailService.updateBizModelDetail(bizModelDetail));
     }
 
@@ -95,6 +98,10 @@ public class BizModelDetailController extends BaseController {
     @Log(title = "业务模型明细", businessType = BusinessType.DELETE)
     @GetMapping("/del/{bizDetailIds}")
     public AjaxResult remove(@PathVariable Long[] bizDetailIds) {
+        for (Long id : bizDetailIds) {
+            BizModelDetail detail = bizModelDetailService.selectBizModelDetailByBizDetailId(id);
+            modelService.cleanClass(detail.getModelId());
+        }
         return toAjax(bizModelDetailService.deleteBizModelDetailByBizDetailIds(bizDetailIds));
     }
 }

+ 15 - 0
jjt-biz/src/main/java/com/jjt/biz/service/IBizModelService.java

@@ -86,6 +86,7 @@ public interface IBizModelService {
      * @return 结果
      */
     List<BizObjMetrics> selectBizModelMetricsList(Long modelId);
+
     /**
      * 通过模型ID获取 分类列表
      *
@@ -93,4 +94,18 @@ public interface IBizModelService {
      * @return 结果
      */
     List<HlClass> selectHlClassList4modelId(Long modelId);
+
+    /**
+     * 导入分类
+     *
+     * @param modelId 模型ID
+     */
+    void impClass(Long modelId);
+
+    /**
+     * 清理分类
+     *
+     * @param modelId 模型ID
+     */
+    void cleanClass(Long modelId);
 }

+ 8 - 5
jjt-biz/src/main/java/com/jjt/biz/service/impl/AlarmRecordServiceImpl.java

@@ -11,6 +11,7 @@ import com.jjt.common.utils.IntervalUtil;
 import com.jjt.common.utils.StringUtils;
 import com.jjt.push.service.IPushConfigService;
 import com.jjt.system.service.ISysDictDataService;
+import javafx.util.Pair;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
@@ -143,7 +144,8 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
         // 3.如果该指标有告警,但告警等级不同,则上一次告警结束,新增一条告警。
         // 4.如果之前没有告警,当前告警,则新增告警。
         AlarmRecord record = recordMap.get(om.getObjMetricsId());
-        String alarmLevel = getAlarmLevel(om.getDValue().floatValue(), om);
+        Pair<String, String> pair = getAlarmLevel(om.getDValue().floatValue(), om);
+        String alarmLevel = pair.getKey();
         if (alarmLevel == null) {
             //如果没有告警,且之前有告警记录,则结束之前告警
             if (record != null) {
@@ -178,6 +180,7 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
         record.setAlarmValue(om.getDValue());
         record.setAlarmType("1");
         record.setAlarmTime(date);
+        record.setRemark(pair.getValue());
         record.setCreateTime(new Date());
         result.put("add", record);
         pushConfigService.push(record);
@@ -351,13 +354,13 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
      * @param bizObjMetrics 指标对象
      * @return
      */
-    private String getAlarmLevel(Float value, BizObjMetrics bizObjMetrics) {
+    private Pair<String, String> getAlarmLevel(Float value, BizObjMetrics bizObjMetrics) {
         if (StringUtils.isNotEmpty(bizObjMetrics.getAlarmLow()) && IntervalUtil.inNumRange(value, bizObjMetrics.getAlarmLow())) {
-            return "low";
+            return new Pair<>("low", bizObjMetrics.getAlarmLow());
         } else if (StringUtils.isNotEmpty(bizObjMetrics.getAlarmMid()) && IntervalUtil.inNumRange(value, bizObjMetrics.getAlarmMid())) {
-            return "mid";
+            return new Pair<>("mid", bizObjMetrics.getAlarmHigh());
         } else if (StringUtils.isNotEmpty(bizObjMetrics.getAlarmHigh()) && IntervalUtil.inNumRange(value, bizObjMetrics.getAlarmHigh())) {
-            return "high";
+            return new Pair<>("high", bizObjMetrics.getAlarmHigh());
         }
         return null;
     }

+ 110 - 3
jjt-biz/src/main/java/com/jjt/biz/service/impl/BizModelServiceImpl.java

@@ -12,6 +12,7 @@ import com.jjt.hl.domain.HlClass;
 import com.jjt.hl.domain.HlObj;
 import com.jjt.hl.mapper.HlObjMapper;
 import com.jjt.hl.service.IHlClassService;
+import com.jjt.hl.service.IHlMetricsService;
 import com.jjt.hl.service.IHlObjService;
 import org.apache.ibatis.session.ExecutorType;
 import org.apache.ibatis.session.SqlSession;
@@ -19,6 +20,8 @@ import org.apache.ibatis.session.SqlSessionFactory;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -39,6 +42,10 @@ public class BizModelServiceImpl implements IBizModelService {
     @Resource
     private IHlClassService hlClassService;
     @Resource
+    private IHlObjService hlObjService;
+    @Resource
+    private IHlMetricsService hlMetricsService;
+    @Resource
     private SqlSessionFactory factory;
 
     /**
@@ -129,15 +136,13 @@ public class BizModelServiceImpl implements IBizModelService {
      */
     @Override
     public int insertObj(Long modelId, Long[] objIds) {
-        if (objIds.length == 0) {
-            return 1;
-        }
         for (Long objId : objIds) {
             BizModelDetail detail = new BizModelDetail();
             detail.setModelId(modelId);
             detail.setObjId(objId);
             modelDetailService.insertBizModelDetail(detail);
         }
+        impClass(modelId);
         return 0;
     }
 
@@ -166,10 +171,22 @@ public class BizModelServiceImpl implements IBizModelService {
             List<BizModelDetail> details = modelDetailService.selectBizModelDetailList4ModelId(modelId);
             Map<String, List<BizModelDetail>> map = details.stream().collect(Collectors.groupingBy(d -> d.getBizObj().getObjType()));
             List<HlObj> hlObjList = new ArrayList<>();
+            int size = map.size();
+            BigDecimal total = BigDecimal.valueOf(100);
+            int avg = total.divide(BigDecimal.valueOf(size), 0, RoundingMode.HALF_DOWN).intValue();
+            int one = avg * size == total.intValue() ? avg : total.intValue() - avg * (size - 1);
+            boolean flag = true;
             for (String s : map.keySet()) {
                 HlClass hlClass = new HlClass();
                 hlClass.setObjType(s);
                 hlClass.setModelId(modelId);
+                hlClass.setScoreType("1");
+                if (flag) {
+                    hlClass.setHlScore(BigDecimal.valueOf(one));
+                    flag = false;
+                } else {
+                    hlClass.setHlScore(BigDecimal.valueOf(avg));
+                }
                 hlClassService.insertHlClass(hlClass);
 
                 List<BizModelDetail> detailList = map.get(s);
@@ -191,4 +208,94 @@ public class BizModelServiceImpl implements IBizModelService {
 
         return list;
     }
+
+    /**
+     * 导入分类
+     *
+     * @param modelId 模型ID
+     */
+    @Override
+    public void impClass(Long modelId) {
+        List<BizModelDetail> details = modelDetailService.selectBizModelDetailList4ModelId(modelId);
+        Map<String, List<BizModelDetail>> map = details.stream().collect(Collectors.groupingBy(d -> d.getBizObj().getObjType()));
+        List<HlClass> list = hlClassService.selectHlClassList4modelId(modelId);
+        List<String> typeList = list.stream().map(HlClass::getObjType).collect(Collectors.toList());
+        List<HlObj> hlObjList = new ArrayList<>();
+        for (String t : map.keySet()) {
+            if (!typeList.contains(t)) {
+                //添加
+                HlClass hlClass = new HlClass();
+                hlClass.setObjType(t);
+                hlClass.setModelId(modelId);
+                hlClass.setScoreType("1");
+                hlClass.setHlScore(BigDecimal.ZERO);
+                hlClassService.insertHlClass(hlClass);
+                List<BizModelDetail> detailList = map.get(t);
+                detailList.forEach(d -> {
+                    HlObj hlObj = new HlObj();
+                    hlObj.setHlClassId(hlClass.getHlClassId());
+                    hlObj.setObjId(d.getObjId());
+                    hlObjList.add(hlObj);
+                });
+            }
+        }
+        try (SqlSession sqlSession = factory.openSession(ExecutorType.BATCH, false)) {
+            HlObjMapper mapper = sqlSession.getMapper(HlObjMapper.class);
+            hlObjList.forEach(mapper::insertHlObj);
+            sqlSession.commit();
+        }
+    }
+
+    /**
+     * 清理分类
+     *
+     * @param modelId 模型ID
+     */
+    @Override
+    public void cleanClass(Long modelId) {
+        List<BizModelDetail> details = modelDetailService.selectBizModelDetailList4ModelId(modelId);
+        List<Long> objList = details.stream().map(BizModelDetail::getObjId).collect(Collectors.toList());
+        List<HlClass> list = hlClassService.selectHlClassList4modelId(modelId);
+        list.forEach(hc -> {
+            List<HlObj> objs = hlObjService.selectHlObjListByClassId(hc.getHlClassId());
+            int delTimes = 0;
+            for (HlObj obj : objs) {
+                if (!objList.contains(obj.getHlObjId())) {
+                    hlObjService.deleteHlObjByHlObjId(obj.getHlObjId());
+                    delTimes++;
+                }
+            }
+            if (delTimes == objs.size()) {
+                //如果该类型对象已经被全部删除。
+                //那么需要删除当前类型,和该类型下的指标
+                hlMetricsService.deleteHlMetricsByClassId(hc.getHlClassId());
+                hlClassService.deleteHlClassByHlClassId(hc.getHlClassId());
+            }
+        });
+//        List<String> typeList = list.stream().map(HlClass::getObjType).collect(Collectors.toList());
+//        List<HlObj> hlObjList = new ArrayList<>();
+//        for (String t : map.keySet()) {
+//            if (!typeList.contains(t)) {
+//                //添加
+//                HlClass hlClass = new HlClass();
+//                hlClass.setObjType(t);
+//                hlClass.setModelId(modelId);
+//                hlClass.setScoreType("1");
+//                hlClass.setHlScore(BigDecimal.ZERO);
+//                hlClassService.insertHlClass(hlClass);
+//                List<BizModelDetail> detailList = map.get(t);
+//                detailList.forEach(d -> {
+//                    HlObj hlObj = new HlObj();
+//                    hlObj.setHlClassId(hlClass.getHlClassId());
+//                    hlObj.setObjId(d.getObjId());
+//                    hlObjList.add(hlObj);
+//                });
+//            }
+//        }
+//        try (SqlSession sqlSession = factory.openSession(ExecutorType.BATCH, false)) {
+//            HlObjMapper mapper = sqlSession.getMapper(HlObjMapper.class);
+//            hlObjList.forEach(mapper::insertHlObj);
+//            sqlSession.commit();
+//        }
+    }
 }

+ 6 - 0
jjt-biz/src/main/java/com/jjt/hl/mapper/HlMetricsMapper.java

@@ -87,4 +87,10 @@ public interface HlMetricsMapper extends BaseMapper<HlMetrics> {
      * @return 结果
      */
     List<HlMetricsVO> hlMetricsDayList(@Param("modelId") Long modelId, @Param("date") Date date);
+    /**
+     * 根据类型ID删除
+     *
+     * @param hlClassId 类型ID
+     */
+    void deleteHlMetricsByClassId(Long hlClassId);
 }

+ 6 - 0
jjt-biz/src/main/java/com/jjt/hl/service/IHlMetricsService.java

@@ -98,4 +98,10 @@ public interface IHlMetricsService {
      * @return 结果
      */
     Map<Long, List<HlMetricsVO>> hlMetricsDayList(Long modelId, Date date);
+
+    /**
+     * 根据类型ID删除
+     * @param hlClassId 类型ID
+     */
+    void deleteHlMetricsByClassId(Long hlClassId);
 }

+ 10 - 0
jjt-biz/src/main/java/com/jjt/hl/service/impl/HlMetricsServiceImpl.java

@@ -150,4 +150,14 @@ public class HlMetricsServiceImpl implements IHlMetricsService {
         List<HlMetricsVO> list = hlMetricsMapper.hlMetricsDayList(modelId, date);
         return list.stream().collect(Collectors.groupingBy(HlMetricsVO::getMetricsId));
     }
+
+    /**
+     * 根据类型ID删除
+     *
+     * @param hlClassId 类型ID
+     */
+    @Override
+    public void deleteHlMetricsByClassId(Long hlClassId) {
+        hlMetricsMapper.deleteHlMetricsByClassId(hlClassId);
+    }
 }

+ 5 - 1
jjt-biz/src/main/java/com/jjt/hl/service/impl/HlScoreServiceImpl.java

@@ -209,6 +209,10 @@ public class HlScoreServiceImpl implements IHlScoreService {
             HlClassScore hlClassScore = new HlClassScore();
             BeanUtils.copyBeanProp(hlClassScore, hlClass);
             hlClassScore.setHlScoreId(score.getHlScoreId());
+            hlClassScore.setScore(BigDecimal.ZERO);
+            if (hlClass.getHlScore().compareTo(BigDecimal.ZERO) == 0) {
+                continue;
+            }
             hlClassScoreService.insertHlClassScore(hlClassScore);
             HlMetrics hm = new HlMetrics();
             hm.setHlClassId(hlClass.getHlClassId());
@@ -439,7 +443,7 @@ public class HlScoreServiceImpl implements IHlScoreService {
                     if (total == 0) {
                         lost = BigDecimal.ZERO;
                     } else {
-                       lost = BigDecimal.valueOf(lostNum).divide(BigDecimal.valueOf(total), RoundingMode.HALF_UP).multiply(hlMetrics.getHlScore());
+                        lost = BigDecimal.valueOf(lostNum).divide(BigDecimal.valueOf(total), RoundingMode.HALF_UP).multiply(hlMetrics.getHlScore());
                     }
                 }
                 //最终得分 = 分数-扣分

+ 4 - 3
jjt-biz/src/main/java/com/jjt/push/service/impl/PushConfigServiceImpl.java

@@ -118,13 +118,14 @@ public class PushConfigServiceImpl implements IPushConfigService {
     public void push(AlarmRecord record) {
         //获取短信接口发送地址
         PushConfig pc = pushConfigMapper.selectPushConfigByPcId(1L);
-        String title = record.getObjName() + "-" + record.getMetricsName() + "超过阈值";
+        String title = record.getObjName() + "-" + record.getMetricsName() + "超过阈值" + record.getRemark() + ",当前状态:" + record.getAlarmValue();
         String content = "";
         String phones = "";
         String mails = "";
         content += "告警指标:" + record.getMetricsName() + "\n";
         content += "告警对象:" + record.getObjName() + "\n";
-        content += "告警时间:" + DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,record.getAlarmTime()) + "\n";
+        content += "告警内容: 指标值达到告警条件" + record.getRemark() + "\n";
+        content += "告警时间:" + DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, record.getAlarmTime()) + "\n";
         switch (record.getAlarmLevel()) {
             case "low":
                 title = "轻度告警:" + title;
@@ -158,7 +159,7 @@ public class PushConfigServiceImpl implements IPushConfigService {
                     String[] ps = phones.split("\n");
                     for (String p : ps) {
                         try {
-                            smsService.send(uri, p, title);
+                            smsService.send(uri, p, content);
                         } catch (Exception e) {
                             log.error("短信发送失败:{}", e.getMessage());
                         }

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

@@ -207,4 +207,9 @@
             #{hlMetricsId}
         </foreach>
     </delete>
+    <delete id="deleteHlMetricsByClassId">
+        delete
+        from hl_metrics
+        where HL_CLASS_ID = #{hlClassId}
+    </delete>
 </mapper>