lishuangjiang@potevio.com 2 жил өмнө
parent
commit
79419168d6

+ 6 - 0
iot-dao/iot-data-service/src/main/java/cc/iotkit/data/manager/IDeviceInfoData.java

@@ -140,4 +140,10 @@ public interface IDeviceInfoData extends IOwnedData<DeviceInfo, String> {
      * @return
      */
     boolean existByProductKey(String productKey);
+
+    Map countCategoryMap();
+
+    Map countStateMap();
+
+    Long countTodayAdd();
 }

+ 15 - 0
iot-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/DeviceInfoDataCache.java

@@ -317,4 +317,19 @@ public class DeviceInfoDataCache implements IDeviceInfoData, SmartInitializingSi
         List<String> subDeviceIds = deviceInfoData.findSubDeviceIds(parentId);
         deviceInfoCachePut.findSubDeviceIds(parentId, subDeviceIds);
     }
+
+    @Override
+    public Map countCategoryMap() {
+        return deviceInfoData.countCategoryMap();
+    }
+
+    @Override
+    public Map countStateMap() {
+        return deviceInfoData.countStateMap();
+    }
+
+    @Override
+    public Long countTodayAdd() {
+        return deviceInfoData.countTodayAdd();
+    }
 }

+ 15 - 0
iot-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/DeviceInfoPropertyDataCache.java

@@ -191,4 +191,19 @@ public class DeviceInfoPropertyDataCache implements IDeviceInfoData {
     public long countByUid(String uid) {
         return deviceInfoData.countByUid(uid);
     }
+
+    @Override
+    public Map countCategoryMap() {
+        return deviceInfoData.countCategoryMap();
+    }
+
+    @Override
+    public Map countStateMap() {
+        return deviceInfoData.countStateMap();
+    }
+
+    @Override
+    public Long countTodayAdd() {
+        return deviceInfoData.countTodayAdd();
+    }
 }

+ 25 - 0
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java

@@ -15,6 +15,7 @@ import cc.iotkit.model.device.message.DevicePropertyCache;
 import cc.iotkit.model.product.Category;
 import cc.iotkit.model.product.Product;
 import cc.iotkit.model.stats.DataItem;
+import com.querydsl.core.Tuple;
 import com.querydsl.core.types.Projections;
 import com.querydsl.jpa.impl.JPAQuery;
 import com.querydsl.jpa.impl.JPAQueryFactory;
@@ -457,5 +458,29 @@ public class DeviceInfoDataImpl implements IDeviceInfoData, IJPACommData<DeviceI
         return null;
     }
 
+    @Override
+    public Map countStateMap() {
+        Map<String,Long> resultMap = new HashMap();
+       List<Tuple> result =  jpaQueryFactory.select(tbDeviceInfo.id.count(),tbDeviceInfo.state).from(tbDeviceInfo).groupBy(tbDeviceInfo.state).fetch();
+       for(Tuple tuple: result){ resultMap.put(tuple.get(1,String.class),tuple.get(0,Long.class)); }
+       return resultMap;
+    }
 
+    @Override
+    public Map countCategoryMap() {
+        Map<String,Long> resultMap = new HashMap();
+        List<Tuple> result =  jpaQueryFactory.select(tbDeviceInfo.id.count(),tbDeviceInfo.productKey).from(tbDeviceInfo).groupBy(tbDeviceInfo.productKey).fetch();
+        for(Tuple tuple: result){ resultMap.put(tuple.get(1,String.class),tuple.get(0,Long.class)); }
+        return resultMap;
+    }
+
+    @Override
+    public Long countTodayAdd() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.HOUR_OF_DAY,0);
+        calendar.set(Calendar.MINUTE,0);
+        calendar.set(Calendar.HOUR,0);
+        calendar.set(Calendar.MILLISECOND,0);
+        return jpaQueryFactory.select(tbDeviceInfo.id.count()).from(tbDeviceInfo).where(tbDeviceInfo.createAt.gt(calendar.getTime().getTime())).fetchOne();
+    }
 }

+ 89 - 1
iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/HomeController.java

@@ -9,6 +9,7 @@
  */
 package cc.iotkit.manager.controller;
 
+import antlr.StringUtils;
 import cc.iotkit.common.api.PageRequest;
 import cc.iotkit.common.api.Paging;
 import cc.iotkit.common.api.Request;
@@ -24,6 +25,7 @@ import cc.iotkit.manager.dto.vo.category.CategoryVo;
 import cc.iotkit.manager.dto.vo.product.ProductVo;
 import cc.iotkit.manager.dto.vo.productmodel.ProductModelVo;
 import cc.iotkit.manager.dto.vo.thingmodel.ThingModelVo;
+import cc.iotkit.manager.service.IDeviceManagerService;
 import cc.iotkit.manager.service.IProductService;
 import cc.iotkit.model.product.Category;
 import cn.dev33.satoken.annotation.SaCheckPermission;
