From 84ac2b6b12bc3e5de072661fb25e87877c01d0d7 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期六, 18 七月 2026 13:41:35 +0800
Subject: [PATCH] feat(crm): 添加客户权限过滤功能并实现销售订单客户权限控制
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java | 35 +++++++++++++++++++++++++++++++----
1 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java
index 352debd..fff9c10 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java
@@ -14,21 +14,25 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesLineMapper;
import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmProductSalesStatusEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmSalesNoticeStatusEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockReserveBizTypeEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum;
-import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService;
+import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
import cn.iocoder.yudao.module.mes.service.wm.salesnotice.MesWmSalesNoticeService;
import cn.iocoder.yudao.module.mes.service.wm.stockreserve.MesWmStockReserveService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO;
+import cn.iocoder.yudao.module.mes.service.qc.oqc.MesQcOqcService;
import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi;
import cn.iocoder.yudao.module.erp.api.sale.enums.ErpSaleOrderOutStatusEnum;
import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
@@ -47,17 +51,20 @@
*/
@Service
@Validated
+@Slf4j
public class MesWmProductSalesServiceImpl implements MesWmProductSalesService {
@Resource
private MesWmProductSalesMapper productSalesMapper;
+ @Resource
+ private MesWmProductSalesLineMapper productSalesLineMapper;
@Resource
private MesWmProductSalesLineService productSalesLineService;
@Resource
private MesWmProductSalesDetailService productSalesDetailService;
@Resource
- private MesMdClientService clientService;
+ private CrmCustomerApi customerApi;
@Resource
private MesWmSalesNoticeService salesNoticeService;
@Resource
@@ -66,6 +73,9 @@
private MesWmMaterialStockService materialStockService;
@Resource
private MesWmStockReserveService stockReserveService;
+ @Resource
+ @Lazy
+ private MesQcOqcService oqcService;
@Resource
private ErpSaleOrderApi saleOrderApi;
@@ -114,7 +124,8 @@
@Override
public PageResult<MesWmProductSalesDO> getProductSalesPage(MesWmProductSalesPageReqVO pageReqVO) {
- return productSalesMapper.selectPage(pageReqVO);
+ List<Long> permittedClientIds = customerApi.getPermittedCustomerIds();
+ return productSalesMapper.selectPage(pageReqVO, permittedClientIds);
}
@Override
@@ -134,10 +145,26 @@
}
}
+ // 鑾峰彇鍑哄簱鍗曚俊鎭�
+ MesWmProductSalesDO sales = productSalesMapper.selectById(id);
+
// 妫�鏌ユ墍鏈夎鐨� oqcCheckFlag锛氬鏋滄湁闇�瑕� OQC 妫�楠岀殑琛岋紝杩涘叆寰呮娴嬬姸鎬�
boolean needOqc = CollectionUtils.anyMatch(lines,
line -> Boolean.TRUE.equals(line.getOqcCheckFlag()));
if (needOqc) {
+ // 涓洪渶瑕� OQC 妫�楠屼笖灏氭湭鍒涘缓妫�楠屽崟鐨勬槑缁嗗垱寤� OQC 妫�楠屽崟
+ List<MesWmProductSalesLineDO> oqcLines = CollectionUtils.filterList(lines,
+ line -> Boolean.TRUE.equals(line.getOqcCheckFlag()) && line.getOqcId() == null);
+ for (MesWmProductSalesLineDO line : oqcLines) {
+ // 鐩存帴璋冪敤锛岃寮傚父鎶涘嚭锛屼繚璇佹暟鎹竴鑷存��
+ Long oqcId = oqcService.createOqcFromProductSales(
+ sales.getId(), line, sales.getCode(), sales.getClientId());
+ // 鏇存柊鍑哄簱鏄庣粏鐨� oqcId
+ productSalesLineMapper.updateById(new MesWmProductSalesLineDO()
+ .setId(line.getId())
+ .setOqcId(oqcId));
+ }
+
// 鎵归噺鍒濆鍖� OQC 琛岀殑璐ㄩ噺鐘舵�佷负"寰呮楠�"
List<Long> oqcLineIds = convertList(
CollectionUtils.filterList(lines, line -> Boolean.TRUE.equals(line.getOqcCheckFlag())),
@@ -366,7 +393,7 @@
// 鏍¢獙缂栫爜鍞竴
validateCodeUnique(id, reqVO.getCode());
// 鏍¢獙瀹㈡埛瀛樺湪
- clientService.validateClientExistsAndEnable(reqVO.getClientId());
+ customerApi.validateCustomer(reqVO.getClientId());
// 鏍¢獙鍙戣揣閫氱煡鍗�
if (reqVO.getNoticeId() != null) {
MesWmSalesNoticeDO notice = salesNoticeService.validateSalesNoticeExists(reqVO.getNoticeId());
--
Gitblit v1.9.3