From 5aacccc0c35f3139a0ef4ab50715c0f1a125817a Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Mon, 31 Mar 2025 10:09:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(crm):=20=E5=A2=9E=E5=8A=A0=E6=B8=A0?= =?UTF-8?q?=E9=81=93=E5=95=86=E8=BD=AC=E4=BB=8B=E5=8A=9F=E8=83=BD=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=A9=E6=95=88=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 CrmContractProductSettlementDTO 中添加 channelNums 字段,用于记录渠道商转介数量 - 在 CrmBusinessDO、CrmBusinessRespVO 和 CrmBusinessSaveReqVO 中添加与渠道商相关的信息字段 - 修改 CrmContractMapper.xml,增加渠道商转介数量的计算逻辑 - 在 SalesPerformanceSettlementDO 和相关的 VO 类中添加渠道商销售和回款相关字段 - 更新 SalesPerformanceSettlementServiceImpl,支持渠道商转介数量和回款金额的统计 --- .../dto/CrmContractProductSettlementDTO.java | 3 +++ .../crmbusiness/vo/CrmBusinessRespVO.java | 11 +++++++++++ .../crmbusiness/vo/CrmBusinessSaveReqVO.java | 13 ++++++++++++- .../vo/SalesPerformanceSettlementRespVO.java | 6 ++++++ .../SalesPerformanceSettlementSaveReqVO.java | 6 ++++++ .../dataobject/crmbusiness/CrmBusinessDO.java | 18 ++++++++++++++++-- .../SalesPerformanceSettlementDO.java | 8 ++++++++ .../SalesPerformanceSettlementServiceImpl.java | 14 +++++++++++--- .../mapper/crmcontract/CrmContractMapper.xml | 4 +++- 9 files changed, 76 insertions(+), 7 deletions(-) diff --git a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/hrm/api/crmcontract/dto/CrmContractProductSettlementDTO.java b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/hrm/api/crmcontract/dto/CrmContractProductSettlementDTO.java index db2633e5..9c89fc0b 100644 --- a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/hrm/api/crmcontract/dto/CrmContractProductSettlementDTO.java +++ b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/hrm/api/crmcontract/dto/CrmContractProductSettlementDTO.java @@ -22,6 +22,9 @@ public class CrmContractProductSettlementDTO { @Schema(description = "数量") private Integer nums; + @Schema(description = "渠道商转介数量") + private Integer channelNums; + @Schema(description = "折扣") private BigDecimal discount; diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmbusiness/vo/CrmBusinessRespVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmbusiness/vo/CrmBusinessRespVO.java index fc39bba4..28b877fa 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmbusiness/vo/CrmBusinessRespVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmbusiness/vo/CrmBusinessRespVO.java @@ -76,4 +76,15 @@ public class CrmBusinessRespVO { @Schema(description = "负责人") private String ownUserName; + @Schema(description = "是否渠道商转介 | 0否 1是") + private Integer isChannel; + + @Schema(description = "渠道商名称") + private String channelName; + + @Schema(description = "渠道商联系方式") + private String channelPhone; + + @Schema(description = "渠道商银行卡号") + private String channelBankNo; } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmbusiness/vo/CrmBusinessSaveReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmbusiness/vo/CrmBusinessSaveReqVO.java index d907dab6..97e5b9a4 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmbusiness/vo/CrmBusinessSaveReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmbusiness/vo/CrmBusinessSaveReqVO.java @@ -54,8 +54,19 @@ public class CrmBusinessSaveReqVO { @Schema(description = "负责人ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24317") private Long ownerUserId; - @Schema(description = "商机产品关联列表") private List businessProducts; + @Schema(description = "是否渠道商转介 | 0否 1是") + private Integer isChannel; + + @Schema(description = "渠道商名称") + private String channelName; + + @Schema(description = "渠道商联系方式") + private String channelPhone; + + @Schema(description = "渠道商银行卡号") + private String channelBankNo; + } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformancesettlement/vo/SalesPerformanceSettlementRespVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformancesettlement/vo/SalesPerformanceSettlementRespVO.java index 2b074917..9e94c15c 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformancesettlement/vo/SalesPerformanceSettlementRespVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformancesettlement/vo/SalesPerformanceSettlementRespVO.java @@ -41,9 +41,15 @@ public class SalesPerformanceSettlementRespVO { @Schema(description = "实际回款额") private BigDecimal actualPayment; + @Schema(description = "渠道回款额") + private BigDecimal channelPayment; + @Schema(description = "实际销售额") private Integer actualSale; + @Schema(description = "渠道销售额") + private Integer channelSale; + @Schema(description = "回款目标") private BigDecimal paymentTarget; diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformancesettlement/vo/SalesPerformanceSettlementSaveReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformancesettlement/vo/SalesPerformanceSettlementSaveReqVO.java index acd85d1a..1853bd87 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformancesettlement/vo/SalesPerformanceSettlementSaveReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformancesettlement/vo/SalesPerformanceSettlementSaveReqVO.java @@ -32,9 +32,15 @@ public class SalesPerformanceSettlementSaveReqVO { @Schema(description = "实际回款额") private BigDecimal actualPayment; + @Schema(description = "渠道回款额") + private BigDecimal channelPayment; + @Schema(description = "实际销售额") private Integer actualSale; + @Schema(description = "渠道销售额") + private Integer channelSale; + @Schema(description = "评分") private BigDecimal score; diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/crmbusiness/CrmBusinessDO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/crmbusiness/CrmBusinessDO.java index c731e46c..e0c17e0c 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/crmbusiness/CrmBusinessDO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/crmbusiness/CrmBusinessDO.java @@ -77,6 +77,20 @@ public class CrmBusinessDO extends BaseDO { * 负责人ID */ private Long ownerUserId; - - + /** + * 是否渠道商转介 | 0否 1是 + */ + private Integer isChannel; + /** + * 渠道商名称 + */ + private String channelName; + /** + * 渠道商电话 + */ + private String channelPhone; + /** + * 渠道商银行账号 + */ + private String channelBankNo; } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/salesperformancesettlement/SalesPerformanceSettlementDO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/salesperformancesettlement/SalesPerformanceSettlementDO.java index 0283b5e2..424f1604 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/salesperformancesettlement/SalesPerformanceSettlementDO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/salesperformancesettlement/SalesPerformanceSettlementDO.java @@ -51,10 +51,18 @@ public class SalesPerformanceSettlementDO extends BaseDO { * 实际回款额 */ private BigDecimal actualPayment; + /** + * 渠道商回款额 + */ + private BigDecimal channelPayment; /** * 实际销售额 */ private Integer actualSale; + /** + * 渠道商销售额 + */ + private Integer channelSale; /** * 评分 */ diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/salesperformancesettlement/SalesPerformanceSettlementServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/salesperformancesettlement/SalesPerformanceSettlementServiceImpl.java index 1af07d2a..97446a58 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/salesperformancesettlement/SalesPerformanceSettlementServiceImpl.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/salesperformancesettlement/SalesPerformanceSettlementServiceImpl.java @@ -55,6 +55,7 @@ import java.util.function.Function; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; import static cn.iocoder.yudao.module.hrm.enums.ErrorCodeConstants.NOT_EDITABLE_UNTIL_SALES_TARGET_HAS_BEEN_APPLIED; /** @@ -219,6 +220,10 @@ public class SalesPerformanceSettlementServiceImpl extends ServiceImpl productMap = contractProductSettlementDTOList.stream().collect(Collectors.groupingBy(CrmContractProductSettlementDTO::getUserId, Collectors.summingInt(CrmContractProductSettlementDTO::getNums))); + //根据用户id分组 并且合并渠道商转介数量 + Map channelMap = contractProductSettlementDTOList.stream().collect(Collectors.groupingBy(CrmContractProductSettlementDTO::getUserId, + Collectors.summingInt(CrmContractProductSettlementDTO::getChannelNums))); + // -- 回款申请 / - 回了多少就是多少咯 - 这个没啥业务判断当前月回了多少款即可 LocalDateTime beginTime = LocalDateTimeUtils.beginOfMonth(now); LocalDateTime endTime = LocalDateTimeUtils.endOfMonth(now); @@ -227,8 +232,8 @@ public class SalesPerformanceSettlementServiceImpl extends ServiceImpl receiptSettlementList = receiptApi.getReceiptSettlement(receiptSettlementVO).getCheckedData(); receiptSettlementList = CollUtil.isEmpty(receiptSettlementList) ? Collections.emptyList() : receiptSettlementList; - Map receiptSettlementMap = receiptSettlementList.stream() - .collect(Collectors.toMap(ReceiptSettlementDTO::getUserId, ReceiptSettlementDTO::getMoney)); + Map receiptSettlementMap = convertMap(receiptSettlementList, ReceiptSettlementDTO::getUserId); + List salesPerformanceSettlementDOS = salesPerformanceSettlementMapper.selectList(new LambdaQueryWrapperX() .eq(SalesPerformanceSettlementDO::getYear, year) .eq(SalesPerformanceSettlementDO::getMonth, month)); @@ -244,6 +249,7 @@ public class SalesPerformanceSettlementServiceImpl extends ServiceImpl