java110
2023-07-26 a451b135bbcc132761d6f310c000d5bd651b9ff8
service-api/src/main/java/com/java110/api/smo/assetExport/impl/ExportReportFeeSMOImpl.java
@@ -8,7 +8,7 @@
import com.java110.core.context.IPageData;
import com.java110.core.log.LoggerFactory;
import com.java110.dto.fee.FeeConfigDto;
import com.java110.entity.component.ComponentValidateResult;
import com.java110.dto.system.ComponentValidateResult;
import com.java110.utils.cache.MappingCache;
import com.java110.utils.util.Assert;
import com.java110.utils.util.DateUtil;
@@ -16,7 +16,7 @@
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
@@ -30,8 +30,10 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * @ClassName AssetImportSmoImpl
@@ -56,11 +58,14 @@
    public static final String REPORT_FLOOR_UNIT_FEE_SUMMARY = "reportFloorUnitFeeSummary";
    public static final String REPORT_FEE_BREAKDOWN = "reportFeeBreakdown";
    public static final String REPORT_FEE_DETAIL = "reportFeeDetail";
    public static final String REPORT_RETURN_PAY_FEE_MANAGE = "returnPayFeeManage";
    public static final String REPORT_OWE_FEE_DETAIL = "reportOweFeeDetail";
    public static final String REPORT_PAY_FEE_DETAIL = "reportPayFeeDetail";
    public static final String REPORT_YEAR_COLLECTION = "reportYearCollection";
    public static final String REPORT_LIST_OWE_FEE = "listOweFee";
    public static final String REPORT_REPAIR_DETAIL = "reportRepairDetail";
    public static final String REPORT_PREPAYMENT_DETAIL = "reportPrePaymentDetail";
    public static final String REPORT_COLLECT_FEES = "reportCollectFees";
    public static final String REPORT_PAY_FEE_MANAGE = "reportPayFeeManage";
    public static final String REPORT_QUESTION_ANSWER_DETAIL = "reportQuestionAnswerDetail";
    public static final String REPORT_PRE_PAYMENT_FEE = "reportPrePaymentFee";
@@ -76,6 +81,7 @@
    public static final String RESOURCE_STORE_USE_RECORD_MANAGE = "resourceStoreUseRecordManage";
    public static final String RESOURCE_STAFF_FEE_MANAGE = "staffFeeManage";
    public static final String REPORT_PAY_FEE_DEPOSIT = "reportPayFeeDeposit";
    public static final String INSPECTION_TASK_DETAILS = "inspectionTaskDetails";
    @Autowired
    private RestTemplate restTemplate;
@@ -84,14 +90,27 @@
    public ResponseEntity<Object> exportExcelData(IPageData pd) throws Exception {
        ComponentValidateResult result = this.validateStoreStaffCommunityRelationship(pd, restTemplate);
        Map pdHeaders = pd.getHeaders();
        if (!StringUtil.isEmpty(result.getStoreId())) {
            pdHeaders.remove("store-id");
            pdHeaders.put("store-id", result.getStoreId());
        }
        if (!StringUtil.isEmpty(result.getLoginUserId())) {
            pdHeaders.remove("user-id");
            pdHeaders.remove("user_id");
            pdHeaders.put("user-id", result.getUserId());
            pdHeaders.put("user_id", result.getUserId());
            pdHeaders.put("login-user-id", result.getLoginUserId());
        }
        Assert.hasKeyAndValue(JSONObject.parseObject(pd.getReqData()), "communityId", "请求中未包含小区");
        Assert.hasKeyAndValue(JSONObject.parseObject(pd.getReqData()), "pagePath", "请求中未包含页面");
        Workbook workbook = null;  //工作簿
        SXSSFWorkbook workbook = null;  //工作簿
        String userId = "";
        //工作表
        workbook = new XSSFWorkbook();
        workbook = new SXSSFWorkbook();
        workbook.setCompressTempFiles(false);
        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
        String pagePath = reqJson.getString("pagePath");
@@ -104,6 +123,9 @@
                break;
            case REPORT_FEE_BREAKDOWN:
                reportFeeBreakdown(pd, result, workbook);
                break;
            case REPORT_RETURN_PAY_FEE_MANAGE:
                returnPayFeeManage(pd, result, workbook);
                break;
            case REPORT_FEE_DETAIL:
                reportFeeDetail(pd, result, workbook);
@@ -122,6 +144,12 @@
                break;
            case REPORT_REPAIR_DETAIL:
                reportRepairDetail(pd, result, workbook);
                break;
            case REPORT_PREPAYMENT_DETAIL:
                reportPrepaymentDetail(pd, result, workbook);
                break;
            case REPORT_COLLECT_FEES:
                reportCollectFees(pd, result, workbook);
                break;
            case REPORT_PAY_FEE_MANAGE:
                reportPayFeeManage(pd, result, workbook);
@@ -168,6 +196,8 @@
            case REPORT_PAY_FEE_DEPOSIT:
                reportPayFeeDeposit(pd, result, workbook);
                break;
            case INSPECTION_TASK_DETAILS:
                inspectionTaskDetails(pd, result, workbook);
        }
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        MultiValueMap headers = new HttpHeaders();
@@ -206,15 +236,16 @@
        Row row = sheet.createRow(0);
        row.createCell(0).setCellValue("收费对象");
        row.createCell(1).setCellValue("业主名称");
        row.createCell(2).setCellValue("开始时间");
        row.createCell(3).setCellValue("结束时间");
        row.createCell(2).setCellValue("手机号");
        row.createCell(3).setCellValue("开始时间");
        row.createCell(4).setCellValue("结束时间");
        if (!StringUtil.isEmpty(configIds)) {
            for (int feeConfigIndex = 0; feeConfigIndex < feeConfigDtos.size(); feeConfigIndex++) {
                row.createCell(4 + feeConfigIndex).setCellValue(feeConfigDtos.get(feeConfigIndex).getFeeName());
                row.createCell(5 + feeConfigIndex).setCellValue(feeConfigDtos.get(feeConfigIndex).getFeeName());
            }
            row.createCell(4 + feeConfigDtos.size()).setCellValue("合计");
            row.createCell(5 + feeConfigDtos.size()).setCellValue("合计");
        } else {
            row.createCell(4).setCellValue("合计");
            row.createCell(5).setCellValue("合计");
        }
