From d5cd948848595b0cffe098ba542a9c879b0f9165 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 13 七月 2026 10:09:39 +0800
Subject: [PATCH] 1.仓储物流-采购模块联动 2.仓储物流-销售模块联动 3.清理表数据
---
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java | 45 ++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 40 insertions(+), 5 deletions(-)
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java
index 71b1884..263b383 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.util.ObjUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@@ -15,6 +16,7 @@
import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessProductDO;
import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessStatusDO;
import cn.iocoder.yudao.module.crm.dal.dataobject.contact.CrmContactBusinessDO;
+import cn.iocoder.yudao.module.crm.dal.dataobject.contact.CrmContactDO;
import cn.iocoder.yudao.module.crm.dal.mysql.business.CrmBusinessMapper;
import cn.iocoder.yudao.module.crm.dal.mysql.business.CrmBusinessProductMapper;
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
@@ -27,7 +29,8 @@
import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO;
-import cn.iocoder.yudao.module.crm.service.product.CrmProductService;
+import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
+import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import com.mzt.logapi.context.LogRecordContext;
import com.mzt.logapi.service.impl.DiffParseFunction;
@@ -43,6 +46,8 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
@@ -78,7 +83,7 @@
@Resource
private CrmContactBusinessService contactBusinessService;
@Resource
- private CrmProductService productService;
+ private MdmItemApi mdmItemApi;
@Resource
private AdminUserApi adminUserApi;
@@ -194,9 +199,15 @@
if (saveReqVO.getCustomerId() != null) {
customerService.validateCustomer(saveReqVO.getCustomerId());
}
- // 鏍¢獙鑱旂郴浜�
+ // 鏍¢獙鑱旂郴浜猴紙涓斿繀椤讳笌鍟嗘満灞炰簬鍚屼竴瀹㈡埛锛岄伩鍏嶈法瀹㈡埛鍏宠仈锛�
if (saveReqVO.getContactId() != null) {
contactService.validateContact(saveReqVO.getContactId());
+ if (saveReqVO.getCustomerId() != null) {
+ CrmContactDO contact = contactService.getContact(saveReqVO.getContactId());
+ if (ObjUtil.notEqual(saveReqVO.getCustomerId(), contact.getCustomerId())) {
+ throw exception(BUSINESS_CONTACT_CUSTOMER_NOT_MATCH);
+ }
+ }
}
// 鏍¢獙璐熻矗浜�
if (saveReqVO.getOwnerUserId() != null) {
@@ -205,8 +216,14 @@
}
private List<CrmBusinessProductDO> validateBusinessProducts(List<CrmBusinessSaveReqVO.BusinessProduct> list) {
- // 1. 鏍¢獙浜у搧瀛樺湪
- productService.validProductList(convertSet(list, CrmBusinessSaveReqVO.BusinessProduct::getProductId));
+ // 1. 鏍¢獙鐗╂枡瀛樺湪
+ Set<Long> itemIds = convertSet(list, CrmBusinessSaveReqVO.BusinessProduct::getItemId);
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(itemIds);
+ for (Long itemId : itemIds) {
+ if (itemMap.get(itemId) == null) {
+ throw exception(PRODUCT_NOT_EXISTS);
+ }
+ }
// 2. 杞寲涓� CrmBusinessProductDO 鍒楄〃
return convertList(list, o -> BeanUtils.toBean(o, CrmBusinessProductDO.class,
item -> item.setTotalPrice(MoneyUtils.priceMultiply(item.getBusinessPrice(), item.getCount()))));
@@ -378,6 +395,24 @@
}
@Override
+ @CrmPermission(bizType = CrmBizTypeEnum.CRM_CUSTOMER, bizId = "#customerId", level = CrmPermissionLevelEnum.READ)
+ public List<CrmBusinessDO> getBusinessListByCustomerId(Long customerId) {
+ return businessMapper.selectListByCustomerId(customerId);
+ }
+
+ @Override
+ @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTACT, bizId = "#contactId", level = CrmPermissionLevelEnum.READ)
+ public List<CrmBusinessDO> getBusinessListByContact(Long contactId) {
+ // 1. 鏌ヨ鍏宠仈鐨勫晢鏈虹紪鍙�
+ List<CrmContactBusinessDO> contactBusinessList = contactBusinessService.getContactBusinessListByContactId(contactId);
+ if (CollUtil.isEmpty(contactBusinessList)) {
+ return ListUtil.empty();
+ }
+ // 2. 鏌ヨ鍟嗘満鍒楄〃
+ return businessMapper.selectByIds(convertSet(contactBusinessList, CrmContactBusinessDO::getBusinessId));
+ }
+
+ @Override
public PageResult<CrmBusinessDO> getBusinessPageByDate(CrmStatisticsFunnelReqVO pageVO) {
return businessMapper.selectPage(pageVO);
}
--
Gitblit v1.9.3