|
@@ -1,13 +1,24 @@
|
|
|
package com.bizmatics.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.api.R;
|
|
|
import com.bizmatics.model.RtAnalogData;
|
|
|
+import com.bizmatics.model.Site;
|
|
|
+import com.bizmatics.model.UserSite;
|
|
|
import com.bizmatics.persistence.mapper.RtAnalogDataMapper;
|
|
|
import com.bizmatics.service.RtAnalogDataService;
|
|
|
import com.bizmatics.common.mvc.base.AbstractCrudService;
|
|
|
-import org.checkerframework.checker.units.qual.A;
|
|
|
+import com.bizmatics.service.SiteService;
|
|
|
+import com.bizmatics.service.UserSiteService;
|
|
|
+import com.bizmatics.service.util.Arith;
|
|
|
+import com.bizmatics.service.util.SessionLocal;
|
|
|
+import com.bizmatics.service.vo.RadCountVO;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.List;
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
+
|
|
|
/**
|
|
|
* <p>
|
|
|
* 服务实现类
|
|
@@ -19,7 +30,38 @@ import org.springframework.stereotype.Service;
|
|
|
@Service
|
|
|
public class RtAnalogDataServiceImpl extends AbstractCrudService<RtAnalogDataMapper, RtAnalogData> implements RtAnalogDataService {
|
|
|
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private UserSiteService userSiteService;
|
|
|
@Autowired
|
|
|
private RtAnalogDataMapper rtAnalogDataMapper;
|
|
|
+ @Autowired
|
|
|
+ private SiteService siteService;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public RadCountVO selectCount() {
|
|
|
+ Integer userId = SessionLocal.getUserId();
|
|
|
+ List<UserSite> list = userSiteService.list(Wrappers.lambdaQuery(UserSite.class).eq(UserSite::getUserId, userId));
|
|
|
+ AtomicReference<Integer> heavyLoad = new AtomicReference<>(0);
|
|
|
+ AtomicReference<Integer> easyLoad = new AtomicReference<>(0);
|
|
|
+ AtomicReference<Integer> norMalLoad = new AtomicReference<>(0);
|
|
|
+ list.forEach(userSite -> {
|
|
|
+ Site site = siteService.getOne(Wrappers.lambdaQuery(Site.class).eq(Site::getId, userSite.getId()));
|
|
|
+ Double aDouble = rtAnalogDataMapper.selectTotalLoad(userId, site.getId());
|
|
|
+ double div = Arith.div(aDouble, Double.parseDouble(site.getInstalledCapacity()));
|
|
|
+ if (div < 0.4){
|
|
|
+ easyLoad.getAndSet(easyLoad.get() + 1);
|
|
|
+ }else if (div >= 0.4 && div <= 0.8){
|
|
|
+ norMalLoad.getAndSet(norMalLoad.get() + 1);
|
|
|
+ }else {
|
|
|
+ heavyLoad.getAndSet(heavyLoad.get() + 1);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ int count = list.size();
|
|
|
+ RadCountVO radCountVO = new RadCountVO();
|
|
|
+ radCountVO.setHeavyLoad(Arith.div(heavyLoad.get(),count));
|
|
|
+ radCountVO.setEasyLoad(Arith.div(easyLoad.get(),count));
|
|
|
+ radCountVO.setNorMalLoad(Arith.div(norMalLoad.get(),count));
|
|
|
+ return radCountVO;
|
|
|
+ }
|
|
|
}
|