@@ -224,15 +255,16 @@
            dataObj = oweFees.getJSONObject(roomIndex);
            row.createCell(0).setCellValue(dataObj.getString("payerObjName"));
            row.createCell(1).setCellValue(dataObj.getString("ownerName"));
            row.createCell(2).setCellValue(dataObj.getString("endTime"));
            row.createCell(3).setCellValue(dataObj.getString("deadlineTime"));
            row.createCell(2).setCellValue(dataObj.getString("ownerTel"));
            row.createCell(3).setCellValue(dataObj.getString("endTime"));
            row.createCell(4).setCellValue(dataObj.getString("deadlineTime"));
            if (!StringUtil.isEmpty(configIds)) {
                for (int feeConfigIndex = 0; feeConfigIndex < feeConfigDtos.size(); feeConfigIndex++) {
                    row.createCell(4 + feeConfigIndex).setCellValue(getFeeConfigAmount(feeConfigDtos.get(feeConfigIndex), dataObj));
                    row.createCell(5 + feeConfigIndex).setCellValue(getFeeConfigAmount(feeConfigDtos.get(feeConfigIndex), dataObj));
                }
                row.createCell(4 + feeConfigDtos.size()).setCellValue(getAllFeeOweAmount(feeConfigDtos, dataObj));
                row.createCell(5 + feeConfigDtos.size()).setCellValue(getAllFeeOweAmount(feeConfigDtos, dataObj));
            } else {
                row.createCell(4).setCellValue(getAllFeeOweAmount(feeConfigDtos, dataObj));
                row.createCell(5).setCellValue(getAllFeeOweAmount(feeConfigDtos, dataObj));
            }
        }
@@ -349,11 +381,12 @@
        row.createCell(11).setCellValue("实收金额");
        row.createCell(12).setCellValue("优惠金额");
        row.createCell(13).setCellValue("减免金额");
        row.createCell(14).setCellValue("滞纳金");
        row.createCell(15).setCellValue("空置房打折金额");
        row.createCell(16).setCellValue("空置房减免金额");
        row.createCell(17).setCellValue("面积");
        row.createCell(18).setCellValue("车位");
        row.createCell(14).setCellValue("赠送金额");
        row.createCell(15).setCellValue("滞纳金");
        row.createCell(16).setCellValue("空置房打折金额");
        row.createCell(17).setCellValue("空置房减免金额");
        row.createCell(18).setCellValue("面积");
        row.createCell(19).setCellValue("车位");
        //查询楼栋信息
        JSONArray rooms = this.getReportPayFeeDetail(pd, result);
        if (rooms == null || rooms.size() == 0) {
@@ -364,7 +397,11 @@
            row = sheet.createRow(roomIndex + 1);
            dataObj = rooms.getJSONObject(roomIndex);
            row.createCell(0).setCellValue(dataObj.getString("oId"));
            row.createCell(1).setCellValue(dataObj.getString("objName"));
            if (!StringUtil.isEmpty(dataObj.getString("payerObjType")) && dataObj.getString("payerObjType").equals("3333")) { //房屋
                row.createCell(1).setCellValue(dataObj.getString("floorNum") + "-" + dataObj.getString("unitNum") + "-" + dataObj.getString("roomNum"));
            } else {
                row.createCell(1).setCellValue(dataObj.getString("objName"));
            }
            row.createCell(2).setCellValue(dataObj.getString("ownerName"));
            row.createCell(3).setCellValue(dataObj.getString("feeName"));
            row.createCell(4).setCellValue(dataObj.getString("feeTypeCdName"));
@@ -377,11 +414,12 @@
            row.createCell(11).setCellValue(dataObj.getDouble("receivedAmount"));
            row.createCell(12).setCellValue(dataObj.getDouble("preferentialAmount"));
            row.createCell(13).setCellValue(dataObj.getDouble("deductionAmount"));
            row.createCell(14).setCellValue(dataObj.getDouble("lateFee"));
            row.createCell(15).setCellValue(dataObj.getDouble("vacantHousingDiscount"));
            row.createCell(16).setCellValue(dataObj.getDouble("vacantHousingReduction"));
            row.createCell(17).setCellValue(dataObj.getString("builtUpArea"));
            row.createCell(18).setCellValue(dataObj.getString("psName"));
            row.createCell(14).setCellValue(dataObj.getDouble("giftAmount"));
            row.createCell(15).setCellValue(dataObj.getDouble("lateFee"));
            row.createCell(16).setCellValue(dataObj.getDouble("vacantHousingDiscount"));
            row.createCell(17).setCellValue(dataObj.getDouble("vacantHousingReduction"));
            row.createCell(18).setCellValue(dataObj.getString("builtUpArea"));
            row.createCell(19).setCellValue(dataObj.getString("psName"));
        }
    }
