package com.chinaztt.mes.quality.controller; import cn.hutool.core.date.DateUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chinaztt.mes.common.wrapper.QueryWrapperUtil; import com.chinaztt.mes.quality.dto.*; import com.chinaztt.mes.quality.entity.Result; import com.chinaztt.mes.quality.service.ResultService; import com.chinaztt.mes.warehouse.entity.Stock; 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.apache.commons.lang3.StringUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.sql.Timestamp; import java.util.Date; import java.util.List; import java.util.Map; /** * 检测结果表 * * @author cxf * @date 2021-04-21 13:21:49 */ @RestController @AllArgsConstructor @RequestMapping("/result") @Api(value = "result", tags = "检测结果表管理") public class ResultController { private final ResultService resultService; /** * 分页查询 * * @param page 分页对象 * @param resultDTO 检测结果表 * @return */ @ApiOperation(value = "分页查询", notes = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('quality_result_view')") public R getResultPage(Page page, ResultDTO resultDTO) { return R.ok(resultService.getResultPage(page, QueryWrapperUtil.gen(resultDTO))); } /** * 通过id查询检测结果表 * * @param id id * @return R */ @ApiOperation(value = "通过id查询", notes = "通过id查询") @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('quality_result_view')") public R getById(@PathVariable("id") Long id) { return R.ok(resultService.getById(id)); } /** * 新增检测结果表 * * @param result 检测结果表 * @return R */ @ApiOperation(value = "新增检测结果表", notes = "新增检测结果表") @SysLog("新增检测结果表") @PostMapping @PreAuthorize("@pms.hasPermission('quality_result_add')") public R save(@RequestBody Result result) { return R.ok(resultService.save(result)); } /** * 修改检测结果表 * * @param result 检测结果表 * @return R */ @ApiOperation(value = "修改检测结果表", notes = "修改检测结果表") @SysLog("修改检测结果表") @PutMapping @PreAuthorize("@pms.hasPermission('quality_result_edit')") public R updateById(@RequestBody Result result) { return R.ok(resultService.updateById(result)); } /** * 通过id删除检测结果表 * * @param id id * @return R */ @ApiOperation(value = "通过id删除检测结果表", notes = "通过id删除检测结果表") @SysLog("通过id删除检测结果表") @DeleteMapping("/{id}") @PreAuthorize("@pms.hasPermission('quality_result_del')") public R removeById(@PathVariable Long id) { return R.ok(resultService.removeById(id)); } /** * 批量修改 * * @param resultList 检测结果表 * @return R */ @ApiOperation(value = "批量修改", notes = "批量修改") @SysLog("批量修改检测结果表") @PostMapping("/updateIsUsed") public R updateIsUsed(@RequestBody List resultList) { return R.ok(resultService.updateBatchById(resultList)); } /** * 根据系统号批量修改 * * @param resultList 检测结果表 * @return R */ @ApiOperation(value = "根据系统号批量修改", notes = "根据系统号批量修改") @SysLog("批量修改检测结果表") @PostMapping("/batchUpdateResultBySystemNo") @PreAuthorize("@pms.hasPermission('quality_result_batchUpdateResultBySystemNo')") public R batchUpdateResultBySystemNo(@RequestBody List resultList) { return R.ok(resultService.batchUpdateResultById(resultList)); } /** * 根据入库单库存生成对应检测结果 * * @param stockList 入库单库存 * @return R */ @ApiOperation(value = "根据入库单库存生成对应检测结果", notes = "根据入库单库存生成对应检测结果") @PostMapping("/addResultByReceiving") public R addResultByReceiving(@RequestBody List stockList) { return R.ok(resultService.addResultByReceiving(stockList)); } /** * 根据id 显示检测项 * * @param id * @return */ @ApiOperation(value = "根据结果id显示检测项") @GetMapping("/getSampleItems") public R getSampleItems(Long id) { return R.ok(resultService.getSampleItems(id)); } /** * 检测结果2 * * @param page * @param queryDTO * @return */ @ApiOperation(value = "检测结果2") @GetMapping(value = "/getResultPageTwo") public R getResultPageTwo(Page page, ResultPageTwoQueryDTO queryDTO) { return R.ok(resultService.getResultPageTwo(page, queryDTO)); } /** * 检测结果V2 */ @ApiOperation(value = "检测结果V2") @GetMapping(value = "/getResultPageV2") public R getResultPageV2(Page page, ResultPageV2QueryDTO queryDTO) { return R.ok(resultService.getResultPageV2(page, queryDTO)); } /** * 检测结果V2导出 */ @ApiOperation(value = "检测结果V2导出") @GetMapping(value = "/exportResultV2") public void exportResultV2(HttpServletResponse response, ResultPageV2QueryDTO queryDTO) 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 = resultService.getResultListV2(queryDTO); EasyExcel.write(response.getOutputStream()).head(result.get("head")).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) .sheet().doWrite(result.get("data")); } /** * 检测汇报项的结果导出 * * @param reportSampleDTO 检测结果 * @return */ @GetMapping("download") public void download(HttpServletResponse response, ResultPageTwoQueryDTO reportSampleDTO) 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 = resultService.getTestReportResult(reportSampleDTO); EasyExcel.write(response.getOutputStream()).head(result.get("head")).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) .sheet(reportSampleDTO.getPartNo()).doWrite(result.get("data")); } @ApiOperation(value = "成品稽查明细表") @GetMapping("auditingDetailReport") @Inner(false) public String auditingDetailReport(HttpServletRequest request) { String beginTime = request.getParameter("createtime_begin"); String endTime = request.getParameter("createtime_end"); if (StringUtils.isBlank(beginTime)) { beginTime = DateUtil.formatDate(new Date()); } if (StringUtils.isBlank(endTime)) { endTime = DateUtil.formatDate(new Date()); } Timestamp begin = DateUtil.beginOfDay(DateUtil.parseDate(beginTime)).toTimestamp(); Timestamp end = DateUtil.endOfDay(DateUtil.parseDate(endTime)).toTimestamp(); List list = resultService.getAuditingDetailReport(begin, end); JSONObject jo = new JSONObject(); jo.put("data", list); return JSONObject.toJSONString(jo, SerializerFeature.WriteNullStringAsEmpty); } @ApiOperation(value = "成品稽查总表") @GetMapping("auditingReport") @Inner(false) public String auditingReport(HttpServletRequest request) { String beginTime = request.getParameter("createtime_begin"); String endTime = request.getParameter("createtime_end"); if (StringUtils.isBlank(beginTime)) { beginTime = DateUtil.formatDate(new Date()); } if (StringUtils.isBlank(endTime)) { endTime = DateUtil.formatDate(new Date()); } Timestamp begin = DateUtil.beginOfDay(DateUtil.parseDate(beginTime)).toTimestamp(); Timestamp end = DateUtil.endOfDay(DateUtil.parseDate(endTime)).toTimestamp(); List list = resultService.getAuditingReport(begin, end); JSONObject jo = new JSONObject(); jo.put("data", list); return JSONObject.toJSONString(jo, SerializerFeature.WriteNullStringAsEmpty); } }