diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/controller/BussDocumentLibraryEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/controller/BussDocumentLibraryEOController.java index 04bbc602b..b652b02c8 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/controller/BussDocumentLibraryEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/controller/BussDocumentLibraryEOController.java @@ -409,60 +409,8 @@ public class BussDocumentLibraryEOController extends JeroController map, HttpServletResponse response, HttpServletRequest request) throws Exception { + bussDocumentLibraryEOService.exportTemplate(map,response,request); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/enums/FieldTypeEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/enums/FieldTypeEnum.java index 21f309380..9868a1b7f 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/enums/FieldTypeEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/enums/FieldTypeEnum.java @@ -6,11 +6,23 @@ package com.jero.modules.document.enums; * @auth zhn */ public enum FieldTypeEnum { - TEXT("输入框","text"), - LIST("下拉单选","list"), - LIST_MULTI("下拉多选","list_multi"), - FILE("文件","file"), - DATE("日期","date"); +// TEXT("输入框","text"), +// LIST("下拉单选","list"), +// LIST_MULTI("下拉多选","list_multi"), +// FILE("文件","file"), +// DATE("日期","date"); + //属性类型 1输入框(字符串),2输入框(数字),3单选下拉框,4多选下拉框,5单日期选择,6多日期选择,7文件,8文本框,9人员选择,10标准选择 + TEXT_STRING("输入框(字符串)","1"), + TEXT_NUMBER("输入框(数字)","2"), + PULL_SINGLE("单选下拉框","3"), + PULL_MORE("多选下拉框","4"), + DATE_SINGLE("单日期选择","5"), + DATE_MORE("多日期选择","6"), + FILE("文件","7"), + TEXT("文本框","8"), + PERSON("人员选择","9"), + STANDARD("标准选择","10"); + String name; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/IBussDocumentLibraryEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/IBussDocumentLibraryEOService.java index 0fbde3232..f90b87d8b 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/IBussDocumentLibraryEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/IBussDocumentLibraryEOService.java @@ -140,7 +140,12 @@ public interface IBussDocumentLibraryEOService extends IService map,HttpServletResponse response, HttpServletRequest request); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java index dd557d68d..730e69a13 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java @@ -1,6 +1,7 @@ package com.jero.modules.document.service.impl; import cn.hutool.core.util.ZipUtil; +import com.aliyuncs.utils.IOUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -30,10 +31,16 @@ import com.jero.modules.tag.entity.OnlCgformArea; import com.jero.modules.tag.service.impl.OnlCgformAreaServiceImpl; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; @@ -50,6 +57,7 @@ import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.UUID; @@ -83,6 +91,9 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl onlCgformFieldList = fieldList.stream() - .filter(e -> FieldTypeEnum.LIST.getValue().equals(e.getFieldShowType()) - || FieldTypeEnum.LIST_MULTI.getValue().equals(e.getFieldShowType())) + .filter(e -> FieldTypeEnum.PULL_SINGLE.getValue().equals(e.getFieldShowType()) + || FieldTypeEnum.PULL_MORE.getValue().equals(e.getFieldShowType())) .collect(Collectors.toList()); //下拉选字段 List fieldPullList = onlCgformFieldList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList()); @@ -310,7 +321,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fieldList = onlCgformFieldService.getFieldList(ModuleEnum.DOCUMENT_LIBRARY.getValue()); //时间类型字段 - List fieldDateList = fieldList.stream().filter(e -> FieldTypeEnum.DATE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList()); + List fieldDateList = fieldList.stream().filter(e -> FieldTypeEnum.DATE_SINGLE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList()); //文件类型字段 List fieldFileList = fieldList.stream().filter(e -> FieldTypeEnum.FILE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList()); String mustFields = "id,create_by,create_time,update_by,update_time,sys_org_code"; @@ -457,14 +468,14 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fieldList = onlCgformFieldService.getFieldList(ModuleEnum.DOCUMENT_LIBRARY.getValue()); //时间类型字段 List fieldDateList = fieldList.stream() - .filter(e -> FieldTypeEnum.DATE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList()); + .filter(e -> FieldTypeEnum.DATE_SINGLE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList()); //文件类型字段 List fieldFileList = fieldList.stream() .filter(e -> FieldTypeEnum.FILE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList()); //下拉单选或下拉多选 List fieldPullList = fieldList.stream() - .filter(e -> FieldTypeEnum.LIST.getValue().equals(e.getFieldShowType()) - || FieldTypeEnum.LIST_MULTI.getValue().equals(e.getFieldShowType())).collect(Collectors.toList()); + .filter(e -> FieldTypeEnum.PULL_SINGLE.getValue().equals(e.getFieldShowType()) + || FieldTypeEnum.PULL_MORE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList()); String id = (String) map.get("id"); //通过id查询数据 @@ -822,8 +833,8 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl= '" + value.split(",")[0] + "'" @@ -1106,8 +1117,118 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl map,HttpServletResponse response, HttpServletRequest request) { + OutputStream os = null; + OutputStream excelOS = null; + HSSFWorkbook workbook = new HSSFWorkbook(); + String fileOriName = "导入模板"; + String filePath = uploadpath + "/" + fileOriName; + try{ + //创建临时文件夹 + File nowFile = new File(filePath); + if (nowFile.exists()){ + nowFile.delete(); + } + nowFile.mkdirs(); + String fileName = "导入模板.xls"; + HSSFSheet sheetItems = workbook.createSheet("模板"); + sheetItems.setDefaultColumnWidth(16); + HSSFCellStyle cellStyle =workbook.createCellStyle(); + cellStyle.setWrapText(true); + cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + Row rowHeader = sheetItems.createRow(0);//开始创建标题行 + + getWorkbookTitle((String)map.get("cut")); + String exportFieldName = "标准编号,标题,发布时间"; + + if (StringUtils.isNotBlank(exportFieldName)) { + String[] headerArr = exportFieldName.split(","); + for (int i=0;i < headerArr.length; i++) { + rowHeader.createCell(i).setCellValue(headerArr[i]); + } + } + String repFileName = fileName.replaceAll("/","_"); + excelOS = new FileOutputStream(filePath + "/" + repFileName); + response.setHeader("Content-Disposition", + "attachment; filename=\""+ fileOriName+".zip"); + response.setContentType("application/force-download"); + response.flushBuffer(); + os = response.getOutputStream(); + workbook.write(excelOS); + excelOS.flush(); + excelOS.close(); + ZipUtil.zip(filePath,filePath+".zip"); + FileInputStream fis = new FileInputStream(filePath+".zip"); + int len = 0; + while ((len = fis.read()) != -1) { + os.write(len); + } + os.flush(); + os.close(); // 后开先关 + fis.close(); // 先开后关 + } catch (Exception e) { + throw new JeroBootException("下载文件失败,请重试"); + } finally { + IOUtils.closeQuietly(os); + IOUtils.closeQuietly(excelOS); + } + + } + + /** + * 获取模板下载的表头 + * @return + */ + private String getWorkbookTitle(String cut){ + + List> addForm = getAddForm(ModuleEnum.DOCUMENT_LIBRARY.getValue(), cut); + StringBuilder sb = new StringBuilder(); + List multipleList = new LinkedList<>(); + List singleList = new LinkedList<>(); + List fileList = new LinkedList<>(); + for (Map map : addForm) { + if("0".equals(map.get("field_must_input"))){ + sb.append("*" + map.get("db_field_txt")+","); + }else{ + sb.append(map.get("db_field_txt")+","); + } + //多选字段 +// if(FieldTypeEnum.PULL_MORE.getValue().equals(map.get("field_show_type"))){ +// multipleList.add((String) map.get("db_field_txt")); +// }else if(FieldTypeEnum.PULL_SINGLE.getValue().equals(map.get("field_show_type"))){ +// //单选字段 +// singleList.add((String) map.get("db_field_txt")); +// }else if(FieldTypeEnum.FILE.getValue().equals(map.get("field_show_type"))){ +// //文件字段 +// fileList.add((String) map.get("db_field_txt")); +// }else if(FieldTypeEnum.0000.getValue().equals(map.get("field_show_type"))){ +// //数字输入框字段 +// fileList.add((String) map.get("db_field_txt")); +// }else if(FieldTypeEnum.0000.getValue().equals(map.get("field_show_type"))){ +// //汉字输入框字段 +// fileList.add((String) map.get("db_field_txt")); +// }else if(FieldTypeEnum.0000.getValue().equals(map.get("field_show_type"))){ +// //单选日期字段 +// fileList.add((String) map.get("db_field_txt")); +// }else if(FieldTypeEnum.000.getValue().equals(map.get("field_show_type"))){ +// //多选日期字段 +// fileList.add((String) map.get("db_field_txt")); +// } + } + String title = sb.substring(0, sb.length() - 1); + + //第二行 + StringBuilder sbTwo = new StringBuilder(); + sbTwo.append("填写说明\n"+"1.所有带*号的字段必须填写"); + + return null; }