Просмотр исходного кода

根据设备类别分组统计设备数量

xiang13487 3 недель назад
Родитель
Сommit
92d7110aa7

+ 13 - 8
pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/manhole/ManholeDeviceController.java

@@ -19,14 +19,8 @@ import com.zksy.common.annotation.Anonymous;
 import com.zksy.common.core.controller.BaseController;
 import com.zksy.common.core.domain.AjaxResult;
 import com.zksy.common.core.domain.AjaxResult2;
-import com.zksy.manhole.dto.in.EquipmentStatusInDTO;
-import com.zksy.manhole.dto.in.ManholeDeviceListInDTO;
-import com.zksy.manhole.dto.in.ManholeDevicePageInDTO;
-import com.zksy.manhole.dto.in.WarningThresholdInDTO;
-import com.zksy.manhole.dto.out.EquipmentBaseOutDTO;
-import com.zksy.manhole.dto.out.EquipmentStatusOutDTO;
-import com.zksy.manhole.dto.out.ManholeDataOutDTO;
-import com.zksy.manhole.dto.out.WarningThresholdOutDTO;
+import com.zksy.manhole.dto.in.*;
+import com.zksy.manhole.dto.out.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
@@ -161,4 +155,15 @@ public class ManholeDeviceController extends BaseController
         return result ? AjaxResult.success("保存成功",result)
                 : AjaxResult.error("保存失败",result);
     }
+
+    /**
+     * 根据设备类别分组统计设备数量
+     */
+    @Anonymous
+    @PostMapping(value = "/countByType")
+    @ApiOperation(value = "根据设备类别分组统计设备数量")
+    public AjaxResult2<List<EquipmentCountByTypeOutDTO>> countByType(@RequestBody EquipmentCountByTypeInDTO inDTO)
+    {
+        return AjaxResult2.success(equipmentBaseService.countByType(inDTO));
+    }
 }

+ 9 - 1
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/EquipmentBaseService.java

@@ -4,10 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zksy.base.domain.EquipmentBase;
 import com.zksy.base.domain.vo.EquipmentFullVO;
+import com.zksy.manhole.dto.in.EquipmentCountByTypeInDTO;
 import com.zksy.manhole.dto.in.ManholeDeviceListInDTO;
 import com.zksy.manhole.dto.in.ManholeDevicePageInDTO;
 import com.zksy.manhole.dto.out.EquipmentBaseOutDTO;
-import org.springframework.stereotype.Service;
+import com.zksy.manhole.dto.out.EquipmentCountByTypeOutDTO;
 
 import java.util.List;
 import java.util.Map;
@@ -54,4 +55,11 @@ public interface EquipmentBaseService extends IService<EquipmentBase> {
      * @return
      */
     List<EquipmentBaseOutDTO> getManholeDataList(ManholeDeviceListInDTO listInDTO);
+
+    /**
+     * 根据设备类别分组统计设备数量
+     * @param inDTO
+     * @return
+     */
+    List<EquipmentCountByTypeOutDTO> countByType(EquipmentCountByTypeInDTO inDTO);
 }

+ 55 - 3
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/EquipmentBaseServiceImpl.java

@@ -7,8 +7,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zksy.base.domain.*;
-import com.zksy.base.mapper.*;
 import com.zksy.base.alarm.domain.WarningThreshold;
 import com.zksy.base.alarm.mapper.WarningThresholdMapper;
 import com.zksy.base.domain.*;
@@ -18,9 +16,11 @@ import com.zksy.base.manhole.mapper.ManholeDataMapper;
 import com.zksy.base.mapper.*;
 import com.zksy.base.service.EquipmentBaseService;
 import com.zksy.common.exception.ServiceException;
+import com.zksy.manhole.dto.in.EquipmentCountByTypeInDTO;
 import com.zksy.manhole.dto.in.ManholeDeviceListInDTO;
 import com.zksy.manhole.dto.in.ManholeDevicePageInDTO;
 import com.zksy.manhole.dto.out.EquipmentBaseOutDTO;
+import com.zksy.manhole.dto.out.EquipmentCountByTypeOutDTO;
 import com.zksy.manhole.dto.out.EquipmentStatusOutDTO;
 import com.zksy.manhole.dto.out.ManholeDataOutDTO;
 import lombok.extern.slf4j.Slf4j;
