Forráskód Böngészése

检查日志代码提交

jingyuanchao 1 éve
szülő
commit
fa97533dcb

+ 7 - 0
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/controller/IotDailyCheckDataController.java

@@ -5,6 +5,7 @@ import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.deploy.dto.dailycheck.DailyCheckDataPageDto;
 import com.xunmei.deploy.service.IotDailyCheckDataService;
+import com.xunmei.deploy.vo.DailyCheckDataRateData;
 import com.xunmei.deploy.vo.DailyCheckDataStatisticsData;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -42,6 +43,12 @@ public class IotDailyCheckDataController {
         return AjaxResult.success(data);
     }
 
+    @GetMapping("/rateData")
+    public AjaxResult rateData(DailyCheckDataPageDto req) {
+        DailyCheckDataRateData data = dailyCheckDataService.rate(req);
+        return AjaxResult.success(data);
+    }
+
     @PostMapping("/downLoad")
     public void downLoad(Long id, HttpServletResponse response) {
         dailyCheckDataService.downLoad(id.toString(), response);

+ 3 - 0
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/service/IotDailyCheckDataService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.iot.domain.IotDailyCheckData;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.deploy.dto.dailycheck.DailyCheckDataPageDto;
+import com.xunmei.deploy.vo.DailyCheckDataRateData;
 import com.xunmei.deploy.vo.DailyCheckDataStatisticsData;
 
 import javax.servlet.http.HttpServletResponse;
@@ -23,4 +24,6 @@ public interface IotDailyCheckDataService extends IService<IotDailyCheckData> {
     void downLoad(String id, HttpServletResponse response);
 
     DailyCheckDataStatisticsData statistics(DailyCheckDataPageDto req);
+
+    DailyCheckDataRateData rate(DailyCheckDataPageDto req);
 }

+ 53 - 1
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/service/impl/IotDailyCheckDataServiceImpl.java

@@ -9,19 +9,24 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
+import com.xunmei.common.core.constant.CacheConstants;
 import com.xunmei.common.core.constant.Constants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotDailyCheckData;
 import com.xunmei.common.core.domain.iot.vo.DailyCheckReq;
+import com.xunmei.common.core.utils.NumberUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.deploy.dao.IotDailyCheckDataMapper;
 import com.xunmei.deploy.dto.dailycheck.DailyCheckDataPageDto;
 import com.xunmei.deploy.service.IotDailyCheckDataService;
 import com.xunmei.deploy.vo.DailyCheckDataPageVo;
+import com.xunmei.deploy.vo.DailyCheckDataRateData;
 import com.xunmei.deploy.vo.DailyCheckDataStatisticsData;
 import com.xunmei.deploy.vo.DailyCheckItemExportVo;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.vo.SysOrgVO;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -90,7 +95,7 @@ public class IotDailyCheckDataServiceImpl extends ServiceImpl<IotDailyCheckDataM
                 .stream()
                 .map(d -> DateUtil.format(d, Constants.DAILY_FORMAT))
                 .collect(Collectors.toList());
-        DailyCheckDataStatisticsData statisticsData=new DailyCheckDataStatisticsData();
+        DailyCheckDataStatisticsData statisticsData = new DailyCheckDataStatisticsData();
         if (ObjectUtil.isEmpty(list)) {
             List<String> doDateList = Lists.newArrayList();
             statisticsData.setDoDates(doDateList);
@@ -105,6 +110,53 @@ public class IotDailyCheckDataServiceImpl extends ServiceImpl<IotDailyCheckDataM
     }
 
     @Override
+    public DailyCheckDataRateData rate(DailyCheckDataPageDto req) {
+        int orgNum = 1;
+        if (req.getCheckSub()) {
+            //List<SysOrg> cacheList = remoteOrgService.selectOrgByPath(req.getOrgId());
+            List<SysOrgVO> cacheList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
+            SysOrgVO sysOrgVO1 = cacheList.stream().filter(r -> ObjectUtil.equal(r.getId(), req.getOrgId())).findFirst().get();
+            req.setOrgPath(sysOrgVO1.getPath());
+            int i = 0;
+            for (SysOrgVO sysOrgVO : cacheList) {
+                try {
+                    if (sysOrgVO.getPath().startsWith(req.getOrgPath())) {
+                        i++;
+                    }
+                } catch (Exception e) {
+                    System.out.println(sysOrgVO);
+                    throw new RuntimeException(e);
+                }
+            }
+            orgNum = (int) cacheList.stream().filter(r -> ObjectUtil.isNotNull(r) && ObjectUtil.isNotNull(r.getPath()) && r.getPath().startsWith(req.getOrgPath())).count();
+        }
+        DailyCheckDataRateData rateData = new DailyCheckDataRateData();
+        LambdaQueryWrapper<IotDailyCheckData> wrapper = new LambdaQueryWrapper<>();
+        if (req.getCheckSub()) {
+            wrapper.likeRight(IotDailyCheckData::getOrgPath, req.getOrgPath());
+        } else {
+            wrapper.eq(IotDailyCheckData::getOrgId, req.getOrgId());
+        }
+        wrapper.between(IotDailyCheckData::getRecordDate, req.getRange()[0], req.getRange()[1]);
+        wrapper.select(IotDailyCheckData::getOrgId, IotDailyCheckData::getOrgName, IotDailyCheckData::getRecordDate);
+        List<IotDailyCheckData> list = baseMapper.selectList(wrapper);
+        if (ObjectUtil.isEmpty(list)) {
+            rateData.setDoNums(0);
+            rateData.setUnDoNums(orgNum);
+            rateData.setDoRate(NumberUtils.computeRate(orgNum, 0));
+            rateData.setUnDoRate(NumberUtils.computeRate(orgNum, orgNum));
+            return rateData;
+        }
+        int count = (int) list.stream().map(IotDailyCheckData::getOrgId).distinct().count();
+        int unDoNums = orgNum - count;
+        rateData.setDoNums(count);
+        rateData.setUnDoNums(unDoNums);
+        rateData.setDoRate(NumberUtils.computeRate(orgNum, count));
+        rateData.setUnDoRate(NumberUtils.computeRate(orgNum, unDoNums));
+        return rateData;
+    }
+
+    @Override
     public void downLoad(String id, HttpServletResponse response) {
         IotDailyCheckData checkData = getById(id);
         if (ObjectUtil.isEmpty(checkData)) {

+ 16 - 0
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/vo/DailyCheckDataRateData.java

@@ -0,0 +1,16 @@
+package com.xunmei.deploy.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DailyCheckDataRateData {
+
+    @ApiModelProperty("执行过检查的机构数量")
+    private Integer doNums;
+    private float doRate;
+
+    @ApiModelProperty("未执行检查的机构数量")
+    private Integer unDoNums;
+    private float unDoRate;
+}