@@ -32,6 +34,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.logging.log4j.util.Strings;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -47,6 +50,10 @@ import java.util.stream.Collectors;
 public class HomeController {
     @Autowired
     private IProductService productService;
+    @Autowired
+    private IDeviceManagerService deviceServiceImpl;
+
+
     @ApiOperation("简介")
     @PostMapping("/data")
     public Map data() {
@@ -64,12 +71,93 @@ public class HomeController {
         List<ProductVo> productVos = productService.selectProductList();
         if(CollectionUtil.isNotEmpty(productVos)){
             dataMap.put("productAllNum",productVos.size());
-            Integer productTodayNum = categoryVos.stream().map(item->new Date(item.getCreateAt()).compareTo(todayZero)>0)
+            Integer productTodayNum = productVos.stream().map(item->new Date(item.getCreateAt()).compareTo(todayZero)>0)
+                    .collect(Collectors.toList()).size();
+            dataMap.put("productTodayNum",productTodayNum);
+        }
+        return  dataMap;
+    }
+
+    @ApiOperation("pnglei")
+    @PostMapping("/category")
+    public Map categoryData() {
+        Map<String,Object> dataMap = new HashMap<>();
+        List<CategoryVo> categoryVos = productService.selectCategoryList();
+        Date todayZero = todayZeroTime();
+        if(CollectionUtil.isNotEmpty(categoryVos)){
+            dataMap.put("categoryAllNum",categoryVos.size());
+            Integer categoryTodayNum = categoryVos.stream().map(item->new Date(item.getCreateAt()).compareTo(todayZero)>0)
+                    .collect(Collectors.toList()).size();
+            dataMap.put("categoryTodayNum",categoryTodayNum);
+        }
+        return  dataMap;
+    }
+
+    @ApiOperation("shangpin")
+    @PostMapping("/product")
+    public Map productData() {
+        Map<String,Object> dataMap = new HashMap<>();
+        Date todayZero = todayZeroTime();
+        List<ProductVo> productVos = productService.selectProductList();
+        if(CollectionUtil.isNotEmpty(productVos)){
+            dataMap.put("productAllNum",productVos.size());
+            Integer productTodayNum = productVos.stream().map(item->new Date(item.getCreateAt()).compareTo(todayZero)>0)
                     .collect(Collectors.toList()).size();
             dataMap.put("productTodayNum",productTodayNum);
         }
         return  dataMap;
     }
+
+    @ApiOperation("shebei")
+    @PostMapping("/device")
+    public Map deviceData() {
+        Map statisMap = deviceServiceImpl.countMap();
+        return  statisMap;
+    }
+
+    @ApiOperation("deviceStates")
+    @PostMapping("/deviceStates")
+    public Map deviceStates() {
+        Map statisMap = deviceServiceImpl.countStateMap();
+        return  statisMap;
+    }
+
+    @ApiOperation("deviceCategory")
+    @PostMapping("/deviceCategory")
+    public Map deviceCategory() {
+        Map<String,Long> dataMap = new HashMap<>();
+        List<CategoryVo> categoryVos = productService.selectCategoryList();
+        Date todayZero = todayZeroTime();
+        Map<String,String> categoryMap = new HashMap<>();
+        if(CollectionUtil.isNotEmpty(categoryVos)){
+            categoryMap = categoryVos.stream().collect(Collectors.toMap(CategoryVo::getId,CategoryVo::getName));
+        }
+        List<ProductVo> productVos = productService.selectProductList();
+        Map<String,String> productMap = new HashMap<>();
+        if(CollectionUtil.isNotEmpty(productVos)){
+            productMap = productVos.stream().collect(Collectors.toMap(ProductVo::getProductKey,ProductVo::getCategory));
+        }
+        Long allNum = 0L;
+        Map statisMap = deviceServiceImpl.countCategoryMap();
+        for (Object key :statisMap.keySet()){
+            String category  = productMap.get(key);
+            Long tmpNum = (Long)statisMap.get(key);
+            allNum = allNum+tmpNum;
+            if(Strings.isNotEmpty(category)){
+                Long num = dataMap.get(category);
+              if(Objects.nonNull(num)){
+                    dataMap.put(category,num+tmpNum);
+                }else{
+                    dataMap.put(category,tmpNum);
+                }
+            }
+        }
+        dataMap.put("设备总数",allNum);
+        return  dataMap;
+    }
+
+
+
     private Date todayZeroTime(){
         Calendar calendar = Calendar.getInstance();
         calendar.set(Calendar.HOUR_OF_DAY,0);

+ 7 - 0
iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/IDeviceManagerService.java

@@ -20,6 +20,7 @@ import cc.iotkit.model.device.message.DeviceProperty;
 import org.springframework.web.context.request.async.DeferredResult;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Author: jay
@@ -75,4 +76,10 @@ public interface IDeviceManagerService {
     DeviceConfigVo getConfig(String deviceId);
 
     boolean saveDevice(DeviceInfoBo data);
+
+    Map countMap();
+
+    Map countCategoryMap();
+
+    Map countStateMap();
 }

+ 20 - 0
iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/DeviceManagerServiceImpl.java

@@ -41,7 +41,9 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.web.context.request.async.DeferredResult;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -424,5 +426,23 @@ public class DeviceManagerServiceImpl implements IDeviceManagerService {
         return deviceInfoData.save(di) != null;
     }
 
+    @Override
+    public Map countMap() {
+        Map<String,Object> dataMap = new HashMap<>();
+        Long allNum = deviceInfoData.count();
+        dataMap.put("viceAllNum",allNum);
+        Long todayNum =  deviceInfoData.countTodayAdd();
+        dataMap.put("deviceTodayNum",todayNum);
+        return dataMap;
+    }
 
+    @Override
+    public Map countCategoryMap() {
+        return deviceInfoData.countCategoryMap();
+    }
+
+    @Override
+    public Map countStateMap() {
+        return deviceInfoData.countStateMap();
+    }
 }