From d0a20f29f07dc24c1fc0b27b8572b24a083d8c0d Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期三, 08 四月 2026 09:40:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_天津_阳光彩印' into dev_天津_阳光彩印

---
 src/main/resources/mapper/production/ProductWorkOrderMapper.xml         |    3 ++-
 src/main/resources/mapper/basic/ProductModelMapper.xml                  |   18 ++++++++++++++++++
 src/main/java/com/ruoyi/basic/controller/ProductController.java         |    7 +++++--
 src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java      |   11 +++++++++++
 src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java            |    3 +++
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java  |    3 ++-
 src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java         |    2 ++
 src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java |    6 ++++++
 src/main/java/com/ruoyi/basic/service/IProductModelService.java         |    2 ++
 src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java    |    1 +
 10 files changed, 52 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/controller/ProductController.java b/src/main/java/com/ruoyi/basic/controller/ProductController.java
index 252ab4d..5a08b10 100644
--- a/src/main/java/com/ruoyi/basic/controller/ProductController.java
+++ b/src/main/java/com/ruoyi/basic/controller/ProductController.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
 import com.ruoyi.basic.dto.ProductDto;
 import com.ruoyi.basic.dto.ProductModelDto;
 import com.ruoyi.basic.dto.ProductModelExportDto;
@@ -27,6 +28,7 @@
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @RestController
 @AllArgsConstructor
@@ -81,11 +83,12 @@
         if (ids == null || ids.length == 0) {
             return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
         }
+        List<ProductModel> productModels = productModelService.selectModelListByProductIds(Lists.newArrayList(ids));
         // 妫�鏌ユ槸鍚︽湁閿�鍞晢鍝佽褰曞叧鑱旇浜у搧
         LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.in(SalesLedgerProduct::getProductId, ids);
+        queryWrapper.in(SalesLedgerProduct::getProductModelId, productModels.stream().map(ProductModel::getId).collect(Collectors.toList()));
         List<SalesLedgerProduct> salesLedgerProductList = salesLedgerProductService.list(queryWrapper);
-        if (salesLedgerProductList.size() > 0) {
+        if (!salesLedgerProductList.isEmpty()) {
             return AjaxResult.error("璇ヤ骇鍝佸瓨鍦ㄩ攢鍞�/閲囪喘璁板綍锛屼笉鑳藉垹闄�");
         }
         return toAjax(productService.delProductByIds(ids));
diff --git a/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java b/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
index bddcca4..9e34897 100644
--- a/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
+++ b/src/main/java/com/ruoyi/basic/mapper/ProductModelMapper.java
@@ -7,6 +7,7 @@
 import com.ruoyi.procurementrecord.dto.ProcurementPageDto;
 import org.apache.ibatis.annotations.Param;
 
+import javax.validation.constraints.NotNull;
 import java.util.List;
 import java.util.Map;
 
@@ -26,4 +27,6 @@
     ProductModel selectLatestRecord();
 
     List<Map<String, Object>> getProductAndModelList();
+
+    List<ProductModel> selectModelListByProductIds(@NotNull @Param("ids") List<Long> ids);
 }
diff --git a/src/main/java/com/ruoyi/basic/service/IProductModelService.java b/src/main/java/com/ruoyi/basic/service/IProductModelService.java
index dd268d6..149c091 100644
--- a/src/main/java/com/ruoyi/basic/service/IProductModelService.java
+++ b/src/main/java/com/ruoyi/basic/service/IProductModelService.java
@@ -26,6 +26,8 @@
 
     List<ProductModel> selectModelList(ProductDto productDto);
 
+    List<ProductModel> selectModelListByProductIds(List<Long> ids);
+
     /**
      * 鏍规嵁id鏌ヨ浜у搧瑙勬牸鍒嗛〉鏌ヨ
      * @param page
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 9382134..75bd333 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
@@ -25,6 +25,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.validation.constraints.NotNull;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -73,6 +74,11 @@
         return productModelMapper.selectList(queryWrapper);
     }
 
+    @Override
+    public List<ProductModel> selectModelListByProductIds(@NotNull List<Long> ids) {
+        return productModelMapper.selectModelListByProductIds(ids);
+    }
+
     /**
      * 鏍规嵁id鏌ヨ浜у搧瑙勬牸鍒嗛〉鏌ヨ
      *
diff --git a/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java b/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
index 6e2ca95..d3f3e12 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
@@ -43,4 +43,6 @@
 
     @ApiModelProperty(value = "宸ュ崟绫诲瀷 姝e父 /杩斿伐杩斾慨")
     private String workOrderType;
+
+    private String deviceName;
 }
diff --git a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
index c9cbaa1..608a5f1 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
@@ -64,4 +64,5 @@
 
     private Long auditUserId;
     private String auditUserName;
+
 }
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java b/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
index d3164f1..1ae57eb 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
@@ -81,4 +81,15 @@
     @ApiModelProperty(value = "瀹℃牳鎰忚")
     @TableField(value = "audit_opinion")
     private String auditOpinion;
+
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "start_time")
+    private LocalDateTime startTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "end_time")
+    private LocalDateTime endTime;
 }
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 96260b6..e46f2cf 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -823,7 +823,8 @@
         LambdaQueryWrapper<SalesLedger> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.between(SalesLedger::getEntryDate, begin, end);
         long count = salesLedgerMapper.selectCount(queryWrapper);
-        return StrUtil.format("{}{:04d}", yyMM, count + 1);
+        Long seq = Optional.of(count).orElse(0L) + 1;
+        return String.format("%s%04d", yyMM, seq);
     }
 
 
diff --git a/src/main/resources/mapper/basic/ProductModelMapper.xml b/src/main/resources/mapper/basic/ProductModelMapper.xml
index 317f5d9..2f84ce8 100644
--- a/src/main/resources/mapper/basic/ProductModelMapper.xml
+++ b/src/main/resources/mapper/basic/ProductModelMapper.xml
@@ -106,5 +106,23 @@
         left join product p on p.id = pm.product_id
         order by p.id,pm.id desc
     </select>
+    <select id="selectModelListByProductIds" resultType="com.ruoyi.basic.pojo.ProductModel">
+        WITH RECURSIVE tree AS (
+        SELECT id
+        FROM product
+        WHERE id in <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
 
+        UNION ALL
+
+        SELECT p.id
+        FROM product p
+        INNER JOIN tree t ON p.parent_id = t.id
+        )
+        SELECT t1.*
+        FROM product_model t1
+        INNER JOIN product t2 ON t1.product_id = t2.id
+        INNER JOIN tree t ON t2.id = t.id;
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
index 14b883e..f454d24 100644
--- a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
@@ -30,7 +30,8 @@
         CASE
         WHEN pwo.work_order_no LIKE 'FG%' THEN '杩斿伐杩斾慨'
         ELSE '姝e父'
-        END AS work_order_type
+        END AS work_order_type,
+        pp.device_name
         FROM
         product_work_order pwo
         LEFT JOIN product_process_route_item ppri ON ppri.id = pwo.product_process_route_item_id

--
Gitblit v1.9.3