diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/warn/controller/LawsWarnController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/warn/controller/LawsWarnController.java index 90f86844f..e74043811 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/warn/controller/LawsWarnController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/warn/controller/LawsWarnController.java @@ -8,12 +8,16 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import net.sf.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -46,4 +50,14 @@ public class LawsWarnController { JSONObject jsonResult = JSONObject.fromObject(ok); return jsonResult; } + + @ApiOperation(value = "导出excel") + @GetMapping(value = "/exportExcel") +// @RequiresPermissions("document:exportExcel") + public void exportExcel(@RequestParam Map map, + HttpServletResponse response, + HttpServletRequest request){ + lawsWarnService.exportExcel(map,response,request); + } + } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/warn/service/LawsWarnService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/warn/service/LawsWarnService.java index fabab41bc..21215861f 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/warn/service/LawsWarnService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/warn/service/LawsWarnService.java @@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.constant.enums.CutEnum; import com.jero.common.constant.enums.ModuleEnum; +import com.jero.common.exception.JeroBootException; import com.jero.generater.modules.online.cgform.entity.OnlCgformField; import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl; +import com.jero.modules.document.enums.FieldTypeEnum; import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper; import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl; import com.jero.modules.system.entity.SysCategory; @@ -13,11 +15,24 @@ import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.service.impl.SysCategoryServiceImpl; import com.jero.modules.system.service.impl.SysDictItemServiceImpl; import com.jero.modules.system.util.StringUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.OutputStream; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -59,8 +74,7 @@ public class LawsWarnService { fieldListNew.add(fieldTemp); } } - parameter.remove("warnTime"); - //封装查询条件(包含高级搜索) + //封装查询条件 String condition = bussDocumentLibraryEOService.getConditionStr(parameter); int pageNo = Integer.parseInt(parameter.get("pageNo").toString()); int pageSize = Integer.parseInt(parameter.get("pageSize").toString()); @@ -92,4 +106,148 @@ public class LawsWarnService { } return infoPage; } + + public void exportExcel(Map map, HttpServletResponse response, HttpServletRequest request) { + String cut = (String) map.get("cut"); + String flag = String.valueOf(map.get("flag")); + List onlCgformFieldList = onlCgformFieldService.getFieldList(ModuleEnum.DOCUMENT_LIBRARY.getValue()); + onlCgformFieldList = onlCgformFieldList.stream().filter(e -> !"id".equals(e.getDbFieldName()) + && !"create_by".equals(e.getDbFieldName()) + && !"create_time".equals(e.getDbFieldName()) + && !"update_by".equals(e.getDbFieldName()) + && !"update_time".equals(e.getDbFieldName()) + && !"sys_org_code".equals(e.getDbFieldName())).collect(Collectors.toList()); + //要查询的字段 + String fieldQuery = "id,serial_number,title,title_en,state,region,technology_territory,xin1_che1_xing2_shi2_shi1_ri4_qi1,implement_time"; + List fieldList = Arrays.asList(fieldQuery.split(",")); + //封装查询条件(包含高级搜索) + String condition = bussDocumentLibraryEOService.getConditionStr(map); + List> datas = bussDocumentLibraryEOMapper.getInfoList(" " + StringUtils.join(fieldList, ","), condition); + //部分导出 + String partId = (String) map.get("id"); + if (StringUtils.isNotBlank(partId)) { + //部门导出的数据 + datas = datas.stream().filter(entry -> partId.contains((String) entry.get("id"))).collect(Collectors.toList()); + } + OutputStream os = null; + Workbook workbook = new XSSFWorkbook(); + //创建工作表对象 + Sheet sheet = workbook.createSheet(); + String dateName = ""; + + // 创建头部 + String header = ""; + if(CutEnum.CN.getValue().equals(cut)){ + header = "编号,标题,状态,适用地区,技术领域,"; + if("0".equals(flag)){ + dateName = "新车型实施日期"; + }else{ + dateName = "在产车实施日期"; + } + }else{ + header = "Number,Title,Status,region,Technical Field,"; + if("0".equals(flag)){ + dateName = "New Type Execution Date"; + }else{ + dateName = "New Vehicle Execution Date"; + } + } + header = header +dateName; + + bussDocumentLibraryEOService.createHeader(workbook, sheet, header); + List onlCgformFieldListTemp = new LinkedList<>(); + List numberOnlCgformField = onlCgformFieldList.stream().filter(e -> "serial_number".equals(e.getDbFieldName())).collect(Collectors.toList()); + List titleOnlCgformField = onlCgformFieldList.stream().filter(e -> "title".equals(e.getDbFieldName())).collect(Collectors.toList()); + List titleEnOnlCgformField = onlCgformFieldList.stream().filter(e -> "title_en".equals(e.getDbFieldName())).collect(Collectors.toList()); + List stateOnlCgformField = onlCgformFieldList.stream().filter(e -> "state".equals(e.getDbFieldName())).collect(Collectors.toList()); + List regionOnlCgformField = onlCgformFieldList.stream().filter(e -> "region".equals(e.getDbFieldName())).collect(Collectors.toList()); + List technologyOnlCgformField = onlCgformFieldList.stream().filter(e -> "technology_territory".equals(e.getDbFieldName())).collect(Collectors.toList()); + List newCarOnlCgformField = onlCgformFieldList.stream().filter(e -> "xin1_che1_xing2_shi2_shi1_ri4_qi1".equals(e.getDbFieldName())).collect(Collectors.toList()); + List implementOnlCgformField = onlCgformFieldList.stream().filter(e -> "implement_time".equals(e.getDbFieldName())).collect(Collectors.toList()); + onlCgformFieldListTemp.addAll(numberOnlCgformField); + onlCgformFieldListTemp.addAll(titleOnlCgformField); + onlCgformFieldListTemp.addAll(titleEnOnlCgformField); + onlCgformFieldListTemp.addAll(stateOnlCgformField); + onlCgformFieldListTemp.addAll(regionOnlCgformField); + onlCgformFieldListTemp.addAll(technologyOnlCgformField); + onlCgformFieldListTemp.addAll(newCarOnlCgformField); + onlCgformFieldListTemp.addAll(implementOnlCgformField); + // 创建数据 + createDatas(workbook, sheet, datas,onlCgformFieldListTemp, cut,flag); + try { + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (IOException e) { + if(CutEnum.CN.getValue().equals(cut)){ + throw new JeroBootException("导出失败"); + }else{ + throw new JeroBootException("Export failure"); + } + } + } + + void createDatas(Workbook workbook, Sheet sheet, List> datas,List onlCgformFieldListTemp, String cut,String flag){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + //数据字典 + List sysDictItems = sysDictItemServiceImpl.selectItemsAll(); + //树形数据字典 + List categoryList = sysCategoryService.list(); + + //过滤出树形字段 + List treeFieldList = onlCgformFieldListTemp.stream() + .filter(e -> FieldTypeEnum.TREE.getValue().equals(e.getFieldShowType())) + .collect(Collectors.toList()); + //下拉单选,多选 + List pullFieldList = onlCgformFieldListTemp.stream() + .filter(e -> FieldTypeEnum.PULL_SINGLE.getValue().equals(e.getFieldShowType()) || FieldTypeEnum.PULL_MORE.getValue().equals(e.getFieldShowType())) + .collect(Collectors.toList()); + + int i = 0; + for (Map data : datas) { + if(CutEnum.CN.getValue().equals(cut)){ + data.remove("title_en"); + }else{ + data.remove("title"); + } + if("0".equals(flag)){ + data.remove("implement_time"); + }else{ + data.remove("xin1_che1_xing2_shi2_shi1_ri4_qi1"); + } + List onlCgformFieldList = new LinkedList<>(); + for (Map.Entry entry : data.entrySet()) { + List collect = onlCgformFieldListTemp.stream().filter(e -> e.getDbFieldName().equals(entry.getKey())).collect(Collectors.toList()); + onlCgformFieldList.addAll(collect); + //下拉选处理数据字典 + bussDocumentLibraryEOService.dictItem(sysDictItems, entry, cut, pullFieldList,null); + //处理树形数据字典 + bussDocumentLibraryEOService.treeDictItem(categoryList, entry, treeFieldList, cut,null); + } + + Row row = sheet.createRow(i + 1); + i++; + int sheetNum = 0; + + for (OnlCgformField onlCgformField : onlCgformFieldList) { + String value = ""; + //时间类型 + if (FieldTypeEnum.DATE_SINGLE.getValue().equals(onlCgformField.getFieldShowType())) { + if (ObjectUtils.isNotEmpty(data.get(onlCgformField.getDbFieldName()))) { + value = sdf.format(data.get(onlCgformField.getDbFieldName())); + } + } else { + value = StringUtils.valueOf(data.get(onlCgformField.getDbFieldName())); + } + if("null".equals(value)){ + value = ""; + } + row.createCell(sheetNum).setCellValue(value); + sheetNum++; + } + } + + } }