xiang13487 2 недель назад
Родитель
Сommit
8d55317cdf

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

@@ -19,6 +19,7 @@ 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.common.utils.poi.ExcelUtil;
 import com.zksy.manhole.dto.in.*;
 import com.zksy.manhole.dto.out.*;
 import io.swagger.annotations.Api;
@@ -27,6 +28,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -166,4 +168,17 @@ public class ManholeDeviceController extends BaseController
     {
         return AjaxResult2.success(equipmentBaseService.countByType(inDTO));
     }
+
+    /**
+     * 导出设备明细数据
+     */
+    @Anonymous
+    @PostMapping(value = "/export")
+    @ApiOperation(value = "导出设备明细数据")
+    public void export(HttpServletResponse response, @RequestBody EquipmentExportInDTO inDTO)
+    {
+        List<EquipmentExportOutDTO> list = equipmentBaseService.exportEquipmentDetail(inDTO);
+        ExcelUtil<EquipmentExportOutDTO> util = new ExcelUtil<>(EquipmentExportOutDTO.class);
+        util.exportExcel(response, list, "设备明细数据");
+    }
 }

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

@@ -5,10 +5,12 @@ 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.EquipmentExportInDTO;
 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.EquipmentExportOutDTO;
 
 import java.util.List;
 import java.util.Map;
@@ -63,4 +65,11 @@ public interface EquipmentBaseService extends IService<EquipmentBase> {
      * @return
      */
     List<EquipmentCountByTypeOutDTO> countByType(EquipmentCountByTypeInDTO inDTO);
+
+    /**
+     * 导出设备明细数据
+     * @param inDTO
+     * @return
+     */
+    List<EquipmentExportOutDTO> exportEquipmentDetail(EquipmentExportInDTO inDTO);
 }

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

@@ -17,12 +17,10 @@ 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.EquipmentExportInDTO;
 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 com.zksy.manhole.dto.out.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -673,4 +671,62 @@ public class EquipmentBaseServiceImpl extends ServiceImpl<EquipmentBaseMapper, E
         }
         return result;
     }
+
+    /**
+     * 导出设备明细数据
+     * @param inDTO
+     * @return
+     */
+    @Override
+    public List<EquipmentExportOutDTO> exportEquipmentDetail(EquipmentExportInDTO inDTO) {
+        log.info("导出设备明细数据-入参:{}", inDTO);
+        LambdaQueryWrapper<EquipmentBase> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotEmpty(inDTO.getEquipmentTypeId()),
+                EquipmentBase::getEquipmentTypeId, inDTO.getEquipmentTypeId())
+                .orderByDesc(EquipmentBase::getCreateTime);
+        List<EquipmentBase> equipmentList = this.list(queryWrapper);
+        if(CollUtil.isEmpty(equipmentList)){
+            return new ArrayList<>();
+        }
+        // 一次性查询所有设备类别
+        List<String> typeIds = equipmentList.stream()
+                .map(EquipmentBase::getEquipmentTypeId)
+                .filter(StringUtils::isNotEmpty)
+                .distinct()
+                .collect(Collectors.toList());
+        Map<String, String> typeNameMap = new HashMap<>();
+        if(CollUtil.isNotEmpty(typeIds)){
+            List<EquipmentType> typeList = equipmentTypeMapper.selectBatchIds(typeIds);
+            typeNameMap = typeList.stream()
+                    .collect(Collectors.toMap(EquipmentType::getTypeId, EquipmentType::getTypeName, (k1, k2) -> k1));
+        }
+        // 一次性查询所有设备状态
+        List<String> equipmentIds = equipmentList.stream()
+                .map(EquipmentBase::getEquipmentId)
+                .collect(Collectors.toList());
+        Map<String, EquipmentStatus> statusMap = new HashMap<>();
+        if(CollUtil.isNotEmpty(equipmentIds)){
+            List<EquipmentStatus> statusList = equipmentStatusMapper.selectList(
+                    new LambdaQueryWrapper<EquipmentStatus>()
+                            .in(EquipmentStatus::getEquipmentId, equipmentIds));
+            statusMap = statusList.stream()
+                    .collect(Collectors.toMap(EquipmentStatus::getEquipmentId, Function.identity(), (k1, k2) -> k1));
+        }
+        // 组装导出数据
+        List<EquipmentExportOutDTO> result = new ArrayList<>();
+        for(EquipmentBase equipment : equipmentList){
+            EquipmentExportOutDTO outDTO = new EquipmentExportOutDTO();
+            outDTO.setEquipmentCode(equipment.getEquipmentCode());
+            outDTO.setEquipmentName(equipment.getEquipmentName());
+            outDTO.setEquipmentLocation(equipment.getEquipmentLocation());
+            outDTO.setInstallTime(equipment.getInstallTime());
+            outDTO.setEquipmentTypeName(typeNameMap.get(equipment.getEquipmentTypeId()));
+            EquipmentStatus equipmentStatus = statusMap.get(equipment.getEquipmentId());
+            if(equipmentStatus != null){
+                outDTO.setCurrentStatus(equipmentStatus.getCurrentStatus());
+            }
+            result.add(outDTO);
+        }
+        return result;
+    }
 }

+ 21 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/manhole/dto/in/EquipmentExportInDTO.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 EquipmentExportInDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "设备类别ID(为空时导出所有设备)")
+    private String equipmentTypeId;
+}

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

@@ -0,0 +1,37 @@
+package com.zksy.manhole.dto.out;
+
+import com.zksy.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 导出设备明细数据-出参
+ *
+ * @author xianggx
+ */
+@Data
+@ApiModel(value = "导出设备明细数据-出参", description = "导出设备明细数据-出参")
+public class EquipmentExportOutDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Excel(name = "设备编码")
+    private String equipmentCode;
+
+    @Excel(name = "设备名称")
+    private String equipmentName;
+
+    @Excel(name = "设备类别")
+    private String equipmentTypeName;
+
+    @Excel(name = "设备位置描述")
+    private String equipmentLocation;
+
+    @Excel(name = "设备当前状态", readConverterExp = "1=在用,2=闲置,3=维修,4=报废,5=待入库")
+    private Integer currentStatus;
+
+    @Excel(name = "安装时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime installTime;
+}