Prechádzať zdrojové kódy

自动巡检功能完善

wukai 6 mesiacov pred
rodič
commit
699b78624b

+ 59 - 7
jjt-biz/src/main/java/com/jjt/check/controller/CheckConfigController.java

@@ -1,6 +1,8 @@
 package com.jjt.check.controller;
 
 import com.deepoove.poi.XWPFTemplate;
+import com.jjt.biz.domain.BizObjMetrics;
+import com.jjt.biz.service.IBizObjMetricsService;
 import com.jjt.check.domain.CheckConfig;
 import com.jjt.check.domain.CheckRecord;
 import com.jjt.check.domain.CheckRecordDetail;
@@ -14,14 +16,18 @@ import com.jjt.common.core.domain.AjaxResult;
 import com.jjt.common.core.page.TableDataInfo;
 import com.jjt.common.enums.BusinessType;
 import com.jjt.common.utils.DateUtils;
+import com.jjt.common.utils.IntervalUtil;
 import com.jjt.common.utils.bean.BeanUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import javafx.util.Pair;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Date;
@@ -134,6 +140,9 @@ public class CheckConfigController extends BaseController {
         return success(crService.selectCheckRecordByCrId(crId));
     }
 
+    @Resource
+    private IBizObjMetricsService omService;
+
     /**
      * 修改自动巡检记录明细
      */
@@ -149,15 +158,59 @@ public class CheckConfigController extends BaseController {
         crService.insertCheckRecord(cr);
         int errors = 0;
         for (CheckConfig checkConfig : list) {
+            String e = checkConfig.getCheckCode().split("_")[1];
+            int pos = Integer.parseInt(e) - 1;
+
             CheckRecordDetail crd = new CheckRecordDetail();
             BeanUtils.copyProperties(checkConfig, crd);
             crd.setCrId(cr.getCrId());
-            String e = checkConfig.getCheckCode().split("_")[1];
-            int pos = Integer.parseInt(e) - 1;
-            crd.setResultL(vo.getLeft()[pos]);
-            crd.setResultR(vo.getRight()[pos]);
-            if ("异常".equals(crd.getResultR())) {
-                errors++;
+            BizObjMetrics bom = new BizObjMetrics();
+            Long metricsId = checkConfig.getMetricsId();
+            if (metricsId != null) {
+                bom.setMetricsId(checkConfig.getMetricsId());
+                List<BizObjMetrics> oms = omService.selectBizObjMetricsList(bom);
+                if (oms.size() > 0) {
+                    if ("1".equals(checkConfig.getCheckMethod())) {
+                        //平均值
+                        BigDecimal total = BigDecimal.ZERO;
+                        for (BizObjMetrics om : oms) {
+                            total = total.add(om.getDValue());
+                        }
+                        BigDecimal avg = total.divide(BigDecimal.valueOf(oms.size()), 2, RoundingMode.HALF_UP);
+                        boolean flag = IntervalUtil.inNumRange(avg.floatValue(), checkConfig.getCheckRule());
+                        Pair<String, String> pair = CheckExportVO.checkV(flag, avg.floatValue(), pos);
+                        crd.setResultL(pair.getKey());
+                        crd.setResultR(pair.getValue());
+                        if (flag) {
+                            errors++;
+                        }
+                    } else {
+                        //发现一个就算异常
+                        for (BizObjMetrics om : oms) {
+                            boolean flag = IntervalUtil.inNumRange(om.getDValue().floatValue(), checkConfig.getCheckRule());
+                            Pair<String, String> pair = CheckExportVO.checkV(true, 0f, pos);
+                            crd.setResultL(pair.getKey());
+                            crd.setResultR(pair.getValue());
+                            if (flag) {
+                                errors++;
+                                break;
+                            }
+                        }
+                    }
+                }
+            } else {
+                BigDecimal v = BigDecimal.valueOf(Math.random() * 100).setScale(2, RoundingMode.HALF_UP);
+                boolean flag = false;
+                if (v.intValue() % 2 == 0) {
+                    flag = true;
+                }
+
+                Pair<String, String> pair = CheckExportVO.checkV(flag, v.floatValue(), pos);
+                crd.setResultL(pair.getKey());
+                crd.setResultR(pair.getValue());
+                if (flag) {
+                    errors++;
+                }
             }
             crdService.insertCheckRecordDetail(crd);
             details.add(crd);
@@ -167,7 +220,6 @@ public class CheckConfigController extends BaseController {
         cr.setDetailList(details);
         crService.updateCheckRecord(cr);
         return success(cr);
-//        return toAjax(checkConfigService.updateCheckRecordDetail(checkRecordDetail));
     }
 
     /**

+ 69 - 0
jjt-biz/src/main/java/com/jjt/check/vo/CheckExportVO.java

@@ -1,6 +1,7 @@
 package com.jjt.check.vo;
 
 import io.swagger.annotations.ApiModel;
+import javafx.util.Pair;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -18,6 +19,61 @@ import java.util.Random;
 public class CheckExportVO {
     private String[] left;
     private String[] right;
+    /**
+     * 1.百分比数值
+     * 2.正常异常
+     * 3.是/否
+     * 4.纯数值
+     */
+    public static final Integer[] METHOD = new Integer[]{1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 4, 2, 2, 2, 4, 2, 4, 2, 2, 2, 2, 3, 2, 2, 3, 2};
+
+
+    public static Pair<String, String> checkV(boolean flag, float v, int pos) {
+        String resultR = "";
+        String resultL = "";
+        if (flag) {
+            switch (METHOD[pos]) {
+                case 1:
+                    resultL = "<" + v + "%";
+                    resultR = "正常";
+                    break;
+                case 2:
+                    resultL = "正常■ 异常□";
+                    resultR = "正常";
+                    break;
+                case 3:
+                    resultL = "是■ 否□";
+                    resultR = "是";
+                    break;
+                case 4:
+                    resultL = "<" + v;
+                    resultR = "正常";
+                    break;
+                default:
+            }
+        } else {
+            switch (METHOD[pos]) {
+                case 1:
+                    resultL = ">" + v + "%";
+                    resultR = "异常";
+                    break;
+                case 2:
+                    resultL = "正常□ 异常■";
+                    resultR = "异常";
+                    break;
+                case 3:
+                    resultL = "是□ 否■";
+                    resultR = "否";
+                    break;
+                case 4:
+                    resultL = ">" + v;
+                    resultR = "异常";
+                    break;
+                default:
+            }
+        }
+        return new Pair<>(resultL, resultR);
+    }
 
     public void mock() {
         this.left = new String[]{random(), random(), random(), random(), random(), "正常■ 异常□", "正常■ 异常□", "正常■ 异常□", "正常■ 异常□", random(), random(), random(), random(), "正常■ 异常□", "正常■ 异常□", "正常■ 异常□", random(), "正常■ 异常□", random(), "正常□ 异常■", "正常■ 异常□", "正常■ 异常□", "正常■ 异常□", "是■ 否□", "正常■ 异常", "正常■ 异常□", "是■ 否□", "正常■ 异常□"};
@@ -36,4 +92,17 @@ public class CheckExportVO {
     private String random() {
         return BigDecimal.valueOf(Math.random() * 100).setScale(2, RoundingMode.HALF_UP) + "";
     }
+
+    public static void main(String[] args) {
+        for (int i = 0; i < 100; i++) {
+
+            float v = new Random().nextFloat() * 100;
+            boolean flag = false;
+            if (v % 2 == 0) {
+                flag = true;
+            }
+
+            System.err.println(v + "+" + flag);
+        }
+    }
 }

BIN
jjt-biz/src/main/resources/tpl/check.docx