From 2e4c5bfb9eb2718a4ac46fc4799b68d3444e1b6f Mon Sep 17 00:00:00 2001 From: T-95707 Date: Tue, 22 Sep 2020 15:38:54 +0800 Subject: [PATCH] =?UTF-8?q?20200922=20zjt=20=E5=AF=BC=E5=85=A5=E5=92=8C?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- neuray-admin/pom.xml | 5 ++ .../controller/EngineParamController.java | 77 ++++++++++++++++++- .../modules/param/dao/EngineItemDao.java | 2 + .../param/service/EngineParamService.java | 5 ++ .../service/impl/EngineParamServiceImpl.java | 16 ++++ .../modules/param/util/ExcelUtil.java | 71 +++++++++++++++++ .../resources/mapper/param/EngineItemDao.xml | 19 +++++ 7 files changed, 192 insertions(+), 3 deletions(-) create mode 100644 neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/util/ExcelUtil.java diff --git a/neuray-admin/pom.xml b/neuray-admin/pom.xml index 4652bbc..73a1f1b 100644 --- a/neuray-admin/pom.xml +++ b/neuray-admin/pom.xml @@ -108,6 +108,11 @@ 1.0-SNAPSHOT test + + com.monitorjbl + xlsx-streamer + 2.0.0 + diff --git a/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/controller/EngineParamController.java b/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/controller/EngineParamController.java index 365f924..da63358 100644 --- a/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/controller/EngineParamController.java +++ b/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/controller/EngineParamController.java @@ -1,6 +1,7 @@ package com.gitee.neuray.security.modules.param.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.gitee.neuray.security.common.exception.RRException; import com.gitee.neuray.security.common.utils.PageUtils; import com.gitee.neuray.security.common.utils.R; import com.gitee.neuray.security.modules.param.entity.EngineItemEntity; @@ -8,14 +9,18 @@ import com.gitee.neuray.security.modules.param.entity.ParamItemEntity; import com.gitee.neuray.security.modules.param.service.EngineManageService; import com.gitee.neuray.security.modules.param.service.EngineParamService; import com.gitee.neuray.security.modules.param.service.ParamItemService; +import com.gitee.neuray.security.modules.param.util.ExcelUtil; import com.gitee.neuray.security.modules.sys.shiro.ShiroUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.util.*; /** @@ -112,5 +117,71 @@ public class EngineParamController { return R.ok().put("paramList", ret); }*/ + /** + * 下载模板 + */ + @RequestMapping("/download/{id}") + @RequiresPermissions("engine:param:download") + public void download(HttpServletResponse response,@PathVariable("id") String id) throws Exception{ + String fname = "发动机参数模板.xlsx";// Excel文件名 + OutputStream out = response.getOutputStream();// 取得输出流 + response.reset();// 清空输出流 + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fname, "UTF-8")); // 设定输出文件头,该方法有两个参数,分别表示应答头的名字和值。XSSF:xlsx HSSF:xls 中文要用encode处理一下 + response.setContentType("application/msexcel"); + response.setContentType("text/html; charset=UTF-8"); //设置编码字符 + String [] arr = paramService.getExcelTitleById(id).get("fieldsName").toString().split(","); + Map param = new HashMap(); + param.put("fieldsName", Arrays.asList(arr)); + try { + ExcelUtil.process(out,param); + + } catch (Exception e) { + e.printStackTrace(); + } + + } + /** + * 导出 + */ + @RequestMapping("/export/{id}") + @RequiresPermissions("engine:param:export") + public void export(HttpServletResponse response,@PathVariable("id") String id) throws Exception{ + String fname = "发动机参数列表.xlsx";// Excel文件名 + OutputStream out = response.getOutputStream();// 取得输出流 + response.reset();// 清空输出流 + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fname, "UTF-8")); // 设定输出文件头,该方法有两个参数,分别表示应答头的名字和值。XSSF:xlsx HSSF:xls 中文要用encode处理一下 + response.setContentType("application/msexcel"); + response.setContentType("text/html; charset=UTF-8"); //设置编码字符 + Map map = paramService.getExcelTitleById(id); + String [] arr = map.get("fieldsName").toString().split(","); + String [] arr1 = map.get("fields").toString().split(","); + Map param = new HashMap(); + param.put("fieldsName", Arrays.asList(arr)); + param.put("fields", Arrays.asList(arr1)); + // 获取表名 + String tableName = paramService.getTableNameById(id).getTableName(); + param.put("data",paramService.getParamByTable(tableName)); + try { + ExcelUtil.process(out,param); + + } catch (Exception e) { + e.printStackTrace(); + } + + } + + + /** + * 上传文件 + */ + @RequestMapping("/importExcel") + @RequiresPermissions("engine:param:importExcel") + public R importExcel(@RequestParam("file") MultipartFile file) throws Exception { + if (file.isEmpty()) { + throw new RRException("上传文件不能为空"); + } + + return R.ok(); + } } diff --git a/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/dao/EngineItemDao.java b/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/dao/EngineItemDao.java index 2a2b4d0..3c3f53a 100644 --- a/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/dao/EngineItemDao.java +++ b/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/dao/EngineItemDao.java @@ -27,4 +27,6 @@ public interface EngineItemDao extends BaseMapper { List getParamByTable(@Param("tableName") String tableName); + Map getExcelTitleById(@Param("id")String id); + EngineItemEntity getTableNameById(@Param("id")String id); } diff --git a/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/service/EngineParamService.java b/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/service/EngineParamService.java index 2736881..f642ef2 100644 --- a/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/service/EngineParamService.java +++ b/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/service/EngineParamService.java @@ -2,8 +2,10 @@ package com.gitee.neuray.security.modules.param.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gitee.neuray.security.common.utils.PageUtils; +import com.gitee.neuray.security.modules.param.entity.EngineItemEntity; import com.gitee.neuray.security.modules.param.entity.EngineParamEntity; +import java.util.List; import java.util.Map; /** @@ -17,5 +19,8 @@ public interface EngineParamService extends IService { PageUtils queryPage(Map params); Map queryTable(Map map); + Map getExcelTitleById(String id); + EngineItemEntity getTableNameById(String id); + List getParamByTable(String tableName); } diff --git a/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/service/impl/EngineParamServiceImpl.java b/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/service/impl/EngineParamServiceImpl.java index e56dad8..1b4f32c 100644 --- a/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/service/impl/EngineParamServiceImpl.java +++ b/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/service/impl/EngineParamServiceImpl.java @@ -1,6 +1,7 @@ package com.gitee.neuray.security.modules.param.service.impl; import com.gitee.neuray.security.modules.param.dao.EngineItemDao; +import com.gitee.neuray.security.modules.param.entity.EngineItemEntity; import com.gitee.neuray.security.modules.param.entity.ParamItemEntity; import com.gitee.neuray.security.modules.param.service.ParamItemService; import org.springframework.stereotype.Service; @@ -67,4 +68,19 @@ public class EngineParamServiceImpl extends ServiceImpl getParamByTable(String tableName) { + return engineItemDao.getParamByTable(tableName); + } } diff --git a/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/util/ExcelUtil.java b/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/util/ExcelUtil.java new file mode 100644 index 0000000..7539516 --- /dev/null +++ b/neuray-admin/src/main/java/com/gitee/neuray/security/modules/param/util/ExcelUtil.java @@ -0,0 +1,71 @@ +package com.gitee.neuray.security.modules.param.util; + +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.xssf.streaming.SXSSFCell; +import org.apache.poi.xssf.streaming.SXSSFRow; +import org.apache.poi.xssf.streaming.SXSSFSheet; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; + +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.sql.ResultSet; +import java.util.*; + +public class ExcelUtil { + + public static void main(String[] args)throws Exception { + String [] arr = {"表头1","表头2","表头3","表头4"}; + Map param = new HashMap(); + param.put("fields", Arrays.asList(arr)); + param.put("filePath","C:\\Users\\zjt\\Desktop\\test.xlsx"); +// process(param); + } + + public static void process(OutputStream out, Map param) throws Exception { +// FileOutputStream out = new FileOutputStream(param.get("filePath").toString()); + SXSSFWorkbook workbook = new SXSSFWorkbook(); + SXSSFSheet sheet = workbook.createSheet("参数信息"); + + //表头cell格式 + CellStyle FirstRowCellStyle = workbook.createCellStyle(); + FirstRowCellStyle.setAlignment(HorizontalAlignment.CENTER); + Font font = workbook.createFont(); + font.setBold(true); + FirstRowCellStyle.setFont(font); + + //生成第一行表头 + List fieldsMappingFirstRow = (List) param.get("fieldsName"); + SXSSFRow firstRow = sheet.createRow(0); + for (int i = 0; i < fieldsMappingFirstRow.size(); i++) { + //列宽 + sheet.setColumnWidth(i,15*256); + SXSSFCell cell = firstRow.createCell(i); + cell.setCellStyle(FirstRowCellStyle); + cell.setCellValue(fieldsMappingFirstRow.get(i)); + } + + + //表头以外的cell格式 + CellStyle rowCellStyle = workbook.createCellStyle(); + rowCellStyle.setAlignment(HorizontalAlignment.CENTER); + if(param.get("data") != null){ + //查询所有的字段映射数据 + List list = (List) param.get("data"); + List fields = (List) param.get("fields"); + for(int a = 0;a < list.size();a++){ + SXSSFRow row = sheet.createRow(a+1); + for (int i = 0; i + + + + \ No newline at end of file -- Gitee