作者 xudada

舱单统计excel导出

@@ -172,6 +172,17 @@ @@ -172,6 +172,17 @@
172 <version>1.9.6</version> 172 <version>1.9.6</version>
173 </dependency> 173 </dependency>
174 <dependency> 174 <dependency>
  175 + <groupId>cn.hutool</groupId>
  176 + <artifactId>hutool-all</artifactId>
  177 + <version>5.7.14</version>
  178 + </dependency>
  179 + <dependency>
  180 + <groupId>cn.afterturn</groupId>
  181 + <artifactId>easypoi-spring-boot-starter</artifactId>
  182 + <version>4.4.0</version>
  183 + </dependency>
  184 +
  185 + <dependency>
175 <groupId>io.springfox</groupId> 186 <groupId>io.springfox</groupId>
176 <artifactId>springfox-swagger2</artifactId> 187 <artifactId>springfox-swagger2</artifactId>
177 <version>2.9.2</version> 188 <version>2.9.2</version>
1 package com.tianbo.analysis.controller; 1 package com.tianbo.analysis.controller;
2 2
3 -import com.github.pagehelper.PageInfo;  
4 import com.tianbo.analysis.model.FFMInfo; 3 import com.tianbo.analysis.model.FFMInfo;
5 import com.tianbo.analysis.model.ResultJson; 4 import com.tianbo.analysis.model.ResultJson;
6 -import com.tianbo.analysis.model.TRANSTOARRIVEEXPORT;  
7 import com.tianbo.analysis.service.FFMResolve; 5 import com.tianbo.analysis.service.FFMResolve;
8 import com.tianbo.util.Date.DateUtil; 6 import com.tianbo.util.Date.DateUtil;
9 import io.swagger.annotations.Api; 7 import io.swagger.annotations.Api;
@@ -14,6 +12,7 @@ import org.springframework.web.bind.annotation.*; @@ -14,6 +12,7 @@ import org.springframework.web.bind.annotation.*;
14 12
15 import java.util.Date; 13 import java.util.Date;
16 import java.util.List; 14 import java.util.List;
  15 +import java.util.Map;
