Your Name преди 2 години
родител
ревизия
561a12d95f

+ 115 - 0
service-job/src/main/java/com/java110/job/export/adapt/DataMonthOweStatisticsAdapt.java

@@ -0,0 +1,115 @@
+package com.java110.job.export.adapt;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.dto.data.ExportDataDto;
+import com.java110.dto.report.QueryStatisticsDto;
+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.List;
+import java.util.Map;
+
+/**
+ * 月实收数据导出
+ */
+@Service("dataMonthOweStatistics")
+public class DataMonthOweStatisticsAdapt 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("欠费金额");
+
+        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.getMonthOweDetailCount(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.getMonthOweDetailInfo(queryStatisticsDto);
+            appendData(infos, sheet, (page - 1) * MAX_ROW);
+        }
+
+        //todo 欠费金额
+        double oweAmount = reportFeeStatisticsInnerServiceSMOImpl.getMonthOweDetailAmount(queryStatisticsDto);
+
+        row = sheet.createRow((int)count+1);
+        row.createCell(0).setCellValue("总欠费");
+        row.createCell(1).setCellValue(oweAmount);
+        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, "feeName"));
+            row.createCell(3).setCellValue(getValue(dataObj, "startTime") + "~" + getValue(dataObj, "endTime"));
+            row.createCell(4).setCellValue(getValue(dataObj, "receivableAmount"));
+        }
+
+    }
+
+    private String getValue(Map data, String key) {
+        Object value = data.get(key);
+        if (value == null) {
+            return "";
+        }
+        return value.toString();
+    }
+}

+ 124 - 0
service-job/src/main/java/com/java110/job/export/adapt/DataMonthReceivedStatisticsAdapt.java

@@ -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();
+    }
+}

+ 13 - 12
service-job/src/main/java/com/java110/job/export/adapt/DataReportEarnedDetailStatisticsAdapt.java

@@ -42,7 +42,6 @@ public class DataReportEarnedDetailStatisticsAdapt implements IExportDataAdapt {
     private static final int MAX_ROW = 100;
 
 
-
     @Override
     public SXSSFWorkbook exportData(ExportDataDto exportDataDto) {
         JSONObject reqJson = exportDataDto.getReqJson();
@@ -96,8 +95,8 @@ public class DataReportEarnedDetailStatisticsAdapt implements IExportDataAdapt {
             queryStatisticsDto.setRow(MAX_ROW);
             List<RoomDto> rooms = getReceivedRoomInfo(queryStatisticsDto);
             // todo 计算 房屋欠费实收数据
-            JSONArray datas = computeRoomOweReceivedFee(rooms,queryStatisticsDto);
-            appendData(datas, sheet, dictDtos,(page - 1) * MAX_ROW);
+            JSONArray datas = computeRoomOweReceivedFee(rooms, queryStatisticsDto);
+            appendData(datas, sheet, dictDtos, (page - 1) * MAX_ROW);
         }
 
 
@@ -106,11 +105,12 @@ public class DataReportEarnedDetailStatisticsAdapt implements IExportDataAdapt {
 
     /**
      * 封装数据到Excel中
+     *
      * @param datas
      * @param sheet
      * @param dictDtos
      */
-    private void appendData(JSONArray datas, Sheet sheet, List<DictDto> dictDtos,int step) {
+    private void appendData(JSONArray datas, Sheet sheet, List<DictDto> dictDtos, int step) {
         Row row = null;
         JSONObject dataObj = null;
         String receivedFee = "";
@@ -119,28 +119,28 @@ public class DataReportEarnedDetailStatisticsAdapt implements IExportDataAdapt {
         String feeTypeCdValue = "";
         JSONObject feeTypeData = null;
         for (int roomIndex = 0; roomIndex < datas.size(); roomIndex++) {
-            row = sheet.createRow(roomIndex + 1);
+            row = sheet.createRow(roomIndex + step + 1);
             dataObj = datas.getJSONObject(roomIndex);
             row.createCell(0).setCellValue(dataObj.getString("roomName"));
-            row.createCell(1).setCellValue(dataObj.getString("ownerName")+"("+dataObj.getString("link")+")");
+            row.createCell(1).setCellValue(dataObj.getString("ownerName") + "(" + dataObj.getString("link") + ")");
             row.createCell(2).setCellValue(dataObj.getString("receivedFee"));
 
             for (int dictIndex = 0; dictIndex < dictDtos.size(); dictIndex++) {
-                feeTypeCd = "receivedFee"+dictDtos.get(dictIndex).getStatusCd();
-                if(!dataObj.containsKey(feeTypeCd)){
+                feeTypeCd = "receivedFee" + dictDtos.get(dictIndex).getStatusCd();
+                if (!dataObj.containsKey(feeTypeCd)) {
                     row.createCell(3 + dictIndex).setCellValue(0);
                     continue;
                 }
                 feeTypeCdData = dataObj.getJSONArray(feeTypeCd);
-                if(feeTypeCdData == null || feeTypeCdData.size() < 1){
+                if (feeTypeCdData == null || feeTypeCdData.size() < 1) {
                     row.createCell(3 + dictIndex).setCellValue(0);
                     continue;
                 }
                 feeTypeCdValue = "";
-                for(int feeTypeIndex = 0;feeTypeIndex < feeTypeCdData.size(); feeTypeIndex++) {
+                for (int feeTypeIndex = 0; feeTypeIndex < feeTypeCdData.size(); feeTypeIndex++) {
                     feeTypeData = feeTypeCdData.getJSONObject(feeTypeIndex);
-                    feeTypeCdValue += (feeTypeData.getString("feeName")+"("+feeTypeData.getString("startTime")+"~"+feeTypeData.getString("endTime"))+")="+feeTypeData.getString("receivedAmount");
-                    feeTypeCdValue +="\r\n";
+                    feeTypeCdValue += (feeTypeData.getString("feeName") + "(" + feeTypeData.getString("startTime") + "~" + feeTypeData.getString("endTime")) + ")=" + feeTypeData.getString("receivedAmount");
+                    feeTypeCdValue += "\r\n";
                 }
                 row.createCell(3 + dictIndex).setCellValue(feeTypeCdValue);
             }
@@ -292,6 +292,7 @@ public class DataReportEarnedDetailStatisticsAdapt implements IExportDataAdapt {
 
         return datas;
     }
+
     /**
      * //todo 清洗数据 将数据转变成 map roomId feeTypeCd->array
      * // todo 讲 payerObjId, feeTypeCd,feeName,endTime,deadlineTime,amountOwed 转换为 按payerObjId 纵向转换