Browse Source

轻载重在运行优化

yq 4 năm trước cách đây
mục cha
commit
0f21eaa0cb

+ 5 - 0
fiveep-model/src/main/java/com/bizmatics/model/Device.java

@@ -73,4 +73,9 @@ public class Device implements Serializable {
 
     private Integer deviceStatus;
 
+    /**
+     * 站点里面字段信息
+     */
+    private String installedCapacity;
+
 }

+ 4 - 0
fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/RtAnalogDataMapper.java

@@ -34,6 +34,10 @@ public interface RtAnalogDataMapper extends CrudMapper<RtAnalogData> {
                         @Param("siteId") Integer siteId);
 
 
+
+    List<RtAnalogData> list(@Param("userId") Integer userId);
+
+
     Map<String,Object> getOneMap(@Param("siteId")Integer siteId);
 
     List<HtAnalogData> getDataReportMap(@Param("siteId")Integer siteId, @Param("startTime") Date startTime, @Param("endTime")Date endTime);

+ 2 - 0
fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/SiteMapper.java

@@ -3,6 +3,7 @@ package com.bizmatics.persistence.mapper;
 import com.bizmatics.model.Site;
 import com.bizmatics.common.mvc.base.CrudMapper;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
 
 import java.util.List;
 
@@ -14,6 +15,7 @@ import java.util.List;
  * @author ya
  * @since 2021-07-07
  */
+@Repository
 public interface SiteMapper extends CrudMapper<Site> {
 
 

+ 4 - 1
fiveep-persistence/src/main/resources/mapper/mysql/DeviceMapper.xml

@@ -43,12 +43,15 @@
         </where>
     </select>
     <select id="list" resultType="com.bizmatics.model.Device">
-        select d.id,d.device_code,d.device_name,d.site_id,d.device_address,d.device_type,d.install_time,ds.device_status as deviceStatus
+        select d.id,d.device_code,d.device_name,d.site_id,d.device_address,d.device_type,d.install_time,ds.device_status as deviceStatus,
+        s.installed_capacity as installedCapacity
         from user_site as us
         inner join device_status as ds
         on us.site_id = ds.site_id
         inner join device as d
         on us.site_id = d.site_Id
+        inner join site as s
+        on s.id = us.site_id
         <where>
             <if test="userId != null and userId != 0">
                 and us.user_id = #{userId}

+ 15 - 0
fiveep-persistence/src/main/resources/mapper/mysql/RtAnalogDataMapper.xml

@@ -737,6 +737,21 @@
         ORDER BY
         t.dataTime
     </select>
+    <select id="list" resultType="com.bizmatics.model.RtAnalogData">
+        select deviceName,P
+        from user_site as us
+        inner join device as d
+        on us.site_id = d.site_id
+        inner join rt_analog_data as rad
+        on d.device_code = rad.deviceName
+        <where>
+            and d.enable=1
+            <if test="userId != null and userId != 0">
+                and us.user_id = #{userId}
+            </if>
+        </where>
+
+    </select>
 
 
 </mapper>

+ 2 - 1
fiveep-service/src/main/java/com/bizmatics/service/impl/DeviceServiceImpl.java

@@ -40,7 +40,8 @@ public class DeviceServiceImpl extends AbstractCrudService<DeviceMapper, Device>
                 .selectCount(userId,null,DeviceStatusCode.DEVICE.getValue(),startTime,endTime,null));
         deviceCountVo.setFaultCount(baseMapper
                 .selectCount(userId,null,DeviceStatusCode.FAULT.getValue(),startTime,endTime,null));
-
+        deviceCountVo.setCount(baseMapper
+                .selectCount(userId,null,null,startTime,endTime,null));
         return deviceCountVo;
     }
 

+ 29 - 22
fiveep-service/src/main/java/com/bizmatics/service/impl/RtAnalogDataServiceImpl.java

@@ -11,7 +11,9 @@ import com.bizmatics.common.core.util.FileUtils;
 import com.bizmatics.common.core.util.StringUtils;
 import com.bizmatics.common.spring.util.GlobalUtils;
 import com.bizmatics.model.*;
+import com.bizmatics.persistence.mapper.DeviceMapper;
 import com.bizmatics.persistence.mapper.RtAnalogDataMapper;
+import com.bizmatics.persistence.mapper.SiteMapper;
 import com.bizmatics.service.RtAnalogDataService;
 import com.bizmatics.common.mvc.base.AbstractCrudService;
 import com.bizmatics.service.SiteService;
@@ -30,6 +32,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Stream;
 
 /**
  * <p>
@@ -45,36 +48,40 @@ public class RtAnalogDataServiceImpl extends AbstractCrudService<RtAnalogDataMap
     @Autowired
     private UserSiteService userSiteService;
     @Autowired
-    private SiteService siteService;
+    private DeviceMapper deviceMapper;
 
 
     @Override
     public RadCountVO selectCount() {
         Integer userId = SessionLocal.getUserId();
-        List<UserSite> userSites = 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);
-        userSites.forEach(userSite -> {
-            Site site = siteService.getOne(Wrappers.lambdaQuery(Site.class).eq(Site::getId, userSite.getId()));
-            Double aDouble = baseMapper.selectTotalLoad(userId, site.getId());
-            String installedCapacity = site.getInstalledCapacity();
-            double installedCapacityDouble = 0.00;
-            if (StringUtils.isNotBlank(installedCapacity)){
-                installedCapacityDouble =  Double.parseDouble(installedCapacity);
-                if (installedCapacityDouble > 0){
-                    Arith.div(aDouble,installedCapacityDouble);
-                }
-            }
-            if (installedCapacityDouble < 0.4){
-                easyLoad.getAndSet(easyLoad.get() + 1);
-            }else if (installedCapacityDouble >= 0.4 && installedCapacityDouble <= 0.8){
-                norMalLoad.getAndSet(norMalLoad.get() + 1);
-            }else {
-                heavyLoad.getAndSet(heavyLoad.get() + 1);
-            }
-        });
-        int count = userSites.size();
+        List<Device> deviceList = deviceMapper.list(userId, null, null, null, null, null);
+        List<RtAnalogData> list = baseMapper.list(userId);
+        for (Device device:deviceList) {
+            list.stream()
+                    .filter(rtAnalogData -> device.getDeviceCode().equals(rtAnalogData.getDeviceName())).findAny()
+                    .ifPresent(rtAnalogData -> {
+                        String installedCapacity = device.getInstalledCapacity();
+                        double installedCapacityDouble = 0.00;
+                        if (StringUtils.isNotBlank(installedCapacity)){
+                            installedCapacityDouble =  Double.parseDouble(installedCapacity);
+                            if (installedCapacityDouble > 0){
+                                installedCapacityDouble = Arith.div(rtAnalogData.getP(),installedCapacityDouble);
+                            }
+                        }
+                        if (installedCapacityDouble < 0.4){
+                            easyLoad.getAndSet(easyLoad.get() + 1);
+                        }else if (installedCapacityDouble >= 0.4 && installedCapacityDouble <= 0.8){
+                            norMalLoad.getAndSet(norMalLoad.get() + 1);
+                        }else {
+                            heavyLoad.getAndSet(heavyLoad.get() + 1);
+                        }
+                    });
+
+        }
+        int count = deviceList.size();
         RadCountVO radCountVO = new RadCountVO();
         radCountVO.setHeavyLoad(Arith.div(heavyLoad.get(),count));
         radCountVO.setEasyLoad(Arith.div(easyLoad.get(),count));