@@ -416,6 +454,111 @@
            row.createCell(6).setCellValue(dataObj.getString("returnAmount"));
            row.createCell(7).setCellValue(dataObj.getString("statementAmount"));
            row.createCell(8).setCellValue(dataObj.getString("score"));
        }
    }
    private void reportPrepaymentDetail(IPageData pd, ComponentValidateResult result, Workbook workbook) {
        Sheet sheet = workbook.createSheet("账单明细表");
        Row row = sheet.createRow(0);
        row.createCell(0).setCellValue("报表ID");
        row.createCell(1).setCellValue("付费对象");
        row.createCell(2).setCellValue("业主");
        row.createCell(3).setCellValue("费用项");
        row.createCell(4).setCellValue("费用类型");
        row.createCell(5).setCellValue("费用状态");
        row.createCell(6).setCellValue("支付方式");
        row.createCell(7).setCellValue("费用开始时间");
        row.createCell(8).setCellValue("费用结束时间");
        row.createCell(9).setCellValue("缴费时间");
        row.createCell(10).setCellValue("应缴金额(元)");
        row.createCell(11).setCellValue("应收金额(元)");
        row.createCell(12).setCellValue("实收金额(元)");
        row.createCell(13).setCellValue("欠费金额(元)");
        row.createCell(14).setCellValue("优惠金额(元)");
        row.createCell(15).setCellValue("减免金额(元)");
        row.createCell(16).setCellValue("赠送金额(元)");
        row.createCell(17).setCellValue("滞纳金(元)");
        row.createCell(18).setCellValue("空置房打折(元)");
        row.createCell(19).setCellValue("空置房减免(元)");
        row.createCell(20).setCellValue("面积(平方米)");
        //查询预付期缴费明细
        JSONArray prepayments = this.getReportPrepaymentDetail(pd, result);
        if (prepayments == null || prepayments.size() == 0) {
            return;
        }
        JSONObject dataObj = null;
        for (int roomIndex = 0; roomIndex < prepayments.size(); roomIndex++) {
            row = sheet.createRow(roomIndex + 1);
            dataObj = prepayments.getJSONObject(roomIndex);
            row.createCell(0).setCellValue(dataObj.getString("prepaymentId"));
            row.createCell(1).setCellValue(dataObj.getString("objName"));
            row.createCell(2).setCellValue(dataObj.getString("ownerName"));
            row.createCell(3).setCellValue(dataObj.getString("feeName"));
            row.createCell(4).setCellValue(dataObj.getString("feeTypeCdName"));
            row.createCell(5).setCellValue(dataObj.getString("prepaymentStateName"));
            if (!StringUtil.isEmpty(dataObj.getString("primeRate"))) {
                row.createCell(6).setCellValue(dataObj.getString("primeRate"));
            } else {
                row.createCell(6).setCellValue("--");
            }
            row.createCell(7).setCellValue(dataObj.getString("feeBeginTime"));
            row.createCell(8).setCellValue(dataObj.getString("feeFinishTime"));
            if (!StringUtil.isEmpty(dataObj.getString("payTime"))) {
                row.createCell(9).setCellValue(dataObj.getString("payTime"));
            } else {
                row.createCell(9).setCellValue("--");
            }
            row.createCell(10).setCellValue(dataObj.getString("payableAmount"));
            row.createCell(11).setCellValue(dataObj.getString("prepaymentReceivableAmount"));
            row.createCell(12).setCellValue(dataObj.getString("prepaymentReceivedAmount"));
            row.createCell(13).setCellValue(dataObj.getString("oweAmount"));
            row.createCell(14).setCellValue(dataObj.getString("preferentialAmount"));
            row.createCell(15).setCellValue(dataObj.getString("deductionAmount"));
            row.createCell(16).setCellValue(dataObj.getString("giftAmount"));
            row.createCell(17).setCellValue(dataObj.getString("lateFee"));
            row.createCell(18).setCellValue(dataObj.getString("vacantHousingDiscount"));
            row.createCell(19).setCellValue(dataObj.getString("vacantHousingReduction"));
            row.createCell(20).setCellValue(dataObj.getString("builtUpArea"));
        }
    }
    private void reportCollectFees(IPageData pd, ComponentValidateResult result, Workbook workbook){
        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(6).setCellValue("优惠金额(元)");
        row.createCell(7).setCellValue("减免金额(元)");
        row.createCell(8).setCellValue("赠送金额(元)");
        row.createCell(9).setCellValue("滞纳金(元)");
        row.createCell(10).setCellValue("空置房打折(元)");
        row.createCell(11).setCellValue("空置房减免(元)");
        //查询预付期缴费明细
        JSONArray prepayments = this.getReportCollectFees(pd, result);
        if (prepayments == null || prepayments.size() == 0) {
            return;
        }
        JSONObject dataObj = null;
        for (int roomIndex = 0; roomIndex < prepayments.size(); roomIndex++) {
            row = sheet.createRow(roomIndex + 1);
            dataObj = prepayments.getJSONObject(roomIndex);
            row.createCell(0).setCellValue(dataObj.getString("feeName"));
            row.createCell(1).setCellValue(dataObj.getString("feeTypeCdName"));
            row.createCell(2).setCellValue(dataObj.getString("allPayableAmount"));
            row.createCell(3).setCellValue(dataObj.getString("allReceivableAmount"));
            row.createCell(4).setCellValue(dataObj.getString("allReceivedAmount"));
            row.createCell(5).setCellValue(dataObj.getString("allOweAmount"));
            row.createCell(6).setCellValue(dataObj.getString("allPreferentialAmount"));
            row.createCell(7).setCellValue(dataObj.getString("allDeductionAmount"));
            row.createCell(8).setCellValue(dataObj.getString("allGiftAmount"));
            row.createCell(9).setCellValue(dataObj.getString("allLateFee"));
            row.createCell(10).setCellValue(dataObj.getString("allVacantHousingDiscount"));
            row.createCell(11).setCellValue(dataObj.getString("allVacantHousingReduction"));
        }
    }
