From e73e0a6944e8f23193ff84a7242e41d2dc09a55b Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 15 一月 2026 09:56:16 +0800
Subject: [PATCH] 生产模块的工序调整

---
 src/main/java/com/ruoyi/production/controller/ProductProcessController.java    |   19 +++++++++
 src/main/resources/mapper/production/ProductProcessMapper.xml                  |    6 --
 src/main/java/com/ruoyi/production/pojo/ProductStructure.java                  |    5 ++
 src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java |   25 ++++++++++++
 src/main/java/com/ruoyi/production/mapper/ProductProcessMapper.java            |    2 +
 src/main/java/com/ruoyi/production/pojo/ProductProcess.java                    |   15 +++++++
 src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java        |    9 ----
 src/main/java/com/ruoyi/basic/pojo/ProductModel.java                           |    3 -
 src/main/java/com/ruoyi/production/controller/ProductStructureController.java  |    9 +++-
 src/main/java/com/ruoyi/production/service/ProductProcessService.java          |    3 +
 10 files changed, 76 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/pojo/ProductModel.java b/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
index d5e0aac..3e4fef7 100644
--- a/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
+++ b/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
@@ -29,9 +29,6 @@
     @Excel(name = "浜у搧鍚嶇О")
     private String productName;
 
-    @Excel(name = "浜у搧缂栫爜")
-    private String productCode;
-
     /**
      * 瑙勬牸鍨嬪彿
      */
diff --git a/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
index bc3840f..cf9ef84 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
@@ -48,14 +48,7 @@
         if (productModelDto.getId() == null) {
             ProductModel productModel = new ProductModel();
             BeanUtils.copyProperties(productModelDto,productModel);
-            productModelMapper.insert(productModel);
-
-            String dateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
-            String idStr = String.format("%06d", productModel.getId()); // 鍏綅琛�0
-            String newProductCode = "BM" + dateStr + idStr;
-            // 鏇存柊鏁版嵁搴撲腑鐨刾roductCode
-            productModel.setProductCode(newProductCode);
-            return productModelMapper.updateById(productModel);
+            return productModelMapper.insert(productModel);
         } else {
             return productModelMapper.updateById(productModelDto);
         }
diff --git a/src/main/java/com/ruoyi/production/controller/ProductProcessController.java b/src/main/java/com/ruoyi/production/controller/ProductProcessController.java
index 77920b2..cff0c60 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductProcessController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductProcessController.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.pojo.Customer;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.device.pojo.DeviceRepair;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
@@ -18,7 +19,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
@@ -66,5 +69,21 @@
     @GetMapping("/list")
     public AjaxResult list() {
         return AjaxResult.success(productProcessService.list());
+        }
+
+    /**
+     * 瀵煎叆宸ュ簭
+     */
+    @Log(title = "宸ュ簭", businessType = BusinessType.IMPORT)
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file) throws Exception {
+        return productProcessService.importData(file);
+    }
+
+    @PostMapping("/downloadTemplate")
+    @Log(title = "宸ュ簭-涓嬭浇妯℃澘", businessType = BusinessType.EXPORT)
+    public void downloadTemplate(HttpServletResponse response) {
+        ExcelUtil<ProductProcess> util = new ExcelUtil<ProductProcess>(ProductProcess.class);
+        util.importTemplateExcel(response, "宸ュ簭妯℃澘");
     }
 }
diff --git a/src/main/java/com/ruoyi/production/controller/ProductStructureController.java b/src/main/java/com/ruoyi/production/controller/ProductStructureController.java
index 26594f6..3e2fee4 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductStructureController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductStructureController.java
@@ -1,7 +1,12 @@
 package com.ruoyi.production.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.production.dto.ProductProcessDto;
 import com.ruoyi.production.dto.ProductStructureDto;
 import com.ruoyi.production.pojo.ProductStructure;
 import com.ruoyi.production.service.ProductStructureService;
@@ -15,7 +20,7 @@
 
 @RequestMapping("productStructure")
 @RestController
-@Api(tags = "浜у搧缁撴瀯")
+@Api(tags = "BOM")
 public class ProductStructureController {
     @Autowired
     private ProductStructureService productStructureService;
@@ -27,7 +32,7 @@
         return R.ok(productStructureService.listByproductModelId( productModelId));
     }
 
