package com.qianwen.core.excel.extend.aop;
|
|
import java.util.List;
|
import javax.servlet.http.HttpServletResponse;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import com.qianwen.core.excel.extend.annotation.ResponseExcel;
|
import com.qianwen.core.excel.extend.handler.SheetWriteHandler;
|
import org.springframework.core.MethodParameter;
|
import org.springframework.util.Assert;
|
import org.springframework.web.context.request.NativeWebRequest;
|
import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
|
import org.springframework.web.method.support.ModelAndViewContainer;
|
|
/* loaded from: blade-starter-excel-9.3.0.0-SNAPSHOT.jar:org/springblade/core/excel/extend/aop/ResponseExcelReturnValueHandler.class */
|
public class ResponseExcelReturnValueHandler implements HandlerMethodReturnValueHandler {
|
private static final Logger log = LoggerFactory.getLogger(ResponseExcelReturnValueHandler.class);
|
private final List<SheetWriteHandler> sheetWriteHandlerList;
|
|
public ResponseExcelReturnValueHandler(final List<SheetWriteHandler> sheetWriteHandlerList) {
|
this.sheetWriteHandlerList = sheetWriteHandlerList;
|
}
|
|
public boolean supportsReturnType(MethodParameter parameter) {
|
return parameter.getMethodAnnotation(ResponseExcel.class) != null;
|
}
|
|
public void handleReturnValue(Object o, MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest nativeWebRequest) throws Exception {
|
HttpServletResponse response = (HttpServletResponse) nativeWebRequest.getNativeResponse(HttpServletResponse.class);
|
Assert.state(response != null, "No HttpServletResponse");
|
ResponseExcel responseExcel = (ResponseExcel) parameter.getMethodAnnotation(ResponseExcel.class);
|
Assert.state(responseExcel != null, "No @ResponseExcel");
|
mavContainer.setRequestHandled(true);
|
this.sheetWriteHandlerList.stream().filter(handler -> {
|
return handler.support(o);
|
}).findFirst().ifPresent(handler2 -> {
|
handler2.export(o, response, responseExcel);
|
});
|
}
|
}
|