作者 shenhailong

航班日期统计查询导出excel

@@ -34,7 +34,7 @@ @@ -34,7 +34,7 @@
34 <cxf.version>2.7.5</cxf.version> 34 <cxf.version>2.7.5</cxf.version>
35 <patchca.version>0.5.0</patchca.version> 35 <patchca.version>0.5.0</patchca.version>
36 <jxl.version>2.6.12</jxl.version> 36 <jxl.version>2.6.12</jxl.version>
37 - <poi.version>3.14</poi.version> 37 + <poi.version>3.6</poi.version>
38 <velocity.version>1.7</velocity.version> 38 <velocity.version>1.7</velocity.version>
39 39
40 <!-- Plugin的属性定义 --> 40 <!-- Plugin的属性定义 -->
@@ -368,7 +368,7 @@ @@ -368,7 +368,7 @@
368 <dependency> 368 <dependency>
369 <groupId>org.apache.poi</groupId> 369 <groupId>org.apache.poi</groupId>
370 <artifactId>poi-ooxml</artifactId> 370 <artifactId>poi-ooxml</artifactId>
371 - <version>3.14</version> 371 + <version>3.17</version>
372 </dependency> 372 </dependency>
373 373
374 <dependency> 374 <dependency>
  1 +package com.agent.controller.system;
  2 +
  3 +import com.agent.service.system.FilghtDateService;
  4 +import com.agent.util.ExcelExportUtil;
  5 +import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.web.bind.annotation.RequestMapping;
  8 +import org.springframework.web.bind.annotation.ResponseBody;
  9 +import org.springframework.web.bind.annotation.RestController;
  10 +
  11 +import javax.servlet.http.HttpServletRequest;
  12 +import javax.servlet.http.HttpServletResponse;
  13 +import java.io.OutputStream;
  14 +import java.io.UnsupportedEncodingException;
  15 +import java.util.List;
  16 +import java.util.Map;
  17 +
  18 +@RequestMapping(value = "/filghtdate")
  19 +@RestController
  20 +public class FilghtDateController{
  21 +
  22 + @Autowired
  23 + private FilghtDateService filghtDateService;
  24 +
  25 + @RequestMapping(value = "/list")
  26 + public String filghtList(){
  27 + return "system/user/filghtdateconut";
  28 + }
  29 +
  30 + /**
  31 + * 航班日期统计 导出excel
  32 + * @param filghtdate1
  33 + * @param filghtdate2
  34 + * @return
  35 + */
  36 + @RequestMapping(value = "/filghtCount")
  37 + @ResponseBody
  38 + public void filghtcount(HttpServletRequest request, HttpServletResponse response, String filghtdate1, String filghtdate2) {
  39 +
  40 + // 获取数据
  41 + List<Map<String, Object>> filghtcount = filghtDateService.filghtcount(filghtdate1, filghtdate2);
  42 +
  43 + //excel标题
  44 + String[] title = {"运单号", "航空托运人名称", "航空销售代理人名称", "航协编号", "航空公司运输证明", "运输条件鉴定书","承运人",
  45 + "航班号", "航班日期","航班起始站","航班目的站","运单件数","运单重量","操作时间","关区","预配品名","收货人公司",
  46 + "收货人地址","收货人城市","收货人国家","收货人电话","收货人名称","发货人名称","发货人地址","发货人城市","发货人国家",
  47 + "发货人电话","发货人名称","海关回执状态","海关回执信息","发货人编码","收货人编码","货物品名","二级类名称","一级类名称",
  48 + "代理人三字码","代理人全称","代理人类别","代理联系人","代理联系人电话"};
  49 +
  50 + //excel文件名
  51 + String fileName = "测试" + System.currentTimeMillis() + ".xls";
  52 + //sheet名
  53 + String sheetName = "测试统计";
  54 +
  55 + String[][] content = new String[0][];
  56 + /**
  57 + * 可能空指针异常
  58 + */
  59 + for (int i = 0; i < filghtcount.size(); i++) {
  60 + content = new String[title.length][];
  61 + Map<String, Object> map = filghtcount.get(i);
  62 +
  63 + content[i][0] = map.get("SD_WAYBILL").toString();
  64 + content[i][1] = map.get("SD_CARGO_SHIPPER_NAME").toString();
  65 + content[i][2] = map.get("SD_CARGO_AGENT_NAME").toString();
  66 + content[i][3] = map.get("SD_IATA_NUMBER").toString();
  67 + content[i][4] = map.get("SD_TRANSPORT_CERTIFICATE").toString();
  68 + content[i][5] = map.get("SD_TRANSPORTATION_PROVE").toString();
  69 + content[i][6] = map.get("CARRIER").toString();
  70 + content[i][7] = map.get("FLIGHTNO").toString();
  71 + content[i][8] = map.get("FLIGHTDATE").toString();
  72 + content[i][9] = map.get("ORIGINATINGSTATION").toString();
  73 + content[i][10] = map.get("DESTINATIONSTATION").toString();
  74 + content[i][11] = map.get("TOTALPIECE").toString();
  75 + content[i][12] = map.get("TOTALWEIGHT").toString();
  76 + content[i][13] = map.get("STOWAGEDATE").toString();
  77 + content[i][14] = map.get("CUSTOMSCODE").toString();
  78 + content[i][15] = map.get("SH_COMPANY").toString();
  79 + content[i][16] = map.get("SH_ADDRESS").toString();
  80 + content[i][17] = map.get("SH_CITY").toString();
  81 + content[i][18] = map.get("SH_COUNTRY").toString();
  82 + content[i][19] = map.get("SH_TELEPHONE").toString();
  83 + content[i][20] = map.get("SH_NAME").toString();
  84 + content[i][21] = map.get("CO_COMPANY").toString();
  85 + content[i][22] = map.get("CO_ADDRESS").toString();
  86 + content[i][23] = map.get("CO_CITY").toString();
  87 + content[i][24] = map.get("CO_COUNTRY").toString();
  88 + content[i][25] = map.get("CO_TELEPHONE").toString();
  89 + content[i][26] = map.get("CO_NAME").toString();
  90 + content[i][27] = map.get("RESPONSE_CODE").toString();
  91 + content[i][28] = map.get("RESPONSE_TEXT").toString();
  92 + content[i][29] = map.get("SHPCUSID").toString();
  93 + content[i][30] = map.get("CNECUSID").toString();
  94 + content[i][31] = map.get("SD_CARGO_NAME").toString();
  95 + content[i][32] = map.get("TWO_TYPE_NAME").toString();
  96 + content[i][33] = map.get("TYPE_NAME").toString();
  97 + content[i][34] = map.get("FOR_SHORT").toString();
  98 + content[i][35] = map.get("FULL_NAME").toString();
  99 + content[i][36] = map.get("THE_SHIPPER_TYPE").toString();
  100 + content[i][37] = map.get("CONTACTS").toString();
  101 + content[i][38] = map.get("PHONE").toString();
  102 +
  103 + }
  104 + //创建HSSFWorkbook
  105 +
  106 + HSSFWorkbook wb = ExcelExportUtil.getHSSFWorkbook(sheetName, title, content, null);
  107 + //响应到客户端
  108 + try {
  109 + this.setResponseHeader(response, fileName);
  110 + OutputStream os = response.getOutputStream();
  111 + wb.write(os);
  112 + os.flush();
  113 + os.close();
  114 + }catch (Exception e){
  115 + e.printStackTrace();
  116 + }
  117 + }
  118 +
  119 +
  120 + //发送响应流方法
  121 + public void setResponseHeader(HttpServletResponse response, String fileName) {
  122 + try {
  123 + try {
  124 + fileName = new String(fileName.getBytes(),"ISO8859-1");
  125 + } catch (UnsupportedEncodingException e) {
  126 + // TODO Auto-generated catch block
  127 + e.printStackTrace();
  128 + }
  129 + response.setContentType("application/octet-stream;charset=ISO8859-1");
  130 + response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
  131 + response.addHeader("Pargam", "no-cache");
  132 + response.addHeader("Cache-Control", "no-cache");
  133 + } catch (Exception ex) {
  134 + ex.printStackTrace();
  135 + }
  136 + }
  137 +
  138 +}
  1 +package com.agent.repository.system;
  2 +
  3 +import org.springframework.data.jpa.repository.Query;
  4 +
  5 +import java.util.List;
  6 +import java.util.Map;
  7 +
  8 +public interface FilghtDateRepository {
  9 +
  10 +
  11 + @Query(value = "SELECT SD.SD_WAYBILL , SD.SD_CARGO_SHIPPER_NAME , SD.SD_CARGO_AGENT_NAME , SD.SD_IATA_NUMBER , SD.SD_TRANSPORT_CERTIFICATE , SD.SD_TRANSPORTATION_PROVE , MF.CARRIER , MF.FLIGHTNO , MF.FLIGHTDATE , MF.ORIGINATINGSTATION , MF.DESTINATIONSTATION , MF.TOTALPIECE , MF.TOTALWEIGHT , MF.STOWAGEDATE , MF.CUSTOMSCODE , MF.PRODUCTNAME , MF.SH_COMPANY , MF.SH_ADDRESS , MF.SH_CITY , MF.SH_COUNTRY , MF.SH_TELEPHONE , MF.SH_NAME , MF.CO_COMPANY , MF.CO_ADDRESS , MF.CO_CITY , MF.CO_COUNTRY , MF.CO_TELEPHONE , MF.CO_NAME , MF.RESPONSE_CODE , MF.RESPONSE_TEXT , MF.SHPCUSID , MF.CNECUSID , SCN.SD_CARGO_NAME , twoType.TWO_TYPE_NAME , bigType.TYPE_NAME , HSI.FOR_SHORT , HSI.FULL_NAME , HSI.THE_SHIPPER_TYPE , HSI.CONTACTS, HSI.PHONE FROM SECURITY_DECLARATION SD LEFT JOIN MANIFEST MF ON MF.WAYBILLNOMASTER = SD.SD_WAYBILL LEFT JOIN SD_CARGO_NAME SCN ON SCN.SD_WAYBILL = SD.SD_WAYBILL LEFT JOIN SD_TWO_TYPE twoType ON twoType.CARGO_NAME = SCN.SD_CARGO_NAME LEFT JOIN SD_BIG_TYPE bigType on bigType.ID = twoType.BIG_TYPE_ID LEFT JOIN HZ_WAYBILL_INFO HWI ON hwi.WAYBILL_ID = MF.WAYBILLNOMASTER LEFT JOIN HZ_SHIPPER_INFORMATION HSI ON HWI.HZINFOR_ID = HSI.ID WHERE trunc( MF.FLIGHTDATE ) BETWEEN to_date( MF.FLIGHTDATE=?1, 'yyyy-mm-dd' ) AND to_date(MF.FLIGHTDATE=?2,'yyyy-mm-dd') ORDER BY MF.FLIGHTDATE", nativeQuery = true)
  12 + List<Map<String, Object>>filghtdateCount(String filghtdate1, String filghtdate2);
  13 +}
  1 +package com.agent.service.system;
  2 +
  3 +import com.agent.repository.system.FilghtDateRepository;
  4 +import com.agent.vo.ResponseModel;
  5 +import org.springframework.stereotype.Service;
  6 +
  7 +import javax.annotation.Resource;
  8 +import java.util.List;
  9 +import java.util.Map;
  10 +
  11 +@Service
  12 +public class FilghtDateService {
  13 +
  14 + @Resource
  15 + private FilghtDateRepository filghtDateRepository;
  16 +
  17 + public List<Map<String, Object>> filghtcount(String filghtdate1, String filghtdate2){
  18 +
  19 + return filghtDateRepository.filghtdateCount(filghtdate1, filghtdate2);
  20 +
  21 + }
  22 +
  23 +}
  1 +package com.agent.util;
  2 +
  3 +import org.apache.poi.hssf.usermodel.*;
  4 +
  5 +public class ExcelExportUtil {
  6 +
  7 + /**
  8 + * 导出Excel
  9 + * @param sheetName sheet名称
  10 + * @param title 标题
  11 + * @param values 内容
  12 + * @param wb HSSFWorkbook对象
  13 + * @return
  14 + */
  15 + public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){
  16 +
  17 + // 第一步,创建一个HSSFWorkbook,对应一个Excel文件
  18 + if(wb == null){
  19 + wb = new HSSFWorkbook();
  20 + }
  21 +
  22 + // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
  23 + HSSFSheet sheet = wb.createSheet(sheetName);
  24 +
  25 + // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
  26 + HSSFRow row = sheet.createRow(0);
  27 +
  28 + // 第四步,创建单元格,并设置值表头 设置表头居中
  29 + HSSFCellStyle style = wb.createCellStyle();
  30 + style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
  31 +
  32 + //声明列对象
  33 + HSSFCell cell = null;
  34 +
  35 + //创建标题
  36 + for(int i=0;i<title.length;i++){
  37 + cell = row.createCell(i);
  38 + cell.setCellValue(title[i]);
  39 + cell.setCellStyle(style);
  40 + }
  41 +
  42 + //创建内容
  43 + for(int i=0;i<values.length;i++){
  44 + row = sheet.createRow(i + 1);
  45 + for(int j=0;j<values[i].length;j++){
  46 + //将内容按顺序赋给对应的列对象
  47 + row.createCell(j).setCellValue(values[i][j]);
  48 + }
  49 + }
  50 + return wb;
  51 + }
  52 +}
