b41daf26848bd8273dd456d32409863d5b7bdb52.svn-base 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. package cn.com.goldenwater.dcproj.utils.export;
  2. import cn.com.goldenwater.dcproj.dao.AttRsBaseCrrctDao;
  3. import cn.com.goldenwater.dcproj.dto.BisInspRsvrRgstrPcDto;
  4. import cn.com.goldenwater.dcproj.dto.BisInspRsvrRgstrPcDtoVo;
  5. import cn.com.goldenwater.dcproj.model.*;
  6. import cn.com.goldenwater.dcproj.param.*;
  7. import cn.com.goldenwater.dcproj.service.*;
  8. import cn.com.goldenwater.dcproj.utils.ZipUtil;
  9. import cn.com.goldenwater.util.common.FileUtils;
  10. import com.github.pagehelper.PageInfo;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.beans.factory.annotation.Value;
  13. import org.springframework.stereotype.Component;
  14. import java.io.*;
  15. import java.text.SimpleDateFormat;
  16. import java.util.ArrayList;
  17. import java.util.Date;
  18. import java.util.List;
  19. import java.util.UUID;
  20. /**
  21. * @ClassName CreateSkTables
  22. * @Author liyz
  23. * @Date 2019/3/15 11:40
  24. * @Version 1.0
  25. **/
  26. @Component
  27. public class CreateSkTables {
  28. private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  29. @Value("${export.basePath}")
  30. public String exportBasePath;
  31. @Autowired
  32. private ExcelFieldUtil excelFieldUtil;
  33. @Autowired
  34. private CreateExcelHelper createExcelHelper;
  35. /**
  36. * 8.小水库督查情况Service
  37. */
  38. @Autowired
  39. private BisInspRsvrRgstrService bisInspRsvrRgstrService;
  40. // 5张表合成1张表
  41. // 5-1 基础信息
  42. @Autowired
  43. private AttRsBaseCrrctDao attRsBaseCrrctDao;
  44. @Autowired
  45. private AttRsBaseService attRsBaseService;
  46. // 5-2 重点环节落实情况
  47. @Autowired
  48. private BisInspBaseExtService bisInspBaseExtService;
  49. // 5-3 责任人落实情况
  50. @Autowired
  51. private BisInspBasePresExtService bisInspBasePresExtService;
  52. // 5-4 水库工程实体和运行情况
  53. @Autowired
  54. private BisInspSafeExtManageService bisInspSafeExtManageService;
  55. // 5-5 走访情况
  56. @Autowired
  57. private BisInspBaseViewService bisInspBaseViewService;
  58. // 通过小水库督查情况表 得id 获取其他5张表的数据 合成一张表
  59. /**
  60. * 8.创建小水库督查情况表
  61. *
  62. * @param
  63. * @param
  64. */
  65. public void createBisInspRsvrRgstrPcDtoExcel(TypeExportParam typeExportParam, PrintWriter printWriter) {
  66. // 一页查200条数据
  67. typeExportParam.setPageNum(0);
  68. typeExportParam.setPageSize(200);
  69. PageInfo<BisInspRsvrRgstrPcDto> data = bisInspRsvrRgstrService.findPcPage(typeExportParam);
  70. // 如果没有数据,则直接返回
  71. if (data.getList().size() == 0) {
  72. printWriter.println("暂无数据可导出。<br>");
  73. printWriter.flush();
  74. return;
  75. }
  76. String tab = TableEnum.T8.toString();
  77. OutputStream os = null;
  78. printWriter.println("准备导出,开始创建导出目录<br>");
  79. printWriter.flush();
  80. String fileName = TableEnum.T8.getName();
  81. printWriter.println(sdf.format(new Date()) + " 开始创建 " + fileName + ".xls" + "<br>");
  82. printWriter.flush();
  83. //导出
  84. try {
  85. String filePath = UUID.randomUUID().toString();
  86. String dir = exportBasePath + File.separator + filePath + File.separator;
  87. String zipFile = exportBasePath + File.separator + filePath + ".zip";
  88. FileUtils.mkFolder(dir);
  89. // 如果有数据,则导出到excel
  90. File outputFile = new File(dir + fileName + (System.currentTimeMillis()) + ".xls");
  91. os = new FileOutputStream(outputFile);
  92. // 导出到excel
  93. // 处理一下,加入5张表的数据
  94. ExportAbstract exportZ = createExcelHelper.export(tab, fileName, os, excelFieldUtil.getBisInspRsvrRgstrPcDtoDataList(getBisVo(data.getList())));
  95. int pages = data.getPages();
  96. // 如果超过一页
  97. if (pages > 1) {
  98. for (int p = 2; p <= pages; p++) {
  99. typeExportParam.setPageNum(p);
  100. PageInfo<BisInspRsvrRgstrPcDto> dataNext = bisInspRsvrRgstrService.findPcPage(typeExportParam);
  101. // 继续导出
  102. // 处理一下,加入5张表的数据
  103. exportZ.ContinueExport(excelFieldUtil.getBisInspRsvrRgstrPcDtoDataList(getBisVo(dataNext.getList())));
  104. }
  105. }
  106. exportZ.EndExport();
  107. os.close();
  108. printWriter.println(sdf.format(new Date()) + " 完成创建 " + fileName + ".xls" + "<br>");
  109. printWriter.flush();
  110. // 指定压缩源,可以是目录或文件
  111. String src = dir;
  112. // 压缩包路径
  113. String archive = zipFile;
  114. // 压缩包注释
  115. String comment = "Java Zip SLDC";
  116. // 压缩文件或目录
  117. ZipUtil.zip(src, archive, comment);
  118. printWriter.write("创建完成。压缩完成。 <a href='/api/dc/gd/base/download/" + filePath + "' download>点击下载</a>");
  119. printWriter.flush();
  120. } catch (Exception e) {
  121. try {
  122. os.close();
  123. } catch (IOException e1) {
  124. e1.printStackTrace();
  125. }
  126. e.printStackTrace();
  127. }
  128. }
  129. private List<BisInspRsvrRgstrPcDtoVo> getBisVo(List<BisInspRsvrRgstrPcDto> dataList) {
  130. List<BisInspRsvrRgstrPcDtoVo> dataListVo = new ArrayList<>();
  131. dataList.forEach(x -> {
  132. BisInspRsvrRgstrPcDtoVo bisVo = new BisInspRsvrRgstrPcDtoVo();
  133. // 放入督查情况表
  134. bisVo.setBisInspRsvrRgstrPcDto(x);
  135. // 1.放入基础信息
  136. bisVo.setAttRsBaseCrrct(getAttRsBaseCrrctBy(x));
  137. bisVo.setAttRsBase(getAttRsBaseBy(x));
  138. // 2.重点环节落实情况
  139. bisVo.setBisInspBaseExt(getBisInspBaseExtBy(x));
  140. // 3.责任人落实情况
  141. bisVo.setBisInspBasePresExt(getBisInspBasePresExtBy(x));
  142. // 4.水库工程实体和运行情况
  143. bisVo.setBisInspSafeExtManage(getBisInspSafeExtManageBy(x));
  144. // 5.走访情况
  145. bisVo.setBisInspBaseView(getBisInspBaseViewBy(x));
  146. dataListVo.add(bisVo);
  147. });
  148. return dataListVo;
  149. }
  150. private AttRsBaseCrrct getAttRsBaseCrrctBy(BisInspRsvrRgstrPcDto bisInspRsvrRgstrPcDto) {
  151. String rsCode = bisInspRsvrRgstrPcDto.getRsCode();
  152. String persId = bisInspRsvrRgstrPcDto.getRecPersId();
  153. AttRsBaseCrrct att = attRsBaseCrrctDao.get(rsCode, persId);
  154. return att == null ? new AttRsBaseCrrct() : att;
  155. }
  156. private AttRsBase getAttRsBaseBy(BisInspRsvrRgstrPcDto bisInspRsvrRgstrPcDto) {
  157. String rsCode = bisInspRsvrRgstrPcDto.getRsCode();
  158. AttRsBase att = attRsBaseService.get(rsCode);
  159. return att == null ? new AttRsBase() : att;
  160. }
  161. // 2
  162. private BisInspBaseExt getBisInspBaseExtBy(BisInspRsvrRgstrPcDto bisInspRsvrRgstrPcDto) {
  163. BisInspBaseExtParam bisInspBaseExtParam = new BisInspBaseExtParam();
  164. String rgstrId = bisInspRsvrRgstrPcDto.getRgstrId();
  165. BisInspBaseExt bisInspBaseExt = new BisInspBaseExt();
  166. if (rgstrId != null) {
  167. bisInspBaseExtParam.setRgstrId(rgstrId);
  168. bisInspBaseExt = bisInspBaseExtService.getBy(bisInspBaseExtParam);
  169. }
  170. return bisInspBaseExt == null ? new BisInspBaseExt() : bisInspBaseExt;
  171. }
  172. //3 根据督查登记表ID获取三个责任人基本信息
  173. private BisInspBasePresExt getBisInspBasePresExtBy(BisInspRsvrRgstrPcDto bisInspRsvrRgstrPcDto) {
  174. BisInspBasePresExtParam bisInspBasePresExtParam = new BisInspBasePresExtParam();
  175. String rgstrId = bisInspRsvrRgstrPcDto.getRgstrId();
  176. bisInspBasePresExtParam.setRgstrId(rgstrId);
  177. BisInspBasePresExt inspBaseExt = bisInspBasePresExtService.getBy(bisInspBasePresExtParam);
  178. return inspBaseExt == null ? new BisInspBasePresExt() : inspBaseExt;
  179. }
  180. //4 水库工程实体和运行管理情况
  181. private BisInspSafeExtManage getBisInspSafeExtManageBy(BisInspRsvrRgstrPcDto bisInspRsvrRgstrPcDto) {
  182. BisInspSafeExtManageParam safeExtManageParam = new BisInspSafeExtManageParam();
  183. String rgstrId = bisInspRsvrRgstrPcDto.getRgstrId();
  184. safeExtManageParam.setRgstrId(rgstrId);
  185. BisInspSafeExtManage bisInspSafeExtManage = bisInspSafeExtManageService.getBy(safeExtManageParam);
  186. return bisInspSafeExtManage == null ? new BisInspSafeExtManage() : bisInspSafeExtManage;
  187. }
  188. // 5 走访情况
  189. private BisInspBaseView getBisInspBaseViewBy(BisInspRsvrRgstrPcDto bisInspRsvrRgstrPcDto) {
  190. BisInspBaseViewParam bisInspBaseViewParam = new BisInspBaseViewParam();
  191. String rgstrId = bisInspRsvrRgstrPcDto.getRgstrId();
  192. bisInspBaseViewParam.setRgstrId(rgstrId);
  193. BisInspBaseView inspBaseView = bisInspBaseViewService.getBy(bisInspBaseViewParam);
  194. return inspBaseView == null ? new BisInspBaseView() : inspBaseView;
  195. }
  196. }