@@ -485,7 +628,7 @@
    private void reportPrePaymentFee(IPageData pd, ComponentValidateResult result, Workbook workbook) {
        Sheet sheet = workbook.createSheet("预交费提醒表");
        Row row = sheet.createRow(0);
        row.createCell(0).setCellValue("序号");
        row.createCell(0).setCellValue("房号");
        row.createCell(1).setCellValue("费用项");
        row.createCell(2).setCellValue("费用开始时间");
        row.createCell(3).setCellValue("距离费用开始时间(天)");
@@ -498,7 +641,11 @@
        for (int roomIndex = 0; roomIndex < prePayFees.size(); roomIndex++) {
            row = sheet.createRow(roomIndex + 1);
            dataObj = prePayFees.getJSONObject(roomIndex);
            row.createCell(0).setCellValue(dataObj.getString("objName"));
            if (!StringUtil.isEmpty(dataObj.getString("payerObjType")) && dataObj.getString("payerObjType").equals("3333")) { //房屋
                row.createCell(0).setCellValue(dataObj.getString("floorNum") + "-" + dataObj.getString("unitNum") + "-" + dataObj.getString("roomNum"));
            } else {
                row.createCell(0).setCellValue(dataObj.getString("objName"));
            }
            row.createCell(1).setCellValue(dataObj.getString("feeName"));
            row.createCell(2).setCellValue(dataObj.getString("endTime"));
            row.createCell(3).setCellValue(dataObj.getString("oweDay"));
@@ -508,7 +655,7 @@
    private void reportDeadlineFee(IPageData pd, ComponentValidateResult result, Workbook workbook) {
        Sheet sheet = workbook.createSheet("费用到期提醒表");
        Row row = sheet.createRow(0);
        row.createCell(0).setCellValue("序号");
        row.createCell(0).setCellValue("房号");
        row.createCell(1).setCellValue("费用项");
        row.createCell(2).setCellValue("费用结束时间");
        row.createCell(3).setCellValue("距离费用结束时间(天)");
@@ -521,7 +668,7 @@
        for (int roomIndex = 0; roomIndex < deadlineFees.size(); roomIndex++) {
            row = sheet.createRow(roomIndex + 1);
            dataObj = deadlineFees.getJSONObject(roomIndex);
            row.createCell(0).setCellValue(dataObj.getString("objName"));
            row.createCell(0).setCellValue(dataObj.getString("objNameNum"));
            row.createCell(1).setCellValue(dataObj.getString("feeName"));
            row.createCell(2).setCellValue(dataObj.getString("deadlineTime"));
            row.createCell(3).setCellValue(dataObj.getString("oweDay"));
@@ -570,7 +717,7 @@
        row.createCell(11).setCellValue("申请数量");
        row.createCell(12).setCellValue("采购/出库数量");
        row.createCell(13).setCellValue("采购价格");
        row.createCell(14).setCellValue("采购总价");
        row.createCell(14).setCellValue("总价");
        row.createCell(15).setCellValue("申请备注");
        row.createCell(16).setCellValue("状态");
        row.createCell(17).setCellValue("创建时间");
@@ -597,8 +744,8 @@
            row.createCell(11).setCellValue(dataObj.getString("quantity") + dataObj.getString("unitCodeName"));
            row.createCell(12).setCellValue(dataObj.getString("purchaseQuantity") + dataObj.getString("unitCodeName"));
            row.createCell(13).setCellValue(dataObj.getString("price"));
            if (!StringUtil.isEmpty(dataObj.getString("resOrderType")) && dataObj.getString("resOrderType").equals("10000") &&
                    !StringUtil.isEmpty(dataObj.getString("purchaseQuantity")) && !StringUtil.isEmpty(dataObj.getString("price"))) { //状态是入库
            //!StringUtil.isEmpty(dataObj.getString("resOrderType")) && dataObj.getString("resOrderType").equals("10000") &&
            if (!StringUtil.isEmpty(dataObj.getString("purchaseQuantity")) && !StringUtil.isEmpty(dataObj.getString("price"))) { //状态是入库
                //获取采购数量
                double purchaseQuantity = Double.parseDouble(dataObj.getString("purchaseQuantity"));
                //获取采购单价
@@ -877,6 +1024,72 @@
        }
    }
    private void inspectionTaskDetails(IPageData pd, ComponentValidateResult result, Workbook workbook) {
        Sheet sheet = workbook.createSheet("巡检明细");
        Row row = sheet.createRow(0);
        row.createCell(0).setCellValue("任务详情ID");
        row.createCell(1).setCellValue("巡检点名称");
        row.createCell(2).setCellValue("巡检计划名称");
        row.createCell(3).setCellValue("巡检路线名称");
        row.createCell(4).setCellValue("巡检人开始时间");
        row.createCell(5).setCellValue("巡检人结束时间");
        row.createCell(6).setCellValue("巡检点开始时间");
        row.createCell(7).setCellValue("巡检点结束时间");
        row.createCell(8).setCellValue("实际巡检时间");
        row.createCell(9).setCellValue("实际签到状态");
        row.createCell(10).setCellValue("计划巡检人");
        row.createCell(11).setCellValue("实际巡检人");
        row.createCell(12).setCellValue("巡检方式");
        row.createCell(13).setCellValue("任务状态");
        row.createCell(14).setCellValue("巡检点状态");
        row.createCell(15).setCellValue("巡检情况");
        JSONArray inspectionTaskDetails = this.getInspectionTaskDetails(pd, result);
        if (inspectionTaskDetails == null || inspectionTaskDetails.size() == 0) {
            return;
        }
        JSONObject dataObj = null;
        for (int roomIndex = 0; roomIndex < inspectionTaskDetails.size(); roomIndex++) {
            row = sheet.createRow(roomIndex + 1);
            dataObj = inspectionTaskDetails.getJSONObject(roomIndex);
            row.createCell(0).setCellValue(dataObj.getString("taskDetailId"));
            row.createCell(1).setCellValue(dataObj.getString("inspectionName"));
            row.createCell(2).setCellValue(dataObj.getString("inspectionPlanName"));
            row.createCell(3).setCellValue(dataObj.getString("routeName"));
            row.createCell(4).setCellValue(dataObj.getString("planInsTime"));
            row.createCell(5).setCellValue(dataObj.getString("planEndTime"));
            if (!StringUtil.isEmpty(dataObj.getString("pointStartTime"))) {
                row.createCell(6).setCellValue(dataObj.getString("pointStartTime"));
            } else {
                row.createCell(6).setCellValue("--");
            }
            if (!StringUtil.isEmpty(dataObj.getString("pointEndTime"))) {
                row.createCell(7).setCellValue(dataObj.getString("pointEndTime"));
            } else {
                row.createCell(7).setCellValue("--");
            }
            if (!StringUtil.isEmpty(dataObj.getString("inspectionTime"))) {
                row.createCell(8).setCellValue(dataObj.getString("inspectionTime"));
            } else {
                row.createCell(8).setCellValue("--");
            }
            row.createCell(9).setCellValue(dataObj.getString("inspectionStateName"));
            row.createCell(10).setCellValue(dataObj.getString("planUserName"));
            if (!StringUtil.isEmpty(dataObj.getString("actUserName"))) {
                row.createCell(11).setCellValue(dataObj.getString("actUserName"));
            } else {
                row.createCell(11).setCellValue("--");
            }
            row.createCell(12).setCellValue(dataObj.getString("signTypeName"));
            row.createCell(13).setCellValue(dataObj.getString("taskStateName"));
            row.createCell(14).setCellValue(dataObj.getString("stateName"));
            if (!StringUtil.isEmpty(dataObj.getString("description"))) {
                row.createCell(15).setCellValue(dataObj.getString("description"));
            } else {
                row.createCell(15).setCellValue("--");
            }
        }
    }
    private void resourceStoreUseRecordManage(IPageData pd, ComponentValidateResult result, Workbook workbook) {
        Sheet sheet = workbook.createSheet("物品使用记录");
        Row row = sheet.createRow(0);
@@ -967,7 +1180,11 @@
            row = sheet.createRow(roomIndex + 1);
            dataObj = reportPayFeeDeposits.getJSONObject(roomIndex);
            row.createCell(0).setCellValue(dataObj.getString("feeId"));
            row.createCell(1).setCellValue(dataObj.getString("objName"));
            if (!StringUtil.isEmpty(dataObj.getString("payerObjType")) && dataObj.getString("payerObjType").equals("3333")) { //房屋
                row.createCell(1).setCellValue(dataObj.getString("floorNum") + "-" + dataObj.getString("unitNum") + "-" + dataObj.getString("roomNum"));
            } else {
                row.createCell(1).setCellValue(dataObj.getString("objName"));
            }
            row.createCell(2).setCellValue(dataObj.getString("ownerName"));
            row.createCell(3).setCellValue(dataObj.getString("feeTypeCdName"));
            row.createCell(4).setCellValue(dataObj.getString("feeName"));
@@ -1032,6 +1249,7 @@
        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
        reqJson.put("page", 1);
        reqJson.put("row", 10000);
        reqJson.put("hasOweFee", "Y");
        apiUrl = "/reportOweFee/queryReportAllOweFee" + mapToUrlParam(reqJson);
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
        if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息
@@ -1090,6 +1308,52 @@
        return savedRepairInfoResults.getJSONArray("data");
    }
    private JSONArray getReportPrepaymentDetail(IPageData pd, ComponentValidateResult result) {
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
        reqJson.put("page", 1);
        reqJson.put("row", 10000);
        apiUrl = "/reportFeeMonthStatisticsPrepayment/queryPayFeePrepaymentDetail" + mapToUrlParam(reqJson);
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
        if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息
            return null;
        }
        JSONObject savedPrepaymentInfoResults = JSONObject.parseObject(responseEntity.getBody(), Feature.OrderedField);
        //获取限制条数的值
        int number = Integer.parseInt(MappingCache.getValue(DOMAIN_COMMON, EXPORT_NUMBER));
        if (savedPrepaymentInfoResults.getJSONArray("data").size() > number) {
            throw new IllegalArgumentException("导出数据超过限制条数" + number + "条,无法继续导出操作!");
        }
        if (!savedPrepaymentInfoResults.containsKey("data")) {
            return null;
        }
        return savedPrepaymentInfoResults.getJSONArray("data");
    }
    private JSONArray getReportCollectFees(IPageData pd, ComponentValidateResult result) {
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
        reqJson.put("page", 1);
        reqJson.put("row", 10000);
        apiUrl = "/reportFeeMonthStatisticsPrepayment/queryReportCollectFees" + mapToUrlParam(reqJson);
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
        if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息
            return null;
        }
        JSONObject savedCollectFeeInfoResults = JSONObject.parseObject(responseEntity.getBody(), Feature.OrderedField);
        //获取限制条数的值
        int number = Integer.parseInt(MappingCache.getValue(DOMAIN_COMMON, EXPORT_NUMBER));
        if (savedCollectFeeInfoResults.getJSONArray("data").size() > number) {
            throw new IllegalArgumentException("导出数据超过限制条数" + number + "条,无法继续导出操作!");
        }
        if (!savedCollectFeeInfoResults.containsKey("data")) {
            return null;
        }
        return savedCollectFeeInfoResults.getJSONArray("data");
    }
    private JSONArray getReportPayFeeManage(IPageData pd, ComponentValidateResult result) {
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
@@ -1125,6 +1389,7 @@
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
        reqJson.put("store-id", result.getStoreId());
        reqJson.put("page", 1);
        reqJson.put("row", 10000);
        apiUrl = "/reportQuestionAnswer/queryUserQuestionAnswerValue" + mapToUrlParam(reqJson);
@@ -1150,7 +1415,7 @@
        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
        reqJson.put("page", 1);
        reqJson.put("row", 10000);
        apiUrl = "/reportFeeMonthStatistics/queryPrePayment" + mapToUrlParam(reqJson);
        apiUrl = "/reportFeeMonthStatistics.queryPrePayment" + mapToUrlParam(reqJson);
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
        if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息
            return null;
@@ -1173,7 +1438,7 @@
        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
        reqJson.put("page", 1);
        reqJson.put("row", 10000);
        apiUrl = "/reportFeeMonthStatistics/queryDeadlineFee" + mapToUrlParam(reqJson);
        apiUrl = "/reportFeeMonthStatistics.queryDeadlineFee" + mapToUrlParam(reqJson);
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
        if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息
            return null;
@@ -1219,6 +1484,7 @@
        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
        reqJson.put("page", 1);
        reqJson.put("row", 10000);
        reqJson.put("storeId", result.getStoreId());
        apiUrl = "purchaseApplyDetail.listPurchaseApplyDetails" + mapToUrlParam(reqJson);
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
        if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息
@@ -1385,6 +1651,29 @@
        return savedAllocationUserStorehouses.getJSONArray("data");
    }
    private JSONArray getInspectionTaskDetails(IPageData pd, ComponentValidateResult result) {
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
        reqJson.put("page", 1);
        reqJson.put("row", 10000);
        apiUrl = "inspectionTaskDetail.listInspectionTaskDetails" + mapToUrlParam(reqJson);
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
        if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息
            return null;
        }
        JSONObject savedInspectionTaskDetails = JSONObject.parseObject(responseEntity.getBody(), Feature.OrderedField);
        //获取限制条数的值
        int number = Integer.parseInt(MappingCache.getValue(DOMAIN_COMMON, EXPORT_NUMBER));
        if (savedInspectionTaskDetails.getJSONArray("inspectionTaskDetails").size() > number) {
            throw new IllegalArgumentException("导出数据超过限制条数" + number + "条,无法继续导出操作!");
        }
        if (!savedInspectionTaskDetails.containsKey("inspectionTaskDetails")) {
            return null;
        }
        return savedInspectionTaskDetails.getJSONArray("inspectionTaskDetails");
    }
    private JSONArray getResourceStoreUseRecordManage(IPageData pd, ComponentValidateResult result) {
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
@@ -1437,7 +1726,7 @@
        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
        reqJson.put("page", 1);
        reqJson.put("row", 10000);
        apiUrl = "reportFeeMonthStatistics/queryPayFeeDeposit" + mapToUrlParam(reqJson);
        apiUrl = "/reportFeeMonthStatistics/queryPayFeeDeposit" + mapToUrlParam(reqJson);
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
        if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息
            return null;
@@ -1486,8 +1775,9 @@
        row.createCell(3).setCellValue("面积");
        row.createCell(4).setCellValue("费用项");
        row.createCell(5).setCellValue("费用开始时间");
        row.createCell(6).setCellValue("欠费时长(天)");
        row.createCell(7).setCellValue("欠费金额");
        row.createCell(6).setCellValue("更新时间");
        row.createCell(7).setCellValue("欠费时长(天)");
        row.createCell(8).setCellValue("欠费金额");
        //查询楼栋信息
        JSONArray rooms = this.getReportOweFeeDetail(pd, result);
        if (rooms == null || rooms.size() == 0) {
@@ -1503,8 +1793,92 @@
            row.createCell(3).setCellValue(dataObj.getString("builtUpArea"));
            row.createCell(4).setCellValue(dataObj.getString("feeName"));
            row.createCell(5).setCellValue(dataObj.getString("feeCreateTime"));
            row.createCell(6).setCellValue(dataObj.getString("oweDay"));
            row.createCell(7).setCellValue(dataObj.getString("oweAmount"));
            row.createCell(6).setCellValue(dataObj.getString("updateTime"));
            row.createCell(7).setCellValue(dataObj.getString("oweDay"));
            row.createCell(8).setCellValue(dataObj.getString("oweAmount"));
        }
    }
    private void returnPayFeeManage(IPageData pd, ComponentValidateResult result, Workbook workbook) {
        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(6).setCellValue("应付金额(单位:元)");
        row.createCell(7).setCellValue("实付金额(单位:元)");
        row.createCell(8).setCellValue("申请时间");
        row.createCell(9).setCellValue("退费原因");
        row.createCell(10).setCellValue("审核状态");
        //查询楼栋信息
        JSONArray returnPayFees = this.getReturnPayFeeManage(pd, result);
        if (returnPayFees == null || returnPayFees.size() == 0) {
            return;
        }
        JSONObject dataObj = null;
        for (int roomIndex = 0; roomIndex < returnPayFees.size(); roomIndex++) {
            row = sheet.createRow(roomIndex + 1);
            dataObj = returnPayFees.getJSONObject(roomIndex);
            row.createCell(0).setCellValue(roomIndex + 1);
            row.createCell(1).setCellValue(dataObj.getString("returnFeeId"));
            row.createCell(2).setCellValue(dataObj.getString("detailId"));
            row.createCell(3).setCellValue(dataObj.getString("feeTypeCdName"));
            row.createCell(4).setCellValue(dataObj.getString("payerObjName"));
            String cycle = dataObj.getString("cycles");
            if (!StringUtil.isEmpty(cycle) && cycle.contains("-")) {
                String[] split = cycle.split("-");
                cycle = split[1];
            }
            row.createCell(5).setCellValue(cycle);
            String receivableAmount = dataObj.getString("receivableAmount");
            if (!StringUtil.isEmpty(receivableAmount) && receivableAmount.contains("-")) {
                String[] split = receivableAmount.split("-");
                receivableAmount = split[1];
            }
            row.createCell(6).setCellValue(receivableAmount);
            String feeAccountDetailDtoList = dataObj.getString("feeAccountDetailDtoList");
            JSONArray feeAccountDetails = JSONArray.parseArray(feeAccountDetailDtoList);
            String str = "";
            if (feeAccountDetails != null && feeAccountDetails.size() > 0) {
                for (int paramIndex = 0; paramIndex < feeAccountDetails.size(); paramIndex++) {
                    JSONObject param = feeAccountDetails.getJSONObject(paramIndex);
                    //获取抵扣类型
                    String state = param.getString("state");
                    if (!StringUtil.isEmpty(state) && !state.equals("1001")) {
                        str = param.getString("stateName") + ":" + param.getString("amount") + ";  " + str;
                    }
                }
            }
            String payFeeDetailDiscountDtoList = dataObj.getString("payFeeDetailDiscountDtoList");
            JSONArray payFeeDetailDiscounts = JSONArray.parseArray(payFeeDetailDiscountDtoList);
            String discount = "";
            if (payFeeDetailDiscounts != null && payFeeDetailDiscounts.size() > 0) {
                for (int index = 0; index < payFeeDetailDiscounts.size(); index++) {
                    JSONObject param = payFeeDetailDiscounts.getJSONObject(index);
                    String discountPrice = param.getString("discountPrice");
                    if (!StringUtil.isEmpty(discountPrice) && discountPrice.contains("-")) {
                        String[] split = discountPrice.split("-");
                        discountPrice = split[1];
                    }
                    discount = param.getString("discountName") + ":" + discountPrice + ";  " + discount;
                }
            }
            String receivedAmount = dataObj.getString("receivedAmount");
            if (!StringUtil.isEmpty(receivedAmount) && receivedAmount.contains("-")) {
                String[] split = receivedAmount.split("-");
                receivedAmount = split[1];
            }
            if (!StringUtil.isEmpty(str) || !StringUtil.isEmpty(discount)) {
                row.createCell(7).setCellValue(receivedAmount + "(" + str + discount + ")");
            } else {
                row.createCell(7).setCellValue(receivedAmount);
            }
            row.createCell(8).setCellValue(dataObj.getString("createTime"));
            row.createCell(9).setCellValue(dataObj.getString("reason"));
            row.createCell(10).setCellValue(dataObj.getString("stateName"));
        }
    }
@@ -1518,8 +1892,15 @@
        row.createCell(4).setCellValue("费用项");
        row.createCell(5).setCellValue("费用开始时间");
        row.createCell(6).setCellValue("费用结束时间");
        row.createCell(7).setCellValue("应收金额");
        row.createCell(8).setCellValue("实收金额");
        row.createCell(7).setCellValue("历史欠费(单位:元)");
        row.createCell(8).setCellValue("当月应收(单位:元)");
        row.createCell(9).setCellValue("应收合计(单位:元)");
        row.createCell(10).setCellValue("当月实收(单位:元)");
        row.createCell(11).setCellValue("欠费追回(单位:元)");
        row.createCell(12).setCellValue("预交费用(单位:元)");
        row.createCell(13).setCellValue("实收合计(单位:元)");
        row.createCell(14).setCellValue("欠费金额(单位:元)");
        row.createCell(15).setCellValue("更新时间");
        //查询楼栋信息
        JSONArray rooms = this.getReportFeeDetail(pd, result);
        if (rooms == null || rooms.size() == 0) {
@@ -1530,14 +1911,26 @@
            row = sheet.createRow(roomIndex + 1);
            dataObj = rooms.getJSONObject(roomIndex);
            row.createCell(0).setCellValue(roomIndex + 1);
            row.createCell(1).setCellValue(dataObj.getString("objName"));
            row.createCell(1).setCellValue(dataObj.getString("objNameNum"));
            row.createCell(2).setCellValue(dataObj.getString("ownerName"));
            row.createCell(3).setCellValue(dataObj.getString("builtUpArea"));
            row.createCell(4).setCellValue(dataObj.getString("feeName"));
            row.createCell(5).setCellValue(dataObj.getString("feeCreateTime"));
            row.createCell(6).setCellValue(dataObj.getString("deadlineTime"));
            row.createCell(7).setCellValue(dataObj.getString("receivableAmount"));
            row.createCell(8).setCellValue(dataObj.getString("receivedAmount"));
            row.createCell(7).setCellValue(dataObj.getString("hisOweAmount"));
            row.createCell(8).setCellValue(dataObj.getString("curReceivableAmount"));
            BigDecimal hisOweAmount = new BigDecimal(dataObj.getString("hisOweAmount"));
            BigDecimal curReceivableAmount = new BigDecimal(dataObj.getString("curReceivableAmount"));
            row.createCell(9).setCellValue(hisOweAmount.add(curReceivableAmount).toString());
            row.createCell(10).setCellValue(dataObj.getString("curReceivedAmount"));
            row.createCell(11).setCellValue(dataObj.getString("hisOweReceivedAmount"));
            row.createCell(12).setCellValue(dataObj.getString("preReceivedAmount"));
            BigDecimal curReceivedAmount = new BigDecimal(dataObj.getString("curReceivedAmount"));
            BigDecimal hisOweReceivedAmount = new BigDecimal(dataObj.getString("hisOweReceivedAmount"));
            BigDecimal preReceivedAmount = new BigDecimal(dataObj.getString("preReceivedAmount"));
            row.createCell(13).setCellValue(hisOweReceivedAmount.add(preReceivedAmount).add(curReceivedAmount).toString());
            row.createCell(14).setCellValue(hisOweAmount.add(curReceivableAmount).subtract(curReceivedAmount).subtract(hisOweReceivedAmount).toString());
            row.createCell(15).setCellValue(dataObj.getString("updateTime"));
        }
    }
