浏览代码

添加模板下载

suntianwu 3 年之前
父节点
当前提交
67bc06b296

+ 24 - 0
src/main/java/com/iden/bms/controller/CameraController.java

@@ -189,6 +189,30 @@ public class CameraController {
         }
     }
 
+    /**
+     * 下载模板
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "下载模板")
+    @GetMapping({"/downloadFormwork"})
+    @LogAnnotation(
+            type = OperateType.EXPORT,
+            moduleName = "下载模板",
+            description = "下载模板"
+    )
+    public void downloadFormwork(HttpServletRequest request,@RequestHeader(name = "token", required = true) String token,
+                              HttpServletResponse response) {
+        try {
+            UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            this.cameraService.downloadFormwork(loginUser,response);
+        } catch (BDException e) {
+            log.error("下载模板出现异常",e);
+        } catch (Exception e) {
+            log.error("小区管理: 下载模板出现异常",e);
+        }
+    }
+
     @ApiOperation(value = "导入Excel")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(paramType = "query", name = "type", value = "摄像头类型,1摄像机,2抓拍设备"),

+ 24 - 0
src/main/java/com/iden/bms/controller/CommunityController.java

@@ -109,6 +109,30 @@ public class CommunityController {
         }
     }
 
+    /**
+     * 下载模板
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "下载模板")
+    @GetMapping({"/downloadFormwork"})
+    @LogAnnotation(
+            type = OperateType.EXPORT,
+            moduleName = "下载模板",
+            description = "下载模板"
+    )
+    public void downloadFormwork(HttpServletRequest request,@RequestHeader(name = "token", required = true) String token,
+                                 HttpServletResponse response) {
+        try {
+            UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            this.communityService.downloadFormwork(loginUser,response);
+        } catch (BDException e) {
+            log.error("下载模板出现异常",e);
+        } catch (Exception e) {
+            log.error("小区管理: 下载模板出现异常",e);
+        }
+    }
+
     /**
      * 导出列表
      * @param

+ 24 - 0
src/main/java/com/iden/bms/controller/PersonController.java

@@ -157,6 +157,30 @@ public class PersonController {
         }
     }
 
+    /**
+     * 下载模板
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "下载模板")
+    @GetMapping({"/downloadFormwork"})
+    @LogAnnotation(
+            type = OperateType.EXPORT,
+            moduleName = "下载模板",
+            description = "下载模板"
+    )
+    public void downloadFormwork(HttpServletRequest request,@RequestHeader(name = "token", required = true) String token,
+                                 HttpServletResponse response) {
+        try {
+            UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            this.personService.downloadFormwork(loginUser,response);
+        } catch (BDException e) {
+            log.error("下载模板出现异常",e);
+        } catch (Exception e) {
+            log.error("小区管理: 下载模板出现异常",e);
+        }
+    }
+
     @ApiOperation(value = "导入Excel")
     @PostMapping(value = "/importWithExcel",  headers = "content-type=multipart/form-data")
     public Result<Object> importWithExcel( HttpServletRequest request, @RequestHeader(value = "token") String token,

+ 40 - 0
src/main/java/com/iden/bms/service/CameraService.java

@@ -235,6 +235,46 @@ public class CameraService {
         }
     }
 
+    public void downloadFormwork(UserLoginedConvertVO loginUser, HttpServletResponse response)  throws Exception {
+        List<CameraVO> records = new ArrayList<>();
+        InputStream excelTemplateIs = null;
+        try {
+            response.reset(); // 非常重要
+            response.addHeader("Access-Control-Allow-Origin",  "*");
+            response.setContentType("application/vnd.ms-excel");
+            response.setCharacterEncoding("utf-8");
+            final String fileName = URLEncoder.encode("Camera", "UTF-8");
+            response.setHeader("Content-disposition", "attachment;filename=" + fileName +"_"+ System.currentTimeMillis() + ".xlsx");
+
+            // 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
+            // {} 代表普通变量 {.} 代表是list的变量
+
+            excelTemplateIs = this.getClass().getResourceAsStream("/static/template/export/IdenCameraExportTemplate.xlsx");
+
+            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(excelTemplateIs).build();
+            WriteSheet writeSheet = EasyExcel.writerSheet("摄像头表").build();
+            // 这里注意 入参用了forceNewRow 代表在写入list的时候不管list下面有没有空行 都会创建一行,然后下面的数据往后移动。默认 是false,会直接使用下一行,如果没有则创建。
+            // forceNewRow 如果设置了true,有个缺点 就是他会把所有的数据都放到内存了,所以慎用
+            // 简单的说 如果你的模板有list,且list不是最后一行,下面还有数据需要填充 就必须设置 forceNewRow=true 但是这个就会把所有数据放到内存 会很耗内存
+            // 如果数据量大 list不是最后一行 参照另一个
+            FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.FALSE).build();
+            excelWriter.fill(records, fillConfig, writeSheet);
+
+            excelWriter.finish();
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if(excelTemplateIs != null){
+                try {
+                    excelTemplateIs.close();
+                } catch (IOException ioe) {
+                    ioe.printStackTrace();
+                }
+            }
+        }
+    }
+
     /**
      * 导入
      * @param multipartFile

+ 41 - 0
src/main/java/com/iden/bms/service/CommunityService.java

@@ -162,6 +162,47 @@ public class CommunityService {
         }
     }
 
+    public void downloadFormwork(UserLoginedConvertVO loginUser, HttpServletResponse response)  throws Exception {
+
+        List<CommunityVO> records = new ArrayList<>();
+        InputStream excelTemplateIs = null;
+        try {
+            response.reset(); // 非常重要
+            response.addHeader("Access-Control-Allow-Origin",  "*");
+            response.setContentType("application/vnd.ms-excel");
+            response.setCharacterEncoding("utf-8");
+            final String fileName = URLEncoder.encode("Community", "UTF-8");
+            response.setHeader("Content-disposition", "attachment;filename=" + fileName + "_" + System.currentTimeMillis() + ".xlsx");
+
+            // 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
+            // {} 代表普通变量 {.} 代表是list的变量
+
+            excelTemplateIs = this.getClass().getResourceAsStream("/static/template/export/IdenCommunityExportTemplate.xlsx");
+
+            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(excelTemplateIs).build();
+            WriteSheet writeSheet = EasyExcel.writerSheet("小区表").build();
+            // 这里注意 入参用了forceNewRow 代表在写入list的时候不管list下面有没有空行 都会创建一行,然后下面的数据往后移动。默认 是false,会直接使用下一行,如果没有则创建。
+            // forceNewRow 如果设置了true,有个缺点 就是他会把所有的数据都放到内存了,所以慎用
+            // 简单的说 如果你的模板有list,且list不是最后一行,下面还有数据需要填充 就必须设置 forceNewRow=true 但是这个就会把所有数据放到内存 会很耗内存
+            // 如果数据量大 list不是最后一行 参照另一个
+            FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.FALSE).build();
+            excelWriter.fill(records, fillConfig, writeSheet);
+
+            excelWriter.finish();
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if(excelTemplateIs != null){
+                try {
+                    excelTemplateIs.close();
+                } catch (IOException ioe) {
+                    ioe.printStackTrace();
+                }
+            }
+        }
+    }
+
     /**
      * 导入
      * @param multipartFile

+ 18 - 0
src/main/java/com/iden/bms/service/PersonService.java

@@ -188,6 +188,24 @@ public class PersonService {
             return results;
     }
 
+    public void downloadFormwork(UserLoginedConvertVO loginUser, HttpServletResponse response)  throws Exception {
+        List<PersonExcelVO> records = new ArrayList<>();
+
+        try {
+            response.reset(); // 非常重要
+            response.addHeader("Access-Control-Allow-Origin",  "*");
+            response.setContentType("application/vnd.ms-excel");
+            response.setCharacterEncoding("utf-8");
+            final String fileName = URLEncoder.encode("Person", "UTF-8");
+            response.setHeader("Content-disposition", "attachment;filename=" + fileName + "_" + System.currentTimeMillis() + ".xlsx");
+
+            EasyExcel.write(response.getOutputStream(), PersonExcelVO.class).sheet("人员表").registerWriteHandler(new RowWriteHandler()).doWrite(records);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     public void exportToExcel(String type, String nameOrCred, String district, String subdistrict, Long communityId, Long crowdId, String address, String gender, String populationType, UserLoginedConvertVO loginUser, HttpServletResponse response)  throws Exception {
         QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().like(IdenPerson::getType,type)

+ 4 - 0
src/main/java/com/iden/common/exceltool/RowWriteHandler.java

@@ -28,6 +28,10 @@ public class RowWriteHandler implements CellWriteHandler {
         CellStyle cellStyle = workbook.createCellStyle();
         DataFormat dataFormat = workbook.createDataFormat();
         cellStyle.setDataFormat(dataFormat.getFormat("@"));
+        cellStyle.setBorderBottom(BorderStyle.THIN);
+        cellStyle.setBorderTop(BorderStyle.THIN);
+        cellStyle.setBorderLeft(BorderStyle.THIN);
+        cellStyle.setBorderRight(BorderStyle.THIN);
         cell.setCellStyle(cellStyle);
 
     }