-    @ApiOperation("鏂板浜у搧缁撴瀯")
+    @ApiOperation("鏂板BOM")
     @PostMapping()
     public R addOrUpdate(@RequestBody ProductStructureDto productStructureDto){
         return R.ok(productStructureService.addProductStructureDto(productStructureDto));
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductProcessMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductProcessMapper.java
index 9bf001c..f21c308 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductProcessMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductProcessMapper.java
@@ -5,8 +5,10 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.production.dto.ProductProcessDto;
 import com.ruoyi.production.pojo.ProductProcess;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+@Mapper
 public interface ProductProcessMapper extends BaseMapper<ProductProcess> {
     IPage<ProductProcessDto> listPage(Page page,@Param("productProcessDto") ProductProcessDto productProcessDto);
 }
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductProcess.java b/src/main/java/com/ruoyi/production/pojo/ProductProcess.java
index 21ca82a..af7b343 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductProcess.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductProcess.java
@@ -1,7 +1,11 @@
 package com.ruoyi.production.pojo;
 
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -9,6 +13,7 @@
 
 @TableName("product_process")
 @Data
+@ExcelIgnoreUnannotated
 public class ProductProcess implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -19,34 +24,42 @@
     /**
      * 宸ュ簭鍚嶇О
      */
+    @Excel(name = "宸ュ簭鍚嶇О")
     private String name;
 
     /**
      * 宸ュ簭缂栧彿
      */
+    @Excel(name = "宸ュ簭缂栧彿")
     private String no;
 
     /**
      * 澶囨敞
      */
+    @Excel(name = "澶囨敞")
     private String remark;
 
 
     /**
      * 宸ヨ祫瀹氶
      */
+    @Excel(name = "宸ヨ祫瀹氶")
     private BigDecimal salaryQuota;
 
     /**
      * 鍒涘缓鏃堕棿
      */
     @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
     /**
      * 淇敼鏃堕棿
      */
-    @TableField(fill = FieldFill.UPDATE)
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime updateTime;
 
     /**
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductStructure.java b/src/main/java/com/ruoyi/production/pojo/ProductStructure.java
index 8a53b2e..4b0231b 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductStructure.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductStructure.java
@@ -55,5 +55,10 @@
     @TableField(fill = FieldFill.INSERT)
     private Long tenantId;
 
+    /**
+     * 鍏宠仈BOMid
+     */
+    private Long bomId;
+
 
 }
diff --git a/src/main/java/com/ruoyi/production/service/ProductProcessService.java b/src/main/java/com/ruoyi/production/service/ProductProcessService.java
index 42ec232..a5ab6c3 100644
--- a/src/main/java/com/ruoyi/production/service/ProductProcessService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductProcessService.java
@@ -8,6 +8,7 @@
 import com.ruoyi.production.dto.*;
 import com.ruoyi.production.pojo.ProductProcess;
 import com.ruoyi.production.pojo.SalesLedgerScheduling;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -20,4 +21,6 @@
     IPage<ProductProcessDto> listPage(Page page, ProductProcessDto productProcessDto);
 
     AjaxResult add(ProductProcessDto productProcessDto);
+
+    AjaxResult importData(MultipartFile file);
 }
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 e44ae02..6a8cf73 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
@@ -1,8 +1,11 @@
 package com.ruoyi.production.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 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.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.production.dto.ProductProcessDto;
 import com.ruoyi.production.mapper.ProductProcessMapper;
@@ -11,6 +14,10 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
 
 @Service
 public class ProductProcessServiceImpl extends ServiceImpl<ProductProcessMapper, ProductProcess> implements ProductProcessService {
@@ -27,7 +34,7 @@
         ProductProcess productProcess = new ProductProcess();
         BeanUtils.copyProperties(productProcessDto,productProcess);
         boolean save = productProcessMapper.insert(productProcess) > 0;
-        if (save) {
+        if (save && ObjectUtils.isNotNull(productProcessDto.getNo())) {
             // 鏍规嵁id鐢熸垚no瀛楁锛欸X + 8浣嶆暟瀛楋紙涓嶈冻8浣嶅墠闈㈣ˉ0锛�
             String no = "GX" + String.format("%08d", productProcess.getId());
             productProcess.setNo(no);
@@ -37,4 +44,20 @@
         }
         return AjaxResult.error();
     }
+
+    @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("妯℃澘閿欒鎴栧鍏ユ暟鎹负绌�");
+            }
+            this.saveOrUpdateBatch(productProcessList);
+            return AjaxResult.success(true);
+        }catch (Exception e){
+            e.printStackTrace();
+            return AjaxResult.error("瀵煎叆澶辫触");
+        }
+    }
 }
diff --git a/src/main/resources/mapper/production/ProductProcessMapper.xml b/src/main/resources/mapper/production/ProductProcessMapper.xml
index 37822b7..a2292e2 100644
--- a/src/main/resources/mapper/production/ProductProcessMapper.xml
+++ b/src/main/resources/mapper/production/ProductProcessMapper.xml
@@ -4,11 +4,7 @@
 
     <select id="listPage" resultType="com.ruoyi.production.dto.ProductProcessDto">
         SELECT
-        p.id,
-        p.name,
-        p.no,
-        p.remark,
-        p.salary_quota
+        *
         FROM
         product_process p
         <where>

--
Gitblit v1.9.3