/*
|
* 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<String,List<List<String>>> result = reportService.getTestReportResult(report);
|
EasyExcel.write(response.getOutputStream()).head(result.get("head")).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
|
.sheet(report.getPartNo()).doWrite(result.get("data"));
|
}
|
|
}
|