From 962f78c8383e7c884ddb08c951c15e5ba6eb4cb8 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期五, 23 十月 2026 15:43:33 +0800
Subject: [PATCH] fix: 完善审批流程与业务状态校验
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/techconfirm/ProductTechConfirmServiceImpl.java | 68 +++++++++++++++++++++++++++++++++-
1 files changed, 66 insertions(+), 2 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/techconfirm/ProductTechConfirmServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/techconfirm/ProductTechConfirmServiceImpl.java
index 07a031f..88c5280 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/techconfirm/ProductTechConfirmServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/techconfirm/ProductTechConfirmServiceImpl.java
@@ -1,8 +1,14 @@
package cn.iocoder.yudao.module.mes.service.pd.techconfirm;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
+import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO;
+import cn.iocoder.yudao.module.mes.controller.admin.pd.techconfirm.vo.ProductTechConfirmImportExcelVO;
+import cn.iocoder.yudao.module.mes.controller.admin.pd.techconfirm.vo.ProductTechConfirmImportRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.pd.techconfirm.vo.ProductTechConfirmPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pd.techconfirm.vo.ProductTechConfirmSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pd.techconfirm.ProductTechConfirmDO;
@@ -18,7 +24,11 @@
import org.springframework.validation.annotation.Validated;
import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@@ -58,6 +68,9 @@
@Resource
private ApprovalConfigApi approvalConfigApi;
+
+ @Resource
+ private CrmCustomerApi customerApi;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -182,6 +195,56 @@
.build());
}
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public ProductTechConfirmImportRespVO importTechConfirmList(List<ProductTechConfirmImportExcelVO> importList, boolean updateSupport) {
+ if (CollUtil.isEmpty(importList)) {
+ throw exception(PD_TECH_CONFIRM_IMPORT_LIST_IS_EMPTY);
+ }
+ ProductTechConfirmImportRespVO respVO = ProductTechConfirmImportRespVO.builder()
+ .createCodes(new ArrayList<>()).updateCodes(new ArrayList<>())
+ .failureCodes(new LinkedHashMap<>()).build();
+ AtomicInteger index = new AtomicInteger(1);
+ importList.forEach(importItem -> {
+ int currentIndex = index.getAndIncrement();
+ String key = StrUtil.blankToDefault(importItem.getConfirmNo(), "绗� " + currentIndex + " 琛�");
+ if (StrUtil.isBlank(importItem.getConfirmNo())) {
+ respVO.getFailureCodes().put(key, "纭鍑界紪鍙蜂笉鑳戒负绌�");
+ return;
+ }
+ // 1. 瑙f瀽瀹㈡埛鍚嶇О
+ Long customerId = null;
+ if (StrUtil.isNotBlank(importItem.getCustomerName())) {
+ CrmCustomerRespDTO customer = customerApi.getCustomerByName(importItem.getCustomerName().trim());
+ if (customer == null) {
+ respVO.getFailureCodes().put(key, "瀹㈡埛鍚嶇О[" + importItem.getCustomerName() + "]涓嶅瓨鍦�");
+ return;
+ }
+ customerId = customer.getId();
+ }
+ // 2. 鏋勫缓璇锋眰骞跺垱寤�/鏇存柊锛堝鐢ㄧ幇鏈� create/update 鏈嶅姟锛岀姸鎬佺敱 create 鍥哄畾涓鸿崏绋匡級
+ ProductTechConfirmSaveReqVO reqVO = BeanUtils.toBean(importItem, ProductTechConfirmSaveReqVO.class);
+ reqVO.setCustomerId(customerId);
+ try {
+ ProductTechConfirmDO exist = techConfirmMapper.selectByConfirmNo(importItem.getConfirmNo().trim());
+ if (exist == null) {
+ reqVO.setId(null);
+ createTechConfirm(reqVO);
+ respVO.getCreateCodes().add(importItem.getConfirmNo());
+ } else if (updateSupport) {
+ reqVO.setId(exist.getId());
+ updateTechConfirm(reqVO);
+ respVO.getUpdateCodes().add(importItem.getConfirmNo());
+ } else {
+ respVO.getFailureCodes().put(key, "纭鍑界紪鍙峰凡瀛樺湪");
+ }
+ } catch (ServiceException e) {
+ respVO.getFailureCodes().put(key, e.getMessage());
+ }
+ });
+ return respVO;
+ }
+
/**
* 鑾峰彇鐢ㄦ埛鏄电О
*
@@ -197,8 +260,9 @@
}
private void validateConfirmNoUnique(String confirmNo, Long excludeId) {
- if (confirmNo == null) {
- return;
+ // 纭鍑界紪鍙峰繀濉細VO 涓婄殑 @NotBlank 鍙鐩栨帴鍙e叆鍙傦紝Service 鍐咃紙鍚鍏ワ級浠嶉渶鏄惧紡鏍¢獙
+ if (StrUtil.isBlank(confirmNo)) {
+ throw exception(PD_TECH_CONFIRM_NO_REQUIRED);
}
ProductTechConfirmDO techConfirm = techConfirmMapper.selectOne(
ProductTechConfirmDO::getConfirmNo, confirmNo);
--
Gitblit v1.9.3