17 16
18 @Api(description = "舱单解析表接口") 17 @Api(description = "舱单解析表接口")
19 @RestController 18 @RestController
@@ -61,5 +60,4 @@ public class FFMInfoController { @@ -61,5 +60,4 @@ public class FFMInfoController {
61 int result=ffmResolve.delByAutoidList(autoIDlist); 60 int result=ffmResolve.delByAutoidList(autoIDlist);
62 return result>0?new ResultJson("200","删除成功!"):new ResultJson("201","删除失败"); 61 return result>0?new ResultJson("200","删除成功!"):new ResultJson("201","删除失败");
63 } 62 }
64 -  
65 } 63 }
  1 +package com.tianbo.analysis.controller;
  2 +
  3 +import cn.afterturn.easypoi.entity.vo.NormalExcelConstants;
  4 +import cn.afterturn.easypoi.excel.ExcelExportUtil;
  5 +import cn.afterturn.easypoi.excel.entity.ExportParams;
  6 +import cn.afterturn.easypoi.view.PoiBaseView;
  7 +import com.tianbo.analysis.model.StatictisModel;
  8 +import com.tianbo.analysis.service.FFMResolve;
  9 +import io.swagger.annotations.Api;
  10 +import io.swagger.annotations.ApiOperation;
  11 +import org.apache.poi.ss.usermodel.Workbook;
  12 +import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.ui.ModelMap;
  14 +import org.springframework.web.bind.annotation.RequestMapping;
  15 +import org.springframework.web.bind.annotation.RequestParam;
  16 +import org.springframework.web.bind.annotation.RestController;
  17 +
  18 +import javax.servlet.http.HttpServletRequest;
  19 +import javax.servlet.http.HttpServletResponse;
  20 +import java.io.OutputStream;
  21 +import java.net.URLEncoder;
  22 +import java.util.List;
  23 +
  24 +@Api(description = "进港舱单统计")
  25 +@RestController
  26 +@RequestMapping("/statistics/")
  27 +public class InNmmsStaticController {
  28 + @Autowired
  29 + FFMResolve ffmResolve;
  30 + @ApiOperation(value = "查询进港舱单统计")
  31 + @RequestMapping("/selectDevList")
  32 + public void selectDevList(@RequestParam(value = "flightno", required = false) String flightno,
  33 + @RequestParam(value = "subTime", required = false) String subTime,
  34 + @RequestParam(value = "nowTime", required = false) String nowTime,
  35 + ModelMap map, HttpServletRequest request, HttpServletResponse response){
  36 + List<StatictisModel> list=ffmResolve.selectDevList(flightno,subTime,nowTime);
  37 +
  38 + ExportParams params = new ExportParams("进港舱单统计", "进港舱单统计");
  39 + map.put(NormalExcelConstants.DATA_LIST, list);
  40 + map.put(NormalExcelConstants.CLASS, StatictisModel.class);
  41 + map.put(NormalExcelConstants.PARAMS, params);
  42 + map.put(NormalExcelConstants.FILE_NAME, "进港舱单统计");
  43 + PoiBaseView.render(map, request, response, NormalExcelConstants.EASYPOI_EXCEL_VIEW);
  44 +// return new ResultJson("200","success");
  45 + }
  46 +
  47 + @RequestMapping(value = "/exportExcel")
  48 + public void exportExcel(String id,HttpServletResponse response) throws Exception {
  49 + List<StatictisModel> list=ffmResolve.selectDevList(null,"2018-06-06","2018-06-08");
  50 +
  51 + ExportParams params = new ExportParams("进港舱单统计", "进港舱单统计");
  52 + Workbook workbook = ExcelExportUtil.exportExcel(params, StatictisModel.class, list);
  53 + String fileName = "saleData.xlsx";
  54 + response.setCharacterEncoding("UTF-8");
  55 + response.setContentType("application/vnd.ms-excel; charset=utf-8");
  56 + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
  57 + OutputStream outputStream = response.getOutputStream();
  58 + workbook.write(outputStream);
  59 + outputStream.flush();
  60 + outputStream.close();
  61 + }
  62 +
  63 +}
  64 +
  65 +//@Data
  66 +//class ExcelDemo {
  67 +//
  68 +// @Excel(name = "员工名称")
  69 +// private String employeesName;
  70 +//
  71 +// @Excel(name = "员工图片",type = 2 ,width = 30 , height = 50)
  72 +// private String image;
  73 +//
  74 +// @Excel(name = "员工年龄")
  75 +// private Integer age;
  76 +//
  77 +// @Excel(name = "创建日期", format = "yyyy-MM-dd HH:mm", width = 20)
  78 +// private Date createDate;
  79 +//
  80 +// @Excel(name = "更新日期", format = "yyyy/MM/dd HH:mm", width = 20)
  81 +// private Date updateDate;
  82 +//
  83 +//}
1 package com.tianbo.analysis.dao; 1 package com.tianbo.analysis.dao;
2 2
  3 +import com.sun.javafx.tools.packager.MakeAllParams;
3 import com.tianbo.analysis.model.FFMInfo; 4 import com.tianbo.analysis.model.FFMInfo;
  5 +import com.tianbo.analysis.model.StatictisModel;
  6 +import org.apache.ibatis.annotations.Param;
4 7
  8 +import java.util.Date;
5 import java.util.List; 9 import java.util.List;
  10 +import java.util.Map;
