From 763c537040d45334190f470cd5ba056610d3aa36 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 16 四月 2026 11:01:36 +0800
Subject: [PATCH] feat: 部件的导入修改

---
 src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java |  130 ++++++++++++++++++++++++++++++++-----------
 1 files changed, 96 insertions(+), 34 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
index 3be9086..65e3392 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
@@ -5,10 +5,10 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.basic.pojo.Customer;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.production.dto.ProductProcessDto;
+import com.ruoyi.production.enums.ProductProcessEnum;
 import com.ruoyi.production.mapper.ProcessRouteItemMapper;
 import com.ruoyi.production.mapper.ProductProcessMapper;
 import com.ruoyi.production.mapper.ProductProcessRouteItemMapper;
@@ -16,20 +16,26 @@
 import com.ruoyi.production.pojo.ProductProcess;
 import com.ruoyi.production.pojo.ProductProcessRouteItem;
 import com.ruoyi.production.service.ProductProcessService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
+@Slf4j
 @Service
 public class ProductProcessServiceImpl extends ServiceImpl<ProductProcessMapper, ProductProcess> implements ProductProcessService {
+
     @Autowired
     private ProductProcessMapper productProcessMapper;
+
     @Autowired
     private ProcessRouteItemMapper processRouteItemMapper;
+
     @Autowired
     private ProductProcessRouteItemMapper productProcessRouteItemMapper;
 
@@ -39,54 +45,110 @@
     }
 
     @Override
