修复导出航班数据成excel为根据前端提供的动态key字段进行导出。后端不限定导出字段和内容。
This commit is contained in:
@@ -3,6 +3,7 @@ package com.gzzn.omms.adminapi.controller.fltrs;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
@@ -29,7 +30,7 @@ import io.swagger.annotations.ApiOperation;
|
||||
@RestController
|
||||
public class FltrController {
|
||||
|
||||
@ApiOperation(value="导出航班动态到excel",tags="航班动态")
|
||||
@ApiOperation(value="导出航班动态到excel。正常返回excel文件内容。错误返回json错误描述",tags="航班动态")
|
||||
@PostMapping("/fltrs/toExcel")
|
||||
public void exportToExcel(@RequestBody ExportToExcelDto lsData,
|
||||
HttpServletResponse response) {
|
||||
@@ -48,13 +49,12 @@ public class FltrController {
|
||||
|
||||
//
|
||||
List<List<Object>> rows = new ArrayList();
|
||||
for(ExcelRowDto rowData : lsData.getData() )
|
||||
for(Map rowData : lsData.getData() )
|
||||
{
|
||||
List<Object> row = new ArrayList();
|
||||
for(ExcelHeaderDto headerData : lsData.getColumns() )
|
||||
{
|
||||
Method method = ReflectionUtils.findMethod(rowData.getClass(), "get" + headerData.getKey());
|
||||
String cellData = (String) ReflectionUtils.invokeMethod(method, rowData);
|
||||
String cellData = String.valueOf(rowData.get(headerData.getKey()));
|
||||
row.add(cellData);
|
||||
}
|
||||
rows.add(row);
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
package com.gzzn.omms.adminapi.dto.fltrs;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class ExportToExcelDto {
|
||||
private List<ExcelHeaderDto> columns;//要导出的列
|
||||
private List<ExcelRowDto> data;//要导出的数据
|
||||
private List<Map> data;//要导出的数据
|
||||
|
||||
|
||||
public List<ExcelHeaderDto> getColumns() {
|
||||
@@ -13,10 +14,10 @@ public class ExportToExcelDto {
|
||||
public void setColumns(List<ExcelHeaderDto> columns) {
|
||||
this.columns = columns;
|
||||
}
|
||||
public List<ExcelRowDto> getData() {
|
||||
public List<Map> getData() {
|
||||
return data;
|
||||
}
|
||||
public void setData(List<ExcelRowDto> data) {
|
||||
public void setData(List<Map> data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,255 @@
|
||||
package com.gzzn.omms.adminapi.controller.fltrs;
|
||||
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
@AutoConfigureMockMvc
|
||||
public class FltrControllerTest {
|
||||
|
||||
@Autowired
|
||||
private MockMvc mvc;
|
||||
|
||||
/**
|
||||
* 测试航班动态导出excel
|
||||
* @throws Exception
|
||||
*/
|
||||
@Test
|
||||
public void testFltrToExcel() throws Exception
|
||||
{
|
||||
String jsonContent = "{\r\n" +
|
||||
" \"columns\": [\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"FLNO\",\r\n" +
|
||||
" \"name\": \"航班号\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"FLDT\",\r\n" +
|
||||
" \"name\": \"航班日期\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"ERUTCODE\",\r\n" +
|
||||
" \"name\": \"航线(三字码)\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"ERUT\",\r\n" +
|
||||
" \"name\": \"航线\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"FLIN\",\r\n" +
|
||||
" \"name\": \"航线类别\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"ALCD\",\r\n" +
|
||||
" \"name\": \"航空公司\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"RENO\",\r\n" +
|
||||
" \"name\": \"飞机号\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"SODT\",\r\n" +
|
||||
" \"name\": \"计划到达/出发\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"ESTT\",\r\n" +
|
||||
" \"name\": \"预计到达/出发 \"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"ACTT\",\r\n" +
|
||||
" \"name\": \"实际到达/出发\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"PSST\",\r\n" +
|
||||
" \"name\": \"计划机位\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"PADT\",\r\n" +
|
||||
" \"name\": \"前站起飞时间\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"STND\",\r\n" +
|
||||
" \"name\": \"当前机位\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"ACFT\",\r\n" +
|
||||
" \"name\": \"机型\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"GCTM\",\r\n" +
|
||||
" \"name\": \"登机结束\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"BOTM\",\r\n" +
|
||||
" \"name\": \"登机开始\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"ABDG\",\r\n" +
|
||||
" \"name\": \"登机桥\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"AOTM_D\",\r\n" +
|
||||
" \"name\": \"撤桥时间\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"AOTM_A\",\r\n" +
|
||||
" \"name\": \"靠桥时间\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"BELT\",\r\n" +
|
||||
" \"name\": \"转盘号\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"CHKC\",\r\n" +
|
||||
" \"name\": \"值机柜台\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"CCTM\",\r\n" +
|
||||
" \"name\": \"值机结束\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"COTM\",\r\n" +
|
||||
" \"name\": \"值机开始\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"CHTM_OFF\",\r\n" +
|
||||
" \"name\": \"下轮挡\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"CHTM_ON\",\r\n" +
|
||||
" \"name\": \"上轮挡\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"LACL\",\r\n" +
|
||||
" \"name\": \"最后通知时间\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"CHUT\",\r\n" +
|
||||
" \"name\": \"行李传送带\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"MVIN\",\r\n" +
|
||||
" \"name\": \"到达/出发\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"FTSS\",\r\n" +
|
||||
" \"name\": \"运营状态\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"TRML\",\r\n" +
|
||||
" \"name\": \"航站楼\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"FLTY\",\r\n" +
|
||||
" \"name\": \"航班类别\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"GTDT\",\r\n" +
|
||||
" \"name\": \"登机门号 \"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"ARSF\",\r\n" +
|
||||
" \"name\": \"到港共享航班\"\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"key\": \"DESF\",\r\n" +
|
||||
" \"name\": \"离港共享航班\"\r\n" +
|
||||
" }\r\n" +
|
||||
" ],\r\n" +
|
||||
" \"data\": [\r\n" +
|
||||
" {\r\n" +
|
||||
" \"FLNO\": \"TV9802\",\r\n" +
|
||||
" \"ACFT\": \"320\",\r\n" +
|
||||
" \"GCTM\": \"\",\r\n" +
|
||||
" \"BOTM\": \"\",\r\n" +
|
||||
" \"ABDG\": \"\",\r\n" +
|
||||
" \"AOTM_D\": \"\",\r\n" +
|
||||
" \"AOTM_A\": \"\",\r\n" +
|
||||
" \"BELT\": \"\",\r\n" +
|
||||
" \"CHKC\": \"\",\r\n" +
|
||||
" \"CCTM\": \"\",\r\n" +
|
||||
" \"COTM\": \"\",\r\n" +
|
||||
" \"CHTM_OFF\": \"\",\r\n" +
|
||||
" \"CHTM_ON\": \"\",\r\n" +
|
||||
" \"LACL\": \"\",\r\n" +
|
||||
" \"CHUT\": \"\",\r\n" +
|
||||
" \"RENO\": \"B8418\",\r\n" +
|
||||
" \"ALCD\": \"西藏航空\",\r\n" +
|
||||
" \"ACTT\": \"\",\r\n" +
|
||||
" \"PSST\": \"\",\r\n" +
|
||||
" \"ESTT\": \"\",\r\n" +
|
||||
" \"MVIN\": \"到达\",\r\n" +
|
||||
" \"ERUT\": \"固原 - 蓉\",\r\n" +
|
||||
" \"ERUTCODE\": \"GYU - CTU\",\r\n" +
|
||||
" \"FTSS\": \"初始状态\",\r\n" +
|
||||
" \"FLIN\": \"国内\",\r\n" +
|
||||
" \"SODT\": \"02:20\",\r\n" +
|
||||
" \"TRML\": \"T2\",\r\n" +
|
||||
" \"FLTY\": \"调机\",\r\n" +
|
||||
" \"GTDT\": \"\",\r\n" +
|
||||
" \"PADT\": \"(00:00)\",\r\n" +
|
||||
" \"FLDT\": \"2019-05-10\",\r\n" +
|
||||
" \"ARSF\": \"\",\r\n" +
|
||||
" \"DESF\": \"\",\r\n" +
|
||||
" \"ERUTCHN\": \"固原 - 成都双流机场(蓉)\",\r\n" +
|
||||
" \"orderBy\": 1557426000000\r\n" +
|
||||
" },\r\n" +
|
||||
" {\r\n" +
|
||||
" \"FLNO\": \"YG9061 / YG9028\",\r\n" +
|
||||
" \"ACFT\": \"733\",\r\n" +
|
||||
" \"GCTM\": \"\",\r\n" +
|
||||
" \"BOTM\": \"\",\r\n" +
|
||||
" \"ABDG\": \"\",\r\n" +
|
||||
" \"AOTM_D\": \"\",\r\n" +
|
||||
" \"AOTM_A\": \"\",\r\n" +
|
||||
" \"BELT\": \"\",\r\n" +
|
||||
" \"CHKC\": \"\",\r\n" +
|
||||
" \"CCTM\": \"\",\r\n" +
|
||||
" \"COTM\": \"\",\r\n" +
|
||||
" \"CHTM_OFF\": \"\",\r\n" +
|
||||
" \"CHTM_ON\": \"\",\r\n" +
|
||||
" \"LACL\": \"\",\r\n" +
|
||||
" \"CHUT\": \"\",\r\n" +
|
||||
" \"RENO\": \"B2898\",\r\n" +
|
||||
" \"ALCD\": \"圆通航空货运有限公司\",\r\n" +
|
||||
" \"ACTT\": \"\",\r\n" +
|
||||
" \"PSST\": \"\",\r\n" +
|
||||
" \"ESTT\": \"\",\r\n" +
|
||||
" \"MVIN\": \"到达 / 出发\",\r\n" +
|
||||
" \"ERUT\": \"杭 - 蓉 - 陕\",\r\n" +
|
||||
" \"ERUTCODE\": \"HGH - CTU - XIY\",\r\n" +
|
||||
" \"FTSS\": \"正常\",\r\n" +
|
||||
" \"FLIN\": \"国内\",\r\n" +
|
||||
" \"SODT\": \"04:45 / 05:35\",\r\n" +
|
||||
" \"TRML\": \"T2\",\r\n" +
|
||||
" \"FLTY\": \"货班\",\r\n" +
|
||||
" \"GTDT\": \"\",\r\n" +
|
||||
" \"PADT\": \"(01:30)\",\r\n" +
|
||||
" \"STND\": \"\",\r\n" +
|
||||
" \"FLDT\": \"2019-05-10\",\r\n" +
|
||||
" \"ARSF\": \"\",\r\n" +
|
||||
" \"DESF\": \"\",\r\n" +
|
||||
" \"ERUTCHN\": \"杭州萧山 - 成都双流机场(蓉) - 西安咸阳\",\r\n" +
|
||||
" \"orderBy\": 1557434700000\r\n" +
|
||||
" }]\r\n" +
|
||||
"}";
|
||||
|
||||
mvc.
|
||||
perform(post("/fltrs/toExcel").content(jsonContent).contentType(MediaType.APPLICATION_JSON_UTF8))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(content().contentType("application/vnd.ms-excel"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user