@@ -1562,6 +1955,29 @@
            return null;
        }
        return savedRoomInfoResults.getJSONArray("data");
    }
    private JSONArray getReturnPayFeeManage(IPageData pd, ComponentValidateResult result) {
        String apiUrl = "";
        ResponseEntity<String> responseEntity = null;
        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
        reqJson.put("page", 1);
        reqJson.put("row", 10000);
        apiUrl = "returnPayFee.listReturnPayFees" + mapToUrlParam(reqJson);
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
        if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息
            return null;
        }
        JSONObject savedReturnPayFeeManages = JSONObject.parseObject(responseEntity.getBody(), Feature.OrderedField);
        //获取限制条数的值
        int number = Integer.parseInt(MappingCache.getValue(DOMAIN_COMMON, EXPORT_NUMBER));
        if (savedReturnPayFeeManages.getJSONArray("returnPayFees").size() > number) {
            throw new IllegalArgumentException("导出数据超过限制条数" + number + "条,无法继续导出操作!");
        }
        if (!savedReturnPayFeeManages.containsKey("returnPayFees")) {
            return null;
        }
        return savedReturnPayFeeManages.getJSONArray("returnPayFees");
    }
    private JSONArray getReportFeeDetail(IPageData pd, ComponentValidateResult result) {
@@ -1595,10 +2011,13 @@
        row.createCell(2).setCellValue("费用项");
        row.createCell(3).setCellValue("历史欠费(单位:元)");
        row.createCell(4).setCellValue("当月应收(单位:元)");
        row.createCell(5).setCellValue("当月实收(单位:元)");
        row.createCell(6).setCellValue("欠费追回(单位:元)");
        row.createCell(7).setCellValue("预交费用(单位:元)");
        row.createCell(8).setCellValue("欠费金额(单位:元)");
        row.createCell(5).setCellValue("应收合计(单位:元)");
        row.createCell(6).setCellValue("当月实收(单位:元)");
        row.createCell(7).setCellValue("欠费追回(单位:元)");
        row.createCell(8).setCellValue("预交费用(单位:元)");
        row.createCell(9).setCellValue("实收合计(单位:元)");
        row.createCell(10).setCellValue("欠费金额(单位:元)");
        row.createCell(11).setCellValue("更新时间");
        //查询楼栋信息
        JSONArray rooms = this.getReportFeeBreakdown(pd, result);
        if (rooms == null || rooms.size() == 0) {
@@ -1614,14 +2033,22 @@
            row.createCell(2).setCellValue(dataObj.getString("feeName"));
            row.createCell(3).setCellValue(dataObj.getString("hisOweAmount"));
            row.createCell(4).setCellValue(dataObj.getString("curReceivableAmount"));
            row.createCell(5).setCellValue(dataObj.getString("curReceivedAmount"));
            row.createCell(6).setCellValue(dataObj.getString("hisOweReceivedAmount"));
            row.createCell(7).setCellValue(dataObj.getString("preReceivedAmount"));
            BigDecimal hisOweAmount = new BigDecimal(dataObj.getString("hisOweAmount"));
            BigDecimal curReceivableAmount = new BigDecimal(dataObj.getString("curReceivableAmount"));
            row.createCell(5).setCellValue(hisOweAmount.add(curReceivableAmount).toString());
            row.createCell(6).setCellValue(dataObj.getString("curReceivedAmount"));
            row.createCell(7).setCellValue(dataObj.getString("hisOweReceivedAmount"));
            row.createCell(8).setCellValue(dataObj.getString("preReceivedAmount"));
            BigDecimal curReceivedAmount = new BigDecimal(dataObj.getString("curReceivedAmount"));
            BigDecimal hisOweReceivedAmount = new BigDecimal(dataObj.getString("hisOweReceivedAmount"));
            BigDecimal preReceivedAmount = new BigDecimal(dataObj.getString("preReceivedAmount"));
            row.createCell(9).setCellValue(hisOweReceivedAmount.add(preReceivedAmount).add(curReceivedAmount).toString());
            oweFeeDec = new BigDecimal(Double.parseDouble(dataObj.getString("hisOweAmount")))
                    .add(new BigDecimal(Double.parseDouble(dataObj.getString("curReceivableAmount"))))
                    .subtract(new BigDecimal(Double.parseDouble(dataObj.getString("curReceivedAmount"))))
                    .subtract(new BigDecimal(Double.parseDouble(dataObj.getString("hisOweReceivedAmount")))).setScale(2, BigDecimal.ROUND_HALF_UP);
            row.createCell(8).setCellValue(oweFeeDec.doubleValue() < 0 ? "0" : oweFeeDec.doubleValue() + "");
            row.createCell(10).setCellValue(oweFeeDec.doubleValue() < 0 ? "0" : oweFeeDec.doubleValue() + "");
            row.createCell(11).setCellValue(dataObj.getString("updateTime"));
        }
    }
