|
|
@@ -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)) {
|