|
|
@@ -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;
|
|
|
+ }
|
|
|
}
|