From ee982b85c9ff09fbf6a6eb7c133b1e6f5fb160ba Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期五, 14 八月 2026 14:56:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_business' into dev_business
---
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 58 insertions(+), 0 deletions(-)
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java
index 904357e..fa39454 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java
@@ -13,6 +13,7 @@
import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum;
import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.ibatis.annotations.Mapper;
import java.math.BigDecimal;
@@ -33,6 +34,11 @@
default CrmReceivableDO selectByNo(String no) {
return selectOne(CrmReceivableDO::getNo, no);
+ }
+
+ default int updateByIdAndStatus(Long id, Integer status, CrmReceivableDO updateObj) {
+ return update(updateObj, new LambdaUpdateWrapper<CrmReceivableDO>()
+ .eq(CrmReceivableDO::getId, id).eq(CrmReceivableDO::getAuditStatus, status));
}
default PageResult<CrmReceivableDO> selectPageByCustomerId(CrmReceivablePageReqVO reqVO) {
@@ -75,6 +81,27 @@
.in(CrmReceivableDO::getAuditStatus, auditStatuses));
}
+ default List<CrmReceivableDO> selectListByInvoiceIdAndStatus(Long invoiceId, Collection<Integer> auditStatuses) {
+ return selectList(new LambdaQueryWrapperX<CrmReceivableDO>()
+ .eq(CrmReceivableDO::getInvoiceId, invoiceId)
+ .in(CrmReceivableDO::getAuditStatus, auditStatuses));
+ }
+
+ default Map<Long, BigDecimal> selectReceivablePriceMapByInvoiceId(Collection<Long> invoiceIds) {
+ if (CollUtil.isEmpty(invoiceIds)) {
+ return Collections.emptyMap();
+ }
+ // SQL sum 鏌ヨ
+ List<Map<String, Object>> result = selectMaps(new QueryWrapper<CrmReceivableDO>()
+ .select("invoice_id, SUM(price) AS total_price")
+ .in("audit_status", CrmAuditStatusEnum.DRAFT.getStatus(), // 鑽夌 + 瀹℃壒涓� + 瀹℃壒閫氳繃
+ CrmAuditStatusEnum.PROCESS.getStatus(), CrmAuditStatusEnum.APPROVE.getStatus())
+ .groupBy("invoice_id")
+ .in("invoice_id", invoiceIds));
+ // 鑾峰緱閲戦
+ return convertMap(result, obj -> (Long) obj.get("invoice_id"), obj -> (BigDecimal) obj.get("total_price"));
+ }
+
default Map<Long, BigDecimal> selectReceivablePriceMapByContractId(Collection<Long> contractIds) {
if (CollUtil.isEmpty(contractIds)) {
return Collections.emptyMap();
@@ -94,4 +121,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);
+ }
+
}
--
Gitblit v1.9.3