|
@@ -1,14 +1,27 @@
|
|
|
package com.jjt.check.service.impl;
|
|
|
|
|
|
+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;
|
|
|
import com.jjt.check.mapper.CheckRecordDetailMapper;
|
|
|
import com.jjt.check.mapper.CheckRecordMapper;
|
|
|
+import com.jjt.check.service.ICheckConfigService;
|
|
|
+import com.jjt.check.service.ICheckRecordDetailService;
|
|
|
import com.jjt.check.service.ICheckRecordService;
|
|
|
+import com.jjt.check.vo.CheckExportVO;
|
|
|
+import com.jjt.common.utils.IntervalUtil;
|
|
|
+import com.jjt.common.utils.bean.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* 自动巡检记录Service业务层处理
|
|
@@ -22,6 +35,13 @@ public class CheckRecordServiceImpl implements ICheckRecordService {
|
|
|
private CheckRecordMapper checkRecordMapper;
|
|
|
@Resource
|
|
|
private CheckRecordDetailMapper crdMapper;
|
|
|
+ @Resource
|
|
|
+ private IBizObjMetricsService omService;
|
|
|
+ @Resource
|
|
|
+ private ICheckConfigService checkConfigService;
|
|
|
+ @Resource
|
|
|
+ private ICheckRecordDetailService crdService;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 查询自动巡检记录
|
|
@@ -98,4 +118,84 @@ public class CheckRecordServiceImpl implements ICheckRecordService {
|
|
|
public int deleteCheckRecordByCrId(Long crId) {
|
|
|
return checkRecordMapper.deleteCheckRecordByCrId(crId);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 自动巡检
|
|
|
+ *
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public CheckRecord check() {
|
|
|
+ List<CheckConfig> list = checkConfigService.selectCheckConfigList(new CheckConfig());
|
|
|
+ CheckRecord cr = new CheckRecord();
|
|
|
+ cr.setCheckTime(new Date());
|
|
|
+ CheckExportVO vo = new CheckExportVO();
|
|
|
+ vo.mock();
|
|
|
+ List<CheckRecordDetail> details = new ArrayList<>();
|
|
|
+ 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());
|
|
|
+ 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());
|
|
|
+ Map<String, String> pair = CheckExportVO.checkV(flag, avg.floatValue(), pos);
|
|
|
+ crd.setResultL(pair.get("left"));
|
|
|
+ crd.setResultR(pair.get("right"));
|
|
|
+ if (flag) {
|
|
|
+ errors++;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //发现一个就算异常
|
|
|
+ for (BizObjMetrics om : oms) {
|
|
|
+ boolean flag = IntervalUtil.inNumRange(om.getDValue().floatValue(), checkConfig.getCheckRule());
|
|
|
+ Map<String, String> pair = CheckExportVO.checkV(true, 0f, pos);
|
|
|
+ crd.setResultL(pair.get("left"));
|
|
|
+ crd.setResultR(pair.get("right"));
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, String> pair = CheckExportVO.checkV(flag, v.floatValue(), pos);
|
|
|
+ crd.setResultL(pair.get("left"));
|
|
|
+ crd.setResultR(pair.get("right"));
|
|
|
+ if (flag) {
|
|
|
+ errors++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ crdService.insertCheckRecordDetail(crd);
|
|
|
+ details.add(crd);
|
|
|
+ }
|
|
|
+ String result = "共检查" + list.size() + "项,发现问题" + errors + "项";
|
|
|
+ cr.setCheckResult(result);
|
|
|
+ cr.setDetailList(details);
|
|
|
+ updateCheckRecord(cr);
|
|
|
+ return cr;
|
|
|
+ }
|
|
|
}
|