diff --git a/neuray-admin/pom.xml b/neuray-admin/pom.xml index 4652bbc956bb340827a12fd17e42f0219e21a913..73a1f1b6d5f87c72327d9e7b904b5464ae673bb5 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 953b1e7944faccba06246c302d83bb6e90976e11..e4cfdf5c6cd79e86b18fe9f1bb96a8978eb5fae5 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.*; /** @@ -144,5 +149,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 2a2b4d0c1d495a16b850498d6d593bca035a6eda..3c3f53a9953ff1139762e43bc94489fef54f64f4 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 f8a0d4114c913ffc66048053ea2b37c30f5fcc2f..1f2c9c94cd6ee520ed7fb8fef590f0bf141f1ba3 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,6 +2,7 @@ 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; @@ -18,8 +19,10 @@ public interface EngineParamService extends IService { PageUtils queryPage(Map params); Map queryTable(Map map); - void saveParam(Map map); + void saveParam(Map map); void updateParam(Map map); void deleteParam(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 9c3495615e974e6c3e913f7cff82af5fc6b5248a..3355edf155ce2a43d00864c05d2e1a32bbdd62d3 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 @@ -2,6 +2,7 @@ package com.gitee.neuray.security.modules.param.service.impl; import com.alibaba.fastjson.JSONObject; 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 com.gitee.neuray.security.modules.sys.entity.SysUserEntity; @@ -164,5 +165,19 @@ public class EngineParamServiceImpl extends ServiceImpl id = (List) map.get("ids"); engineParamDao.deleteParam(tableName,id); + } + @Override + public Map getExcelTitleById(String id) { + return engineItemDao.getExcelTitleById(id); + } + + @Override + public EngineItemEntity getTableNameById(String id) { + return engineItemDao.getTableNameById(id); + } + + @Override + public List 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 0000000000000000000000000000000000000000..7539516d14dd9c3205e9a531e5f420dee7f84264 --- /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