|
|
@@ -0,0 +1,124 @@
|
|
|
+package com.java110.job.export.adapt;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.java110.dto.data.ExportDataDto;
|
|
|
+import com.java110.dto.dict.DictDto;
|
|
|
+import com.java110.dto.report.QueryStatisticsDto;
|
|
|
+import com.java110.dto.room.RoomDto;
|
|
|
+import com.java110.intf.report.IReportFeeStatisticsInnerServiceSMO;
|
|
|
+import com.java110.job.export.IExportDataAdapt;
|
|
|
+import com.java110.utils.util.Assert;
|
|
|
+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.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 月实收数据导出
|
|
|
+ */
|
|
|
+@Service("dataMonthReceivedStatistics")
|
|
|
+public class DataMonthReceivedStatisticsAdapt implements IExportDataAdapt {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IReportFeeStatisticsInnerServiceSMO reportFeeStatisticsInnerServiceSMOImpl;
|
|
|
+
|
|
|
+ private static final int MAX_ROW = 100;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SXSSFWorkbook exportData(ExportDataDto exportDataDto) {
|
|
|
+ JSONObject reqJson = exportDataDto.getReqJson();
|
|
|
+ Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区");
|
|
|
+
|
|
|
+ String startDate = reqJson.getString("feeStartDate");
|
|
|
+ String endDate = reqJson.getString("feeEndDate");
|
|
|
+ if (!StringUtil.isEmpty(startDate) && !startDate.contains(":")) {
|
|
|
+ startDate += " 00:00:00";
|
|
|
+ reqJson.put("feeStartDate", startDate);
|
|
|
+ }
|
|
|
+ if (!StringUtil.isEmpty(endDate) && !endDate.contains(":")) {
|
|
|
+ endDate += " 23:59:59";
|
|
|
+ reqJson.put("feeEndDate", endDate);
|
|
|
+ }
|
|
|
+
|
|
|
+ SXSSFWorkbook workbook = null; //工作簿
|
|
|
+ workbook = new SXSSFWorkbook();
|
|
|
+ workbook.setCompressTempFiles(false);
|
|
|
+
|
|
|
+ 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("收银员");
|
|
|
+ row.createCell(5).setCellValue("缴费时间");
|
|
|
+
|
|
|
+ QueryStatisticsDto queryStatisticsDto = new QueryStatisticsDto();
|
|
|
+ queryStatisticsDto.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ queryStatisticsDto.setStartDate(reqJson.getString("feeStartDate"));
|
|
|
+ queryStatisticsDto.setEndDate(reqJson.getString("feeEndDate"));
|
|
|
+ queryStatisticsDto.setFloorId(reqJson.getString("floorId"));
|
|
|
+ queryStatisticsDto.setObjName(reqJson.getString("objName"));
|
|
|
+ queryStatisticsDto.setFeeTypeCd(reqJson.getString("feeTypeCd"));
|
|
|
+ queryStatisticsDto.setOwnerName(reqJson.getString("ownerName"));
|
|
|
+ queryStatisticsDto.setLink(reqJson.getString("link"));
|
|
|
+ long count = reportFeeStatisticsInnerServiceSMOImpl.getMonthReceivedDetailCount(queryStatisticsDto);
|
|
|
+
|
|
|
+ count = (int) Math.ceil((double) count / (double) MAX_ROW);
|
|
|
+ List<Map> infos = null;
|
|
|
+ for (int page = 1; page <= count; page++) {
|
|
|
+ queryStatisticsDto.setPage(page);
|
|
|
+ queryStatisticsDto.setRow(MAX_ROW);
|
|
|
+ infos = reportFeeStatisticsInnerServiceSMOImpl.getMonthReceivedDetailInfo(queryStatisticsDto);
|
|
|
+ appendData(infos, sheet, (page - 1) * MAX_ROW);
|
|
|
+ }
|
|
|
+
|
|
|
+ //todo 实收金额
|
|
|
+ double receivedAmount = reportFeeStatisticsInnerServiceSMOImpl.getMonthReceivedDetailAmount(queryStatisticsDto);
|
|
|
+
|
|
|
+ row = sheet.createRow((int)count+1);
|
|
|
+ row.createCell(0).setCellValue("总收入");
|
|
|
+ row.createCell(1).setCellValue(receivedAmount);
|
|
|
+ return workbook;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 封装数据到Excel中
|
|
|
+ *
|
|
|
+ * @param datas
|
|
|
+ * @param sheet
|
|
|
+ */
|
|
|
+ private void appendData(List<Map> datas, Sheet sheet, int step) {
|
|
|
+ Row row = null;
|
|
|
+ Map dataObj = null;
|
|
|
+ for (int roomIndex = 0; roomIndex < datas.size(); roomIndex++) {
|
|
|
+ row = sheet.createRow(roomIndex + step + 1);
|
|
|
+ dataObj = datas.get(roomIndex);
|
|
|
+ row.createCell(0).setCellValue(getValue(dataObj, "objName"));
|
|
|
+ row.createCell(1).setCellValue(getValue(dataObj, "ownerName") + "(" + getValue(dataObj, "link") + ")");
|
|
|
+ row.createCell(2).setCellValue(getValue(dataObj, "receivedAmount"));
|
|
|
+ row.createCell(3).setCellValue(getValue(dataObj, "feeName"));
|
|
|
+ row.createCell(4).setCellValue(getValue(dataObj, "startTime") + "~" + getValue(dataObj, "endTime"));
|
|
|
+ row.createCell(5).setCellValue(getValue(dataObj, "cashierName"));
|
|
|
+ row.createCell(5).setCellValue(getValue(dataObj, "createTime"));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getValue(Map data, String key) {
|
|
|
+ Object value = data.get(key);
|
|
|
+ if (value == null) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ return value.toString();
|
|
|
+ }
|
|
|
+}
|