@@ -31,7 +31,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.*;
-import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -610,4 +609,57 @@ public class EquipmentBaseServiceImpl extends ServiceImpl<EquipmentBaseMapper, E
 
         return this.listByIds(equipmentIds);
     }
+
+    /**
+     * 根据设备类别分组统计设备数量
+     * @param inDTO
+     * @return
+     */
+    @Override
+    public List<EquipmentCountByTypeOutDTO> countByType(EquipmentCountByTypeInDTO inDTO) {
+        log.info("根据设备类别分组统计设备数量-入参:{}", inDTO);
+        String equipmentTypeId = inDTO.getEquipmentTypeId();
+        List<EquipmentCountByTypeOutDTO> result = new ArrayList<>();
+        if(StringUtils.isEmpty(equipmentTypeId)){
+            // 设备类别ID为空:统计所有类别的设备数量
+            List<EquipmentType> allTypes = equipmentTypeMapper.selectList(null);
+            for(EquipmentType type : allTypes){
+                long count = this.count(new LambdaQueryWrapper<EquipmentBase>()
+                        .eq(EquipmentBase::getEquipmentTypeId, type.getTypeId()));
+                EquipmentCountByTypeOutDTO outDTO = new EquipmentCountByTypeOutDTO();
+                outDTO.setEquipmentTypeId(type.getTypeId());
+                outDTO.setEquipmentTypeName(type.getTypeName());
+                outDTO.setDeviceCount((int) count);
+                result.add(outDTO);
+            }
+        } else {
+            // 查询子类别
+            List<EquipmentType> childTypes = equipmentTypeMapper.selectList(
+                    new LambdaQueryWrapper<EquipmentType>()
+                            .eq(EquipmentType::getParentTypeId, equipmentTypeId));
+            if(CollUtil.isNotEmpty(childTypes)){
+                // 有子类别:按子类别分组统计
+                for(EquipmentType childType : childTypes){
+                    long count = this.count(new LambdaQueryWrapper<EquipmentBase>()
+                            .eq(EquipmentBase::getEquipmentTypeId, childType.getTypeId()));
+                    EquipmentCountByTypeOutDTO outDTO = new EquipmentCountByTypeOutDTO();
+                    outDTO.setEquipmentTypeId(childType.getTypeId());
+                    outDTO.setEquipmentTypeName(childType.getTypeName());
+                    outDTO.setDeviceCount((int) count);
+                    result.add(outDTO);
+                }
+            } else {
+                // 无子类别:直接统计该类别的设备数量
+                EquipmentType equipmentType = equipmentTypeMapper.selectById(equipmentTypeId);
+                long count = this.count(new LambdaQueryWrapper<EquipmentBase>()
+                        .eq(EquipmentBase::getEquipmentTypeId, equipmentTypeId));
+                EquipmentCountByTypeOutDTO outDTO = new EquipmentCountByTypeOutDTO();
+                outDTO.setEquipmentTypeId(equipmentTypeId);
+                outDTO.setEquipmentTypeName(equipmentType != null ? equipmentType.getTypeName() : null);
+                outDTO.setDeviceCount((int) count);
+                result.add(outDTO);
+            }
+        }
+        return result;
+    }
 }

+ 21 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/manhole/dto/in/EquipmentCountByTypeInDTO.java

@@ -0,0 +1,21 @@
+package com.zksy.manhole.dto.in;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 根据设备类别分组统计设备数量-入参
+ *
+ * @author xianggx
+ */
+@Data
+@ApiModel(value = "根据设备类别分组统计设备数量-入参", description = "根据设备类别分组统计设备数量-入参")
+public class EquipmentCountByTypeInDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "设备类别ID(为空时统计所有类别的设备数量)")
+    private String equipmentTypeId;
+}

+ 27 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/manhole/dto/out/EquipmentCountByTypeOutDTO.java

@@ -0,0 +1,27 @@
+package com.zksy.manhole.dto.out;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 根据设备类别分组统计设备数量-出参
+ *
+ * @author xianggx
+ */
+@Data
+@ApiModel(value = "根据设备类别分组统计设备数量-出参", description = "根据设备类别分组统计设备数量-出参")
+public class EquipmentCountByTypeOutDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "设备类别ID")
+    private String equipmentTypeId;
+
+    @ApiModelProperty(value = "设备类别名称")
+    private String equipmentTypeName;
+
+    @ApiModelProperty(value = "设备数量")
+    private Integer deviceCount;
+}