2026-07-01 6b5f7c66fc40d7f6099d561e31a34fbd50dd20d3
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java
@@ -94,4 +94,35 @@
        return selectCount(CrmReceivableDO::getContractId, contractId);
    }
    // ========== 统计方法 ==========
    default BigDecimal selectReceivablePriceSum() {
        LambdaQueryWrapperX<CrmReceivableDO> query = new LambdaQueryWrapperX<>();
        query.in(CrmReceivableDO::getAuditStatus,
                CrmAuditStatusEnum.DRAFT.getStatus(),
                CrmAuditStatusEnum.PROCESS.getStatus(),
                CrmAuditStatusEnum.APPROVE.getStatus())
                .select(CrmReceivableDO::getPrice);
        List<CrmReceivableDO> list = selectList(query);
        return list.stream()
                .map(CrmReceivableDO::getPrice)
                .filter(p -> p != null)
                .reduce(BigDecimal.ZERO, BigDecimal::add);
    }
    default BigDecimal selectReceivablePriceSumByOwnerUserId(Long ownerUserId) {
        LambdaQueryWrapperX<CrmReceivableDO> query = new LambdaQueryWrapperX<>();
        query.eq(CrmReceivableDO::getOwnerUserId, ownerUserId)
                .in(CrmReceivableDO::getAuditStatus,
                        CrmAuditStatusEnum.DRAFT.getStatus(),
                        CrmAuditStatusEnum.PROCESS.getStatus(),
                        CrmAuditStatusEnum.APPROVE.getStatus())
                .select(CrmReceivableDO::getPrice);
        List<CrmReceivableDO> list = selectList(query);
        return list.stream()
                .map(CrmReceivableDO::getPrice)
                .filter(p -> p != null)
                .reduce(BigDecimal.ZERO, BigDecimal::add);
    }
}