xuhy
2025-04-27 5fa6e6f8410ef9d057174bcff2a3c5038c54a551
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ScreenService.java
@@ -2,7 +2,6 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BillTypeEnum;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.model.TBill;
@@ -21,7 +20,12 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
 * @author mitao
@@ -61,13 +65,13 @@
                .filter(item -> !item.getPayFeesStatus().equals("5"))
                .map(TBill::getPayableFeesMoney)
                .reduce(BigDecimal.ZERO, BigDecimal::add)
                .divide(new BigDecimal("10000"),2, RoundingMode.HALF_UP);
                .divide(new BigDecimal("10000"),2, RoundingMode.DOWN);
        vo.setTotalReceivableRent(totalReceivableRent);
        //总计已收租金
        BigDecimal totalReceivedRent = billList.stream()
                .map(TBill::getPayFeesMoney)
                .reduce(BigDecimal.ZERO, BigDecimal::add)
                .divide(new BigDecimal("10000"),2, RoundingMode.HALF_UP);
                .divide(new BigDecimal("10000"),2, RoundingMode.DOWN);
        vo.setTotalReceivedRent(totalReceivedRent);
        //本月新增租户数
        Integer newTenantCount = tContractService.getCurrentMonthRentCount(businessDeptId);
@@ -88,26 +92,26 @@
        BigDecimal totalRentPaid = currentQuarterBillList.stream()
                .map(TBill::getPayFeesMoney)
                .reduce(BigDecimal.ZERO, BigDecimal::add)
                .divide(new BigDecimal("10000"),2, RoundingMode.HALF_UP);
                .divide(new BigDecimal("10000"),2, RoundingMode.DOWN);
        vo.setTotalRentPaid(totalRentPaid);
        //本季度应交租金
        BigDecimal totalRentShould = currentQuarterBillList.stream()
                .filter(item -> !item.getPayFeesStatus().equals("5"))
                .map(TBill::getPayableFeesMoney)
                .reduce(BigDecimal.ZERO, BigDecimal::add)
                .divide(new BigDecimal("10000"),2, RoundingMode.HALF_UP);
                .divide(new BigDecimal("10000"),2, RoundingMode.DOWN);
        vo.setTotalRentShould(totalRentShould);
        //本季度欠费
        BigDecimal totalRentOwe = currentQuarterBillList.stream()
                .map(TBill::getOutstandingMoney)
                .reduce(BigDecimal.ZERO, BigDecimal::add)
                .divide(BigDecimal.valueOf(10000L), 2, RoundingMode.HALF_UP);
                .divide(BigDecimal.valueOf(10000L), 2, RoundingMode.DOWN);
        vo.setTotalRentOwe(totalRentOwe);
        //总计欠费
        BigDecimal totalRentOweAll = billList.stream()
                .map(TBill::getOutstandingMoney)
                .reduce(BigDecimal.ZERO, BigDecimal::add)
                .divide(BigDecimal.valueOf(10000L), 2, RoundingMode.HALF_UP);
                .divide(BigDecimal.valueOf(10000L), 2, RoundingMode.DOWN);
        vo.setTotalRentOweAll(totalRentOweAll);
        return vo;
    }
@@ -150,14 +154,14 @@
                    .map(TBill::getPayFeesMoney)
                    .filter(Objects::nonNull)
                    .reduce(BigDecimal.ZERO, BigDecimal::add)
                    .divide(BigDecimal.valueOf(10000L), 2, RoundingMode.HALF_UP);
                    .divide(BigDecimal.valueOf(10000L), 2, RoundingMode.DOWN);
            // 计算季度欠费总和
            BigDecimal quarterOutstanding = quarterBills.stream()
                    .map(TBill::getOutstandingMoney)
                    .filter(Objects::nonNull)
                    .reduce(BigDecimal.ZERO, BigDecimal::add)
                    .divide(BigDecimal.valueOf(10000L), 2, RoundingMode.HALF_UP);
                    .divide(BigDecimal.valueOf(10000L), 2, RoundingMode.DOWN);
            // 生成季度标签 (格式: YY-MM月)
            Calendar cal = Calendar.getInstance();
@@ -192,7 +196,7 @@
            List<TContract> contracts = contractService.list(new LambdaQueryWrapper<TContract>()
                    .eq(!"0".equals(businessDeptId), TContract::getBusinessDeptId, businessDeptId)
                    .eq(TContract::getPayType, 1)
                    .eq(TContract::getPayType, 2)
                    .isNotNull(TContract::getSignTime)
                    .between(TContract::getSignTime, quarterStart, quarterEnd)
                    .orderByAsc(TContract::getSignTime));