6 11
7 public interface FFMInfoDao { 12 public interface FFMInfoDao {
8 int deleteByPrimaryKey(String autoid); 13 int deleteByPrimaryKey(String autoid);
@@ -24,4 +29,6 @@ public interface FFMInfoDao { @@ -24,4 +29,6 @@ public interface FFMInfoDao {
24 int delFlightno(FFMInfo record); 29 int delFlightno(FFMInfo record);
25 30
26 int delByAutoidList(List<String> idList); 31 int delByAutoidList(List<String> idList);
  32 +
  33 + List<StatictisModel> selectDevList(@Param("flightno") String flightno, @Param("subTime") String subTime, @Param("nowTime") String nowTime);
27 } 34 }
  1 +package com.tianbo.analysis.model;
  2 +
  3 +import cn.afterturn.easypoi.excel.annotation.Excel;
  4 +import lombok.Data;
  5 +import lombok.EqualsAndHashCode;
  6 +
  7 +import java.util.Date;
  8 +
  9 +@Data
  10 +@EqualsAndHashCode
  11 +public class StatictisModel {
  12 +
  13 + @Excel(name = "运单号")
  14 + public String waybillnomaster;
  15 +
  16 + @Excel(name = "板箱号")
  17 + public String pallet;
  18 +
  19 + @Excel(name = "舱单件数")
  20 + public String manifesttotalpiece;
  21 +
  22 + @Excel(name = "舱单重量")
  23 + public String manifesttotalweight;
  24 +
  25 + @Excel(name = "运单件数")
  26 + public String totalpiece;
  27 + @Excel(name = "运单重量")
  28 + public String totalweight;
  29 +
  30 + @Excel(name = "航班号")
  31 + public String fflightno;
  32 +
  33 + @Excel(name = "航班日期",format = "yyyy-MM-dd")
  34 + public Date flightdate;
  35 +
  36 + @Excel(name = "原始航班号")
  37 + public String oflightno;
  38 +
  39 + @Excel(name = "原始航班日期",format = "yyyy-MM-dd")
  40 + public Date flight_date;
  41 +
  42 + @Excel(name = "分批标识")
  43 + public String isbatch;
  44 +
  45 + @Excel(name = "特殊代码")
  46 + public String specialgoodscode;
  47 +
  48 +}
@@ -2,8 +2,11 @@ package com.tianbo.analysis.service; @@ -2,8 +2,11 @@ package com.tianbo.analysis.service;
2 2
3 import com.tianbo.analysis.model.FFMInfo; 3 import com.tianbo.analysis.model.FFMInfo;
4 import com.tianbo.analysis.model.ResultJson; 4 import com.tianbo.analysis.model.ResultJson;
  5 +import com.tianbo.analysis.model.StatictisModel;
5 6
  7 +import java.util.Date;
6 import java.util.List; 8 import java.util.List;
  9 +import java.util.Map;
7 10
8 public interface FFMResolve { 11 public interface FFMResolve {
9 ResultJson resolve(FFMInfo ffmInfo); 12 ResultJson resolve(FFMInfo ffmInfo);
@@ -15,4 +18,6 @@ public interface FFMResolve { @@ -15,4 +18,6 @@ public interface FFMResolve {
15 int delFlightno(FFMInfo record); 18 int delFlightno(FFMInfo record);
16 19
17 int delByAutoidList(List<String> idList); 20 int delByAutoidList(List<String> idList);
  21 +
  22 + List<StatictisModel> selectDevList(String flightno, String subTime, String nowTime);
18 } 23 }
@@ -6,6 +6,7 @@ import com.tianbo.analysis.dao.TBBaseAirportInfoDao; @@ -6,6 +6,7 @@ import com.tianbo.analysis.dao.TBBaseAirportInfoDao;
6 import com.tianbo.analysis.exception.FFMResolveException; 6 import com.tianbo.analysis.exception.FFMResolveException;
7 import com.tianbo.analysis.model.FFMInfo; 7 import com.tianbo.analysis.model.FFMInfo;
8 import com.tianbo.analysis.model.ResultJson; 8 import com.tianbo.analysis.model.ResultJson;
  9 +import com.tianbo.analysis.model.StatictisModel;
9 import com.tianbo.analysis.model.TBBaseAirportInfo; 10 import com.tianbo.analysis.model.TBBaseAirportInfo;
10 import com.tianbo.analysis.service.FFMResolve; 11 import com.tianbo.analysis.service.FFMResolve;
11 import com.tianbo.util.Date.DateUtil; 12 import com.tianbo.util.Date.DateUtil;
@@ -89,4 +90,9 @@ public class FFMResolveImpl implements FFMResolve { @@ -89,4 +90,9 @@ public class FFMResolveImpl implements FFMResolve {
89 public int delByAutoidList(List<String> idList) { 90 public int delByAutoidList(List<String> idList) {
90 return ffmInfoDao.delByAutoidList(idList); 91 return ffmInfoDao.delByAutoidList(idList);
91 } 92 }
  93 +
  94 + @Override
  95 + public List<StatictisModel> selectDevList(String flightno, String subTime, String nowTime) {
  96 + return ffmInfoDao.selectDevList(flightno,subTime,nowTime);
  97 + }
92 } 98 }
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 <generatorConfiguration> 5 <generatorConfiguration>
6 <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包--> 6 <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
7 <!--<classPathEntry location="/Users/mrz/Downloads/mybatis-generator-core-1.3.2/lib/mysql-connector-java-5.1.25-bin.jar"/>--> 7 <!--<classPathEntry location="/Users/mrz/Downloads/mybatis-generator-core-1.3.2/lib/mysql-connector-java-5.1.25-bin.jar"/>-->
8 - <classPathEntry location="/Users/mrz/Documents/maven/ojdbc6.jar"/> 8 + <classPathEntry location="/Users/xuyonghui/XYH/MAVEN/ojdbc6.jar"/>
9 <context id="DB2Tables" targetRuntime="MyBatis3"> 9 <context id="DB2Tables" targetRuntime="MyBatis3">
10 <commentGenerator> 10 <commentGenerator>
11 <property name="suppressDate" value="true"/> 11 <property name="suppressDate" value="true"/>
@@ -34,7 +34,7 @@ @@ -34,7 +34,7 @@
34 <property name="forceBigDecimals" value="false"/> 34 <property name="forceBigDecimals" value="false"/>
35 </javaTypeResolver> 35 </javaTypeResolver>
36 <!-- 生成模型的包名和位置--> 36 <!-- 生成模型的包名和位置-->
37 - <javaModelGenerator targetPackage="com.tianbo.analysis.model" targetProject="src/main/java"> 37 + <javaModelGenerator targetPackage="com.tianbo.analysis.model.new" targetProject="src/main/java">
38 <property name="enableSubPackages" value="false"/> 38 <property name="enableSubPackages" value="false"/>
39 <property name="trimStrings" value="true"/> 39 <property name="trimStrings" value="true"/>
40 </javaModelGenerator> 40 </javaModelGenerator>
@@ -47,6 +47,6 @@ @@ -47,6 +47,6 @@
47 <property name="enableSubPackages" value="false"/> 47 <property name="enableSubPackages" value="false"/>
48 </javaClientGenerator> 48 </javaClientGenerator>
49 <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名--> 49 <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
50 - <table schema="CGONMS" tableName="SENDPLAN" domainObjectName="SENDPLAN" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> 50 + <table schema="CGONMS" tableName="ORIGINMANIFESTSECONDARY" domainObjectName="ORIGSECONDARY" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
51 </context> 51 </context>
52 </generatorConfiguration> 52 </generatorConfiguration>
@@ -24,6 +24,20 @@ @@ -24,6 +24,20 @@
24 <result column="TOTALPIECE" jdbcType="VARCHAR" property="totalpiece" /> 24 <result column="TOTALPIECE" jdbcType="VARCHAR" property="totalpiece" />
25 <result column="DEALSTATUS" jdbcType="VARCHAR" property="dealstatus" /> 25 <result column="DEALSTATUS" jdbcType="VARCHAR" property="dealstatus" />
26 </resultMap> 26 </resultMap>
  27 + <resultMap id="StatictisMap" type="com.tianbo.analysis.model.StatictisModel">
  28 + <result column="WAYBILLNOMASTER" jdbcType="VARCHAR" property="waybillnomaster" />
  29 + <result column="PALLET" jdbcType="VARCHAR" property="pallet" />
  30 + <result column="MANIFESTTOTALPIECE" jdbcType="VARCHAR" property="manifesttotalpiece" />
  31 + <result column="MANIFESTTOTALWEIGHT" jdbcType="VARCHAR" property="manifesttotalweight" />
  32 + <result column="TOTALPIECE" jdbcType="VARCHAR" property="totalpiece" />
  33 + <result column="TOTALWEIGHT" jdbcType="VARCHAR" property="totalweight" />
  34 + <result column="FFLIGHTNO" jdbcType="VARCHAR" property="fflightno" />
  35 + <result column="FLIGHTDATE" jdbcType="TIMESTAMP" property="flightdate" />
  36 + <result column="OFLIGHTNO" jdbcType="VARCHAR" property="oflightno" />
  37 + <result column="FLIGHT_DATE" jdbcType="TIMESTAMP" property="flight_date" />
  38 + <result column="ISBATCH" jdbcType="VARCHAR" property="isbatch" />
  39 + <result column="SPECIALGOODSCODE" jdbcType="VARCHAR" property="specialgoodscode" />
  40 + </resultMap>
27 <sql id="Base_Column_List"> 41 <sql id="Base_Column_List">
28 AUTOID, CREATEDATE, FLIGHTNO, FLIGHTDATE, WAYBILLNOMASTER, ORIGINATINGSTATION, DESTINATIONSTATION, 42 AUTOID, CREATEDATE, FLIGHTNO, FLIGHTDATE, WAYBILLNOMASTER, ORIGINATINGSTATION, DESTINATIONSTATION,
29 MANIFESTTOTALPIECE, MANIFESTTOTALWEIGHT, PRODUCTNAME, SPECIALGOODSCODE, CUSTOMSCODE, 43 MANIFESTTOTALPIECE, MANIFESTTOTALWEIGHT, PRODUCTNAME, SPECIALGOODSCODE, CUSTOMSCODE,
@@ -309,4 +323,42 @@ @@ -309,4 +323,42 @@
309 DEALSTATUS = #{dealstatus,jdbcType=VARCHAR} 323 DEALSTATUS = #{dealstatus,jdbcType=VARCHAR}
310 where AUTOID = #{autoid,jdbcType=VARCHAR} 324 where AUTOID = #{autoid,jdbcType=VARCHAR}
311 </update> 325 </update>
  326 + <select id="selectDevList" parameterType="java.lang.String" resultMap="StatictisMap">
  327 + SELECT
  328 + F.PALLET AS PALLET,
  329 + F.FLIGHTNO AS FFLIGHTNO,
  330 + F.FLIGHTDATE AS FLIGHTDATE,
  331 + F.WAYBILLNOMASTER AS WAYBILLNOMASTER,
  332 + F.MANIFESTTOTALPIECE AS MANIFESTTOTALPIECE,
  333 + F.MANIFESTTOTALWEIGHT AS MANIFESTTOTALWEIGHT,
  334 + O.TOTALPIECE AS TOTALPIECE,
  335 + O.TOTALWEIGHT AS TOTALWEIGHT,
  336 + O.FLIGHTNO AS OFLIGHTNO,
  337 + O.FLIGHT_DATE AS FLIGHT_DATE,
  338 + O.SPECIALGOODSCODE AS SPECIALGOODSCODE,
  339 + F.ISBATCH AS ISBATCH
  340 +FROM
  341 + (
  342 + SELECT
  343 + a.*,
  344 + row_number () over ( partition BY flightno, flightdate, waybillnomaster, PALLET, reportorder ORDER BY createdate DESC ) rw
  345 + FROM
  346 + ffm_info a
  347 + WHERE
  348 + 1 = 1 -- and islast = 'LAST'
  349 +-- and reportorder = '1'
  350 +
  351 + AND dealstatus = '1'
  352 + <if test="flightno != null and flightno!=''">
  353 + and FLIGHTNO = #{flightno,jdbcType=VARCHAR}
  354 + </if> -- AND waybillnomaster = '356-50028882'
  355 + AND flightdate BETWEEN to_date(#{subTime},'yyyy-MM-dd') and to_date(#{nowTime},'yyyy-MM-dd')
  356 + ) F
  357 + LEFT JOIN ORIGINMANIFESTMASTER O ON O.WAYBILLNOMASTER = F.WAYBILLNOMASTER -- WHERE O.SPECIALGOODSCODE IS NOT NULL
  358 + WHERE rw=1
  359 +ORDER BY
  360 + O.WAYBILLNOMASTER,
  361 + F.PALLET
  362 + </select>
  363 +
312 </mapper> 364 </mapper>
  1 +import com.tianbo.analysis.NmmsAdminApplication;
  2 +import com.tianbo.analysis.model.FWBinfo;
  3 +import com.tianbo.analysis.model.Originmanifestsecondary;
  4 +import org.apache.logging.log4j.LogManager;
  5 +import org.apache.logging.log4j.Logger;
  6 +import org.springframework.boot.test.context.SpringBootTest;
  7 +
  8 +//@RunWith(SpringRunner.class)
  9 +@SpringBootTest(classes = NmmsAdminApplication.class)
  10 +public class FWBTest {
  11 +
  12 + private static Logger logger = LogManager.getLogger(FHLTest.class);
  13 +
  14 + private static String FWB = "ZCZC\n" +
  15 + "QK CGOFD1E\n" +
  16 + ".AUHFMEY 150638\n" +
  17 + "FWB/16\n" +
  18 + "607-23181900PVGRUH/T18K3958MC14.94\n" +
  19 + "FLT/EY9932/16\n" +
  20 + "RTG/AUHEY/RUHEY\n" +
  21 + "SHP\n" +
  22 + "/APPLE DISTRIBUTION INTERNATIONAL\n" +
  23 + "/INDUSTRIAL ESTATE PINISHED GOODS\n" +
  24 + "/SHANGHAI\n" +
  25 + "/CN//TE/353214229094/FX/35214284000\n" +
  26 + "CNE\n" +
  27 + "/APPLE SAUDI ARABIA LLC\n" +
  28 + "/LEVEL 30 FAISALIAH TOWER RIYADH\n" +
  29 + "/RIYADH\n" +
  30 + "/SA/11524/TE/97239005310/FX/97239005311\n" +
  31 + "AGT//0830875/0214/CAG\n" +
  32 + "/AOE FREIGHT SHANGHAI LIMTED\n" +
  33 + "/SHANGHAI\n" +
  34 + "SSR/ALL\n" +
  35 + "ACC/GEN/FREIGHT PREPAID\n" +
  36 + "/GEN/PRDGENERALCARGO\n" +
  37 + "CVD/CNY//PP/NVD/NCV/XXX\n" +
  38 + "RTD/1/P18/K3958/CQ/W3958/R30.72/T121589.76\n" +
  39 + "/NG/MOBILE PHONELITHIUM\n" +
  40 + "/2/NG/IONBATTERIES INCOMPL\n" +
  41 + "/3/NG/IANCE WITHSECTION II\n" +
  42 + "/4/NG/ OFPI967 ELI\n" +
  43 + "/5/ND//CMT100-100-83/18\n" +
  44 + "/6/NV/MC14.94\n" +
  45 + "OTH/P/MSC55807.8\n" +
  46 + "PPD/WT244469.76/VC0/TX0\n" +
  47 + "/OA0/OC56400/CT300869.76\n" +
  48 + "CER/APPLE DISTRIBUUTTON\n" +
  49 + "ISU/15DEC21/SHANGHAI/GHR\n" +
  50 + "REF/AUHFMEY\n" +
  51 + "SPH/EAP/HEA/ECC/ELI\n" +
  52 + "=\n" +
  53 + "NNNN";
  54 +
  55 + @org.junit.jupiter.api.Test
  56 + public void send() {
  57 + try{
  58 + FWBinfo fwb= new FWBinfo() ;
  59 + fwb.text = FWB;
  60 + fwb.textToStringList();
  61 + fwb.startParse();
  62 + }catch (Exception e){
  63 + e.printStackTrace();
  64 + }
  65 +
  66 +
  67 + }
  68 +}