提交 3ced4661 authored 作者: Matrix's avatar Matrix

[系统架构] 增加了全局返回值的封装

上级 4f01d03b
package com.tykj.dev.config;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.tykj.dev.misc.base.ResultObj;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
/**
* UnifiedReturnConfig.
*
* @author Matrix <xhyrzldf@gmail.com>
* @since 2020/10/9 at 3:17 下午
*/
@Configuration
@RestControllerAdvice("com.tykj.dev.device")
public class UnifiedReturnConfig implements ResponseBodyAdvice<Object> {
private ObjectMapper objectMapper = new ObjectMapper();
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
return true;
}
@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
Class<? extends HttpMessageConverter<?>> selectedConverterType,
ServerHttpRequest request, ServerHttpResponse response) {
// 如果返回的就是ResultObj 那么直接返回
if (body instanceof ResultObj) {
return body;
}
// 如果返回的是流媒体格式 那么也不做处理
if (selectedContentType.includes(MediaType.APPLICATION_OCTET_STREAM)) {
return body;
}
ResultObj<Object> result = new ResultObj<>(body, "成功 :)");
// 如果返回的是字符串,则要对其做JSON序列化
if (returnType.getGenericParameterType().equals(String.class)) {
try {
response.getHeaders().set("Content-Type", "application/json;charset=utf-8");
return objectMapper.writeValueAsString(result);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
// 其他的类型直接封装返回
return result;
}
}
...@@ -17,12 +17,15 @@ import lombok.extern.slf4j.Slf4j; ...@@ -17,12 +17,15 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import springfox.documentation.service.ApiKey;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
...@@ -61,11 +64,6 @@ public class FinalCheckController { ...@@ -61,11 +64,6 @@ public class FinalCheckController {
response.setContentType("application/octet-stream;charset=UTF-8"); response.setContentType("application/octet-stream;charset=UTF-8");
response.setHeader("Pragma", "no-cache"); response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0); response.setDateHeader("Expires", 0);
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, PATCH, DELETE");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
response.setHeader("Access-Control-Max-Age", "3600");
// 写出数据输出流到页面 // 写出数据输出流到页面
try { try {
OutputStream output = response.getOutputStream(); OutputStream output = response.getOutputStream();
...@@ -80,6 +78,12 @@ public class FinalCheckController { ...@@ -80,6 +78,12 @@ public class FinalCheckController {
} }
// @GetMapping("/test")
// @ApiOperation(value = "测试接口")
public ResponseEntity test() {
return ResponseEntity.ok(4);
}
@GetMapping("/reports") @GetMapping("/reports")
@ApiOperation(value = "查询所有决算报告(不附带详情数据)") @ApiOperation(value = "查询所有决算报告(不附带详情数据)")
public ResponseEntity<ResultObj<Page<FinalReportVo>>> findAllReports( public ResponseEntity<ResultObj<Page<FinalReportVo>>> findAllReports(
...@@ -102,10 +106,9 @@ public class FinalCheckController { ...@@ -102,10 +106,9 @@ public class FinalCheckController {
return ResultUtil.success(finalReportVo); return ResultUtil.success(finalReportVo);
} }
@SneakyThrows
@PostMapping("/excel/{id}") @PostMapping("/excel/{id}")
@ApiOperation(value = "根据id导出对应的excel数据") @ApiOperation(value = "根据id导出对应的excel数据")
public void exportExcel( public ResponseEntity<byte[]> exportExcel(
@PathVariable Integer id, @PathVariable Integer id,
HttpServletRequest request, HttpServletRequest request,
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
...@@ -164,17 +167,13 @@ public class FinalCheckController { ...@@ -164,17 +167,13 @@ public class FinalCheckController {
Workbook book = ExcelExportUtil.exportExcel(params, map); Workbook book = ExcelExportUtil.exportExcel(params, map);
// ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
// File savefile = new File("/Users/matrix/local-doc/excel"); book.write(outByteStream);
// if (!savefile.exists()) {
// boolean result = savefile.mkdirs(); return ResponseEntity.ok()
// System.out.println("目录不存在,进行创建,创建" + (result ? "成功!" : "失败!")); .headers(headers -> headers.setContentDispositionFormData("attachment", "Report.xls"))
// } .contentType(MediaType.APPLICATION_OCTET_STREAM)
// FileOutputStream fos = new FileOutputStream("/Users/matrix/local-doc/excel/templateMapResult.xlsx"); .body(outByteStream.toByteArray());
// book.write(fos);
// fos.close();
downloadExcel(request, response, book, "Report");
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论