Pārlūkot izejas kodu

设备分页-统计

tanbin 5 mēneši atpakaļ
vecāks
revīzija
a96c6b3ebf

+ 26 - 1
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -1930,7 +1930,32 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
      * @return
      */
     public DeviceInfoDto.PageCount pageCountForPc(DeviceInfoDto.Page page) {
-        return  baseMapper.pageCountForPc(  page);
+        DeviceInfoDto.PageCount count = new DeviceInfoDto.PageCount().setActiveNum(0).setOffLineNum(0).setTotal(0).setOnlineNum(0).setNoActiveNum(0);
+
+        List<Long> myDeviceIds = page.getMyDeviceIds();
+        if(CollUtil.isEmpty(myDeviceIds)){
+            return count;
+        }
+        List<DeviceStatus> deviceStatuses = deviceStatusService.listByIds(page.getMyDeviceIds());
+        //分组统计
+        Map<Integer, Long> countNetstateMap = deviceStatuses.stream().collect(Collectors
+                .groupingBy(DeviceStatus::getNetState, Collectors.counting()));
+        Integer onlineDictValue = SysDictUtils.getValue(EnumDeviceOnlineStatus.Code.CODE.getCode(), EnumDeviceOnlineStatus.CONNECTED.getCode(), Integer.class);
+        Integer offlineDictValue = SysDictUtils.getValue(EnumDeviceOnlineStatus.Code.CODE.getCode(), EnumDeviceOnlineStatus.DISCONNECT.getCode(), Integer.class);
+
+        int onlineNum = countNetstateMap.get(onlineDictValue) == null ? 0 : countNetstateMap.get(onlineDictValue).intValue();
+        int offlineNum = countNetstateMap.get(offlineDictValue) == null ? 0 : countNetstateMap.get(offlineDictValue).intValue();
+        count.setOnlineNum(onlineNum);
+        count.setOffLineNum(offlineNum);
+        List<DeviceInfo> mercDevices = listByIds(page.getMyDeviceIds());
+        int total = mercDevices.size();
+        //待激活数量
+        Long unActiveNum = mercDevices.stream()
+                .filter(device -> device.getActiveState() == 2)
+                .count();
+        count.setNoActiveNum(unActiveNum.intValue());
+        count.setActiveNum(total-unActiveNum.intValue());
+        return  count;
     }
     public PageBean<DeviceInfoDto.Vo2> queryPage(DeviceInfoDto.Page page) {
         IPage<DeviceInfoQueryPage> iPage = baseMapper.queryPage(toIPage(page.getPage()), page);