xiaogang
2021-07-17 1024666b99a24bd7d5e4dc442d6b0c0319fa2f29
service-report/src/main/java/com/java110/report/bmo/reportOweFee/impl/GetReportOweFeeBMOImpl.java
@@ -5,6 +5,7 @@
import com.java110.intf.report.IReportOweFeeInnerServiceSMO;
import com.java110.report.bmo.reportOweFee.IGetReportOweFeeBMO;
import com.java110.utils.util.DateUtil;
import com.java110.utils.util.StringUtil;
import com.java110.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
@@ -48,26 +49,117 @@
        return responseEntity;
    }
    private void refreshReportOwe(List<ReportOweFeeDto> reportOweFeeDtos, String[] configIds) {
    /**
     * query all owe fee
     *
     * @param reportOweFeeDto
     * @return
     */
    @Override
    public ResponseEntity<String> getAllFees(ReportOweFeeDto reportOweFeeDto) {
        //
        List<ReportOweFeeDto> allReportOweFeeDtos = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFees(reportOweFeeDto);
        if (allReportOweFeeDtos == null || allReportOweFeeDtos.size() < 1) {
            return ResultVo.createResponseEntity(allReportOweFeeDtos);
        }
        //get old report owe fee
        List<ReportOweFeeDto> oldReportOweFeeDtos = new ArrayList<>();
        ReportOweFeeDto oldReportOweFeeDto = null;
        for (ReportOweFeeDto tmpReportOweFeeDto : allReportOweFeeDtos) {
            if (existsOweFee(oldReportOweFeeDtos, tmpReportOweFeeDto.getPayerObjId())) {
                continue;
            }
            oldReportOweFeeDto = new ReportOweFeeDto();
            oldReportOweFeeDto.setPayerObjId(tmpReportOweFeeDto.getPayerObjId());
            oldReportOweFeeDtos.add(oldReportOweFeeDto);
        }
        for (ReportOweFeeDto tmpReportOweFeeDto : oldReportOweFeeDtos) {
            dealItem(tmpReportOweFeeDto, allReportOweFeeDtos);
        }
        if (reportOweFeeDto.getConfigIds() == null || reportOweFeeDto.getConfigIds().length < 1) {
            return ResultVo.createResponseEntity(oldReportOweFeeDtos);
        }
        //如果费用对象上没有这个费用项时默认写零
        for (ReportOweFeeDto tmpReportOweFeeDto : oldReportOweFeeDtos) {
            for (String configId : reportOweFeeDto.getConfigIds()) {
                if (hasItem(tmpReportOweFeeDto.getItems(), configId) != null) {
                    continue;
                }
                ReportOweFeeItemDto reportOweFeeItemDto = new ReportOweFeeItemDto();
                reportOweFeeItemDto.setConfigId(configId);
                reportOweFeeItemDto.setFeeName("");
                reportOweFeeItemDto.setAmountOwed("0");
                reportOweFeeItemDto.setPayerObjId("");
                reportOweFeeItemDto.setPayerObjName("");
                tmpReportOweFeeDto.getItems().add(reportOweFeeItemDto);
            }
        }
        return ResultVo.createResponseEntity(oldReportOweFeeDtos);
    }
    /**
     * exists owe fee in oldReportOweFeeDtos
     * true is exists false is not
     *
     * @param oldReportOweFeeDtos
     * @param payerObjId
     * @return
     */
    private boolean existsOweFee(List<ReportOweFeeDto> oldReportOweFeeDtos, String payerObjId) {
        for (ReportOweFeeDto tmpReportOweFeeDto : oldReportOweFeeDtos) {
            // if equal return true
            if (tmpReportOweFeeDto.getPayerObjId().equals(payerObjId)) {
                return true;
            }
        }
        //default return false
        return false;
    }
    private void refreshReportOwe(List<ReportOweFeeDto> oldReportOweFeeDtos, String[] configIds) {
        List<String> payObjIds = new ArrayList<>();
        if (reportOweFeeDtos == null || reportOweFeeDtos.size() < 1) {
        if (oldReportOweFeeDtos == null || oldReportOweFeeDtos.size() < 1) {
            return;
        }
        for (ReportOweFeeDto reportOweFeeDto : reportOweFeeDtos) {
        for (ReportOweFeeDto reportOweFeeDto : oldReportOweFeeDtos) {
            payObjIds.add(reportOweFeeDto.getPayerObjId());
        }
        ReportOweFeeDto reportOweFeeDto = new ReportOweFeeDto();
        reportOweFeeDto.setPayerObjIds(payObjIds.toArray(new String[payObjIds.size()]));
        reportOweFeeDtos = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFees(reportOweFeeDto);
        for (ReportOweFeeDto tmpReportOweFeeDto : reportOweFeeDtos) {
        List<ReportOweFeeDto> allReportOweFeeDtos = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFees(reportOweFeeDto);
        List<ReportOweFeeDto> reportOweFeeDtos = new ArrayList<>();
        for (ReportOweFeeDto reportOweFee : allReportOweFeeDtos) {
            ReportOweFeeDto reportOwe = new ReportOweFeeDto();
            reportOwe.setOweId(reportOweFee.getOweId());
            if (reportOweFee.getPayerObjType().equals("3333")) {
                List<ReportOweFeeDto> reportOweFees = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFeesByRoom(reportOwe);
                reportOweFee.setOweId(reportOweFees.get(0).getOweId());
                reportOweFee.setOwnerName(reportOweFees.get(0).getOwnerName());
            } else if (reportOweFee.getPayerObjType().equals("6666")) {
                List<ReportOweFeeDto> reportOweFees = reportOweFeeInnerServiceSMOImpl.queryReportAllOweFeesByCar(reportOwe);
                reportOweFee.setOweId(reportOweFees.get(0).getOweId());
                reportOweFee.setOwnerName(reportOweFees.get(0).getOwnerName());
            }
            reportOweFeeDtos.add(reportOweFee);
        }
        for (ReportOweFeeDto tmpReportOweFeeDto : oldReportOweFeeDtos) {
            dealItem(tmpReportOweFeeDto, reportOweFeeDtos);
        }
        if (configIds == null || configIds.length < 1) {
            return;
        }
        //如果费用对象上没有这个费用项时默认写零
        for (ReportOweFeeDto tmpReportOweFeeDto : reportOweFeeDtos) {
        for (ReportOweFeeDto tmpReportOweFeeDto : oldReportOweFeeDtos) {
            for (String configId : configIds) {
                if (hasItem(tmpReportOweFeeDto.getItems(), configId) != null) {
                    continue;
@@ -84,15 +176,15 @@
    }
    private void dealItem(ReportOweFeeDto tmpReportOweFeeDto, List<ReportOweFeeDto> reportOweFeeDtos) {
    private void dealItem(ReportOweFeeDto oldReportOweFeeDto, List<ReportOweFeeDto> allReportOweFeeDtos) {
        List<ReportOweFeeItemDto> items = new ArrayList<>();
        if (reportOweFeeDtos == null || reportOweFeeDtos.size() < 1) {
        if (allReportOweFeeDtos == null || allReportOweFeeDtos.size() < 1) {
            return;
        }
        ReportOweFeeItemDto reportOweFeeItemDto = null;
        for (ReportOweFeeDto reportOweFeeDto : reportOweFeeDtos) {
            if (!tmpReportOweFeeDto.getPayerObjId().equals(reportOweFeeDto.getPayerObjId())) {
        for (ReportOweFeeDto reportOweFeeDto : allReportOweFeeDtos) {
            if (!oldReportOweFeeDto.getPayerObjId().equals(reportOweFeeDto.getPayerObjId())) {
                continue;
            }
            reportOweFeeItemDto = hasItem(items, reportOweFeeDto.getConfigId());
@@ -103,6 +195,7 @@
                reportOweFeeItemDto.setAmountOwed(reportOweFeeDto.getAmountOwed());
                reportOweFeeItemDto.setPayerObjId(reportOweFeeDto.getPayerObjId());
                reportOweFeeItemDto.setPayerObjName(reportOweFeeDto.getPayerObjName());
                reportOweFeeItemDto.setConfigName(reportOweFeeDto.getConfigName());
                try {
                    reportOweFeeItemDto.setStartTime(DateUtil.getDateFromString(reportOweFeeDto.getEndTime(), DateUtil.DATE_FORMATE_STRING_A));
                    reportOweFeeItemDto.setEndTime(DateUtil.getDateFromString(reportOweFeeDto.getDeadlineTime(), DateUtil.DATE_FORMATE_STRING_A));
@@ -112,10 +205,14 @@
                items.add(reportOweFeeItemDto);
            } else {
                BigDecimal oldAmount = new BigDecimal(Double.parseDouble(reportOweFeeItemDto.getAmountOwed()));
                oldAmount = oldAmount.add(new BigDecimal(Double.parseDouble(reportOweFeeDto.getAmountOwed())));
                oldAmount = oldAmount.add(new BigDecimal(Double.parseDouble(reportOweFeeDto.getAmountOwed()))).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                reportOweFeeItemDto.setAmountOwed(oldAmount.doubleValue() + "");
            }
            tmpReportOweFeeDto.setOwnerName(reportOweFeeDto.getOwnerName());
            if (!StringUtil.isEmpty(reportOweFeeDto.getOwnerName())) {
                oldReportOweFeeDto.setOwnerName(reportOweFeeDto.getOwnerName());
            }
            oldReportOweFeeDto.setUpdateTime(reportOweFeeDto.getUpdateTime());
            oldReportOweFeeDto.setConfigName(reportOweFeeDto.getConfigName());
        }
        //计算总金额
@@ -133,15 +230,16 @@
                endTime = tempReportOweFeeItemDto.getEndTime();
            }
            if (endTime.getTime() < tempReportOweFeeItemDto.getEndTime().getTime()) {
                endTime = tempReportOweFeeItemDto.getStartTime();
                endTime = tempReportOweFeeItemDto.getEndTime();
            }
            totalAmount = totalAmount.add(new BigDecimal(Double.parseDouble(tempReportOweFeeItemDto.getAmountOwed())));
            totalAmount = totalAmount.add(new BigDecimal(Double.parseDouble(tempReportOweFeeItemDto.getAmountOwed()))).setScale(2, BigDecimal.ROUND_HALF_EVEN);
        }
        tmpReportOweFeeDto.setEndTime(DateUtil.getFormatTimeString(startTime, DateUtil.DATE_FORMATE_STRING_A));
        tmpReportOweFeeDto.setDeadlineTime(DateUtil.getFormatTimeString(endTime, DateUtil.DATE_FORMATE_STRING_A));
        tmpReportOweFeeDto.setItems(items);
        tmpReportOweFeeDto.setPayerObjName(items.get(0).getPayerObjName());
        tmpReportOweFeeDto.setAmountOwed(totalAmount.doubleValue() + "");
        oldReportOweFeeDto.setEndTime(DateUtil.getFormatTimeString(startTime, DateUtil.DATE_FORMATE_STRING_A));
        oldReportOweFeeDto.setDeadlineTime(DateUtil.getFormatTimeString(endTime, DateUtil.DATE_FORMATE_STRING_A));
        oldReportOweFeeDto.setItems(items);
        oldReportOweFeeDto.setPayerObjName(items.get(0).getPayerObjName());
        oldReportOweFeeDto.setAmountOwed(totalAmount.doubleValue() + "");
    }
    private ReportOweFeeItemDto hasItem(List<ReportOweFeeItemDto> reportOweFeeItemDtos, String configId) {