| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- package cn.com.goldenwater.dcproj.utils.export;
- import cn.com.goldenwater.dcproj.dao.AttRsBaseCrrctDao;
- import cn.com.goldenwater.dcproj.dto.BisInspRsvrRgstrPcDto;
- import cn.com.goldenwater.dcproj.dto.BisInspRsvrRgstrPcDtoVo;
- import cn.com.goldenwater.dcproj.model.*;
- import cn.com.goldenwater.dcproj.param.*;
- import cn.com.goldenwater.dcproj.service.*;
- import cn.com.goldenwater.dcproj.utils.ZipUtil;
- import cn.com.goldenwater.util.common.FileUtils;
- import com.github.pagehelper.PageInfo;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Component;
- import java.io.*;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.UUID;
- /**
- * @ClassName CreateSkTables
- * @Author liyz
- * @Date 2019/3/15 11:40
- * @Version 1.0
- **/
- @Component
- public class CreateSkTables {
- private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- @Value("${export.basePath}")
- public String exportBasePath;
- @Autowired
- private ExcelFieldUtil excelFieldUtil;
- @Autowired
- private CreateExcelHelper createExcelHelper;
- /**
- * 8.小水库督查情况Service
- */
- @Autowired
- private BisInspRsvrRgstrService bisInspRsvrRgstrService;
- // 5张表合成1张表
- // 5-1 基础信息
- @Autowired
- private AttRsBaseCrrctDao attRsBaseCrrctDao;
- @Autowired
- private AttRsBaseService attRsBaseService;
- // 5-2 重点环节落实情况
- @Autowired
- private BisInspBaseExtService bisInspBaseExtService;
- // 5-3 责任人落实情况
- @Autowired
- private BisInspBasePresExtService bisInspBasePresExtService;
- // 5-4 水库工程实体和运行情况
- @Autowired
- private BisInspSafeExtManageService bisInspSafeExtManageService;
- // 5-5 走访情况
- @Autowired
- private BisInspBaseViewService bisInspBaseViewService;
- // 通过小水库督查情况表 得id 获取其他5张表的数据 合成一张表
- /**
- * 8.创建小水库督查情况表
- *
- * @param
- * @param
- */
- public void createBisInspRsvrRgstrPcDtoExcel(TypeExportParam typeExportParam, PrintWriter printWriter) {
- // 一页查200条数据
- typeExportParam.setPageNum(0);
- typeExportParam.setPageSize(200);
- PageInfo<BisInspRsvrRgstrPcDto> data = bisInspRsvrRgstrService.findPcPage(typeExportParam);
- // 如果没有数据,则直接返回
- if (data.getList().size() == 0) {
- printWriter.println("暂无数据可导出。<br>");
- printWriter.flush();
- return;
- }
- String tab = TableEnum.T8.toString();
- OutputStream os = null;
- printWriter.println("准备导出,开始创建导出目录<br>");
- printWriter.flush();
- String fileName = TableEnum.T8.getName();
- printWriter.println(sdf.format(new Date()) + " 开始创建 " + fileName + ".xls" + "<br>");
- printWriter.flush();
- //导出
- try {
- String filePath = UUID.randomUUID().toString();
- String dir = exportBasePath + File.separator + filePath + File.separator;
- String zipFile = exportBasePath + File.separator + filePath + ".zip";
- FileUtils.mkFolder(dir);
- // 如果有数据,则导出到excel
- File outputFile = new File(dir + fileName + (System.currentTimeMillis()) + ".xls");
- os = new FileOutputStream(outputFile);
- // 导出到excel
- // 处理一下,加入5张表的数据
- ExportAbstract exportZ = createExcelHelper.export(tab, fileName, os, excelFieldUtil.getBisInspRsvrRgstrPcDtoDataList(getBisVo(data.getList())));
- int pages = data.getPages();
- // 如果超过一页
- if (pages > 1) {
- for (int p = 2; p <= pages; p++) {
- typeExportParam.setPageNum(p);
- PageInfo<BisInspRsvrRgstrPcDto> dataNext = bisInspRsvrRgstrService.findPcPage(typeExportParam);
- // 继续导出
- // 处理一下,加入5张表的数据
- exportZ.ContinueExport(excelFieldUtil.getBisInspRsvrRgstrPcDtoDataList(getBisVo(dataNext.getList())));
- }
- }
- exportZ.EndExport();
- os.close();
- printWriter.println(sdf.format(new Date()) + " 完成创建 " + fileName + ".xls" + "<br>");
- printWriter.flush();
- // 指定压缩源,可以是目录或文件
- String src = dir;
- // 压缩包路径
- String archive = zipFile;
- // 压缩包注释
- String comment = "Java Zip SLDC";
- // 压缩文件或目录
- ZipUtil.zip(src, archive, comment);
- printWriter.write("创建完成。压缩完成。 <a href='/api/dc/gd/base/download/" + filePath + "' download>点击下载</a>");
- printWriter.flush();
- } catch (Exception e) {
- try {
- os.close();
- } catch (IOException e1) {
- e1.printStackTrace();
- }
- e.printStackTrace();
- }
- }
- private List<BisInspRsvrRgstrPcDtoVo> getBisVo(List<BisInspRsvrRgstrPcDto> dataList) {
- List<BisInspRsvrRgstrPcDtoVo> dataListVo = new ArrayList<>();
- dataList.forEach(x -> {
- BisInspRsvrRgstrPcDtoVo bisVo = new BisInspRsvrRgstrPcDtoVo();
- // 放入督查情况表
- bisVo.setBisInspRsvrRgstrPcDto(x);
- // 1.放入基础信息
- bisVo.setAttRsBaseCrrct(getAttRsBaseCrrctBy(x));
- bisVo.setAttRsBase(getAttRsBaseBy(x));
- // 2.重点环节落实情况
- bisVo.setBisInspBaseExt(getBisInspBaseExtBy(x));
- // 3.责任人落实情况
- bisVo.setBisInspBasePresExt(getBisInspBasePresExtBy(x));
- // 4.水库工程实体和运行情况
- bisVo.setBisInspSafeExtManage(getBisInspSafeExtManageBy(x));
- // 5.走访情况
- bisVo.setBisInspBaseView(getBisInspBaseViewBy(x));
- dataListVo.add(bisVo);
- });
- return dataListVo;
- }
- private AttRsBaseCrrct getAttRsBaseCrrctBy(BisInspRsvrRgstrPcDto bisInspRsvrRgstrPcDto) {
- String rsCode = bisInspRsvrRgstrPcDto.getRsCode();
- String persId = bisInspRsvrRgstrPcDto.getRecPersId();
- AttRsBaseCrrct att = attRsBaseCrrctDao.get(rsCode, persId);
- return att == null ? new AttRsBaseCrrct() : att;
- }
- private AttRsBase getAttRsBaseBy(BisInspRsvrRgstrPcDto bisInspRsvrRgstrPcDto) {
- String rsCode = bisInspRsvrRgstrPcDto.getRsCode();
- AttRsBase att = attRsBaseService.get(rsCode);
- return att == null ? new AttRsBase() : att;
- }
- // 2
- private BisInspBaseExt getBisInspBaseExtBy(BisInspRsvrRgstrPcDto bisInspRsvrRgstrPcDto) {
- BisInspBaseExtParam bisInspBaseExtParam = new BisInspBaseExtParam();
- String rgstrId = bisInspRsvrRgstrPcDto.getRgstrId();
- BisInspBaseExt bisInspBaseExt = new BisInspBaseExt();
- if (rgstrId != null) {
- bisInspBaseExtParam.setRgstrId(rgstrId);
- bisInspBaseExt = bisInspBaseExtService.getBy(bisInspBaseExtParam);
- }
- return bisInspBaseExt == null ? new BisInspBaseExt() : bisInspBaseExt;
- }
- //3 根据督查登记表ID获取三个责任人基本信息
- private BisInspBasePresExt getBisInspBasePresExtBy(BisInspRsvrRgstrPcDto bisInspRsvrRgstrPcDto) {
- BisInspBasePresExtParam bisInspBasePresExtParam = new BisInspBasePresExtParam();
- String rgstrId = bisInspRsvrRgstrPcDto.getRgstrId();
- bisInspBasePresExtParam.setRgstrId(rgstrId);
- BisInspBasePresExt inspBaseExt = bisInspBasePresExtService.getBy(bisInspBasePresExtParam);
- return inspBaseExt == null ? new BisInspBasePresExt() : inspBaseExt;
- }
- //4 水库工程实体和运行管理情况
- private BisInspSafeExtManage getBisInspSafeExtManageBy(BisInspRsvrRgstrPcDto bisInspRsvrRgstrPcDto) {
- BisInspSafeExtManageParam safeExtManageParam = new BisInspSafeExtManageParam();
- String rgstrId = bisInspRsvrRgstrPcDto.getRgstrId();
- safeExtManageParam.setRgstrId(rgstrId);
- BisInspSafeExtManage bisInspSafeExtManage = bisInspSafeExtManageService.getBy(safeExtManageParam);
- return bisInspSafeExtManage == null ? new BisInspSafeExtManage() : bisInspSafeExtManage;
- }
- // 5 走访情况
- private BisInspBaseView getBisInspBaseViewBy(BisInspRsvrRgstrPcDto bisInspRsvrRgstrPcDto) {
- BisInspBaseViewParam bisInspBaseViewParam = new BisInspBaseViewParam();
- String rgstrId = bisInspRsvrRgstrPcDto.getRgstrId();
- bisInspBaseViewParam.setRgstrId(rgstrId);
- BisInspBaseView inspBaseView = bisInspBaseViewService.getBy(bisInspBaseViewParam);
- return inspBaseView == null ? new BisInspBaseView() : inspBaseView;
- }
- }
|