/* * Copyright (c) 2018-2025, ztt All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the pig4cloud.com developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: ztt */ package com.chinaztt.mes.quality.controller; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chinaztt.mes.common.wrapper.QueryWrapperUtil; import com.chinaztt.mes.quality.dto.ReportDTO; import com.chinaztt.mes.quality.entity.TestReport; import com.chinaztt.mes.quality.service.TestReportService; import com.chinaztt.ztt.common.core.util.R; import com.chinaztt.ztt.common.log.annotation.SysLog; import com.chinaztt.ztt.common.security.annotation.Inner; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.List; import java.util.Map; /** * 检测汇报 * * @author liuth * @date 2020-10-21 09:04:30 */ @RestController @AllArgsConstructor @RequestMapping("/report") @Api(value = "report", tags = "检测汇报管理") public class TestReportController { private final TestReportService reportService; /** * 分页查询 * * @param page 分页对象 * @param report 检测汇报 * @return */ @ApiOperation(value = "分页查询", notes = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('quality_report_view')") public R getReportPage(Page page, TestReport report) { return R.ok(reportService.getReportPage(page, QueryWrapperUtil.gen(report))); } /** * 不合格处理分页查询 * * @param page 不合格处理分页查询 * @param report 检测汇报 * @return */ @ApiOperation(value = "不合格处理分页查询", notes = "不合格处理分页查询") @GetMapping("/page/report") public R getTestReportProcessingPage(Page page, TestReport report) { return R.ok(reportService.getTestReportProcessingPage(page, QueryWrapperUtil.gen(report))); } /** * 分页查询 * * @param page 分页获取检测模板以及对应检测项信息 * @param reportId * @return */ @ApiOperation(value = "分页查询", notes = "分页查询") @GetMapping("/getReportAndItemsPage/{reportId}") @PreAuthorize("@pms.hasPermission('quality_report_view')") public R getReportAndItemsPage(Page page, @PathVariable("reportId") Long reportId) { String templateName = ("测试模板"); return R.ok(reportService.getReportAndItemsPage(page, reportId, templateName)); } /** * 通过id查询检测汇报 * * @param id id * @return R */ @ApiOperation(value = "通过id查询", notes = "通过id查询") @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('quality_report_view')") public R getById(@PathVariable("id") Long id) { return R.ok(reportService.getFullById(id)); } /** * 通过id查询检测汇报和不合格处理 * * @param id id * @return R */ @ApiOperation(value = "通过id查询检测汇报和不合格处理", notes = "通过id查询检测汇报和不合格处理") @GetMapping("/report/{id}") @PreAuthorize("@pms.hasPermission('quality_report_view')") public R getReportById(@PathVariable("id") Long id) { return R.ok(reportService.getReportById(id)); } /** * 新增检测汇报 * * @param reportDTO 检测汇报 * @return R */ @ApiOperation(value = "新增检测汇报", notes = "新增检测汇报") @SysLog("新增检测汇报") @PostMapping @PreAuthorize("@pms.hasPermission('quality_report_add')") public R save(@RequestBody ReportDTO reportDTO) { return R.ok(reportService.fullSave(reportDTO)); } /** * 修改检测汇报 * * @param reportDTO 检测汇报 * @return R */ @ApiOperation(value = "修改检测汇报", notes = "修改检测汇报") @SysLog("修改检测汇报") @PutMapping @PreAuthorize("@pms.hasPermission('quality_report_edit')") public R updateById(@RequestBody ReportDTO reportDTO) { return R.ok(reportService.fullUpdate(reportDTO)); } /** * 不合格处理的新增与修改 * * @param reportDTO 检测汇报 * @return R */ @ApiOperation(value = "不合格处理的新增与修改", notes = "不合格处理的新增与修改") @SysLog("不合格处理的新增与修改") @PutMapping("/report") public R updateTestReportById(@RequestBody ReportDTO reportDTO) { return R.ok(reportService.fullReportUpdate(reportDTO)); } /** * 通过id删除检测汇报 * * @param id id * @return R */ @ApiOperation(value = "通过id删除检测汇报", notes = "通过id删除检测汇报") @SysLog("通过id删除检测汇报") @DeleteMapping("/{id}") @PreAuthorize("@pms.hasPermission('quality_report_del')") public R removeById(@PathVariable Long id) { return R.ok(reportService.fullDelete(id)); } /** * 检测结果 * * @param page 检测结果 * @param report 检测结果 * @return */ @ApiOperation(value = "检测结果", notes = "检测结果") @GetMapping("/test/page") public R getTestResultPage(Page page, TestReport report) { return R.ok(reportService.getTestResultPage(page, QueryWrapperUtil.gen(report))); } /** * excel导出的检测结果 * * @param report excel导出的检测结果 * @return */ @ApiOperation(value = "excel导出的检测结果", notes = "excel导出的检测结果") @GetMapping("/test/page/report") public R getTestReportResult(TestReport report) { return R.ok(reportService.getTestReportResult(report)); } /** * 检测结果项的结果查询 * * @param report 检测结果 * @return */ @ApiOperation(value = "检测结果", notes = "检测结果") @PostMapping("/test") public R getTestResult(@RequestBody TestReport report) { return R.ok(reportService.getTestResult(report)); } @Inner(false) @GetMapping("download") public void download(HttpServletResponse response, TestReport report) throws IOException { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("UTF-8"); // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 String fileName = URLEncoder.encode("检测结果", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); Map>> result = reportService.getTestReportResult(report); EasyExcel.write(response.getOutputStream()).head(result.get("head")).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) .sheet(report.getPartNo()).doWrite(result.get("data")); } }