Browse Source

管道登记使用表导出功能

xy 1 week ago
parent
commit
34fc527b06

+ 8 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipeuseregistrationreport/PipeUseRegistrationReportController.java

@@ -28,6 +28,7 @@ import static cn.start.tz.framework.apilog.core.enums.OperateTypeEnum.*;
 import cn.start.tz.module.pressure2.controller.admin.pipeuseregistrationreport.vo.*;
 import cn.start.tz.module.pressure2.dal.dataobject.pipeuseregistrationreport.PipeUseRegistrationReportDO;
 import cn.start.tz.module.pressure2.service.pipeuseregistrationreport.PipeUseRegistrationReportService;
+import java.util.List;
 
 @Tag(name = "管理后台 - 管道使用登记")
 @RestController
@@ -74,6 +75,13 @@ public class PipeUseRegistrationReportController {
         return success(BeanUtils.toBean(pageResult, PipeUseRegistrationReportRespVO.class));
     }
 
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出管道使用登记 Excel")
+    public void exportPipeUseRegistrationReport(@Valid PipeUseRegistrationReportPageReqVO pageReqVO, HttpServletResponse response) throws IOException {
+        List<PipeUseRegistrationReportExportVO> list = pipeUseRegistrationReportService.getPipeUseRegistrationReportExportList(pageReqVO);
+        ExcelUtils.write(response, "管道使用登记.xls", "数据", PipeUseRegistrationReportExportVO.class, list);
+    }
+
     @PostMapping("/generate")
     @Operation(summary = "生成管道使用登记表")
     public CommonResult<Boolean> generatePipeUseRegistrationReport(@Valid @RequestBody PipeUseRegistrationReportSaveReqVO createReqVO) {

+ 40 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipeuseregistrationreport/vo/PipeUseRegistrationReportExportVO.java

@@ -0,0 +1,40 @@
+package cn.start.tz.module.pressure2.controller.admin.pipeuseregistrationreport.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * 管道使用登记 导出 VO(字段与前端列表一致)
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PipeUseRegistrationReportExportVO {
+
+    @ExcelProperty("工程号")
+    private String projectNo;
+
+    @ExcelProperty("使用单位名称")
+    private String unitName;
+
+    @ExcelProperty("报告编号")
+    private String reportNo;
+
+    @ExcelProperty("申请日期")
+    private LocalDateTime submitTime;
+
+    @ExcelProperty("审核日期")
+    private LocalDateTime approvalTime;
+
+    @ExcelProperty("备注")
+    private String remark;
+
+    @ExcelProperty("部门")
+    private String deptName;
+
+    @ExcelProperty("审核状态")
+    private String statusStr;
+
+}

+ 3 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipeuseregistrationreport/vo/PipeUseRegistrationReportPageReqVO.java

@@ -72,6 +72,9 @@ public class PipeUseRegistrationReportPageReqVO extends PageParam {
     @Schema(description = "是否有使用登记证编号(1=有,0=无)")
     private String hasCertificateNo;
 
+    @Schema(description = "导出时勾选的ID列表,逗号分隔")
+    private String ids;
+
     private String equipId;
 
 }

+ 7 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipeuseregistrationreport/PipeUseRegistrationReportService.java

@@ -8,6 +8,8 @@ import cn.start.tz.framework.common.pojo.PageResult;
 import cn.start.tz.framework.common.pojo.PageParam;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * 管道使用登记 Service 接口
  *
@@ -58,4 +60,9 @@ public interface PipeUseRegistrationReportService extends IService<PipeUseRegist
     void auditPipeUseRegistrationReport(PipeUseRegistrationReportAuditReqVO auditReqVO);
 
     void approvePipeUseRegistrationReport(PipeUseRegistrationReportAuditReqVO auditReqVO);
+
+    /**
+     * 获取导出数据(与前端列表列一致)
+     */
+    List<PipeUseRegistrationReportExportVO> getPipeUseRegistrationReportExportList(PipeUseRegistrationReportPageReqVO pageReqVO);
 }

+ 51 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipeuseregistrationreport/PipeUseRegistrationReportServiceImpl.java

@@ -268,4 +268,55 @@ public class PipeUseRegistrationReportServiceImpl extends ServiceImpl<PipeUseReg
 
     }
 
+    @Override
+    public List<PipeUseRegistrationReportExportVO> getPipeUseRegistrationReportExportList(PipeUseRegistrationReportPageReqVO pageReqVO) {
+        List<PipeUseRegistrationReportDO> list;
+        if (pageReqVO.getIds() != null && !pageReqVO.getIds().isEmpty()) {
+            // 导出勾选的数据
+            String[] idArray = pageReqVO.getIds().split(",");
+            list = pipeUseRegistrationReportMapper.selectBatchIds(Arrays.asList(idArray));
+        } else {
+            // 导出全部(不加分页限制)
+            pageReqVO.setPageNo(1);
+            pageReqVO.setPageSize(Integer.MAX_VALUE);
+            list = pipeUseRegistrationReportMapper.selectPage(pageReqVO).getList();
+        }
+
+        // 获取部门名称
+        List<String> deptIds = list.stream().map(PipeUseRegistrationReportDO::getDeptId)
+                .filter(Objects::nonNull).toList();
+        Map<String, String> deptNameMap = new HashMap<>();
+        if (!deptIds.isEmpty()) {
+            List<DeptRespDTO> deptRespDTOS = deptApi.getDeptList(deptIds).getCheckedData();
+            deptRespDTOS.forEach(d -> deptNameMap.put(d.getId(), d.getName()));
+        }
+
+        // 转换为导出VO
+        List<PipeUseRegistrationReportExportVO> exportList = new ArrayList<>();
+        for (PipeUseRegistrationReportDO item : list) {
+            PipeUseRegistrationReportExportVO vo = new PipeUseRegistrationReportExportVO();
+            vo.setProjectNo(item.getProjectNo());
+            vo.setUnitName(item.getUnitName());
+            vo.setReportNo(item.getReportNo());
+            vo.setSubmitTime(item.getSubmitTime());
+            vo.setApprovalTime(item.getApprovalTime());
+            vo.setRemark(item.getRemark());
+            vo.setDeptName(deptNameMap.get(item.getDeptId()));
+            // 审核状态转文本
+            if (item.getStatus() == null) {
+                vo.setStatusStr("-");
+            } else if (item.getStatus() == 100) {
+                vo.setStatusStr("审核中");
+            } else if (item.getStatus() == 200) {
+                vo.setStatusStr("已通过");
+            } else if (item.getStatus() == 300) {
+                vo.setStatusStr("已拒绝");
+            } else {
+                vo.setStatusStr("-");
+            }
+            exportList.add(vo);
+        }
+        return exportList;
+    }
+
 }