| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- 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;
- /**
- * <p>
- * 批量导出
- * </p>
- *
- * @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<BisInspRsvrRgstrPcDto> 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<Map<String, Object>> list = excelFieldUtil.getBisInspRsvrRgstrPcDtoTemplate(this.getBisVo(data.getList(), typeExportParam));
- for (int i = 0; i < list.size(); i++) {
- List<String> 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<String, Object> 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<BisInspRsvrRgstrPcDtoVo> getBisVo(List<BisInspRsvrRgstrPcDto> dataList, TypeExportParam typeExportParam) {
- List<BisInspRsvrRgstrPcDtoVo> 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;
- }
- }
|