package com.java110.job.export.adapt; import com.alibaba.fastjson.JSONObject; import com.java110.dto.data.ExportDataDto; import com.java110.dto.reportFee.ReportFeeYearCollectionDetailDto; import com.java110.dto.reportFee.ReportFeeYearCollectionDto; import com.java110.intf.report.IReportFeeYearCollectionDetailInnerServiceSMO; import com.java110.intf.report.IReportFeeYearCollectionInnerServiceSMO; import com.java110.job.export.IExportDataAdapt; import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.StringUtil; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * 报表专家导出 */ @Service("reportProficient") public class ReportProficientAdapt implements IExportDataAdapt { @Autowired private IReportFeeYearCollectionInnerServiceSMO reportFeeYearCollectionInnerServiceSMOImpl; @Autowired private IReportFeeYearCollectionDetailInnerServiceSMO reportFeeYearCollectionDetailInnerServiceSMOImpl; private static final int MAX_ROW = 200; @Override public SXSSFWorkbook exportData(ExportDataDto exportDataDto) { SXSSFWorkbook workbook = null; //工作簿 String userId = ""; //工作表 workbook = new SXSSFWorkbook(); workbook.setCompressTempFiles(false); JSONObject reqJson = exportDataDto.getReqJson(); //获取付费对象类型 String objType = reqJson.getString("objType"); if (!StringUtil.isEmpty(objType) && objType.equals("3333")) { //房屋 Sheet sheet = workbook.createSheet("房屋费台账"); Row row = sheet.createRow(0); row.createCell(0).setCellValue("姓名"); row.createCell(1).setCellValue("房号"); row.createCell(2).setCellValue("联系电话"); row.createCell(3).setCellValue("面积"); row.createCell(4).setCellValue("收费类型"); row.createCell(5).setCellValue("费用名称"); ReportFeeYearCollectionDto reportFeeYearCollectionDto = BeanConvertUtil.covertBean(reqJson, ReportFeeYearCollectionDto.class); reportFeeYearCollectionDto.setPage(1); reportFeeYearCollectionDto.setRow(MAX_ROW); List reportFeeYearCollections = reportFeeYearCollectionInnerServiceSMOImpl.queryReportFeeYearCollections(reportFeeYearCollectionDto); JSONObject dataObj = null; for (int index = 0; index < reportFeeYearCollections.size(); index++) { dataObj = JSONObject.parseObject(JSONObject.toJSONString(reportFeeYearCollections.get(index))); ReportFeeYearCollectionDetailDto reportFeeYearCollectionDetailDto = new ReportFeeYearCollectionDetailDto(); reportFeeYearCollectionDetailDto.setCollectionId(dataObj.getString("collectionId")); List reportFeeYearCollectionDetails = reportFeeYearCollectionDetailInnerServiceSMOImpl.queryReportFeeYearCollectionDetails(reportFeeYearCollectionDetailDto); for (int detailIndex = 0; detailIndex < reportFeeYearCollectionDetails.size(); detailIndex++) { row.createCell(6 + detailIndex).setCellValue(reportFeeYearCollectionDetails.get(detailIndex).getCollectionYear() + "年"); } appendRoomData(dataObj, sheet, 0, index); } } else if (!StringUtil.isEmpty(objType) && objType.equals("6666")) { //车辆 Sheet sheet = workbook.createSheet("车辆费台账"); Row row = sheet.createRow(0); row.createCell(0).setCellValue("姓名"); row.createCell(1).setCellValue("车牌号"); row.createCell(2).setCellValue("联系电话"); row.createCell(3).setCellValue("收费类型"); row.createCell(4).setCellValue("费用名称"); ReportFeeYearCollectionDto reportFeeYearCollectionDto = BeanConvertUtil.covertBean(reqJson, ReportFeeYearCollectionDto.class); reportFeeYearCollectionDto.setPage(1); reportFeeYearCollectionDto.setRow(MAX_ROW); List reportFeeYearCollections = reportFeeYearCollectionInnerServiceSMOImpl.queryReportFeeYearCollections(reportFeeYearCollectionDto); JSONObject dataObj = null; for (int index = 0; index < reportFeeYearCollections.size(); index++) { dataObj = JSONObject.parseObject(JSONObject.toJSONString(reportFeeYearCollections.get(index))); ReportFeeYearCollectionDetailDto reportFeeYearCollectionDetailDto = new ReportFeeYearCollectionDetailDto(); reportFeeYearCollectionDetailDto.setCollectionId(dataObj.getString("collectionId")); List reportFeeYearCollectionDetails = reportFeeYearCollectionDetailInnerServiceSMOImpl.queryReportFeeYearCollectionDetails(reportFeeYearCollectionDetailDto); for (int detailIndex = 0; detailIndex < reportFeeYearCollectionDetails.size(); detailIndex++) { row.createCell(6 + detailIndex).setCellValue(reportFeeYearCollectionDetails.get(detailIndex).getCollectionYear() + "年"); } appendCarData(dataObj, sheet, 0, index); } } return workbook; } //房屋费台账 private void appendRoomData(JSONObject dataObj, Sheet sheet, int step, int index) { Row row = null; row = sheet.createRow(index + step + 1); ReportFeeYearCollectionDetailDto reportFeeYearCollectionDetailDto = new ReportFeeYearCollectionDetailDto(); reportFeeYearCollectionDetailDto.setCollectionId(dataObj.getString("collectionId")); List reportFeeYearCollectionDetails = reportFeeYearCollectionDetailInnerServiceSMOImpl.queryReportFeeYearCollectionDetails(reportFeeYearCollectionDetailDto); row.createCell(0).setCellValue(dataObj.getString("ownerName")); row.createCell(1).setCellValue(dataObj.getString("objName")); row.createCell(2).setCellValue(dataObj.getString("ownerLink")); row.createCell(3).setCellValue(dataObj.getString("builtUpArea")); row.createCell(4).setCellValue(dataObj.getString("feeTypeCdName")); row.createCell(5).setCellValue(dataObj.getString("feeName")); for (int detailIndex = 0; detailIndex < reportFeeYearCollectionDetails.size(); detailIndex++) { row.createCell(6 + detailIndex).setCellValue(reportFeeYearCollectionDetails.get(detailIndex).getReceivedAmount()); } } //车辆费台账 private void appendCarData(JSONObject dataObj, Sheet sheet, int step, int index) { Row row = null; row = sheet.createRow(index + step + 1); ReportFeeYearCollectionDetailDto reportFeeYearCollectionDetailDto = new ReportFeeYearCollectionDetailDto(); reportFeeYearCollectionDetailDto.setCollectionId(dataObj.getString("collectionId")); List reportFeeYearCollectionDetails = reportFeeYearCollectionDetailInnerServiceSMOImpl.queryReportFeeYearCollectionDetails(reportFeeYearCollectionDetailDto); row.createCell(0).setCellValue(dataObj.getString("ownerName")); row.createCell(1).setCellValue(dataObj.getString("objName")); row.createCell(2).setCellValue(dataObj.getString("ownerLink")); row.createCell(3).setCellValue(dataObj.getString("feeTypeCdName")); row.createCell(4).setCellValue(dataObj.getString("feeName")); for (int detailIndex = 0; detailIndex < reportFeeYearCollectionDetails.size(); detailIndex++) { row.createCell(5 + detailIndex).setCellValue(reportFeeYearCollectionDetails.get(detailIndex).getReceivedAmount()); } } }