@@ -89,6 +89,7 @@ @@ -89,6 +89,7 @@
89 <li><a href="javascript:void(0);" onclick="addTab('货量统计||cargo/list',this)">货量统计</a></li> 89 <li><a href="javascript:void(0);" onclick="addTab('货量统计||cargo/list',this)">货量统计</a></li>
90 <li><a href="javascript:void(0);" onclick="addTab('一级类管理||type/list',this)">一级类管理</a></li> 90 <li><a href="javascript:void(0);" onclick="addTab('一级类管理||type/list',this)">一级类管理</a></li>
91 <li><a href="javascript:void(0);" onclick="addTab('二级类管理||type/tlist',this)">二级类管理</a></li> 91 <li><a href="javascript:void(0);" onclick="addTab('二级类管理||type/tlist',this)">二级类管理</a></li>
  92 + <li><a href="javascript:void(0);" onclick="addTab('航班日期统计||filghtdate/select',this)">航班日期统计</a></li>
92 <%-- <li><a href="javascript:void(0)" onclick="addTab('<spring:message code="menu.consignee_info_set" />||consignee/list')"><spring:message code="menu.consignee_info_set" /></a></li> --%> 93 <%-- <li><a href="javascript:void(0)" onclick="addTab('<spring:message code="menu.consignee_info_set" />||consignee/list')"><spring:message code="menu.consignee_info_set" /></a></li> --%>
93 </ul> 94 </ul>
94 </li> 95 </li>
@@ -285,7 +285,7 @@ @@ -285,7 +285,7 @@
285 <option value="${tempShpType}">${tempShpType}</option> 285 <option value="${tempShpType}">${tempShpType}</option>
286 </c:if> 286 </c:if>
287 287
288 - <c:if test="${empty pre.shpcusid}"> 288 + <c:if test="${empty pre.shpcusid}">
289 <option value=""><spring:message code="manifest.enterprise.code.type" /></option> 289 <option value=""><spring:message code="manifest.enterprise.code.type" /></option>
290 </c:if> 290 </c:if>
291 </select> <span style="color: black; font-size: 16px;">+</span> <input id="shpcusid" type="text" 291 </select> <span style="color: black; font-size: 16px;">+</span> <input id="shpcusid" type="text"
  1 +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2 +<%--
  3 + Created by IntelliJ IDEA.
  4 + User: lenovo
  5 + Date: 2019/3/15
  6 + Time: 16:24
  7 + To change this template use File | Settings | File Templates.
  8 +--%>
  9 +<%@ page contentType="text/html;charset=UTF-8" language="java" %>
  10 +<%
  11 + String path = request.getContextPath();
  12 + String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  13 +%>
  14 +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
  15 +<html>
  16 +<head>
  17 + <title>Title</title>
  18 + <meta charset="utf-8">
  19 + <meta name="viewport" content="width=device-width, initial-scale=1">
  20 + <link href="<%=basePath %>resource/css/base.css" rel="stylesheet">
  21 + <link href="<%=basePath %>resource/css/basic_info.css" rel="stylesheet">
  22 + <link rel="stylesheet" href="<%=basePath %>resource/easyui/uimaker/easyui.css">
  23 + <link href="<%=basePath %>resource/css/form.css" rel="stylesheet">
  24 + <link rel="stylesheet" href="<%=basePath %>resource/css/form.css">
  25 + <script type="text/javascript" src="<%=basePath %>resource/easyui/jquery.min.js"></script>
  26 + <script type="text/javascript" src="<%=basePath %>resource/validate/jquery.validate.js"></script>
  27 + <script type="text/javascript" src="<%=basePath %>resource/validate/validate-extends.js"></script>
  28 +
  29 + <script type="text/javascript" src="<%=basePath %>resource/js/tools.js"></script>
  30 + <!-- validate 验证中英文 -->
  31 + <script type="text/javascript" src="<%=basePath %>resource/validate/jquery.validate-${pageContext.response.locale}.js"></script>
  32 +</head>
  33 +<body>
  34 +<div class="container">
  35 + <div class="content">
  36 + <form class="from-control" id="form">
  37 + <input type="hidden" id="id" name="id" value="${manifest.id }">
  38 + <div></div>
  39 + <div>
  40 + <table class="kv-table">
  41 + <tbody>
  42 + <div>
  43 + <tr class="kv-content" >
  44 + <td style="background-color: #EBEDF4; color: black;" class="kv-label" colspan="6"><spring:message code="wbm.loginName"/></td>
  45 + <td style="background-color: #EBEDF4; color: black;" class="kv-label" colspan="1">
  46 + <input type="date" id = "filghtdate1" name = "filghtdate1" required="required">
  47 + <input type="date" id = "filghtdate2" name = "filghtdate2" required="required">
  48 + </td>
  49 + <td style="background-color: #EBEDF4; color: black;" class="kv-label" colspan="4">
  50 + <button type="button" class="layui-btn layui-btn-sm layui-icon layui-icon-user" id="subbtn">
  51 + <i class="fa fa-trash hidden" aria-hidden="true"></i>查询
  52 + </button>
  53 + </td>
  54 + </tr>
  55 + <%--<tr class="kv-content" style="float:left">--%>
  56 + <%--<td style="background-color: #EBEDF4; color: black;" class="kv-label" colspan="2">--%>
  57 + <%----%>
  58 + <%--</td>--%>
  59 + <%--</tr>--%>
  60 + </div>
  61 + </tbody>
  62 + </table>
  63 + </div>
  64 + </form>
  65 + </div>
  66 +</div>
  67 +
  68 +<script type="text/javascript">
  69 +
  70 +
  71 + $("#subbtn").on("click",function () {
  72 +
  73 + var filghtdate1 = $("#filghtdate1").val();
  74 + var filghtdate2 = $("#filghtdate2").val();
  75 +
  76 + $.ajax({
  77 + type : 'POST',
  78 + // contentType: 'application/json; charset=UTF-8',
  79 + data : {
  80 + "filghtdate1" : filghtdate1,
  81 + "filghtdate2" : filghtdate2
  82 + },
  83 + url :"<%=basePath%>filghtdate/filghtCount",
  84 + success : function(data) {
  85 +// console.log(data)
  86 +// if (data.status != 200) {
  87 +// alert("该账号不存在");
  88 +// }else {
  89 +// // parent.reLoad();
  90 +// alert("修改成功");
  91 +// window.parent.location.reload();
  92 +// var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
  93 +// parent.layer.close(index);
  94 +// }
  95 + }
  96 + });
  97 + })
  98 +
  99 +
  100 +</script>
  101 +</body>
  102 +</html>