diff --git a/src/main/java/com/gzzn/omms/adminapi/controller/fltrs/FltrController.java b/src/main/java/com/gzzn/omms/adminapi/controller/fltrs/FltrController.java index 5e226dc..07d4e9f 100644 --- a/src/main/java/com/gzzn/omms/adminapi/controller/fltrs/FltrController.java +++ b/src/main/java/com/gzzn/omms/adminapi/controller/fltrs/FltrController.java @@ -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> rows = new ArrayList(); - for(ExcelRowDto rowData : lsData.getData() ) + for(Map rowData : lsData.getData() ) { List 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); diff --git a/src/main/java/com/gzzn/omms/adminapi/dto/fltrs/ExportToExcelDto.java b/src/main/java/com/gzzn/omms/adminapi/dto/fltrs/ExportToExcelDto.java index b8d0850..c742213 100644 --- a/src/main/java/com/gzzn/omms/adminapi/dto/fltrs/ExportToExcelDto.java +++ b/src/main/java/com/gzzn/omms/adminapi/dto/fltrs/ExportToExcelDto.java @@ -1,10 +1,11 @@ package com.gzzn.omms.adminapi.dto.fltrs; import java.util.List; +import java.util.Map; public class ExportToExcelDto { private List columns;//要导出的列 - private List data;//要导出的数据 + private List data;//要导出的数据 public List getColumns() { @@ -13,10 +14,10 @@ public class ExportToExcelDto { public void setColumns(List columns) { this.columns = columns; } - public List getData() { + public List getData() { return data; } - public void setData(List data) { + public void setData(List data) { this.data = data; } } diff --git a/src/test/java/com/gzzn/omms/adminapi/controller/fltrs/FltrControllerTest.java b/src/test/java/com/gzzn/omms/adminapi/controller/fltrs/FltrControllerTest.java new file mode 100644 index 0000000..a6fcfe4 --- /dev/null +++ b/src/test/java/com/gzzn/omms/adminapi/controller/fltrs/FltrControllerTest.java @@ -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")); + } +}