From ec0fbae3a9a9c7e08d0ecd3635ce74eb17afc7f9 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期二, 13 一月 2026 15:45:00 +0800
Subject: [PATCH] feat(quality): 添加工艺编号和产品编号

---
 src/main/java/com/ruoyi/production/controller/ProcessRouteController.java    |    2 +-
 src/main/resources/mapper/basic/ProductModelMapper.xml                       |    6 ++++++
 src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java                 |    3 +++
 src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java      |   14 +++++++++++++-
 src/main/java/com/ruoyi/production/service/ProcessRouteService.java          |    3 +++
 src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java |   14 ++++++++++++++
 src/main/java/com/ruoyi/basic/pojo/ProductModel.java                         |    3 +++
 src/main/java/com/ruoyi/production/pojo/ProcessRoute.java                    |    3 +++
 doc/20260113-product_model.sql                                               |    6 ++++++
 9 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/doc/20260113-product_model.sql b/doc/20260113-product_model.sql
new file mode 100644
index 0000000..de82a14
--- /dev/null
+++ b/doc/20260113-product_model.sql
@@ -0,0 +1,6 @@
+alter table product_model
+    add product_code varchar(255)  null comment '浜у搧缂栫爜';
+
+alter table process_route
+    add process_route_code varchar(255)  null comment '宸ヨ壓璺嚎缂栫爜';
+
diff --git a/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java b/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
index 697a3a6..a1669f1 100644
--- a/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
+++ b/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
@@ -16,4 +16,7 @@
 public interface ProductModelMapper extends BaseMapper<ProductModel> {
 
     IPage<ProductModel> listPageProductModel(Page<ProductModel> page, @Param("c") ProductModel productModel);
+
+    ProductModel selectLatestRecord();
+
 }
diff --git a/src/main/java/com/ruoyi/basic/pojo/ProductModel.java b/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
index 5e7496a..3997459 100644
--- a/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
+++ b/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
@@ -27,6 +27,9 @@
     @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 dc6d3e9..bc3840f 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
@@ -14,12 +14,15 @@
 import com.ruoyi.basic.service.IProductModelService;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -45,12 +48,21 @@
         if (productModelDto.getId() == null) {
             ProductModel productModel = new ProductModel();
             BeanUtils.copyProperties(productModelDto,productModel);
-            return productModelMapper.insert(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);
         } else {
             return productModelMapper.updateById(productModelDto);
         }
     }
 
+
+
     @Override
     public int delProductModel(Long[] ids) {
         List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new QueryWrapper<SalesLedgerProduct>()
diff --git a/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java b/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
index c01d836..495ac52 100644
--- a/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
@@ -29,7 +29,7 @@
     @ApiOperation("鏂板宸ヨ壓璺嚎")
     @PostMapping ()
     public R add(@RequestBody  ProcessRoute processRoute) {
-        return R.ok(processRouteService.save(processRoute));
+        return R.ok(processRouteService.saveProcessRoute(processRoute));
     }
     @ApiOperation("淇敼宸ヨ壓璺嚎")
     @PutMapping ()
diff --git a/src/main/java/com/ruoyi/production/pojo/ProcessRoute.java b/src/main/java/com/ruoyi/production/pojo/ProcessRoute.java
index 3ac8bb1..88034cb 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProcessRoute.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProcessRoute.java
@@ -32,4 +32,7 @@
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
     @TableField(fill = FieldFill.UPDATE)
     private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "宸ヨ壓璺嚎缂栫爜")
+    private String processRouteCode;
 }
diff --git a/src/main/java/com/ruoyi/production/service/ProcessRouteService.java b/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
index 804a461..bd26b0b 100644
--- a/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
+++ b/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
@@ -5,8 +5,11 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.production.dto.ProcessRouteDto;
 import com.ruoyi.production.pojo.ProcessRoute;
+import io.swagger.models.auth.In;
 
 public interface ProcessRouteService extends IService<ProcessRoute> {
 
     IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto);
+
+    Integer saveProcessRoute(ProcessRoute processRoute);
 }
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
index 1772404..9fafe5f 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -13,6 +13,9 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+
 @Service
 @AllArgsConstructor
 @Slf4j
@@ -26,4 +29,15 @@
 
         return processRouteMapper.pageProcessRouteDto(page, processRouteDto);
     }
+
+    @Override
+    public Integer saveProcessRoute(ProcessRoute processRoute) {
+        this.save(processRoute);
+        String dateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+        String idStr = String.format("%06d", processRoute.getId());
+        String newProductCode = "GY" + dateStr + idStr;
+        // 鏇存柊鏁版嵁搴撲腑鐨刾roductCode
+        processRoute.setProcessRouteCode(newProductCode);
+        return processRouteMapper.updateById(processRoute);
+    }
 }
diff --git a/src/main/resources/mapper/basic/ProductModelMapper.xml b/src/main/resources/mapper/basic/ProductModelMapper.xml
index e4e665c..afdfc4a 100644
--- a/src/main/resources/mapper/basic/ProductModelMapper.xml
+++ b/src/main/resources/mapper/basic/ProductModelMapper.xml
@@ -13,6 +13,7 @@
         <result column="tenant_id" property="tenantId" />
         <result column="product_name" property="productName" />
         <result column="product_id" property="productId" />
+        <result column="product_code" property="productCode" />
     </resultMap>
     <select id="listPageProductModel" resultType="com.ruoyi.basic.pojo.ProductModel">
         select pm.*,p.product_name
@@ -28,6 +29,11 @@
         </where>
         order by  pm.id
     </select>
+    <select id="selectLatestRecord" resultType="com.ruoyi.basic.pojo.ProductModel">
+            SELECT * FROM product_model
+            ORDER BY create_time DESC, id DESC
+            LIMIT 1
+    </select>
 
 
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3