feat(文档拆分): 模版下载

This commit is contained in:
yjz
2023-10-16 23:37:24 +08:00
parent 2331ced608
commit ca6f5b78fe
3 changed files with 106 additions and 13 deletions
@@ -17,6 +17,8 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -45,7 +47,7 @@ public class DocumentSplitController {
/** /**
* 分页列表查询 * 分页列表查询
* *
* @return Result<IPage<DocumentSplitInfo>> * @return
*/ */
@AutoLog(value = "文档拆分-分页列表查询") @AutoLog(value = "文档拆分-分页列表查询")
@ApiOperation(value="文档拆分-分页列表查询", notes="文档拆分-分页列表查询") @ApiOperation(value="文档拆分-分页列表查询", notes="文档拆分-分页列表查询")
@@ -60,7 +62,7 @@ public class DocumentSplitController {
* 更改权限 * 更改权限
* *
* @param documentSplitInfo * @param documentSplitInfo
* @return Result<T> * @return
*/ */
@AutoLog(value = "文档拆分-更改权限") @AutoLog(value = "文档拆分-更改权限")
@ApiOperation(value="文档拆分-更改权限", notes="文档拆分-更改权限") @ApiOperation(value="文档拆分-更改权限", notes="文档拆分-更改权限")
@@ -74,7 +76,7 @@ public class DocumentSplitController {
* 拆分 * 拆分
* *
* @param sarFileSplitInfoEO * @param sarFileSplitInfoEO
* @return Result<T> * @return
*/ */
@AutoLog(value = "文档拆分-拆分") @AutoLog(value = "文档拆分-拆分")
@ApiOperation(value="文档拆分-拆分", notes="文档拆分-拆分") @ApiOperation(value="文档拆分-拆分", notes="文档拆分-拆分")
@@ -87,7 +89,7 @@ public class DocumentSplitController {
/** /**
* 通过id删除 * 通过id删除
* *
* @return Result<T> * @return
*/ */
@AutoLog(value = "文档拆分-通过id删除") @AutoLog(value = "文档拆分-通过id删除")
@ApiOperation(value="文档拆分-通过id删除", notes="文档拆分-通过id删除") @ApiOperation(value="文档拆分-通过id删除", notes="文档拆分-通过id删除")
@@ -100,7 +102,7 @@ public class DocumentSplitController {
/** /**
* 批量删除 * 批量删除
* *
* @return Result<T> * @return
*/ */
@AutoLog(value = "文档拆分-批量删除") @AutoLog(value = "文档拆分-批量删除")
@ApiOperation(value="文档拆分-批量删除", notes="文档拆分-批量删除") @ApiOperation(value="文档拆分-批量删除", notes="文档拆分-批量删除")
@@ -113,7 +115,7 @@ public class DocumentSplitController {
/** /**
* 文档拆分详情-分页列表查询 * 文档拆分详情-分页列表查询
* @param parameter * @param parameter
* @return Result<IPage<Map<String,Object>>> * @return
*/ */
@AutoLog(value = "文档拆分详情-分页列表查询") @AutoLog(value = "文档拆分详情-分页列表查询")
@ApiOperation(value = "文档拆分详情-分页列表查询") @ApiOperation(value = "文档拆分详情-分页列表查询")
@@ -125,7 +127,7 @@ public class DocumentSplitController {
/** /**
* 文档拆分详情-根据id查询 * 文档拆分详情-根据id查询
* @param id * @param id
* @return Result<IPage<Map<String,Object>>> * @return
*/ */
@AutoLog(value = "文档拆分详情-根据id查询") @AutoLog(value = "文档拆分详情-根据id查询")
@ApiOperation(value = "文档拆分详情-根据id查询") @ApiOperation(value = "文档拆分详情-根据id查询")
@@ -137,7 +139,7 @@ public class DocumentSplitController {
/** /**
* 文档拆分详情-条目信息列表 * 文档拆分详情-条目信息列表
* @param id * @param id
* @return Result<IPage<Map<String,Object>>> * @return
*/ */
@AutoLog(value = "文档拆分详情-条目信息列表") @AutoLog(value = "文档拆分详情-条目信息列表")
@ApiOperation(value = "文档拆分详情-条目信息列表") @ApiOperation(value = "文档拆分详情-条目信息列表")
@@ -150,7 +152,7 @@ public class DocumentSplitController {
/** /**
* 文档拆分详情-编辑 * 文档拆分详情-编辑
* @param parameter * @param parameter
* @return Result<IPage<Map<String,Object>>> * @return
*/ */
@AutoLog(value = "文档拆分详情-编辑") @AutoLog(value = "文档拆分详情-编辑")
@ApiOperation(value = "文档拆分详情-编辑") @ApiOperation(value = "文档拆分详情-编辑")
@@ -163,7 +165,7 @@ public class DocumentSplitController {
/** /**
* 文档拆分详情-批量编辑 * 文档拆分详情-批量编辑
* @param parameter * @param parameter
* @return Result<IPage<Map<String,Object>>> * @return
*/ */
@AutoLog(value = "文档拆分详情-批量编辑") @AutoLog(value = "文档拆分详情-批量编辑")
@ApiOperation(value = "文档拆分详情-批量编辑") @ApiOperation(value = "文档拆分详情-批量编辑")
@@ -176,7 +178,7 @@ public class DocumentSplitController {
/** /**
* 文档拆分详情-删除 * 文档拆分详情-删除
* *
* @return Result<T> * @return
*/ */
@AutoLog(value = "文档拆分详情-删除") @AutoLog(value = "文档拆分详情-删除")
@ApiOperation(value="文档拆分详情-删除", notes="文档拆分详情-删除") @ApiOperation(value="文档拆分详情-删除", notes="文档拆分详情-删除")
@@ -189,7 +191,7 @@ public class DocumentSplitController {
/** /**
* 文档拆分详情-批量删除 * 文档拆分详情-批量删除
* *
* @return Result<T> * @return
*/ */
@AutoLog(value = "文档拆分详情-批量删除") @AutoLog(value = "文档拆分详情-批量删除")
@ApiOperation(value="文档拆分详情-批量删除", notes="文档拆分详情-批量删除") @ApiOperation(value="文档拆分详情-批量删除", notes="文档拆分详情-批量删除")
@@ -202,7 +204,7 @@ public class DocumentSplitController {
/** /**
* 文档拆分详情-合并条款 * 文档拆分详情-合并条款
* @param parameter * @param parameter
* @return Result<IPage<Map<String,Object>>> * @return
*/ */
@AutoLog(value = "文档拆分详情-合并条款") @AutoLog(value = "文档拆分详情-合并条款")
@ApiOperation(value = "文档拆分详情-合并条款") @ApiOperation(value = "文档拆分详情-合并条款")
@@ -238,4 +240,16 @@ public class DocumentSplitController {
return Result.OK("批量复制成功!"); return Result.OK("批量复制成功!");
} }
/**
* 文档拆分详情-模板下载
* @param request
* @param response
*/
@AutoLog(value = "文档拆分详情-模板下载")
@ApiOperation(value = "文档拆分详情-模板下载")
@GetMapping("/downloadImportTemplate")
public void downloadImportTemplate(HttpServletRequest request, HttpServletResponse response) {
documentSplitService.downloadImportTemplate(request, response);
}
} }
@@ -5,6 +5,8 @@ import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo;
import com.jero.modules.split.entity.SarFileSplitInfoEO; import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.entity.SarFileSplitItemsValEO; import com.jero.modules.split.entity.SarFileSplitItemsValEO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -105,4 +107,11 @@ public interface IDocumentSplitService {
* @return * @return
*/ */
Map<String,Object> queryDocumentSplitDetailById(String id); Map<String,Object> queryDocumentSplitDetailById(String id);
/**
* 文档拆分详情-模板下载
* @param request
* @param response
*/
void downloadImportTemplate(HttpServletRequest request, HttpServletResponse response);
} }
@@ -33,16 +33,27 @@ import com.jero.modules.tag.entity.LawsTag;
import com.jero.modules.tag.enums.LawsFieldTypeEnum; import com.jero.modules.tag.enums.LawsFieldTypeEnum;
import com.jero.modules.tag.enums.TableNameEnum; import com.jero.modules.tag.enums.TableNameEnum;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static java.net.URLEncoder.encode;
/** /**
* @Author: yjz * @Author: yjz
* @Date: 2023/10/12/23:03 * @Date: 2023/10/12/23:03
@@ -409,6 +420,65 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
return documentSplitMapper.queryLawsDocumentSplitById(id); return documentSplitMapper.queryLawsDocumentSplitById(id);
} }
@Override
public void downloadImportTemplate(HttpServletRequest request, HttpServletResponse response) {
try (Workbook workbook = new XSSFWorkbook()){
// sheet页
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("拆分导入模版");
// 列宽
sheet.setDefaultColumnWidth(16);
// 创建第一行
Row headerRow = sheet.createRow(0);
// 创建表头信息
String[] titleArr = {"条文号", "条文标题", "条文内容"};
//样式
CellStyle cellStyle = workbook.createCellStyle();
// 水平、垂直居中
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
// 问本格式
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("@"));
for (int i = 0; i < titleArr.length; i++) {
// 创建列
Cell cell = headerRow.createCell(i);
cell.setCellValue(titleArr[i]);
cell.setCellStyle(cellStyle);
}
// 创建第二行
Row headerRowTwo = sheet.createRow(1);
// 填充说明
Cell cell = headerRowTwo.createCell(0);
String explain = "模版说明:\n" +
"1. 条款号/条款标题/条文内容不能为空\n" +
"2. 仅支持zip格式文件夹";
CellStyle cellStyleTwo = workbook.createCellStyle();
cellStyleTwo.setWrapText(true);
cell.setCellStyle(cellStyleTwo);
// 行高
headerRowTwo.setHeight((short) 800);
cell.setCellValue(new XSSFRichTextString(explain));
// 合并单元格(参数说明:起始行,结束行,起始列,结束列)
CellRangeAddress region = new CellRangeAddress(1, 1, 0, 2);
sheet.addMergedRegion(region);
// 返回流
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment;fileName=" +
encode("拆分导入模版下载.xlsx", "UTF-8"));
OutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.flush();
outputStream.close();
}catch (Exception e){
throw new JeroBootException("下载文件失败!");
}
}
private void manageData(Map<String, Object> resultMap, StringBuilder fieldsBuilder, StringBuilder valuesBuilder) { private void manageData(Map<String, Object> resultMap, StringBuilder fieldsBuilder, StringBuilder valuesBuilder) {
// 所有key(字段名) // 所有key(字段名)
resultMap.forEach((k, v) -> { resultMap.forEach((k, v) -> {