作者 shenhailong

航班日期统计查询导出excel

... ... @@ -34,7 +34,7 @@
<cxf.version>2.7.5</cxf.version>
<patchca.version>0.5.0</patchca.version>
<jxl.version>2.6.12</jxl.version>
<poi.version>3.14</poi.version>
<poi.version>3.6</poi.version>
<velocity.version>1.7</velocity.version>
<!-- Plugin的属性定义 -->
... ... @@ -368,7 +368,7 @@
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.14</version>
<version>3.17</version>
</dependency>
<dependency>
... ...
package com.agent.controller.system;
import com.agent.service.system.FilghtDateService;
import com.agent.util.ExcelExportUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;
@RequestMapping(value = "/filghtdate")
@RestController
public class FilghtDateController{
@Autowired
private FilghtDateService filghtDateService;
@RequestMapping(value = "/list")
public String filghtList(){
return "system/user/filghtdateconut";
}
/**
* 航班日期统计 导出excel
* @param filghtdate1
* @param filghtdate2
* @return
*/
@RequestMapping(value = "/filghtCount")
@ResponseBody
public void filghtcount(HttpServletRequest request, HttpServletResponse response, String filghtdate1, String filghtdate2) {
// 获取数据
List<Map<String, Object>> filghtcount = filghtDateService.filghtcount(filghtdate1, filghtdate2);
//excel标题
String[] title = {"运单号", "航空托运人名称", "航空销售代理人名称", "航协编号", "航空公司运输证明", "运输条件鉴定书","承运人",
"航班号", "航班日期","航班起始站","航班目的站","运单件数","运单重量","操作时间","关区","预配品名","收货人公司",
"收货人地址","收货人城市","收货人国家","收货人电话","收货人名称","发货人名称","发货人地址","发货人城市","发货人国家",
"发货人电话","发货人名称","海关回执状态","海关回执信息","发货人编码","收货人编码","货物品名","二级类名称","一级类名称",
"代理人三字码","代理人全称","代理人类别","代理联系人","代理联系人电话"};
//excel文件名
String fileName = "测试" + System.currentTimeMillis() + ".xls";
//sheet名
String sheetName = "测试统计";
String[][] content = new String[0][];
/**
* 可能空指针异常
*/
for (int i = 0; i < filghtcount.size(); i++) {
content = new String[title.length][];
Map<String, Object> map = filghtcount.get(i);
content[i][0] = map.get("SD_WAYBILL").toString();
content[i][1] = map.get("SD_CARGO_SHIPPER_NAME").toString();
content[i][2] = map.get("SD_CARGO_AGENT_NAME").toString();
content[i][3] = map.get("SD_IATA_NUMBER").toString();
content[i][4] = map.get("SD_TRANSPORT_CERTIFICATE").toString();
content[i][5] = map.get("SD_TRANSPORTATION_PROVE").toString();
content[i][6] = map.get("CARRIER").toString();
content[i][7] = map.get("FLIGHTNO").toString();
content[i][8] = map.get("FLIGHTDATE").toString();
content[i][9] = map.get("ORIGINATINGSTATION").toString();
content[i][10] = map.get("DESTINATIONSTATION").toString();
content[i][11] = map.get("TOTALPIECE").toString();
content[i][12] = map.get("TOTALWEIGHT").toString();
content[i][13] = map.get("STOWAGEDATE").toString();
content[i][14] = map.get("CUSTOMSCODE").toString();
content[i][15] = map.get("SH_COMPANY").toString();
content[i][16] = map.get("SH_ADDRESS").toString();
content[i][17] = map.get("SH_CITY").toString();
content[i][18] = map.get("SH_COUNTRY").toString();
content[i][19] = map.get("SH_TELEPHONE").toString();
content[i][20] = map.get("SH_NAME").toString();
content[i][21] = map.get("CO_COMPANY").toString();
content[i][22] = map.get("CO_ADDRESS").toString();
content[i][23] = map.get("CO_CITY").toString();
content[i][24] = map.get("CO_COUNTRY").toString();
content[i][25] = map.get("CO_TELEPHONE").toString();
content[i][26] = map.get("CO_NAME").toString();
content[i][27] = map.get("RESPONSE_CODE").toString();
content[i][28] = map.get("RESPONSE_TEXT").toString();
content[i][29] = map.get("SHPCUSID").toString();
content[i][30] = map.get("CNECUSID").toString();
content[i][31] = map.get("SD_CARGO_NAME").toString();
content[i][32] = map.get("TWO_TYPE_NAME").toString();
content[i][33] = map.get("TYPE_NAME").toString();
content[i][34] = map.get("FOR_SHORT").toString();
content[i][35] = map.get("FULL_NAME").toString();
content[i][36] = map.get("THE_SHIPPER_TYPE").toString();
content[i][37] = map.get("CONTACTS").toString();
content[i][38] = map.get("PHONE").toString();
}
//创建HSSFWorkbook
HSSFWorkbook wb = ExcelExportUtil.getHSSFWorkbook(sheetName, title, content, null);
//响应到客户端
try {
this.setResponseHeader(response, fileName);
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
}catch (Exception e){
e.printStackTrace();
}
}
//发送响应流方法
public void setResponseHeader(HttpServletResponse response, String fileName) {
try {
try {
fileName = new String(fileName.getBytes(),"ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
... ...
package com.agent.repository.system;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
import java.util.Map;
public interface FilghtDateRepository {
@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)
List<Map<String, Object>>filghtdateCount(String filghtdate1, String filghtdate2);
}
... ...
package com.agent.service.system;
import com.agent.repository.system.FilghtDateRepository;
import com.agent.vo.ResponseModel;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Service
public class FilghtDateService {
@Resource
private FilghtDateRepository filghtDateRepository;
public List<Map<String, Object>> filghtcount(String filghtdate1, String filghtdate2){
return filghtDateRepository.filghtdateCount(filghtdate1, filghtdate2);
}
}
... ...
package com.agent.util;
import org.apache.poi.hssf.usermodel.*;
public class ExcelExportUtil {
/**
* 导出Excel
* @param sheetName sheet名称
* @param title 标题
* @param values 内容
* @param wb HSSFWorkbook对象
* @return
*/
public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){
// 第一步,创建一个HSSFWorkbook,对应一个Excel文件
if(wb == null){
wb = new HSSFWorkbook();
}
// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
HSSFRow row = sheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
//声明列对象
HSSFCell cell = null;
//创建标题
for(int i=0;i<title.length;i++){
cell = row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
//创建内容
for(int i=0;i<values.length;i++){
row = sheet.createRow(i + 1);
for(int j=0;j<values[i].length;j++){
//将内容按顺序赋给对应的列对象
row.createCell(j).setCellValue(values[i][j]);
}
}
return wb;
}
}
... ...
... ... @@ -89,6 +89,7 @@
<li><a href="javascript:void(0);" onclick="addTab('货量统计||cargo/list',this)">货量统计</a></li>
<li><a href="javascript:void(0);" onclick="addTab('一级类管理||type/list',this)">一级类管理</a></li>
<li><a href="javascript:void(0);" onclick="addTab('二级类管理||type/tlist',this)">二级类管理</a></li>
<li><a href="javascript:void(0);" onclick="addTab('航班日期统计||filghtdate/select',this)">航班日期统计</a></li>
<%-- <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> --%>
</ul>
</li>
... ...
... ... @@ -285,7 +285,7 @@
<option value="${tempShpType}">${tempShpType}</option>
</c:if>
<c:if test="${empty pre.shpcusid}">
<c:if test="${empty pre.shpcusid}">
<option value=""><spring:message code="manifest.enterprise.code.type" /></option>
</c:if>
</select> <span style="color: black; font-size: 16px;">+</span> <input id="shpcusid" type="text"
... ...
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
Created by IntelliJ IDEA.
User: lenovo
Date: 2019/3/15
Time: 16:24
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html>
<head>
<title>Title</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="<%=basePath %>resource/css/base.css" rel="stylesheet">
<link href="<%=basePath %>resource/css/basic_info.css" rel="stylesheet">
<link rel="stylesheet" href="<%=basePath %>resource/easyui/uimaker/easyui.css">
<link href="<%=basePath %>resource/css/form.css" rel="stylesheet">
<link rel="stylesheet" href="<%=basePath %>resource/css/form.css">
<script type="text/javascript" src="<%=basePath %>resource/easyui/jquery.min.js"></script>
<script type="text/javascript" src="<%=basePath %>resource/validate/jquery.validate.js"></script>
<script type="text/javascript" src="<%=basePath %>resource/validate/validate-extends.js"></script>
<script type="text/javascript" src="<%=basePath %>resource/js/tools.js"></script>
<!-- validate 验证中英文 -->
<script type="text/javascript" src="<%=basePath %>resource/validate/jquery.validate-${pageContext.response.locale}.js"></script>
</head>
<body>
<div class="container">
<div class="content">
<form class="from-control" id="form">
<input type="hidden" id="id" name="id" value="${manifest.id }">
<div></div>
<div>
<table class="kv-table">
<tbody>
<div>
<tr class="kv-content" >
<td style="background-color: #EBEDF4; color: black;" class="kv-label" colspan="6"><spring:message code="wbm.loginName"/></td>
<td style="background-color: #EBEDF4; color: black;" class="kv-label" colspan="1">
<input type="date" id = "filghtdate1" name = "filghtdate1" required="required">
<input type="date" id = "filghtdate2" name = "filghtdate2" required="required">
</td>
<td style="background-color: #EBEDF4; color: black;" class="kv-label" colspan="4">
<button type="button" class="layui-btn layui-btn-sm layui-icon layui-icon-user" id="subbtn">
<i class="fa fa-trash hidden" aria-hidden="true"></i>查询
</button>
</td>
</tr>
<%--<tr class="kv-content" style="float:left">--%>
<%--<td style="background-color: #EBEDF4; color: black;" class="kv-label" colspan="2">--%>
<%----%>
<%--</td>--%>
<%--</tr>--%>
</div>
</tbody>
</table>
</div>
</form>
</div>
</div>
<script type="text/javascript">
$("#subbtn").on("click",function () {
var filghtdate1 = $("#filghtdate1").val();
var filghtdate2 = $("#filghtdate2").val();
$.ajax({
type : 'POST',
// contentType: 'application/json; charset=UTF-8',
data : {
"filghtdate1" : filghtdate1,
"filghtdate2" : filghtdate2
},
url :"<%=basePath%>filghtdate/filghtCount",
success : function(data) {
// console.log(data)
// if (data.status != 200) {
// alert("该账号不存在");
// }else {
// // parent.reLoad();
// alert("修改成功");
// window.parent.location.reload();
// var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
// parent.layer.close(index);
// }
}
});
})
</script>
</body>
</html>
... ...