Browse Source

孢子仪新增 图片数量统计

zhaiyifei 1 year atrás
parent
commit
af80d2481d

+ 5 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/bzy/controller/IotDeviceBzyController.java

@@ -27,6 +27,7 @@ import com.yunfeiyun.agmp.iot.common.service.MongoService;
 import com.yunfeiyun.agmp.iotm.common.controller.BaseController;
 import com.yunfeiyun.agmp.iotm.device.bzy.domain.IotBzyDeviceDataListResVo;
 import com.yunfeiyun.agmp.iotm.device.bzy.domain.IotYfBzyPolylineResVo;
+import com.yunfeiyun.agmp.iotm.device.bzy.service.IIotBzyService;
 import com.yunfeiyun.agmp.iotm.device.bzy.service.IIotBzyrecogService;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceDataListReqVo;
 import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceRefreshService;
@@ -70,6 +71,9 @@ public class IotDeviceBzyController extends BaseController {
     @Resource
     private IotDeviceRefreshService iotDeviceRefreshService;
 
+    @Autowired
+    private IIotBzyService iIotBzyService;
+
 
     /**
      * 孢子仪列表
@@ -92,6 +96,7 @@ public class IotDeviceBzyController extends BaseController {
         }
         reqVo.setDevtypeBidList(Arrays.asList(devTypeList));
         List<IotDeviceListResVo> list = iIotDeviceService.selectIotDeviceListByType(reqVo);
+        list = iIotBzyService.setImgCount(list);
         return getDataTable(list);
     }
 

+ 9 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/bzy/domain/IotBzyImgCountDto.java

@@ -0,0 +1,9 @@
+package com.yunfeiyun.agmp.iotm.device.bzy.domain;
+
+import lombok.Data;
+
+@Data
+public class IotBzyImgCountDto {
+    private String imgCount;
+    private String devBid;
+}

+ 5 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/bzy/service/IIotBzyService.java

@@ -1,7 +1,12 @@
 package com.yunfeiyun.agmp.iotm.device.bzy.service;
 
 import com.yunfeiyun.agmp.iotm.device.common.domin.DeviceRefreshDto;
+import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
+
+import java.util.List;
 
 public interface IIotBzyService {
     public void refresh(DeviceRefreshDto reqVo);
+
+    public List<IotDeviceListResVo> setImgCount(List<IotDeviceListResVo> deviceList);
 }

+ 48 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/bzy/service/impl/IotBzyServiceImpl.java

@@ -4,19 +4,32 @@ import com.alibaba.fastjson2.JSONObject;
 import com.yunfeiyun.agmp.common.utils.JSONUtils;
 import com.yunfeiyun.agmp.common.utils.uuid.IdUtils;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.ServiceNameConst;
+import com.yunfeiyun.agmp.iot.common.domain.IotBzyimg;
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
 import com.yunfeiyun.agmp.iot.common.domain.IotDeviceconfig;
 import com.yunfeiyun.agmp.iot.common.model.cmd.CmdGroupModel;
+import com.yunfeiyun.agmp.iot.common.service.MongoService;
+import com.yunfeiyun.agmp.iotm.device.bzy.domain.IotBzyImgCountDto;
 import com.yunfeiyun.agmp.iotm.device.bzy.service.IIotBzyService;
 import com.yunfeiyun.agmp.iotm.device.common.domin.DeviceRefreshDto;
 import com.yunfeiyun.agmp.iotm.device.common.service.impl.IotDeviceBaseServiceImpl;
+import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
 import com.yunfeiyun.agmp.iotm.web.service.IIotCmdtaskService;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceconfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.aggregation.Aggregation;
+import org.springframework.data.mongodb.core.aggregation.GroupOperation;
+import org.springframework.data.mongodb.core.aggregation.MatchOperation;
+import org.springframework.data.mongodb.core.aggregation.ProjectionOperation;
+import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @Slf4j
 @Service(value = ServiceNameConst.SERVICE_YF_BZY)
@@ -27,6 +40,9 @@ public class IotBzyServiceImpl extends IotDeviceBaseServiceImpl implements IIotB
     @Autowired
     private IIotCmdtaskService iIotCmdtaskService;
 
+    @Autowired
+    private MongoService mongoService;
+
     @Override
     public void refresh(DeviceRefreshDto reqVo) {
         IotDevice iotDevice = reqVo.getIotDevice();
@@ -53,4 +69,36 @@ public class IotBzyServiceImpl extends IotDeviceBaseServiceImpl implements IIotB
         cmdGroupModel.setCtParam("设备id:"+devBid);
         iIotCmdtaskService.handInternalCmd(cmdGroupModel);
     }
+
+    @Override
+    public List<IotDeviceListResVo> setImgCount(List<IotDeviceListResVo> deviceList) {
+        if(deviceList == null || deviceList.isEmpty()) {
+            return deviceList;
+        }
+
+        List<String> devBidList = new ArrayList<>();
+        for (IotDeviceListResVo device : deviceList) {
+            devBidList.add(device.getDevBid());
+        }
+
+        Criteria criteria = new Criteria().and("devBid").in(devBidList);
+        MatchOperation matchOperation = Aggregation.match(criteria);
+        GroupOperation groupOperation = Aggregation.group("devBid").count().as("imgCount");
+        ProjectionOperation projectionOperation = Aggregation.project()
+                .and("_id").as("devBid")
+                .and("imgCount").as("imgCount");
+
+        Aggregation aggregation = Aggregation.newAggregation(matchOperation, groupOperation, projectionOperation);
+        List<IotBzyImgCountDto> iotBzyImgCountDtoList = mongoService.aggregate(
+                IotBzyimg.class, aggregation, IotBzyImgCountDto.class
+        );
+        Map<String, String> imgCountMap = new HashMap<>();
+        for (IotBzyImgCountDto iotBzyImgCountDto : iotBzyImgCountDtoList) {
+            imgCountMap.put(iotBzyImgCountDto.getDevBid(), iotBzyImgCountDto.getImgCount());
+        }
+        for (IotDeviceListResVo device : deviceList) {
+            device.setImgCount(Long.parseLong(imgCountMap.getOrDefault(device.getDevBid(), "0")));
+        }
+        return deviceList;
+    }
 }