diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 7748ced..d5a0230 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -1,8 +1,10 @@ package com.casic.missiles.controller.business; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.board.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessBoardService; @@ -14,11 +16,12 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.List; /** * @Description: 业务看板 - * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的整 + * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的证书 * @Author: wangpeng * @Date: 2023/4/7 16:44 */ @@ -26,7 +29,7 @@ @Slf4j @RestController @RequestMapping("/business/board") -public class BusinessBoardController { +public class BusinessBoardController extends ExportController { @Autowired private IBusinessBoardService boardService; @@ -67,4 +70,35 @@ return ReturnUtil.success(boardService.deptComprehensive(request)); } + @ApiOperation("实时工作统计导出") + @GetMapping("/workStatistics/export") + public void workStatisticsExport() throws IOException { + List list = boardService.workStatistics(); + super.exportExcel(BoardWorkStatisticsResponse.class, list, ExportEnum.WORK_STATISTICS_EXPORT.getSheetName()); + } + + @ApiOperation("部门产值分析导出") + @PostMapping("/deptOutput/export") + public void deptOutputExport(@RequestBody BoardBaseRequest request) throws IOException { + List list = boardService.deptOutput(request); + super.exportExcel(BoardDeptOutputResponse.class, list, ExportEnum.DEPT_OUTPUT_EXPORT.getSheetName()); + } + + @ApiOperation("业务工作量分析导出") + @PostMapping("/workload/export") + public void workloadExport(@RequestBody @Validated(BoardWorkloadValid.class) BoardBaseRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list = boardService.workload(request); + super.exportExcel(BoardWorkloadResponse.class, list, ExportEnum.WORKLOAD_EXPORT.getSheetName()); + } + + @ApiOperation("部门综合分析导出") + @PostMapping("/deptComprehensive/export") + public void deptComprehensiveExport(@RequestBody BoardDeptComprehensiveRequest request) throws IOException { + List list = boardService.deptComprehensive(request); + super.exportExcel(BoardDeptComprehensiveResponse.class, list, ExportEnum.DEPT_COMPREHENSIVE_EXPORT.getSheetName()); + } + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 7748ced..d5a0230 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -1,8 +1,10 @@ package com.casic.missiles.controller.business; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.board.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessBoardService; @@ -14,11 +16,12 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.List; /** * @Description: 业务看板 - * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的整 + * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的证书 * @Author: wangpeng * @Date: 2023/4/7 16:44 */ @@ -26,7 +29,7 @@ @Slf4j @RestController @RequestMapping("/business/board") -public class BusinessBoardController { +public class BusinessBoardController extends ExportController { @Autowired private IBusinessBoardService boardService; @@ -67,4 +70,35 @@ return ReturnUtil.success(boardService.deptComprehensive(request)); } + @ApiOperation("实时工作统计导出") + @GetMapping("/workStatistics/export") + public void workStatisticsExport() throws IOException { + List list = boardService.workStatistics(); + super.exportExcel(BoardWorkStatisticsResponse.class, list, ExportEnum.WORK_STATISTICS_EXPORT.getSheetName()); + } + + @ApiOperation("部门产值分析导出") + @PostMapping("/deptOutput/export") + public void deptOutputExport(@RequestBody BoardBaseRequest request) throws IOException { + List list = boardService.deptOutput(request); + super.exportExcel(BoardDeptOutputResponse.class, list, ExportEnum.DEPT_OUTPUT_EXPORT.getSheetName()); + } + + @ApiOperation("业务工作量分析导出") + @PostMapping("/workload/export") + public void workloadExport(@RequestBody @Validated(BoardWorkloadValid.class) BoardBaseRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list = boardService.workload(request); + super.exportExcel(BoardWorkloadResponse.class, list, ExportEnum.WORKLOAD_EXPORT.getSheetName()); + } + + @ApiOperation("部门综合分析导出") + @PostMapping("/deptComprehensive/export") + public void deptComprehensiveExport(@RequestBody BoardDeptComprehensiveRequest request) throws IOException { + List list = boardService.deptComprehensive(request); + super.exportExcel(BoardDeptComprehensiveResponse.class, list, ExportEnum.DEPT_COMPREHENSIVE_EXPORT.getSheetName()); + } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 34dfbad..7015965 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -45,7 +45,11 @@ OUTSOURCER_CERTIFICATE_EXPORT("outsourceCertificateData", "outsourceCertificateData", "分包证书"), SETTLEMENT_INFO_EXPORT("settlementInfoData", "settlementInfoData", "业务结算"), EQUIPMENT_REMIND("equipmentRemind", "equipmentRemind", "设备到期提醒"), - AGREEMENT_INFO_EXPORT("agreementInfoData", "agreementInfoData", "合同"); + AGREEMENT_INFO_EXPORT("agreementInfoData", "agreementInfoData", "合同"), + WORK_STATISTICS_EXPORT("workStatisticsData", "workStatisticsData", "实时工作统计"), + DEPT_OUTPUT_EXPORT("deptOutputData", "deptOutputData", "部门产值分析"), + WORKLOAD_EXPORT("workloadData", "workloadData", "业务工作量分析"), + DEPT_COMPREHENSIVE_EXPORT("deptComprehensiveData", "deptComprehensiveData", "部门综合分析"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 7748ced..d5a0230 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -1,8 +1,10 @@ package com.casic.missiles.controller.business; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.board.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessBoardService; @@ -14,11 +16,12 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.List; /** * @Description: 业务看板 - * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的整 + * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的证书 * @Author: wangpeng * @Date: 2023/4/7 16:44 */ @@ -26,7 +29,7 @@ @Slf4j @RestController @RequestMapping("/business/board") -public class BusinessBoardController { +public class BusinessBoardController extends ExportController { @Autowired private IBusinessBoardService boardService; @@ -67,4 +70,35 @@ return ReturnUtil.success(boardService.deptComprehensive(request)); } + @ApiOperation("实时工作统计导出") + @GetMapping("/workStatistics/export") + public void workStatisticsExport() throws IOException { + List list = boardService.workStatistics(); + super.exportExcel(BoardWorkStatisticsResponse.class, list, ExportEnum.WORK_STATISTICS_EXPORT.getSheetName()); + } + + @ApiOperation("部门产值分析导出") + @PostMapping("/deptOutput/export") + public void deptOutputExport(@RequestBody BoardBaseRequest request) throws IOException { + List list = boardService.deptOutput(request); + super.exportExcel(BoardDeptOutputResponse.class, list, ExportEnum.DEPT_OUTPUT_EXPORT.getSheetName()); + } + + @ApiOperation("业务工作量分析导出") + @PostMapping("/workload/export") + public void workloadExport(@RequestBody @Validated(BoardWorkloadValid.class) BoardBaseRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list = boardService.workload(request); + super.exportExcel(BoardWorkloadResponse.class, list, ExportEnum.WORKLOAD_EXPORT.getSheetName()); + } + + @ApiOperation("部门综合分析导出") + @PostMapping("/deptComprehensive/export") + public void deptComprehensiveExport(@RequestBody BoardDeptComprehensiveRequest request) throws IOException { + List list = boardService.deptComprehensive(request); + super.exportExcel(BoardDeptComprehensiveResponse.class, list, ExportEnum.DEPT_COMPREHENSIVE_EXPORT.getSheetName()); + } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 34dfbad..7015965 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -45,7 +45,11 @@ OUTSOURCER_CERTIFICATE_EXPORT("outsourceCertificateData", "outsourceCertificateData", "分包证书"), SETTLEMENT_INFO_EXPORT("settlementInfoData", "settlementInfoData", "业务结算"), EQUIPMENT_REMIND("equipmentRemind", "equipmentRemind", "设备到期提醒"), - AGREEMENT_INFO_EXPORT("agreementInfoData", "agreementInfoData", "合同"); + AGREEMENT_INFO_EXPORT("agreementInfoData", "agreementInfoData", "合同"), + WORK_STATISTICS_EXPORT("workStatisticsData", "workStatisticsData", "实时工作统计"), + DEPT_OUTPUT_EXPORT("deptOutputData", "deptOutputData", "部门产值分析"), + WORKLOAD_EXPORT("workloadData", "workloadData", "业务工作量分析"), + DEPT_COMPREHENSIVE_EXPORT("deptComprehensiveData", "deptComprehensiveData", "部门综合分析"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java index bf5f547..cf26b0d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,19 +16,28 @@ * @Author: wangpeng * @Date: 2023/4/11 19:25 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardBaseResponse { @ApiModelProperty(value = "部门id", dataType = "Long") private Long deptId; + @ExcelProperty(value = "部门", order = 1) @ApiModelProperty(value = "部门名", dataType = "String") private String deptName; @ApiModelProperty(value = "人员id", dataType = "Long") private Long staffId; + @ExcelProperty(value = "人员", order = 2) @ApiModelProperty(value = "人员名字", dataType = "String") private String staffName; + @ExcelProperty(value = "检定样品数量", order = 3) @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") private Integer samples = 0; + @ExcelProperty(value = "出具证书数量", order = 4) @ApiModelProperty(value = "出具证书数量", dataType = "Integer") private Integer certificates = 0; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 7748ced..d5a0230 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -1,8 +1,10 @@ package com.casic.missiles.controller.business; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.board.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessBoardService; @@ -14,11 +16,12 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.List; /** * @Description: 业务看板 - * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的整 + * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的证书 * @Author: wangpeng * @Date: 2023/4/7 16:44 */ @@ -26,7 +29,7 @@ @Slf4j @RestController @RequestMapping("/business/board") -public class BusinessBoardController { +public class BusinessBoardController extends ExportController { @Autowired private IBusinessBoardService boardService; @@ -67,4 +70,35 @@ return ReturnUtil.success(boardService.deptComprehensive(request)); } + @ApiOperation("实时工作统计导出") + @GetMapping("/workStatistics/export") + public void workStatisticsExport() throws IOException { + List list = boardService.workStatistics(); + super.exportExcel(BoardWorkStatisticsResponse.class, list, ExportEnum.WORK_STATISTICS_EXPORT.getSheetName()); + } + + @ApiOperation("部门产值分析导出") + @PostMapping("/deptOutput/export") + public void deptOutputExport(@RequestBody BoardBaseRequest request) throws IOException { + List list = boardService.deptOutput(request); + super.exportExcel(BoardDeptOutputResponse.class, list, ExportEnum.DEPT_OUTPUT_EXPORT.getSheetName()); + } + + @ApiOperation("业务工作量分析导出") + @PostMapping("/workload/export") + public void workloadExport(@RequestBody @Validated(BoardWorkloadValid.class) BoardBaseRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list = boardService.workload(request); + super.exportExcel(BoardWorkloadResponse.class, list, ExportEnum.WORKLOAD_EXPORT.getSheetName()); + } + + @ApiOperation("部门综合分析导出") + @PostMapping("/deptComprehensive/export") + public void deptComprehensiveExport(@RequestBody BoardDeptComprehensiveRequest request) throws IOException { + List list = boardService.deptComprehensive(request); + super.exportExcel(BoardDeptComprehensiveResponse.class, list, ExportEnum.DEPT_COMPREHENSIVE_EXPORT.getSheetName()); + } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 34dfbad..7015965 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -45,7 +45,11 @@ OUTSOURCER_CERTIFICATE_EXPORT("outsourceCertificateData", "outsourceCertificateData", "分包证书"), SETTLEMENT_INFO_EXPORT("settlementInfoData", "settlementInfoData", "业务结算"), EQUIPMENT_REMIND("equipmentRemind", "equipmentRemind", "设备到期提醒"), - AGREEMENT_INFO_EXPORT("agreementInfoData", "agreementInfoData", "合同"); + AGREEMENT_INFO_EXPORT("agreementInfoData", "agreementInfoData", "合同"), + WORK_STATISTICS_EXPORT("workStatisticsData", "workStatisticsData", "实时工作统计"), + DEPT_OUTPUT_EXPORT("deptOutputData", "deptOutputData", "部门产值分析"), + WORKLOAD_EXPORT("workloadData", "workloadData", "业务工作量分析"), + DEPT_COMPREHENSIVE_EXPORT("deptComprehensiveData", "deptComprehensiveData", "部门综合分析"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java index bf5f547..cf26b0d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,19 +16,28 @@ * @Author: wangpeng * @Date: 2023/4/11 19:25 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardBaseResponse { @ApiModelProperty(value = "部门id", dataType = "Long") private Long deptId; + @ExcelProperty(value = "部门", order = 1) @ApiModelProperty(value = "部门名", dataType = "String") private String deptName; @ApiModelProperty(value = "人员id", dataType = "Long") private Long staffId; + @ExcelProperty(value = "人员", order = 2) @ApiModelProperty(value = "人员名字", dataType = "String") private String staffName; + @ExcelProperty(value = "检定样品数量", order = 3) @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") private Integer samples = 0; + @ExcelProperty(value = "出具证书数量", order = 4) @ApiModelProperty(value = "出具证书数量", dataType = "Integer") private Integer certificates = 0; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java index 0f7c282..fed5905 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -10,6 +17,11 @@ * @Author: wangpeng * @Date: 2023/4/12 9:55 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardDeptComprehensiveResponse { @@ -19,22 +31,31 @@ private Long id; @ApiModelProperty(value = "部门id", dataType = "Long") private Long deptId; + @ExcelProperty(value = "部门") @ApiModelProperty(value = "部门名", dataType = "String") private String deptName; + @ExcelProperty(value = "检定样品数量") @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") private Integer samples = 0; + @ExcelProperty(value = "总样品数量") @ApiModelProperty(value = "总样品数量", dataType = "Integer") private Integer samplesTotal = 0; + @ExcelProperty(value = "出具证书数量") @ApiModelProperty(value = "出具证书数量", dataType = "Integer") private Integer certificates = 0; + @ExcelProperty(value = "超期样品总数") @ApiModelProperty(value = "超期样品总数", dataType = "Integer") private Integer expireSamples = 0; + @ExcelProperty(value = "超期率") @ApiModelProperty(value = "超期率", dataType = "String") private String expireRate; + @ExcelProperty(value = "设备检定及时率") @ApiModelProperty(value = "设备检定及时率", dataType = "String") private String deviceTimelyRate; + @ExcelProperty(value = "设备检定合格率") @ApiModelProperty(value = "设备检定合格率", dataType = "String") private String deviceQualifyRate; + @ExcelProperty(value = "设备维修率") @ApiModelProperty(value = "设备维修率", dataType = "String") private String deviceRepairRate; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 7748ced..d5a0230 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -1,8 +1,10 @@ package com.casic.missiles.controller.business; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.board.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessBoardService; @@ -14,11 +16,12 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.List; /** * @Description: 业务看板 - * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的整 + * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的证书 * @Author: wangpeng * @Date: 2023/4/7 16:44 */ @@ -26,7 +29,7 @@ @Slf4j @RestController @RequestMapping("/business/board") -public class BusinessBoardController { +public class BusinessBoardController extends ExportController { @Autowired private IBusinessBoardService boardService; @@ -67,4 +70,35 @@ return ReturnUtil.success(boardService.deptComprehensive(request)); } + @ApiOperation("实时工作统计导出") + @GetMapping("/workStatistics/export") + public void workStatisticsExport() throws IOException { + List list = boardService.workStatistics(); + super.exportExcel(BoardWorkStatisticsResponse.class, list, ExportEnum.WORK_STATISTICS_EXPORT.getSheetName()); + } + + @ApiOperation("部门产值分析导出") + @PostMapping("/deptOutput/export") + public void deptOutputExport(@RequestBody BoardBaseRequest request) throws IOException { + List list = boardService.deptOutput(request); + super.exportExcel(BoardDeptOutputResponse.class, list, ExportEnum.DEPT_OUTPUT_EXPORT.getSheetName()); + } + + @ApiOperation("业务工作量分析导出") + @PostMapping("/workload/export") + public void workloadExport(@RequestBody @Validated(BoardWorkloadValid.class) BoardBaseRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list = boardService.workload(request); + super.exportExcel(BoardWorkloadResponse.class, list, ExportEnum.WORKLOAD_EXPORT.getSheetName()); + } + + @ApiOperation("部门综合分析导出") + @PostMapping("/deptComprehensive/export") + public void deptComprehensiveExport(@RequestBody BoardDeptComprehensiveRequest request) throws IOException { + List list = boardService.deptComprehensive(request); + super.exportExcel(BoardDeptComprehensiveResponse.class, list, ExportEnum.DEPT_COMPREHENSIVE_EXPORT.getSheetName()); + } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 34dfbad..7015965 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -45,7 +45,11 @@ OUTSOURCER_CERTIFICATE_EXPORT("outsourceCertificateData", "outsourceCertificateData", "分包证书"), SETTLEMENT_INFO_EXPORT("settlementInfoData", "settlementInfoData", "业务结算"), EQUIPMENT_REMIND("equipmentRemind", "equipmentRemind", "设备到期提醒"), - AGREEMENT_INFO_EXPORT("agreementInfoData", "agreementInfoData", "合同"); + AGREEMENT_INFO_EXPORT("agreementInfoData", "agreementInfoData", "合同"), + WORK_STATISTICS_EXPORT("workStatisticsData", "workStatisticsData", "实时工作统计"), + DEPT_OUTPUT_EXPORT("deptOutputData", "deptOutputData", "部门产值分析"), + WORKLOAD_EXPORT("workloadData", "workloadData", "业务工作量分析"), + DEPT_COMPREHENSIVE_EXPORT("deptComprehensiveData", "deptComprehensiveData", "部门综合分析"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java index bf5f547..cf26b0d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,19 +16,28 @@ * @Author: wangpeng * @Date: 2023/4/11 19:25 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardBaseResponse { @ApiModelProperty(value = "部门id", dataType = "Long") private Long deptId; + @ExcelProperty(value = "部门", order = 1) @ApiModelProperty(value = "部门名", dataType = "String") private String deptName; @ApiModelProperty(value = "人员id", dataType = "Long") private Long staffId; + @ExcelProperty(value = "人员", order = 2) @ApiModelProperty(value = "人员名字", dataType = "String") private String staffName; + @ExcelProperty(value = "检定样品数量", order = 3) @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") private Integer samples = 0; + @ExcelProperty(value = "出具证书数量", order = 4) @ApiModelProperty(value = "出具证书数量", dataType = "Integer") private Integer certificates = 0; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java index 0f7c282..fed5905 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -10,6 +17,11 @@ * @Author: wangpeng * @Date: 2023/4/12 9:55 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardDeptComprehensiveResponse { @@ -19,22 +31,31 @@ private Long id; @ApiModelProperty(value = "部门id", dataType = "Long") private Long deptId; + @ExcelProperty(value = "部门") @ApiModelProperty(value = "部门名", dataType = "String") private String deptName; + @ExcelProperty(value = "检定样品数量") @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") private Integer samples = 0; + @ExcelProperty(value = "总样品数量") @ApiModelProperty(value = "总样品数量", dataType = "Integer") private Integer samplesTotal = 0; + @ExcelProperty(value = "出具证书数量") @ApiModelProperty(value = "出具证书数量", dataType = "Integer") private Integer certificates = 0; + @ExcelProperty(value = "超期样品总数") @ApiModelProperty(value = "超期样品总数", dataType = "Integer") private Integer expireSamples = 0; + @ExcelProperty(value = "超期率") @ApiModelProperty(value = "超期率", dataType = "String") private String expireRate; + @ExcelProperty(value = "设备检定及时率") @ApiModelProperty(value = "设备检定及时率", dataType = "String") private String deviceTimelyRate; + @ExcelProperty(value = "设备检定合格率") @ApiModelProperty(value = "设备检定合格率", dataType = "String") private String deviceQualifyRate; + @ExcelProperty(value = "设备维修率") @ApiModelProperty(value = "设备维修率", dataType = "String") private String deviceRepairRate; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java index fd89146..a133482 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,9 +16,15 @@ * @Author: wangpeng * @Date: 2023/4/11 15:25 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardDeptOutputResponse extends BoardBaseResponse { + @ExcelProperty(value = "产值统计", order = 10) @ApiModelProperty(value = "产值统计(单位分)", dataType = "String") private String outPut; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 7748ced..d5a0230 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -1,8 +1,10 @@ package com.casic.missiles.controller.business; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.board.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessBoardService; @@ -14,11 +16,12 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.List; /** * @Description: 业务看板 - * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的整 + * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的证书 * @Author: wangpeng * @Date: 2023/4/7 16:44 */ @@ -26,7 +29,7 @@ @Slf4j @RestController @RequestMapping("/business/board") -public class BusinessBoardController { +public class BusinessBoardController extends ExportController { @Autowired private IBusinessBoardService boardService; @@ -67,4 +70,35 @@ return ReturnUtil.success(boardService.deptComprehensive(request)); } + @ApiOperation("实时工作统计导出") + @GetMapping("/workStatistics/export") + public void workStatisticsExport() throws IOException { + List list = boardService.workStatistics(); + super.exportExcel(BoardWorkStatisticsResponse.class, list, ExportEnum.WORK_STATISTICS_EXPORT.getSheetName()); + } + + @ApiOperation("部门产值分析导出") + @PostMapping("/deptOutput/export") + public void deptOutputExport(@RequestBody BoardBaseRequest request) throws IOException { + List list = boardService.deptOutput(request); + super.exportExcel(BoardDeptOutputResponse.class, list, ExportEnum.DEPT_OUTPUT_EXPORT.getSheetName()); + } + + @ApiOperation("业务工作量分析导出") + @PostMapping("/workload/export") + public void workloadExport(@RequestBody @Validated(BoardWorkloadValid.class) BoardBaseRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list = boardService.workload(request); + super.exportExcel(BoardWorkloadResponse.class, list, ExportEnum.WORKLOAD_EXPORT.getSheetName()); + } + + @ApiOperation("部门综合分析导出") + @PostMapping("/deptComprehensive/export") + public void deptComprehensiveExport(@RequestBody BoardDeptComprehensiveRequest request) throws IOException { + List list = boardService.deptComprehensive(request); + super.exportExcel(BoardDeptComprehensiveResponse.class, list, ExportEnum.DEPT_COMPREHENSIVE_EXPORT.getSheetName()); + } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 34dfbad..7015965 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -45,7 +45,11 @@ OUTSOURCER_CERTIFICATE_EXPORT("outsourceCertificateData", "outsourceCertificateData", "分包证书"), SETTLEMENT_INFO_EXPORT("settlementInfoData", "settlementInfoData", "业务结算"), EQUIPMENT_REMIND("equipmentRemind", "equipmentRemind", "设备到期提醒"), - AGREEMENT_INFO_EXPORT("agreementInfoData", "agreementInfoData", "合同"); + AGREEMENT_INFO_EXPORT("agreementInfoData", "agreementInfoData", "合同"), + WORK_STATISTICS_EXPORT("workStatisticsData", "workStatisticsData", "实时工作统计"), + DEPT_OUTPUT_EXPORT("deptOutputData", "deptOutputData", "部门产值分析"), + WORKLOAD_EXPORT("workloadData", "workloadData", "业务工作量分析"), + DEPT_COMPREHENSIVE_EXPORT("deptComprehensiveData", "deptComprehensiveData", "部门综合分析"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java index bf5f547..cf26b0d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,19 +16,28 @@ * @Author: wangpeng * @Date: 2023/4/11 19:25 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardBaseResponse { @ApiModelProperty(value = "部门id", dataType = "Long") private Long deptId; + @ExcelProperty(value = "部门", order = 1) @ApiModelProperty(value = "部门名", dataType = "String") private String deptName; @ApiModelProperty(value = "人员id", dataType = "Long") private Long staffId; + @ExcelProperty(value = "人员", order = 2) @ApiModelProperty(value = "人员名字", dataType = "String") private String staffName; + @ExcelProperty(value = "检定样品数量", order = 3) @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") private Integer samples = 0; + @ExcelProperty(value = "出具证书数量", order = 4) @ApiModelProperty(value = "出具证书数量", dataType = "Integer") private Integer certificates = 0; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java index 0f7c282..fed5905 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -10,6 +17,11 @@ * @Author: wangpeng * @Date: 2023/4/12 9:55 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardDeptComprehensiveResponse { @@ -19,22 +31,31 @@ private Long id; @ApiModelProperty(value = "部门id", dataType = "Long") private Long deptId; + @ExcelProperty(value = "部门") @ApiModelProperty(value = "部门名", dataType = "String") private String deptName; + @ExcelProperty(value = "检定样品数量") @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") private Integer samples = 0; + @ExcelProperty(value = "总样品数量") @ApiModelProperty(value = "总样品数量", dataType = "Integer") private Integer samplesTotal = 0; + @ExcelProperty(value = "出具证书数量") @ApiModelProperty(value = "出具证书数量", dataType = "Integer") private Integer certificates = 0; + @ExcelProperty(value = "超期样品总数") @ApiModelProperty(value = "超期样品总数", dataType = "Integer") private Integer expireSamples = 0; + @ExcelProperty(value = "超期率") @ApiModelProperty(value = "超期率", dataType = "String") private String expireRate; + @ExcelProperty(value = "设备检定及时率") @ApiModelProperty(value = "设备检定及时率", dataType = "String") private String deviceTimelyRate; + @ExcelProperty(value = "设备检定合格率") @ApiModelProperty(value = "设备检定合格率", dataType = "String") private String deviceQualifyRate; + @ExcelProperty(value = "设备维修率") @ApiModelProperty(value = "设备维修率", dataType = "String") private String deviceRepairRate; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java index fd89146..a133482 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,9 +16,15 @@ * @Author: wangpeng * @Date: 2023/4/11 15:25 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardDeptOutputResponse extends BoardBaseResponse { + @ExcelProperty(value = "产值统计", order = 10) @ApiModelProperty(value = "产值统计(单位分)", dataType = "String") private String outPut; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardWorkStatisticsResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardWorkStatisticsResponse.java index 0213ba8..0a0eb5a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardWorkStatisticsResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardWorkStatisticsResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -10,6 +17,11 @@ * @Author: wangpeng * @Date: 2023/4/10 9:06 */ +@ColumnWidth(35) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardWorkStatisticsResponse { @@ -21,30 +33,39 @@ @ApiModelProperty(value = "检测实验室id", dataType = "Long") private Long deptId; //实验室编号 + @ExcelProperty("实验室编号") @ApiModelProperty(value = "实验室编号", dataType = "String") private String organizeNo; //实验室名字 + @ExcelProperty("实验室名字") @ApiModelProperty(value = "实验室名字", dataType = "String") private String organizeName; //当日检测完样品 + @ExcelProperty("当日检测完样品") @ApiModelProperty(value = "当日检测完样品", dataType = "Integer") private Integer samplesCompletedToday; //当日检定员出具证书数 + @ExcelProperty("当日检定员出具证书数") @ApiModelProperty(value = "当日检定员出具证书数", dataType = "Integer") private Integer certificatesToday; //当日到期样品数 + @ExcelProperty("当日到期样品数") @ApiModelProperty(value = "当日到期样品数", dataType = "Integer") private Integer expireSamplesToday; //今年样品数(实验室今年所有状态的样品数) + @ExcelProperty("今年样品数") @ApiModelProperty(value = "今年样品数", dataType = "Integer") private Integer samplesYear; //今年超期样品总数 + @ExcelProperty("今年超期样品总数") @ApiModelProperty(value = "今年超期样品总数", dataType = "Integer") private Integer expireSamplesYear; //今年超期样品总数-检测中 + @ExcelProperty("今年超期样品总数-检测中") @ApiModelProperty(value = "今年超期样品总数-检测中", dataType = "Integer") private Integer inMeasureExpireSamplesYear; //超期率 + @ExcelProperty("超期率") @ApiModelProperty(value = "超期率", dataType = "Integer") private String expireRate; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 7748ced..d5a0230 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -1,8 +1,10 @@ package com.casic.missiles.controller.business; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.board.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessBoardService; @@ -14,11 +16,12 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.List; /** * @Description: 业务看板 - * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的整 + * 注:所有证书统计相关sql都是统计部门/部门出具了非草稿状态的证书 * @Author: wangpeng * @Date: 2023/4/7 16:44 */ @@ -26,7 +29,7 @@ @Slf4j @RestController @RequestMapping("/business/board") -public class BusinessBoardController { +public class BusinessBoardController extends ExportController { @Autowired private IBusinessBoardService boardService; @@ -67,4 +70,35 @@ return ReturnUtil.success(boardService.deptComprehensive(request)); } + @ApiOperation("实时工作统计导出") + @GetMapping("/workStatistics/export") + public void workStatisticsExport() throws IOException { + List list = boardService.workStatistics(); + super.exportExcel(BoardWorkStatisticsResponse.class, list, ExportEnum.WORK_STATISTICS_EXPORT.getSheetName()); + } + + @ApiOperation("部门产值分析导出") + @PostMapping("/deptOutput/export") + public void deptOutputExport(@RequestBody BoardBaseRequest request) throws IOException { + List list = boardService.deptOutput(request); + super.exportExcel(BoardDeptOutputResponse.class, list, ExportEnum.DEPT_OUTPUT_EXPORT.getSheetName()); + } + + @ApiOperation("业务工作量分析导出") + @PostMapping("/workload/export") + public void workloadExport(@RequestBody @Validated(BoardWorkloadValid.class) BoardBaseRequest request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + List list = boardService.workload(request); + super.exportExcel(BoardWorkloadResponse.class, list, ExportEnum.WORKLOAD_EXPORT.getSheetName()); + } + + @ApiOperation("部门综合分析导出") + @PostMapping("/deptComprehensive/export") + public void deptComprehensiveExport(@RequestBody BoardDeptComprehensiveRequest request) throws IOException { + List list = boardService.deptComprehensive(request); + super.exportExcel(BoardDeptComprehensiveResponse.class, list, ExportEnum.DEPT_COMPREHENSIVE_EXPORT.getSheetName()); + } + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 34dfbad..7015965 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -45,7 +45,11 @@ OUTSOURCER_CERTIFICATE_EXPORT("outsourceCertificateData", "outsourceCertificateData", "分包证书"), SETTLEMENT_INFO_EXPORT("settlementInfoData", "settlementInfoData", "业务结算"), EQUIPMENT_REMIND("equipmentRemind", "equipmentRemind", "设备到期提醒"), - AGREEMENT_INFO_EXPORT("agreementInfoData", "agreementInfoData", "合同"); + AGREEMENT_INFO_EXPORT("agreementInfoData", "agreementInfoData", "合同"), + WORK_STATISTICS_EXPORT("workStatisticsData", "workStatisticsData", "实时工作统计"), + DEPT_OUTPUT_EXPORT("deptOutputData", "deptOutputData", "部门产值分析"), + WORKLOAD_EXPORT("workloadData", "workloadData", "业务工作量分析"), + DEPT_COMPREHENSIVE_EXPORT("deptComprehensiveData", "deptComprehensiveData", "部门综合分析"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java index bf5f547..cf26b0d 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardBaseResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,19 +16,28 @@ * @Author: wangpeng * @Date: 2023/4/11 19:25 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardBaseResponse { @ApiModelProperty(value = "部门id", dataType = "Long") private Long deptId; + @ExcelProperty(value = "部门", order = 1) @ApiModelProperty(value = "部门名", dataType = "String") private String deptName; @ApiModelProperty(value = "人员id", dataType = "Long") private Long staffId; + @ExcelProperty(value = "人员", order = 2) @ApiModelProperty(value = "人员名字", dataType = "String") private String staffName; + @ExcelProperty(value = "检定样品数量", order = 3) @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") private Integer samples = 0; + @ExcelProperty(value = "出具证书数量", order = 4) @ApiModelProperty(value = "出具证书数量", dataType = "Integer") private Integer certificates = 0; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java index 0f7c282..fed5905 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptComprehensiveResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -10,6 +17,11 @@ * @Author: wangpeng * @Date: 2023/4/12 9:55 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardDeptComprehensiveResponse { @@ -19,22 +31,31 @@ private Long id; @ApiModelProperty(value = "部门id", dataType = "Long") private Long deptId; + @ExcelProperty(value = "部门") @ApiModelProperty(value = "部门名", dataType = "String") private String deptName; + @ExcelProperty(value = "检定样品数量") @ApiModelProperty(value = "检定样品数量(检定完成的数量)", dataType = "Integer") private Integer samples = 0; + @ExcelProperty(value = "总样品数量") @ApiModelProperty(value = "总样品数量", dataType = "Integer") private Integer samplesTotal = 0; + @ExcelProperty(value = "出具证书数量") @ApiModelProperty(value = "出具证书数量", dataType = "Integer") private Integer certificates = 0; + @ExcelProperty(value = "超期样品总数") @ApiModelProperty(value = "超期样品总数", dataType = "Integer") private Integer expireSamples = 0; + @ExcelProperty(value = "超期率") @ApiModelProperty(value = "超期率", dataType = "String") private String expireRate; + @ExcelProperty(value = "设备检定及时率") @ApiModelProperty(value = "设备检定及时率", dataType = "String") private String deviceTimelyRate; + @ExcelProperty(value = "设备检定合格率") @ApiModelProperty(value = "设备检定合格率", dataType = "String") private String deviceQualifyRate; + @ExcelProperty(value = "设备维修率") @ApiModelProperty(value = "设备维修率", dataType = "String") private String deviceRepairRate; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java index fd89146..a133482 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,9 +16,15 @@ * @Author: wangpeng * @Date: 2023/4/11 15:25 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardDeptOutputResponse extends BoardBaseResponse { + @ExcelProperty(value = "产值统计", order = 10) @ApiModelProperty(value = "产值统计(单位分)", dataType = "String") private String outPut; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardWorkStatisticsResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardWorkStatisticsResponse.java index 0213ba8..0a0eb5a 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardWorkStatisticsResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardWorkStatisticsResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -10,6 +17,11 @@ * @Author: wangpeng * @Date: 2023/4/10 9:06 */ +@ColumnWidth(35) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardWorkStatisticsResponse { @@ -21,30 +33,39 @@ @ApiModelProperty(value = "检测实验室id", dataType = "Long") private Long deptId; //实验室编号 + @ExcelProperty("实验室编号") @ApiModelProperty(value = "实验室编号", dataType = "String") private String organizeNo; //实验室名字 + @ExcelProperty("实验室名字") @ApiModelProperty(value = "实验室名字", dataType = "String") private String organizeName; //当日检测完样品 + @ExcelProperty("当日检测完样品") @ApiModelProperty(value = "当日检测完样品", dataType = "Integer") private Integer samplesCompletedToday; //当日检定员出具证书数 + @ExcelProperty("当日检定员出具证书数") @ApiModelProperty(value = "当日检定员出具证书数", dataType = "Integer") private Integer certificatesToday; //当日到期样品数 + @ExcelProperty("当日到期样品数") @ApiModelProperty(value = "当日到期样品数", dataType = "Integer") private Integer expireSamplesToday; //今年样品数(实验室今年所有状态的样品数) + @ExcelProperty("今年样品数") @ApiModelProperty(value = "今年样品数", dataType = "Integer") private Integer samplesYear; //今年超期样品总数 + @ExcelProperty("今年超期样品总数") @ApiModelProperty(value = "今年超期样品总数", dataType = "Integer") private Integer expireSamplesYear; //今年超期样品总数-检测中 + @ExcelProperty("今年超期样品总数-检测中") @ApiModelProperty(value = "今年超期样品总数-检测中", dataType = "Integer") private Integer inMeasureExpireSamplesYear; //超期率 + @ExcelProperty("超期率") @ApiModelProperty(value = "超期率", dataType = "Integer") private String expireRate; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardWorkloadResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardWorkloadResponse.java index 83928cb..2791a03 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardWorkloadResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardWorkloadResponse.java @@ -1,5 +1,12 @@ package com.casic.missiles.dto.business.board; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,9 +16,15 @@ * @Author: wangpeng * @Date: 2023/4/11 17:09 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated @ApiModel @Data public class BoardWorkloadResponse extends BoardBaseResponse { + @ExcelProperty(value = "较上月工作量分析", order = 10) @ApiModelProperty(value = "较上月工作量分析", dataType = "String") private String compareLastMonth;