d95d2f4949ae7c1d09fb3040fba5aa0c9dc745db.svn-base 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. package cn.com.goldenwater.dcproj.utils.export.template;
  2. import cn.com.goldenwater.dcproj.dto.BisInspRsvrRgstrPcDto;
  3. import cn.com.goldenwater.dcproj.dto.BisInspRsvrRgstrPcDtoVo;
  4. import cn.com.goldenwater.dcproj.param.TypeExportParam;
  5. import cn.com.goldenwater.dcproj.service.BisInspRsvrRgstrService;
  6. import cn.com.goldenwater.dcproj.utils.export.CreateExcelHelper;
  7. import cn.com.goldenwater.dcproj.utils.export.ExcelFieldUtil;
  8. import cn.com.goldenwater.dcproj.utils.export.TableEnum;
  9. import com.github.pagehelper.PageInfo;
  10. import org.apache.poi.hssf.usermodel.HSSFRow;
  11. import org.apache.poi.hssf.usermodel.HSSFSheet;
  12. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  13. import org.apache.poi.ss.usermodel.Row;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.beans.factory.annotation.Value;
  16. import org.springframework.stereotype.Component;
  17. import java.io.ByteArrayOutputStream;
  18. import java.io.File;
  19. import java.io.FileInputStream;
  20. import java.io.IOException;
  21. import java.text.SimpleDateFormat;
  22. import java.util.ArrayList;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.Map;
  26. /**
  27. * <p>
  28. * 批量导出
  29. * </p>
  30. *
  31. * @author liyz
  32. * @date 2019/4/12 10:26
  33. **/
  34. @Component
  35. public class CreateSkExcelTemplate {
  36. private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  37. @Autowired
  38. private ExcelFieldUtil excelFieldUtil;
  39. @Autowired
  40. private CreateExcelHelper createExcelHelper;
  41. @Value("${export.templatePath}")
  42. private String templatePath;
  43. /**
  44. * 8.小水库督查情况Service
  45. */
  46. @Autowired
  47. private BisInspRsvrRgstrService bisInspRsvrRgstrService;
  48. @Autowired
  49. private CreateSkTablesByTemplate createSkTablesByTemplate;
  50. /**
  51. * 8.创建小水库督查情况表(合并)
  52. */
  53. public int createBisInspRsvrRgstrPcDtoExcel(TypeExportParam typeExportParam, ByteArrayOutputStream os) {
  54. // 一页查200条数据
  55. typeExportParam.setPageNum(0);
  56. typeExportParam.setPageSize(40000);
  57. PageInfo<BisInspRsvrRgstrPcDto> data = bisInspRsvrRgstrService.findPcPage(typeExportParam);
  58. FileInputStream fis = null;
  59. //导出
  60. try {
  61. // 加载模板
  62. fis = new FileInputStream(templatePath + File.separator + "sk-t8-q2.xls");
  63. HSSFWorkbook workBook = new HSSFWorkbook(fis);
  64. workBook.setSheetName(0, TableEnum.T8.getName());
  65. HSSFSheet sheet = workBook.getSheetAt(0);
  66. // 如果没有数据,则直接返回
  67. if (data.getList().size() != 0) {
  68. // 处理一下,加入5张表的数据
  69. int n = 0;
  70. List<Map<String, Object>> list = excelFieldUtil.getBisInspRsvrRgstrPcDtoTemplate(this.getBisVo(data.getList(), typeExportParam));
  71. for (int i = 0; i < list.size(); i++) {
  72. List<String> keys = new ArrayList<>();
  73. Row keyRow = sheet.getRow(4);
  74. for (int r = 0; r < keyRow.getPhysicalNumberOfCells(); r++) {
  75. if (!"".equals(keyRow.getCell(r).toString())) {
  76. keys.add(keyRow.getCell(r).toString());
  77. }
  78. }
  79. HSSFRow creRow = sheet.createRow(5 + i);
  80. Map<String, Object> map = list.get(i);
  81. for (int j = 0; j < keys.size(); j++) {
  82. Object val = map.get(keys.get(j));
  83. creRow.createCell(j).setCellValue(val == null ? "" : val.toString());
  84. }
  85. n = 5 + i;
  86. }
  87. int pages = data.getPages();
  88. // 如果超过一页
  89. if (pages > 1) {
  90. for (int p = 2; p <= pages; p++) {
  91. System.out.println("超过一页");
  92. }
  93. }
  94. }
  95. workBook.write(os);
  96. fis.close();
  97. os.flush();
  98. os.close();
  99. } catch (Exception e) {
  100. e.printStackTrace();
  101. } finally {
  102. if (fis != null) {
  103. try {
  104. fis.close();
  105. } catch (IOException e) {
  106. e.printStackTrace();
  107. }
  108. }
  109. if (os != null) {
  110. try {
  111. os.close();
  112. } catch (IOException e) {
  113. e.printStackTrace();
  114. }
  115. }
  116. }
  117. return 1;
  118. }
  119. public List<BisInspRsvrRgstrPcDtoVo> getBisVo(List<BisInspRsvrRgstrPcDto> dataList, TypeExportParam typeExportParam) {
  120. List<BisInspRsvrRgstrPcDtoVo> dataListVo = new ArrayList<>();
  121. dataList.forEach(x -> {
  122. BisInspRsvrRgstrPcDtoVo bisVo = new BisInspRsvrRgstrPcDtoVo();
  123. // 放入督查情况表
  124. bisVo.setBisInspRsvrRgstrPcDto(x);
  125. // 1.放入基础信息
  126. bisVo.setAttRsBaseCrrct(createSkTablesByTemplate.getAttRsBaseCrrctBy(x, typeExportParam));
  127. bisVo.setAttRsBase(createSkTablesByTemplate.getAttRsBaseBy(x));
  128. // 2.重点环节落实情况
  129. bisVo.setBisInspBaseExt(createSkTablesByTemplate.getBisInspBaseExtBy(x));
  130. // 3.责任人落实情况
  131. bisVo.setBisInspBasePresExt(createSkTablesByTemplate.getBisInspBasePresExtBy(x));
  132. // 4.水库工程实体和运行情况
  133. bisVo.setBisInspSafeExtManage(createSkTablesByTemplate.getBisInspSafeExtManageBy(x));
  134. // 5.走访情况
  135. // 6.省 市 县 其他
  136. String adCode;
  137. if (bisVo.getAttRsBaseCrrct() != null) {
  138. adCode = bisVo.getAttRsBaseCrrct().getAdmDiv();
  139. } else {
  140. adCode = bisVo.getAttRsBase().getAdmDiv();
  141. }
  142. HashMap map = createExcelHelper.getAdNames(adCode);
  143. bisVo.setHashMap(map);
  144. // 水库工程实体(新表)
  145. bisVo.setBisInspRsvrProject(createSkTablesByTemplate.getBisInspRsvrProjectBy(x));
  146. // 效益发挥情况 (新表)
  147. bisVo.setBisInspRsvrBenefits(createSkTablesByTemplate.getBisInspRsvrBenefitsBy(x));
  148. dataListVo.add(bisVo);
  149. });
  150. return dataListVo;
  151. }
  152. }