-    public AjaxResult add(ProductProcessDto productProcessDto) {
-        ProductProcess productProcess = new ProductProcess();
-        BeanUtils.copyProperties(productProcessDto,productProcess);
-        boolean save = productProcessMapper.insert(productProcess) > 0;
-        if (save && ObjectUtils.isNull(productProcessDto.getNo())) {
-            // 鏍规嵁id鐢熸垚no瀛楁锛欸X + 8浣嶆暟瀛楋紙涓嶈冻8浣嶅墠闈㈣ˉ0锛�
-            String no = "GX" + String.format("%08d", productProcess.getId());
-            productProcess.setNo(no);
-
-            productProcessMapper.updateById(productProcess);
-            return AjaxResult.success();
+    @Transactional(rollbackFor = Exception.class)
+    public void add(ProductProcessDto productProcessDto) {
+        if (ObjectUtils.isEmpty(productProcessDto.getName())) {
+            throw new ServiceException("閮ㄤ欢鍚嶇О涓嶈兘涓虹┖");
         }
-        return AjaxResult.success();
+        long count = this.count(Wrappers.<ProductProcess>lambdaQuery().eq(ProductProcess::getName, productProcessDto.getName()));
+        if (count > 0) {
+            throw new ServiceException("閮ㄤ欢鍚嶇О宸插瓨鍦紝涓嶈兘閲嶅");
+        }
+
+        if (ObjectUtils.isNotEmpty(productProcessDto.getNo())) {
+            long noCount = this.count(Wrappers.<ProductProcess>lambdaQuery().eq(ProductProcess::getNo, productProcessDto.getNo()));
+            if (noCount > 0) {
+                throw new ServiceException("宸ュ簭缂栧彿宸插瓨鍦紝涓嶈兘閲嶅");
+            }
+        }
+
+        ProductProcess productProcess = new ProductProcess();
+        BeanUtils.copyProperties(productProcessDto, productProcess);
+        boolean save = productProcessMapper.insert(productProcess) > 0;
+        if (save && ObjectUtils.isEmpty(productProcess.getNo())) {
+            String no = "GX" + String.format("%08d", productProcess.getId());
+            // 娉ㄦ剰锛氳繖閲岀敱浜庢槸鑷姩鐢熸垚鐨� ID 琛ュ叏锛岄�氬父涓嶄細閲嶅锛屼絾寤鸿 set 涔嬪悗鏇存柊
+            productProcess.setNo(no);
+            productProcessMapper.updateById(productProcess);
+        }
     }
 
     @Override
-    public AjaxResult importData(MultipartFile file) {
-        try {
-            ExcelUtil<ProductProcess> util = new ExcelUtil<ProductProcess>(ProductProcess.class);
-            List<ProductProcess> productProcessList = util.importExcel(file.getInputStream());
-            if(CollectionUtils.isEmpty(productProcessList)){
-                return AjaxResult.warn("妯℃澘閿欒鎴栧鍏ユ暟鎹负绌�");
+    @Transactional(rollbackFor = Exception.class)
+    public void update(ProductProcessDto productProcessDto) {
+        if (ObjectUtils.isEmpty(productProcessDto.getName())) {
+            throw new ServiceException("閮ㄤ欢鍚嶇О涓嶈兘涓虹┖");
+        }
+
+        long nameCount = this.count(Wrappers.<ProductProcess>lambdaQuery()
+                .eq(ProductProcess::getName, productProcessDto.getName())
+                .ne(ProductProcess::getId, productProcessDto.getId()));
+        if (nameCount > 0) {
+            throw new ServiceException("閮ㄤ欢鍚嶇О宸插瓨鍦紝涓嶈兘閲嶅");
+        }
+        if (ObjectUtils.isNotEmpty(productProcessDto.getNo())) {
+            long noCount = this.count(Wrappers.<ProductProcess>lambdaQuery()
+                    .eq(ProductProcess::getNo, productProcessDto.getNo())
+                    .ne(ProductProcess::getId, productProcessDto.getId()));
+            if (noCount > 0) {
+                throw new ServiceException("宸ュ簭缂栧彿宸插瓨鍦紝涓嶈兘閲嶅");
             }
-            productProcessList.forEach(productProcess -> {
+        }
+
+        ProductProcess productProcess = new ProductProcess();
+        BeanUtils.copyProperties(productProcessDto, productProcess);
+        this.updateById(productProcess);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void importData(MultipartFile file) {
+        try {
+            ExcelUtil<ProductProcess> util = new ExcelUtil<>(ProductProcess.class);
+            List<ProductProcess> productProcessList = util.importExcel(file.getInputStream());
+            if (CollectionUtils.isEmpty(productProcessList)) {
+                throw new ServiceException("妯℃澘閿欒鎴栧鍏ユ暟鎹负绌�");
+            }
+
+            for (int i = 0; i < productProcessList.size(); i++) {
+                ProductProcess productProcess = productProcessList.get(i);
+                int rowNum = i + 2;
+
                 if (ObjectUtils.isEmpty(productProcess)) {
-                    throw new RuntimeException("浣跨敤妯℃澘杩涜瀵煎叆");
+                    throw new ServiceException("绗�" + rowNum + "琛屾暟鎹负绌猴紝璇蜂娇鐢ㄦ纭殑妯℃澘杩涜瀵煎叆");
                 }
                 if (ObjectUtils.isEmpty(productProcess.getName())) {
-                    throw new RuntimeException("宸ュ簭鍚嶇О涓嶈兘涓虹┖");
+                    throw new ServiceException("绗�" + rowNum + "琛岋細閮ㄤ欢鍚嶇О涓嶈兘涓虹┖");
                 }
-            });
-            this.saveOrUpdateBatch(productProcessList);
-            return AjaxResult.success(true);
-        }catch (Exception e){
-            e.printStackTrace();
-            return AjaxResult.error(e.getMessage());
+                if (ObjectUtils.isEmpty(productProcess.getProductProcessType())) {
+                    throw new ServiceException("绗�" + rowNum + "琛岋細閮ㄤ欢銆�" + productProcess.getName() + "銆戠殑绫诲瀷涓嶈兘涓虹┖");
+                }
+                ProductProcessEnum enumByInfo = ProductProcessEnum.getEnumByInfo(productProcess.getProductProcessType());
+                if (ObjectUtils.isEmpty(enumByInfo)) {
+                    throw new ServiceException("绗�" + rowNum + "琛岋細閮ㄤ欢銆�" + productProcess.getName() + "銆戠殑绫诲瀷銆�" + productProcess.getProductProcessType() + "銆戜笉瀛樺湪锛岃濉啓姝g‘鐨勭被鍨嬶細鍔犲伐銆佸埉鏉垮喎鑺埗浣溿�佺璺粍瀵广�佺綈浣撹繛鎺ュ強璋冭瘯銆佹祴璇曟墦鍘嬨�佸叾浠�");
+                }else {
+                    productProcess.setType(enumByInfo.getCode());
+                }
+            }
+
+            saveOrUpdateBatch(productProcessList);
+        } catch (ServiceException e) {
+            throw e;
+        } catch (Exception e) {
+            log.error("閮ㄤ欢瀵煎叆寮傚父:{}", e.getMessage(), e);
+            throw new ServiceException("閮ㄤ欢瀵煎叆寮傚父锛�" + e.getMessage());
         }
     }
 
     @Override
-    public String batchDelete(List<Integer> ids) {
-        //鏌ヨ鏄惁鐢熶骇涓凡缁忓紩鐢ㄤ簡杩欎簺宸ュ簭
+    @Transactional(rollbackFor = Exception.class)
+    public void batchDelete(List<Integer> ids) {
+        // 鏌ヨ鏄惁鐢熶骇涓凡缁忓紩鐢ㄤ簡杩欎簺宸ュ簭
         List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getProcessId, ids));
         List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().in(ProductProcessRouteItem::getProcessId, ids));
-        if (!CollectionUtils.isEmpty(processRouteItems) || !CollectionUtils.isEmpty(productProcessRouteItems)){
-            throw new RuntimeException("璇ュ伐搴忓凡缁忚浣跨敤锛屾棤娉曞垹闄�");
+        if (!CollectionUtils.isEmpty(processRouteItems) || !CollectionUtils.isEmpty(productProcessRouteItems)) {
+            throw new ServiceException("璇ュ伐搴忓凡缁忚浣跨敤锛屾棤娉曞垹闄�");
         }
         productProcessMapper.deleteBatchIds(ids);
-        return null;
     }
 }

--
Gitblit v1.9.3