java110
2022-01-17 28e7d3937f819a3486b22bfa1c84aee172aaccb4
service-report/src/main/java/com/java110/report/bmo/reportOweFee/impl/GetReportOweFeeBMOImpl.java
@@ -1,6 +1,5 @@
package com.java110.report.bmo.reportOweFee.impl;
import com.java110.dto.PageDto;
import com.java110.dto.reportOweFee.ReportOweFeeDto;
import com.java110.dto.reportOweFee.ReportOweFeeItemDto;
import com.java110.intf.report.IReportOweFeeInnerServiceSMO;
@@ -15,9 +14,7 @@
import java.math.BigDecimal;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
@Service("getReportOweFeeBMOImpl")
public class GetReportOweFeeBMOImpl implements IGetReportOweFeeBMO {
@@ -32,35 +29,69 @@
     */
    public ResponseEntity<String> get(ReportOweFeeDto reportOweFeeDto) {
        reportOweFeeDto.setHasOweFee("Y");
        int count = reportOweFeeInnerServiceSMOImpl.queryReportOweFeesCount(reportOweFeeDto);
        List<ReportOweFeeDto> reportOweFeeDtos = new ArrayList<>();
        List<ReportOweFeeDto> reportOweFeeDtos = null;
        if (count > 0) {
            reportOweFeeDto.setPage(PageDto.DEFAULT_PAGE);
            List<ReportOweFeeDto> reportOweFees = reportOweFeeInnerServiceSMOImpl.queryReportOweFees(reportOweFeeDto);
            refreshReportOwe(reportOweFees, reportOweFeeDto.getConfigIds());
            for (ReportOweFeeDto reportOweFee : reportOweFees) {
                //获取欠费总金额
                String amountOwed = reportOweFee.getAmountOwed();
                if (!StringUtil.isEmpty(amountOwed)) {
                    double amountOwedMoney = Double.parseDouble(amountOwed);
                    if (amountOwedMoney > 0.0) {
                        reportOweFeeDtos.add(reportOweFee);
                    } else {
                        continue;
                    }
                }
            }
            reportOweFeeDtos = reportOweFeeInnerServiceSMOImpl.queryReportOweFees(reportOweFeeDto);
            refreshReportOwe(reportOweFeeDtos, reportOweFeeDto.getConfigIds());
            //查询大计 合计
            dealTheOweFeeSumAmount(reportOweFeeDtos, reportOweFeeDto);
        } else {
            reportOweFeeDtos = new ArrayList<>();
        }
        ResultVo resultVo = new ResultVo((int) Math.ceil((double) reportOweFeeDtos.size() / (double) reportOweFeeDto.getRow()), reportOweFeeDtos.size(), reportOweFeeDtos);
        //按照 amountOwed 降序排列
        // reportOweFeeDtos.sort(Comparator.comparing(ReportOweFeeDto :: getAmountOwed).reversed());
        Collections.sort(reportOweFeeDtos, new Comparator<ReportOweFeeDto>() {
            @Override
            public int compare(ReportOweFeeDto o1, ReportOweFeeDto o2) {
                //降序
                return o2.getAmountOwed().compareTo(o1.getAmountOwed());
            }
        });
        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reportOweFeeDto.getRow()), count, reportOweFeeDtos);
        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
        return responseEntity;
    }
    /**
     * 查询大计 总欠费 和 各个费用项总欠费
     *
     * @param reportOweFeeDtos
     * @param reportOweFeeDto
     */
    private void dealTheOweFeeSumAmount(List<ReportOweFeeDto> reportOweFeeDtos, ReportOweFeeDto reportOweFeeDto) {
        if (reportOweFeeDtos == null || reportOweFeeDtos.size() < 1) {
            return;
        }
        //查询总计
        double totalAmount = 0.0;
        if (reportOweFeeDto.getConfigIds() == null || reportOweFeeDto.getConfigIds().length < 1) {
            totalAmount = reportOweFeeInnerServiceSMOImpl.computeReportOweFeeTotalAmount(reportOweFeeDto);
            for (ReportOweFeeDto reportOweFeeDto1 : reportOweFeeDtos) {
                reportOweFeeDto1.setTotalOweAmount(totalAmount);
            }
            return;
        }
        //计算分项的累计值
        List<ReportOweFeeItemDto> reportOweFeeItemDtos = reportOweFeeInnerServiceSMOImpl.computeReportOweFeeItemAmount(reportOweFeeDto);
        if (reportOweFeeItemDtos == null || reportOweFeeItemDtos.size() < 1) {
            return;
        }
        BigDecimal totalAmountDes = new BigDecimal(totalAmount);
        for (ReportOweFeeItemDto tmpReportOweFeeItemDto : reportOweFeeItemDtos) {
            totalAmountDes = totalAmountDes.add(new BigDecimal(tmpReportOweFeeItemDto.getTotalOweAmount())).setScale(2, BigDecimal.ROUND_HALF_UP);
        }
        for (ReportOweFeeDto reportOweFeeDto1 : reportOweFeeDtos) {
            reportOweFeeDto1.setItemTotalOweAmounts(reportOweFeeItemDtos);
            reportOweFeeDto1.setTotalOweAmount(totalAmountDes.doubleValue());
        }
    }
    /**
@@ -167,6 +198,7 @@
            dealItem(tmpReportOweFeeDto, reportOweFeeDtos);
        }
        if (configIds == null || configIds.length < 1) {
            return;
        }