Your Name
2023-07-06 3ca4623755871691cba2c600f4688b8b38512e4e
service-job/src/main/java/com/java110/job/export/adapt/ReportFeeSummaryAdapt.java
@@ -1,7 +1,7 @@
package com.java110.job.export.adapt;
import com.alibaba.fastjson.JSONObject;
import com.java110.dto.FloorDto;
import com.java110.dto.floor.FloorDto;
import com.java110.dto.data.ExportDataDto;
import com.java110.dto.report.QueryStatisticsDto;
import com.java110.intf.community.IFloorV1InnerServiceSMO;
@@ -40,9 +40,12 @@
        row.createCell(1).setCellValue("收费户");
        row.createCell(2).setCellValue("欠费户");
        row.createCell(3).setCellValue("历史欠费+当期欠费=欠费");
        row.createCell(6).setCellValue("欠费追回+当期实收+预交=实收");
        row.createCell(10).setCellValue("已交户/收费户=户收费率");
        row.createCell(11).setCellValue("(实收-预交)/(历史欠费+当期应收)=收费率");
        row.createCell(6).setCellValue("欠费追回+当期部分+预交=实缴");
        row.createCell(10).setCellValue("当期应收");
        row.createCell(11).setCellValue("当期实收");
        row.createCell(12).setCellValue("已交户/收费户=户收费率");
        row.createCell(13).setCellValue("当期实收/当期应收=收费率");
        row.createCell(14).setCellValue("欠费追回/(欠费追回+历史欠费)=清缴率");
        JSONObject reqJson = exportDataDto.getReqJson();
@@ -75,41 +78,51 @@
        Row row = null;
        row = sheet.createRow(step);
        row.createCell(0).setCellValue(floorDto.getFloorName());
        row.createCell(1).setCellValue(dataObj.getString("feeRoomCount"));
        row.createCell(2).setCellValue(dataObj.getString("oweRoomCount"));
        row.createCell(3).setCellValue(dataObj.getString("hisOweFee"));
        row.createCell(4).setCellValue(dataObj.getString("curOweFee"));
        row.createCell(1).setCellValue(dataObj.getIntValue("feeRoomCount"));
        row.createCell(2).setCellValue(dataObj.getIntValue("oweRoomCount"));
        row.createCell(3).setCellValue(dataObj.getDouble("hisOweFee"));
        row.createCell(4).setCellValue(dataObj.getDouble("curOweFee"));
        BigDecimal curOweFee = new BigDecimal(dataObj.getDouble("curOweFee"));
        BigDecimal hisOweFee = new BigDecimal(dataObj.getDouble("hisOweFee"));
        row.createCell(5).setCellValue(curOweFee.add(hisOweFee).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
        row.createCell(6).setCellValue(dataObj.getString("hisReceivedFee"));
        row.createCell(6).setCellValue(dataObj.getDouble("hisReceivedFee"));
        //(fee.receivedFee-fee.hisReceivedFee-fee.preReceivedFee)
        BigDecimal receivedFee = new BigDecimal(dataObj.getDouble("receivedFee"));
        BigDecimal hisReceivedFee = new BigDecimal(dataObj.getDouble("hisReceivedFee"));
        BigDecimal preReceivedFee = new BigDecimal(dataObj.getDouble("preReceivedFee"));
        row.createCell(7).setCellValue(receivedFee.subtract(hisReceivedFee).subtract(preReceivedFee).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
        row.createCell(8).setCellValue(dataObj.getString("preReceivedFee"));
        row.createCell(9).setCellValue(dataObj.getString("receivedFee"));
        row.createCell(8).setCellValue(dataObj.getDouble("preReceivedFee"));
        row.createCell(9).setCellValue(dataObj.getDouble("receivedFee"));
        //((fee.feeRoomCount-fee.oweRoomCount)/fee.feeRoomCount*100).toFixed(2)
        row.createCell(10).setCellValue(dataObj.getDouble("curReceivableFee"));
        BigDecimal curReceivableFee = new BigDecimal(dataObj.getDouble("curReceivableFee"));
        BigDecimal curReceivedFee = curReceivableFee.subtract(curOweFee);
        row.createCell(11).setCellValue(curReceivedFee.doubleValue());
        //todo 计算户收费率
        BigDecimal feeRoomCount = new BigDecimal(dataObj.getDouble("feeRoomCount"));
        BigDecimal oweRoomCount = new BigDecimal(dataObj.getDouble("oweRoomCount"));
        BigDecimal roomFeeRate = new BigDecimal(0);
        if(feeRoomCount.doubleValue()>0){
            feeRoomCount.subtract(oweRoomCount).divide(feeRoomCount, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
        if (feeRoomCount.doubleValue() > 0) {
            roomFeeRate = feeRoomCount.subtract(oweRoomCount).divide(feeRoomCount, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
        }
        row.createCell(10).setCellValue(roomFeeRate.doubleValue() + "%");
        //((fee.receivedFee-fee.preReceivedFee)/(fee.hisOweFee+fee.curReceivableFee)*100).toFixed(2)
        BigDecimal curReceivableFee = new BigDecimal(dataObj.getDouble("curReceivableFee"));
        curReceivableFee = hisOweFee.add(curReceivableFee);
        roomFeeRate = new BigDecimal(0);
        if(curReceivableFee.doubleValue()> 0) {
            roomFeeRate = receivedFee.subtract(preReceivedFee).divide(curReceivableFee, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
        }
        row.createCell(11).setCellValue(roomFeeRate.doubleValue() + "%");
        row.createCell(12).setCellValue(roomFeeRate.doubleValue() + "%");
        //todo 计算收费率 当期实收/当期应收=收费率
        roomFeeRate = new BigDecimal(0);
        if (curReceivableFee.doubleValue() > 0) {
            roomFeeRate = curReceivedFee.divide(curReceivableFee, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
        }
        //todo 计算清缴率 欠费追回/(欠费追回+历史欠费)=清缴率
        row.createCell(13).setCellValue(roomFeeRate.doubleValue() + "%");
        hisReceivedFee = hisReceivedFee.add(hisOweFee);
        roomFeeRate = new BigDecimal(0);
        if (hisReceivedFee.doubleValue() > 0) {
            roomFeeRate = hisReceivedFee.divide(hisReceivedFee, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
        }
        row.createCell(14).setCellValue(roomFeeRate.doubleValue() + "%");
    }
    /**