package cn.com.goldenwater.dcproj.utils.export.template; import cn.com.goldenwater.dcproj.dto.BisInspRsvrRgstrPcDto; import cn.com.goldenwater.dcproj.dto.BisInspRsvrRgstrPcDtoVo; import cn.com.goldenwater.dcproj.param.TypeExportParam; import cn.com.goldenwater.dcproj.service.BisInspRsvrRgstrService; import cn.com.goldenwater.dcproj.utils.export.CreateExcelHelper; import cn.com.goldenwater.dcproj.utils.export.ExcelFieldUtil; import cn.com.goldenwater.dcproj.utils.export.TableEnum; import com.github.pagehelper.PageInfo; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** *

* 批量导出 *

* * @author liyz * @date 2019/4/12 10:26 **/ @Component public class CreateSkExcelTemplate { private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Autowired private ExcelFieldUtil excelFieldUtil; @Autowired private CreateExcelHelper createExcelHelper; @Value("${export.templatePath}") private String templatePath; /** * 8.小水库督查情况Service */ @Autowired private BisInspRsvrRgstrService bisInspRsvrRgstrService; @Autowired private CreateSkTablesByTemplate createSkTablesByTemplate; /** * 8.创建小水库督查情况表(合并) */ public int createBisInspRsvrRgstrPcDtoExcel(TypeExportParam typeExportParam, ByteArrayOutputStream os) { // 一页查200条数据 typeExportParam.setPageNum(0); typeExportParam.setPageSize(40000); PageInfo data = bisInspRsvrRgstrService.findPcPage(typeExportParam); FileInputStream fis = null; //导出 try { // 加载模板 fis = new FileInputStream(templatePath + File.separator + "sk-t8-q2.xls"); HSSFWorkbook workBook = new HSSFWorkbook(fis); workBook.setSheetName(0, TableEnum.T8.getName()); HSSFSheet sheet = workBook.getSheetAt(0); // 如果没有数据,则直接返回 if (data.getList().size() != 0) { // 处理一下,加入5张表的数据 int n = 0; List> list = excelFieldUtil.getBisInspRsvrRgstrPcDtoTemplate(this.getBisVo(data.getList(), typeExportParam)); for (int i = 0; i < list.size(); i++) { List keys = new ArrayList<>(); Row keyRow = sheet.getRow(4); for (int r = 0; r < keyRow.getPhysicalNumberOfCells(); r++) { if (!"".equals(keyRow.getCell(r).toString())) { keys.add(keyRow.getCell(r).toString()); } } HSSFRow creRow = sheet.createRow(5 + i); Map map = list.get(i); for (int j = 0; j < keys.size(); j++) { Object val = map.get(keys.get(j)); creRow.createCell(j).setCellValue(val == null ? "" : val.toString()); } n = 5 + i; } int pages = data.getPages(); // 如果超过一页 if (pages > 1) { for (int p = 2; p <= pages; p++) { System.out.println("超过一页"); } } } workBook.write(os); fis.close(); os.flush(); os.close(); } catch (Exception e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } if (os != null) { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } return 1; } public List getBisVo(List dataList, TypeExportParam typeExportParam) { List dataListVo = new ArrayList<>(); dataList.forEach(x -> { BisInspRsvrRgstrPcDtoVo bisVo = new BisInspRsvrRgstrPcDtoVo(); // 放入督查情况表 bisVo.setBisInspRsvrRgstrPcDto(x); // 1.放入基础信息 bisVo.setAttRsBaseCrrct(createSkTablesByTemplate.getAttRsBaseCrrctBy(x, typeExportParam)); bisVo.setAttRsBase(createSkTablesByTemplate.getAttRsBaseBy(x)); // 2.重点环节落实情况 bisVo.setBisInspBaseExt(createSkTablesByTemplate.getBisInspBaseExtBy(x)); // 3.责任人落实情况 bisVo.setBisInspBasePresExt(createSkTablesByTemplate.getBisInspBasePresExtBy(x)); // 4.水库工程实体和运行情况 bisVo.setBisInspSafeExtManage(createSkTablesByTemplate.getBisInspSafeExtManageBy(x)); // 5.走访情况 // 6.省 市 县 其他 String adCode; if (bisVo.getAttRsBaseCrrct() != null) { adCode = bisVo.getAttRsBaseCrrct().getAdmDiv(); } else { adCode = bisVo.getAttRsBase().getAdmDiv(); } HashMap map = createExcelHelper.getAdNames(adCode); bisVo.setHashMap(map); // 水库工程实体(新表) bisVo.setBisInspRsvrProject(createSkTablesByTemplate.getBisInspRsvrProjectBy(x)); // 效益发挥情况 (新表) bisVo.setBisInspRsvrBenefits(createSkTablesByTemplate.getBisInspRsvrBenefitsBy(x)); dataListVo.add(bisVo); }); return dataListVo; } }