@@ -1656,10 +2083,13 @@
        row.createCell(2).setCellValue("单元");
        row.createCell(3).setCellValue("历史欠费(单位:元)");
        row.createCell(4).setCellValue("当月应收(单位:元)");
        row.createCell(5).setCellValue("当月实收(单位:元)");
        row.createCell(6).setCellValue("欠费追回(单位:元)");
        row.createCell(7).setCellValue("预交费用(单位:元)");
        row.createCell(8).setCellValue("欠费金额(单位:元)");
        row.createCell(5).setCellValue("应收合计(单位:元)");
        row.createCell(6).setCellValue("当月实收(单位:元)");
        row.createCell(7).setCellValue("欠费追回(单位:元)");
        row.createCell(8).setCellValue("预交费用(单位:元)");
        row.createCell(9).setCellValue("实收合计(单位:元)");
        row.createCell(10).setCellValue("欠费金额(单位:元)");
        row.createCell(11).setCellValue("更新时间");
        //查询楼栋信息
        JSONArray rooms = this.getReportFloorUnitFeeSummary(pd, result);
        if (rooms == null || rooms.size() == 0) {
@@ -1675,14 +2105,22 @@
            row.createCell(2).setCellValue(dataObj.getString("unitNum") + "单元");
            row.createCell(3).setCellValue(dataObj.getString("hisOweAmount"));
            row.createCell(4).setCellValue(dataObj.getString("curReceivableAmount"));
            row.createCell(5).setCellValue(dataObj.getString("curReceivedAmount"));
            row.createCell(6).setCellValue(dataObj.getString("hisOweReceivedAmount"));
            row.createCell(7).setCellValue(dataObj.getString("preReceivedAmount"));
            BigDecimal hisOweAmount = new BigDecimal(dataObj.getString("hisOweAmount"));
            BigDecimal curReceivableAmount = new BigDecimal(dataObj.getString("curReceivableAmount"));
            row.createCell(5).setCellValue(hisOweAmount.add(curReceivableAmount).toString());
            row.createCell(6).setCellValue(dataObj.getString("curReceivedAmount"));
            row.createCell(7).setCellValue(dataObj.getString("hisOweReceivedAmount"));
            row.createCell(8).setCellValue(dataObj.getString("preReceivedAmount"));
            BigDecimal hisOweReceivedAmount = new BigDecimal(dataObj.getString("hisOweReceivedAmount"));
            BigDecimal preReceivedAmount = new BigDecimal(dataObj.getString("preReceivedAmount"));
            BigDecimal curReceivedAmount = new BigDecimal(dataObj.getString("curReceivedAmount"));
            row.createCell(9).setCellValue(hisOweReceivedAmount.add(preReceivedAmount).add(curReceivedAmount).toString());
            oweFeeDec = new BigDecimal(Double.parseDouble(dataObj.getString("hisOweAmount")))
                    .add(new BigDecimal(Double.parseDouble(dataObj.getString("curReceivableAmount"))))
                    .subtract(new BigDecimal(Double.parseDouble(dataObj.getString("curReceivedAmount"))))
                    .subtract(new BigDecimal(Double.parseDouble(dataObj.getString("hisOweReceivedAmount")))).setScale(2, BigDecimal.ROUND_HALF_UP);
            row.createCell(8).setCellValue(oweFeeDec.doubleValue() < 0 ? "0" : oweFeeDec.doubleValue() + "");
            row.createCell(10).setCellValue(oweFeeDec.doubleValue() < 0 ? "0" : oweFeeDec.doubleValue() + "");
            row.createCell(11).setCellValue(dataObj.getString("updateTime"));
        }
    }
@@ -1723,7 +2161,7 @@
        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
        reqJson.put("page", 1);
        reqJson.put("row", 10000);
        apiUrl = "/reportFeeMonthStatistics/queryReportFeeSummary" + mapToUrlParam(reqJson);
        apiUrl = "/reportFeeMonthStatistics.queryReportFeeSummary" + mapToUrlParam(reqJson);
        responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
        if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息
            return null;
@@ -1752,10 +2190,14 @@
        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(6).setCellValue("欠费金额(单位:元)");
        row.createCell(3).setCellValue("应收合计(单位:元)");
        row.createCell(4).setCellValue("当月实收(单位:元)");
        row.createCell(5).setCellValue("欠费追回(单位:元)");
        row.createCell(6).setCellValue("预交费用(单位:元)");
        row.createCell(7).setCellValue("实收合计(单位:元)");
        row.createCell(8).setCellValue("欠费金额(单位:元)");
        row.createCell(9).setCellValue("收费率");
        row.createCell(10).setCellValue("更新时间");
        //查询楼栋信息
        JSONArray rooms = this.getReportFeeSummaryFee(pd, componentValidateResult);
        if (rooms == null || rooms.size() == 0) {
@@ -1769,14 +2211,23 @@
            row.createCell(0).setCellValue(dataObj.getString("feeYear") + "年" + dataObj.getString("feeMonth") + "月");
            row.createCell(1).setCellValue(dataObj.getString("hisOweAmount"));
            row.createCell(2).setCellValue(dataObj.getString("curReceivableAmount"));
            row.createCell(3).setCellValue(dataObj.getString("curReceivedAmount"));
            row.createCell(4).setCellValue(dataObj.getString("hisOweReceivedAmount"));
            row.createCell(5).setCellValue(dataObj.getString("preReceivedAmount"));
            BigDecimal hisOweAmount = new BigDecimal(dataObj.getString("hisOweAmount"));
            BigDecimal curReceivableAmount = new BigDecimal(dataObj.getString("curReceivableAmount"));
            row.createCell(3).setCellValue(hisOweAmount.add(curReceivableAmount).toString());
            row.createCell(4).setCellValue(dataObj.getString("curReceivedAmount"));
            row.createCell(5).setCellValue(dataObj.getString("hisOweReceivedAmount"));
            row.createCell(6).setCellValue(dataObj.getString("preReceivedAmount"));
            BigDecimal curReceivedAmount = new BigDecimal(dataObj.getString("curReceivedAmount"));
            BigDecimal hisOweReceivedAmount = new BigDecimal(dataObj.getString("hisOweReceivedAmount"));
            BigDecimal preReceivedAmount = new BigDecimal(dataObj.getString("preReceivedAmount"));
            row.createCell(7).setCellValue(curReceivedAmount.add(hisOweReceivedAmount).add(preReceivedAmount).toString());
            oweFeeDec = new BigDecimal(Double.parseDouble(dataObj.getString("hisOweAmount")))
                    .add(new BigDecimal(Double.parseDouble(dataObj.getString("curReceivableAmount"))))
                    .subtract(new BigDecimal(Double.parseDouble(dataObj.getString("curReceivedAmount"))))
                    .subtract(new BigDecimal(Double.parseDouble(dataObj.getString("hisOweReceivedAmount")))).setScale(2, BigDecimal.ROUND_HALF_UP);
            row.createCell(6).setCellValue(oweFeeDec.doubleValue() < 0 ? "0" : oweFeeDec.doubleValue() + "");
            row.createCell(8).setCellValue(oweFeeDec.doubleValue() < 0 ? "0" : oweFeeDec.doubleValue() + "");
            row.createCell(9).setCellValue(dataObj.getString("chargeRate"));
            row.createCell(10).setCellValue(dataObj.getString("updateTime"));
        }
    }