From 9d4cf882be7a2ad8d3cc422bcd0dbc461f626f58 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期二, 20 一月 2026 15:12:30 +0800
Subject: [PATCH] feat(production): 迁移生产管控

---
 src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java             |   11 
 src/main/java/com/ruoyi/production/service/ProductProcessRouteService.java                        |    2 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java            |    1 
 src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingDto.java                              |    3 
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java    |   15 
 src/main/java/com/ruoyi/production/service/ProductOrderService.java                               |    1 
 src/main/java/com/ruoyi/sales/dto/ReceiptPaymentRecordDto.java                                    |    6 
 src/main/java/com/ruoyi/production/dto/ProcessRouteItemDto.java                                   |    2 
 src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java                  |   10 
 src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java                          |    6 
 src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java                      |   14 
 src/main/java/com/ruoyi/production/controller/ProductStructureController.java                     |   10 
 src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java                             |   11 
 src/main/java/com/ruoyi/production/service/ProductionProductMainService.java                      |    4 
 src/main/resources/mapper/basic/ProductModelMapper.xml                                            |    2 
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java                        |    2 
 src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java   |   21 
 src/main/java/com/ruoyi/production/service/ProcessRouteItemService.java                           |    3 
 src/main/java/com/ruoyi/production/dto/ProductionProductOutputDto.java                            |    1 
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java                             |   18 
 src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java                                   |    1 
 src/main/java/com/ruoyi/production/dto/SalesLedgerProductDto.java                                 |    4 
 src/main/java/com/ruoyi/production/service/ProcessRouteService.java                               |    5 
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java          |    1 
 src/main/java/com/ruoyi/production/controller/ProductProcessController.java                       |    9 
 src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java                      |    6 
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java                 |    3 
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java                         |   18 
 src/main/java/com/ruoyi/production/mapper/ProcessRouteItemMapper.java                             |    2 
 src/main/java/com/ruoyi/production/mapper/ProductBomMapper.java                                   |    3 
 src/main/java/com/ruoyi/production/mapper/ProductStructureMapper.java                             |    4 
 src/main/java/com/ruoyi/production/pojo/ProductOrder.java                                         |    3 
 src/main/java/com/ruoyi/production/service/SalesLedgerProductionAccountingService.java            |    3 
 src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java                            |    3 
 src/main/java/com/ruoyi/production/service/SalesLedgerWorkService.java                            |    1 
 src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java             |    2 
 src/main/java/com/ruoyi/production/controller/ProductOrderController.java                         |    2 
 src/main/java/com/ruoyi/production/mapper/ProductProcessRouteMapper.java                          |    2 
 src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java                                |   11 
 src/main/java/com/ruoyi/production/controller/ProductBomController.java                           |   11 
 src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java                      |   25 +
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java                              |    2 
 src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java                                     |    1 
 src/main/java/com/ruoyi/production/controller/ProcessRouteItemController.java                     |    8 
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementDto.java                                 |    2 
 src/main/java/com/ruoyi/production/pojo/ProductBom.java                                           |   12 
 src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java                |   16 
 src/main/java/com/ruoyi/production/service/ProductBomService.java                                 |    3 
 src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java                            |    3 
 src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteServiceImpl.java               |    8 
 src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductMapper.java                        |    2 
 src/main/java/com/ruoyi/production/dto/ProcessSchedulingDto.java                                  |    1 
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java             |   18 
 src/main/java/com/ruoyi/production/controller/ProcessRouteController.java                         |   10 
 src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java                                 |   22 -
 src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java                                 |    1 
 src/main/java/com/ruoyi/production/controller/SalesLedgerSchedulingController.java                |    2 
 src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java                     |    9 
 src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java                    |   26 +
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java                            |    7 
 src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java      |   12 
 src/main/java/com/ruoyi/procurementrecord/pojo/InboundManagement.java                             |    1 
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java                    |   14 
 src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java                   |    1 
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java             |  278 +++++++-------
 src/main/java/com/ruoyi/production/service/impl/ProductBomServiceImpl.java                        |    8 
 src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java                    |    6 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java          |  216 ++++++----
 src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingProcessDto.java                       |    2 
 src/main/java/com/ruoyi/production/pojo/ProductProcessRoute.java                                  |   11 
 src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java           |    8 
 src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java                              |   25 +
 src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java                          |    2 
 src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java              |   23 -
 src/main/java/com/ruoyi/production/service/ProductStructureService.java                           |    1 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java |    2 
 src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java                      |    7 
 src/main/java/com/ruoyi/production/dto/ProductBomDto.java                                         |    2 
 src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java                              |    1 
 src/main/java/com/ruoyi/production/dto/ProductionProductInputDto.java                             |    6 
 src/main/java/com/ruoyi/production/dto/ProductProcessDto.java                                     |    3 
 src/main/resources/mapper/production/ProductStructureMapper.xml                                   |   15 
 src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java                                    |    1 
 src/main/java/com/ruoyi/procurementrecord/mapper/CustomStorageMapper.java                         |    1 
 src/main/java/com/ruoyi/production/controller/ProductionProductOutputController.java              |    2 
 src/main/java/com/ruoyi/production/service/ProductProcessService.java                             |    7 
 src/main/java/com/ruoyi/procurementrecord/dto/Details.java                                        |   14 
 src/main/java/com/ruoyi/production/service/impl/ProcessRouteItemServiceImpl.java                  |    2 
 88 files changed, 473 insertions(+), 613 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java
index d9bc6fc..0f6b305 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java
@@ -1,23 +1,16 @@
 package com.ruoyi.procurementrecord.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.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.procurementrecord.dto.*;
 import com.ruoyi.procurementrecord.mapper.ProcurementExceptionRecordMapper;
 import com.ruoyi.procurementrecord.pojo.ProcurementExceptionRecord;
-import com.ruoyi.procurementrecord.service.ProcurementRecordService;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.util.List;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 /**
  * @author :yys
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
index 9ce1661..919a764 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -1,11 +1,11 @@
 package com.ruoyi.procurementrecord.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
@@ -24,7 +24,6 @@
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
-import java.util.UUID;
 
 /**
  * @author :yys
@@ -102,21 +101,6 @@
     public AjaxResult updateManagement(@RequestBody ProcurementManagementUpdateDto procurementDto) {
         return AjaxResult.success(procurementRecordService.updateManagement(procurementDto));
     }
-
-
-
-    @GetMapping("/detailManagementByCustom")
-    @ApiOperation(value = "鑷畾涔夊叆搴�-璇︽儏")
-    public AjaxResult detailManagementByCustom(ProcurementManagementUpdateDto procurementDto) {
-        return AjaxResult.success(procurementRecordService.detailManagementByCustom(procurementDto));
-    }
-
-    @ApiOperation(value = "閲囪喘鍏ュ簱-璇︽儏")
-    @GetMapping("/detail")
-    public AjaxResult detail(ProcurementUpdateDto procurementDto) {
-        return AjaxResult.success(procurementRecordService.detail(procurementDto));
-    }
-
 
 
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
index 1fb594b..2175155 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
@@ -7,7 +7,6 @@
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.procurementrecord.dto.ProcurementPageDto;
 import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
 import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
 import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto;
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/Details.java b/src/main/java/com/ruoyi/procurementrecord/dto/Details.java
index 28d8698..08dd6af 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/Details.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/Details.java
@@ -10,23 +10,11 @@
  */
 @Data
 public class Details {
-    private Integer id;  // 浜у搧id
+    private Integer id;  // 鍙拌处浜у搧id
     private BigDecimal inboundQuantity;  // 鍏ュ簱鏁伴噺
     private BigDecimal warnNum;  // 棰勮鏁伴噺锛堥噰璐叆搴撴墠鏈夛級
     //鍗曚环
     private BigDecimal unitPrice;
     private BigDecimal totalPrice;
-    /**
-     * 姣忕鏁伴噺
-     */
-    private Integer boxNum;
-    /**
-     * 姣忕瑙勬牸
-     */
-    private String cartonSpecifications;
-    /**
-     * 缇庡厓姣忎欢
-     */
-    private BigDecimal dollarPrice;
     private Long productModelId; // 鍩虹浜у搧id
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java
index 73deac5..451c85c 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java
@@ -2,7 +2,6 @@
 
 import lombok.Data;
 
-import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -25,5 +24,6 @@
     private Integer purchaseLedgerId;
 
 
+    private Long qualityInspectId;
 
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementDto.java
index d8004b4..4b4392d 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementDto.java
@@ -1,11 +1,9 @@
 package com.ruoyi.procurementrecord.dto;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import lombok.Data;
 
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 
 /**
  * @author :yys
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java
index ac896a2..0d97384 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java
@@ -1,11 +1,8 @@
 package com.ruoyi.procurementrecord.dto;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import lombok.Data;
 
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 
 /**
  * @author :yys
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
index 89aa64e..1d06eb6 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
@@ -161,22 +161,6 @@
      */
     @Excel(name = "涓嶅惈绋庢�讳环")
     private BigDecimal taxExclusiveTotalPrice;
-
-    /**
-     * 姣忕鏁伴噺
-     */
-    @Excel(name = "姣忕鏁伴噺")
-    private Integer boxNum;
-    /**
-     * 姣忕瑙勬牸
-     */
-    @Excel(name = "姣忕瑙勬牸")
-    private String cartonSpecifications;
-    /**
-     * 缇庡厓姣忎欢
-     */
-    @Excel(name = "缇庡厓姣忎欢")
-    private BigDecimal dollarPrice;
     /**
      * 鎶ヨ〃鏃ユ姤
      */
@@ -208,4 +192,6 @@
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private LocalDate endDate;
 
+    private Long productModelId;
+
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
index a328c1a..6b5860c 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
@@ -18,8 +18,6 @@
 
     private Integer id;
 
-    private String ids;
-
     private Long createUser;
 
     /**
@@ -176,22 +174,6 @@
      */
     @Excel(name = "涓嶅惈绋庢�讳环")
     private BigDecimal taxExclusiveTotalPrice;
-
-    /**
-     * 姣忕鏁伴噺
-     */
-    @Excel(name = "姣忕鏁伴噺")
-    private Integer boxNum;
-    /**
-     * 姣忕瑙勬牸
-     */
-    @Excel(name = "姣忕瑙勬牸")
-    private String cartonSpecifications;
-    /**
-     * 缇庡厓姣忎欢
-     */
-    @Excel(name = "缇庡厓姣忎欢")
-    private BigDecimal dollarPrice;
     /**
      * 鎶ヨ〃鏃ユ姤
      */
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
index 78a2f04..58fba64 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
@@ -17,7 +17,7 @@
 
     private Integer userId;
 
-    private Integer salesLedgerProductId;
+    private Long salesLedgerProductId;
 
     /**
      * 鍑哄簱绫诲瀷 1-閲囪喘鍑哄簱 2-閿�鍞嚭搴� 3-鑷畾涔�
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
index 1209e63..6b57f2a 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
@@ -129,18 +129,4 @@
      * 鐗╁搧绫诲瀷
      */
     private String itemType;
-    /**
-     * 绠辨暟
-     */
-    private Integer boxNum;
-    /**
-     * 姣忕瑙勬牸
-     */
-    private String cartonSpecifications;
-    /**
-     * 缇庡厓姣忎欢
-     */
-    private BigDecimal dollarPrice;
-
-    private String url;
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/CustomStorageMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/CustomStorageMapper.java
index 1b4b703..0e35d10 100644
--- a/src/main/java/com/ruoyi/procurementrecord/mapper/CustomStorageMapper.java
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/CustomStorageMapper.java
@@ -1,6 +1,5 @@
 package com.ruoyi.procurementrecord.mapper;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java b/src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java
index 496c3d1..750b426 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java
@@ -18,19 +18,11 @@
 @Data
 public class CustomStorage {
 
-    @TableField(exist = false)
-    private String ids;
 
     private static final long serialVersionUID = 1L;
 
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
-
-    /**
-     * 鍥剧墖
-     */
-    @Excel(name = "鍥剧墖", cellType = Excel.ColumnType.IMAGE, height = 114, width = 25)
-    private String url;
     // 鍏ュ簱鏃堕棿
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
@@ -46,12 +38,7 @@
     @TableField(exist = false)
     private String timeStr;
 
-    /**
-     * 寰呭嚭搴撴暟閲�
-     */
-    @Excel(name = "寰呭嚭搴撴暟閲�")
-    @TableField(exist = false)
-    private BigDecimal inboundNum0;
+
     /**
      * 鍑哄簱鏁伴噺
      */
@@ -104,12 +91,7 @@
     private BigDecimal inboundNum0 = BigDecimal.ZERO;
 
 
-    /**
-     * 鍑哄簱鏁伴噺
-     */
-    @Excel(name = "鍑哄簱鏁伴噺")
-    @TableField(exist = false)
-    private BigDecimal totalInboundNum = BigDecimal.ZERO;
+
     /**
      * 鍏ュ簱鐢ㄦ埛id
      */
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/InboundManagement.java b/src/main/java/com/ruoyi/procurementrecord/pojo/InboundManagement.java
index 56f322e..d6708ca 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/InboundManagement.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/InboundManagement.java
@@ -7,7 +7,6 @@
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Date;
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
index 6c3b1b9..dfa9756 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
@@ -1,8 +1,6 @@
 package com.ruoyi.procurementrecord.pojo;
 
 import com.baomidou.mybatisplus.annotation.*;
-import com.ruoyi.framework.aspectj.lang.annotation.Excel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Builder;
 import lombok.Data;
 
@@ -24,9 +22,9 @@
     private Integer id;
 
     /**
-     * 浜у搧淇℃伅琛╥d锛堣嚜瀹氫箟鍏ュ簱鏃朵负0锛�
+     * 浜у搧淇℃伅琛╥d锛堢敓浜ф墸搴撳瓨鐨勬椂鍊欎娇鐢級
      */
-    private Integer salesLedgerProductId;
+    private Long salesLedgerProductId;
 
     /**
      * 鍏ュ簱id
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java
index b9bfb2c..9bfda29 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java
@@ -101,16 +101,6 @@
      */
     private Long productModelId;
 
-    /**
-     * 姣忕鏁伴噺
-     */
-    private Integer boxNum;
-    /**
-     * 姣忕瑙勬牸
-     */
-    private String cartonSpecifications;
-    /**
-     * 缇庡厓姣忎欢
-     */
-    private BigDecimal dollarPrice;
+
+    private Long qualityInspectId;
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
index 54091ab..e3cdb06 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
@@ -8,7 +8,6 @@
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
-import java.util.Date;
 
 /**
  * @author :yys
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java
index 772869b..204ad17 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java
@@ -4,9 +4,7 @@
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.procurementrecord.dto.ProcurementPageDto;
 import com.ruoyi.procurementrecord.mapper.GasTankWarningMapper;
 import com.ruoyi.procurementrecord.pojo.GasTankWarning;
 import com.ruoyi.procurementrecord.service.GasTankWarningService;
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java
index 81216db..3226e8c 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java
@@ -6,7 +6,6 @@
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.procurementrecord.mapper.ProcurementPlanMapper;
 import com.ruoyi.procurementrecord.pojo.ProcurementPlan;
-import com.ruoyi.procurementrecord.pojo.ProcurementPriceManagement;
 import com.ruoyi.procurementrecord.service.ProcurementPlanService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java
index e90a7a2..2321b7e 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java
@@ -3,9 +3,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.utils.excel.ExcelUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.procurementrecord.dto.ProcurementPageDto;
 import com.ruoyi.procurementrecord.mapper.ProcurementPriceManagementMapper;
 import com.ruoyi.procurementrecord.pojo.ProcurementPriceManagement;
 import com.ruoyi.procurementrecord.service.ProcurementPriceManagementService;
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
index b5f630c..a238ae6 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.mapper.ProductModelMapper;
@@ -61,13 +62,13 @@
         // 璁$畻寰呭叆搴撴暟閲�
         // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
         List<Integer> collect = procurementDtos.stream().map(ProcurementDto::getId).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty( collect)){
+        if (CollectionUtils.isEmpty(collect)) {
             return procurementDtos;
         }
         LambdaQueryWrapper<ProcurementRecordStorage> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordStorage::getSalesLedgerProductId, collect);
         List<ProcurementRecordStorage> procurementRecordStorages = procurementRecordMapper.selectList(procurementRecordLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty(procurementRecordStorages)){
+        if (CollectionUtils.isEmpty(procurementRecordStorages)) {
             return procurementDtos;
         }
         for (ProcurementDto dto : procurementDtos) {
@@ -75,35 +76,35 @@
             List<ProcurementRecordStorage> collect1 = procurementRecordStorages.stream()
                     .filter(procurementRecordStorage -> procurementRecordStorage.getSalesLedgerProductId().equals(dto.getId()))
                     .collect(Collectors.toList());
-            
+
             // 濡傛灉娌℃湁鐩稿叧鐨勫叆搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
-            if(CollectionUtils.isEmpty(collect1)){
+            if (CollectionUtils.isEmpty(collect1)) {
                 dto.setQuantity0(dto.getQuantity());
                 continue;
             }
-            
+
             // 璁$畻宸插叆搴撴暟閲忔�诲拰锛屽苟璁剧疆寰呭叆搴撴暟閲�
             BigDecimal totalInboundNum = collect1.stream()
                     .map(ProcurementRecordStorage::getInboundNum)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
-            
+
             // 寰呭叆搴撴暟閲� = 鎬绘暟閲� - 宸插叆搴撴暟閲�
             dto.setQuantity0(dto.getQuantity().subtract(totalInboundNum));
         }
         return procurementDtos;
     }
 
-    public ProcurementRecordStorage getProcurementRecordById(Integer id){
+    public ProcurementRecordStorage getProcurementRecordById(Integer id) {
         ProcurementRecordStorage procurementRecordStorage = procurementRecordMapper.selectById(id);
-        if(procurementRecordStorage == null) {
+        if (procurementRecordStorage == null) {
             throw new RuntimeException("鏈壘鍒拌閲囪喘鍏ュ簱璁板綍");
         }
         return procurementRecordStorage;
     }
 
-    public List<ProcurementRecordStorage> getProcurementRecordByIds(List<Integer> id){
+    public List<ProcurementRecordStorage> getProcurementRecordByIds(List<Integer> id) {
         List<ProcurementRecordStorage> procurementRecordStorage = procurementRecordMapper.selectBatchIds(id);
-        if(procurementRecordStorage == null) {
+        if (procurementRecordStorage == null) {
             throw new RuntimeException("鏈壘鍒拌閲囪喘鍏ュ簱璁板綍");
         }
         return procurementRecordStorage;
@@ -128,26 +129,26 @@
         // 鍒犻櫎鎵�鏈夊搴旂殑鍑哄簱璁板綍
         LambdaQueryWrapper<ProcurementRecordOut> procurementRecordOutLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordOutLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, procurementDto.getIds())
-                .eq(ProcurementRecordOut::getType,procurementDto.getType());
+                .eq(ProcurementRecordOut::getType, procurementDto.getType());
         List<ProcurementRecordOut> procurementRecordOuts = procurementRecordOutMapper.selectList(procurementRecordOutLambdaQueryWrapper);
-        if(!CollectionUtils.isEmpty(procurementRecordOuts)){
+        if (!CollectionUtils.isEmpty(procurementRecordOuts)) {
             procurementRecordOutMapper.deleteBatchIds(procurementRecordOuts.stream().map(ProcurementRecordOut::getId).collect(Collectors.toList()));
         }
         return 0;
     }
 
     @Override
-    public void export(HttpServletResponse response,Integer type) {
+    public void export(HttpServletResponse response, Integer type) {
         List<ProcurementPageDto> list = new ArrayList<>();
-        if(type == 1){
+        if (type == 1) {
             list = procurementRecordMapper.list();
-        }else{
+        } else {
             list = procurementRecordMapper.listOne();
         }
         // 璁$畻寰呭叆搴撴暟閲�
         // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
         List<Integer> collect = list.stream().map(ProcurementPageDto::getId).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty( collect)){
+        if (CollectionUtils.isEmpty(collect)) {
             ExcelUtil<ProcurementPageDto> util = new ExcelUtil<ProcurementPageDto>(ProcurementPageDto.class);
             util.exportExcel(response, list, "鍏ュ簱鍙拌处");
             return;
@@ -156,7 +157,7 @@
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
         procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, type);
         List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty( procurementRecords)){
+        if (CollectionUtils.isEmpty(procurementRecords)) {
             ExcelUtil<ProcurementPageDto> util = new ExcelUtil<ProcurementPageDto>(ProcurementPageDto.class);
             util.exportExcel(response, list, "鍏ュ簱鍙拌处");
             return;
@@ -168,7 +169,7 @@
                     .collect(Collectors.toList());
 
             // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
-            if(CollectionUtils.isEmpty(collect1)){
+            if (CollectionUtils.isEmpty(collect1)) {
                 dto.setInboundNum0(dto.getInboundNum());
                 continue;
             }
@@ -191,14 +192,14 @@
     public int updateManagement(ProcurementManagementUpdateDto procurementDto) {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         SysUser sysUser = sysUserMapper.selectUserById(procurementDto.getCreateUser());
-        if(sysUser == null){
+        if (sysUser == null) {
             throw new RuntimeException("鍏ュ簱浜轰笉瀛樺湪");
         }
         DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         String entryDateStr = procurementDto.getEntryDate() + " 00:00:00";
         String createTimeStr = procurementDto.getCreateTime() + " 00:00:00";
         SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(procurementDto.getSalesLedgerProductId());
-        if(salesLedgerProduct == null){
+        if (salesLedgerProduct == null) {
             throw new RuntimeException("閿�鍞彴璐︿骇鍝佷笉瀛樺湪");
         }
         // 鏍规嵁澶х被锛岃鏍兼煡璇㈡墍鏈変骇鍝乮d
@@ -207,7 +208,7 @@
                 .eq(SalesLedgerProduct::getSpecificationModel, salesLedgerProduct.getSpecificationModel())
                 .eq(SalesLedgerProduct::getType, 1);
         List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(salesLedgerProductLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty(salesLedgerProducts)){
+        if (CollectionUtils.isEmpty(salesLedgerProducts)) {
             throw new RuntimeException("娌℃湁鎵惧埌瀵瑰簲鐨勪骇鍝�");
         }
         salesLedgerProduct.setMinStock(procurementDto.getMinStock());
@@ -219,25 +220,25 @@
         procurementRecordStorage.setTotalPrice(procurementDto.getTotalPrice());
         procurementRecordStorage.setCreateBy(sysUser.getNickName());
         procurementRecordStorage.setCreateUser(sysUser.getUserId());
-        procurementRecordStorage.setUpdateTime(LocalDateTime.parse(entryDateStr,df));
+        procurementRecordStorage.setUpdateTime(LocalDateTime.parse(entryDateStr, df));
         procurementRecordStorage.setUpdateUser(loginUser.getUserId());
-        procurementRecordStorage.setCreateTime(LocalDateTime.parse(createTimeStr,df));
-        procurementRecordMapper.update(procurementRecordStorage,procurementRecordStorageLambdaQueryWrapper);
+        procurementRecordStorage.setCreateTime(LocalDateTime.parse(createTimeStr, df));
+        procurementRecordMapper.update(procurementRecordStorage, procurementRecordStorageLambdaQueryWrapper);
         return 0;
     }
 
     @Override
-    public void exportCopy(HttpServletResponse response,Integer type) {
+    public void exportCopy(HttpServletResponse response, Integer type) {
         List<ProcurementPageDtoCopy> list = new ArrayList<>();
-        if(type == 1){
+        if (type == 1) {
             list = procurementRecordMapper.listCopy();
-        }else{
+        } else {
             list = procurementRecordMapper.listCopyOne();
         }
         // 璁$畻寰呭叆搴撴暟閲�
         // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
         List<Integer> collect = list.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty( collect)){
+        if (CollectionUtils.isEmpty(collect)) {
             ExcelUtil<ProcurementPageDtoCopy> util = new ExcelUtil<ProcurementPageDtoCopy>(ProcurementPageDtoCopy.class);
             util.exportExcel(response, list, "搴撳瓨绠$悊");
             return;
@@ -246,7 +247,7 @@
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
         procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, type);
         List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty( procurementRecords)){
+        if (CollectionUtils.isEmpty(procurementRecords)) {
             ExcelUtil<ProcurementPageDtoCopy> util = new ExcelUtil<ProcurementPageDtoCopy>(ProcurementPageDtoCopy.class);
             util.exportExcel(response, list, "搴撳瓨绠$悊");
             return;
@@ -258,7 +259,7 @@
                     .collect(Collectors.toList());
 
             // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
-            if(CollectionUtils.isEmpty(collect1)){
+            if (CollectionUtils.isEmpty(collect1)) {
                 dto.setInboundNum0(dto.getInboundNum());
                 continue;
             }
@@ -276,14 +277,14 @@
     }
 
     @Override
-    public void exportCopyTwo(HttpServletResponse response,Integer type) {
+    public void exportCopyTwo(HttpServletResponse response, Integer type) {
         LambdaQueryWrapper<CustomStorage> customStorageLambdaQueryWrapper = new LambdaQueryWrapper<>();
         customStorageLambdaQueryWrapper.groupBy(CustomStorage::getSupplierName, CustomStorage::getProductCategory, CustomStorage::getSpecificationModel);
         List<CustomStorage> list = customStorageMapper.selectList(customStorageLambdaQueryWrapper);
         // 璁$畻寰呭叆搴撴暟閲�
         // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
         List<Integer> collect = list.stream().map(CustomStorage::getId).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty( collect)){
+        if (CollectionUtils.isEmpty(collect)) {
             ExcelUtil<CustomStorage> util = new ExcelUtil<CustomStorage>(CustomStorage.class);
             util.exportExcel(response, list, "搴撳瓨绠$悊");
             return;
@@ -291,9 +292,8 @@
         LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
         procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, type);
-        procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, type);
         List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty( procurementRecords)){
+        if (CollectionUtils.isEmpty(procurementRecords)) {
             ExcelUtil<CustomStorage> util = new ExcelUtil<CustomStorage>(CustomStorage.class);
             util.exportExcel(response, list, "搴撳瓨绠$悊");
             return;
@@ -305,7 +305,7 @@
                     .collect(Collectors.toList());
 
             // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
-            if(CollectionUtils.isEmpty(collect1)){
+            if (CollectionUtils.isEmpty(collect1)) {
                 dto.setInboundNum0(dto.getInboundNum());
                 continue;
             }
@@ -335,19 +335,19 @@
         reportData.put("tableData", procurementPageDtoCopyList);
         // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
         List<Integer> collect = procurementPageDtoCopyList.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty(collect)){
-             return reportData;
+        if (CollectionUtils.isEmpty(collect)) {
+            return reportData;
         }
         LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
         List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty( procurementRecords)){
-             return reportData;
+        if (CollectionUtils.isEmpty(procurementRecords)) {
+            return reportData;
         }
-        int totalIn =0;
-        int totalOut =0;
-        int currentStock =0;
-        int turnoverRate =0;
+        int totalIn = 0;
+        int totalOut = 0;
+        int currentStock = 0;
+        int turnoverRate = 0;
         List<String> dates = new ArrayList<>();
         List<Integer> values = new ArrayList<>();
         List<String> comparisonDates = new ArrayList<>();
@@ -365,7 +365,7 @@
                     .collect(Collectors.toList());
 
             // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
-            if(CollectionUtils.isEmpty(collect1)){
+            if (CollectionUtils.isEmpty(collect1)) {
                 dto.setInboundNum0(dto.getInboundNum());
                 continue;
             }
@@ -388,7 +388,7 @@
             currentStock += dto.getInboundNum().intValue() - totalInboundNum.intValue();
             values.add(currentStock);
             // 璁$畻鍛ㄨ浆鐜�
-            if(totalIn > 0){
+            if (totalIn > 0) {
                 turnoverRate = totalOut * 100 / totalIn;
             }
         }
@@ -424,7 +424,7 @@
     public InventoryInformationDto getReportList() {
         InventoryInformationDto inventoryInformationDto = new InventoryInformationDto();
         IPage<ProcurementPageDto> procurementPageDtoIPage = this.listPage(new Page<>(1, -1), new ProcurementPageDto());
-        if(CollectionUtils.isEmpty(procurementPageDtoIPage.getRecords())){
+        if (CollectionUtils.isEmpty(procurementPageDtoIPage.getRecords())) {
             return inventoryInformationDto;
         }
         // 璁$畻鎬诲簱瀛樻暟閲�
@@ -482,6 +482,7 @@
         inventoryInformationDto.setInventoryChangeValue(inventoryChangeValue.subtract(totalInventoryValue));
         return inventoryInformationDto;
     }
+
     @Override
     public IPage<ProcurementPageDto> listPageByProduction(Page page, ProcurementPageDto procurementDto) {
         IPage<ProcurementPageDto> procurementPageDtoIPage = procurementRecordMapper.listPageByProduction(page, procurementDto);
@@ -489,14 +490,14 @@
         // 璁$畻寰呭叆搴撴暟閲�
         // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
         List<Integer> collect = procurementPageDtos.stream().map(ProcurementPageDto::getId).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty( collect)){
+        if (CollectionUtils.isEmpty(collect)) {
             return procurementPageDtoIPage;
         }
         LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect)
-                .eq(ProcurementRecordOut::getType,2);
+                .eq(ProcurementRecordOut::getType, 2);
         List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty( procurementRecords)){
+        if (CollectionUtils.isEmpty(procurementRecords)) {
             return procurementPageDtoIPage;
         }
         for (ProcurementPageDto dto : procurementPageDtos) {
@@ -506,7 +507,7 @@
                     .collect(Collectors.toList());
 
             // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
-            if(CollectionUtils.isEmpty(collect1)){
+            if (CollectionUtils.isEmpty(collect1)) {
                 dto.setInboundNum0(dto.getInboundNum());
                 continue;
             }
@@ -527,13 +528,13 @@
     @Override
     public AjaxResult addCustom(List<CustomStorage> customStorage) {
         LoginUser loginUser = SecurityUtils.getLoginUser();
-        if(CollectionUtils.isEmpty(customStorage)){
+        if (CollectionUtils.isEmpty(customStorage)) {
             return AjaxResult.error("鏁版嵁涓嶈兘涓虹┖");
         }
         customStorage.forEach(item -> {
             // 鏌ヨ閲囪喘鍏ュ簱鏁伴噺
             Long aLong = customStorageMapper.selectCount(null);
-            item.setInboundBatches(aLong.equals(0L) ? "绗�1鎵规(鑷畾涔夊叆搴�)" : "绗�"+ (aLong + 1) + "鎵规(鑷畾涔夊叆搴�)" );
+            item.setInboundBatches(aLong.equals(0L) ? "绗�1鎵规(鑷畾涔夊叆搴�)" : "绗�" + (aLong + 1) + "鎵规(鑷畾涔夊叆搴�)");
             item.setCreateBy(loginUser.getNickName());
             item.setCode(OrderUtils.countTodayByCreateTime(customStorageMapper, ""));
             customStorageMapper.insert(item);
@@ -544,15 +545,15 @@
     @Override
     public IPage<CustomStorage> listPageByCustom(Page page, CustomStorage customStorage) {
         LambdaQueryWrapper<CustomStorage> customStorageLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        if(customStorage != null){
-            if(!StringUtils.isEmpty(customStorage.getSupplierName())){
+        if (customStorage != null) {
+            if (!StringUtils.isEmpty(customStorage.getSupplierName())) {
                 customStorageLambdaQueryWrapper.like(CustomStorage::getSupplierName, customStorage.getSupplierName());
             }
             // 绛涢�夊叆搴撴椂闂�
-            if(customStorage.getTimeStr() != null){
+            if (customStorage.getTimeStr() != null) {
                 customStorageLambdaQueryWrapper.eq(CustomStorage::getInboundDate, customStorage.getTimeStr());
             }
-            if(!StringUtils.isEmpty(customStorage.getProductCategory())){
+            if (!StringUtils.isEmpty(customStorage.getProductCategory())) {
                 customStorageLambdaQueryWrapper.like(CustomStorage::getProductCategory, customStorage.getProductCategory());
             }
         }
@@ -563,14 +564,14 @@
         // 璁$畻寰呭叆搴撴暟閲�
         // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
         List<Integer> collect = procurementPageDtos.stream().map(CustomStorage::getId).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty( collect)){
+        if (CollectionUtils.isEmpty(collect)) {
             return procurementPageDtoIPage;
         }
         LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect)
                 .eq(ProcurementRecordOut::getType, 3);
         List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty( procurementRecords)){
+        if (CollectionUtils.isEmpty(procurementRecords)) {
             return procurementPageDtoIPage;
         }
         for (CustomStorage dto : procurementPageDtos) {
@@ -580,7 +581,7 @@
                     .collect(Collectors.toList());
 
             // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
-            if(CollectionUtils.isEmpty(collect1)){
+            if (CollectionUtils.isEmpty(collect1)) {
                 dto.setInboundNum0(dto.getInboundNum());
                 continue;
             }
@@ -603,7 +604,7 @@
         // 璁$畻寰呭叆搴撴暟閲�
         // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
         List<Integer> collect = procurementPageDtoCopyList.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty( collect)){
+        if (CollectionUtils.isEmpty(collect)) {
             return procurementPageDtoCopyIPage;
         }
         // 1. 鏌ヨ閲囪喘璁板綍宸插叆搴撶殑鍑哄簱璁板綍锛堟寜storageId鍒嗙粍锛�
@@ -612,7 +613,7 @@
         List<ProcurementRecordOut> recordOutList = procurementRecordOutMapper.selectList(queryWrapper);
 
         // 2. 鎸塖alesLedgerProductId鍒嗙粍锛岀粺璁℃瘡涓猧d瀵瑰簲鐨勫凡鍑哄簱鏁伴噺鎬诲拰-宸插嚭搴撴暟閲�
-        Map<Integer, BigDecimal> storageIdToTotalOutNumMap = recordOutList.stream()
+        Map<Long, BigDecimal> storageIdToTotalOutNumMap = recordOutList.stream()
                 .collect(Collectors.groupingBy(
                         ProcurementRecordOut::getSalesLedgerProductId,
                         Collectors.reducing(
@@ -675,14 +676,14 @@
         // 璁$畻寰呭叆搴撴暟閲�
         // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
         List<Integer> collect = procurementPageDtoCopyList.stream().map(CustomStorage::getId).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty( collect)){
+        if (CollectionUtils.isEmpty(collect)) {
             return pageList;
         }
         LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
         procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 3);
         List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty( procurementRecords)){
+        if (CollectionUtils.isEmpty(procurementRecords)) {
             return pageList;
         }
         for (CustomStorage dto : procurementPageDtoCopyList) {
@@ -692,7 +693,7 @@
                     .collect(Collectors.toList());
 
             // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
-            if(CollectionUtils.isEmpty(collect1)){
+            if (CollectionUtils.isEmpty(collect1)) {
                 dto.setInboundNum0(dto.getInboundNum());
                 dto.setTotalInboundNum(BigDecimal.ZERO);
                 continue;
@@ -707,7 +708,7 @@
             // 寰呭嚭搴撴暟閲� = 鎬绘暟閲� - 宸插嚭搴撴暟閲�
             dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum));
             // 搴撳瓨浠峰��
-            if(dto.getTaxInclusiveUnitPrice() != null){
+            if (dto.getTaxInclusiveUnitPrice() != null) {
                 dto.setTaxInclusiveTotalPrice(dto.getInboundNum0().multiply(dto.getTaxInclusiveUnitPrice()));
             }
         }
@@ -728,7 +729,7 @@
     @Override
     public int updateManagementByCustom(ProcurementManagementUpdateDto procurementDto) {
         CustomStorage customStorage = customStorageMapper.selectById(procurementDto.getId());
-        if(customStorage == null){
+        if (customStorage == null) {
             throw new RuntimeException("鏉愭枡搴撳瓨涓嶅瓨鍦�");
         }
         LambdaQueryWrapper<CustomStorage> customStorageLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -737,7 +738,7 @@
         CustomStorage one = new CustomStorage();
         one.setTaxInclusiveUnitPrice(procurementDto.getTaxInclusiveUnitPrice());
         one.setTaxInclusiveTotalPrice(procurementDto.getTaxInclusiveTotalPrice());
-        return customStorageMapper.update(one,customStorageLambdaQueryWrapper);
+        return customStorageMapper.update(one, customStorageLambdaQueryWrapper);
     }
 
     @Override
@@ -746,7 +747,7 @@
         procurementRecordStorageLambdaQueryWrapper.eq(ProcurementRecordStorage::getSalesLedgerProductId, salesProductId)
                 .eq(ProcurementRecordStorage::getType, 2);
         List<ProcurementRecordStorage> procurementRecordStorages = procurementRecordMapper.selectList(procurementRecordStorageLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty( procurementRecordStorages)){
+        if (CollectionUtils.isEmpty(procurementRecordStorages)) {
             return BigDecimal.ZERO;
         }
         return procurementRecordStorages.stream()
@@ -764,10 +765,13 @@
             procurementRecordLambdaQueryWrapper.eq(ProcurementRecordStorage::getSalesLedgerProductId, detail.getId())
                     .eq(ProcurementRecordStorage::getType, procurementDto.getType());
             Long aLong = procurementRecordMapper.selectCount(procurementRecordLambdaQueryWrapper);
-
+            SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(detail.getId());
+            if (ObjectUtils.isNull(detail.getProductModelId())) {
+                detail.setProductModelId(salesLedgerProduct.getProductModelId());
+            }
             ProcurementRecordStorage.ProcurementRecordStorageBuilder procurementRecordBuilder = ProcurementRecordStorage.builder()
                     .salesLedgerProductId(detail.getId())
-                    .inboundBatches(aLong.equals(0L) ? "绗�1鎵规("+ procurementDto.getTypeName() +")" : "绗�"+ (aLong + 1) + "鎵规(" + procurementDto.getTypeName() + ")" )
+                    .inboundBatches(aLong.equals(0L) ? "绗�1鎵规(" + procurementDto.getTypeName() + ")" : "绗�" + (aLong + 1) + "鎵规(" + procurementDto.getTypeName() + ")")
                     .inboundNum(detail.getInboundQuantity())
                     .type(procurementDto.getType())
                     .warnNum(detail.getWarnNum())
@@ -776,12 +780,10 @@
                     .createTime(LocalDateTime.now())
                     .createUser(loginUser.getUserId())
                     .updateTime(LocalDateTime.now())
-                    .boxNum(detail.getBoxNum())
-                    .cartonSpecifications(detail.getCartonSpecifications())
-                    .dollarPrice(detail.getDollarPrice())
                     .updateUser(loginUser.getUserId())
                     .createBy(procurementDto.getNickName())
-                    .productModelId(detail.getProductModelId());
+                    .productModelId(detail.getProductModelId())
+                    .qualityInspectId(ObjectUtils.isNotNull(procurementDto.getQualityInspectId()) ? procurementDto.getQualityInspectId() : 0L);
             this.save(procurementRecordBuilder.build());
             // 鍏ュ簱鎴愬姛鍑忔帀閲囪喘鏁伴噺
 //            LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -803,14 +805,14 @@
         // 璁$畻寰呭叆搴撴暟閲�
         // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
         List<Integer> collect = procurementPageDtos.stream().map(ProcurementPageDto::getId).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty( collect)){
+        if (CollectionUtils.isEmpty(collect)) {
             return procurementPageDtoIPage;
         }
         LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect)
                 .eq(ProcurementRecordOut::getType, 1);
         List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty( procurementRecords)){
+        if (CollectionUtils.isEmpty(procurementRecords)) {
             return procurementPageDtoIPage;
         }
         for (ProcurementPageDto dto : procurementPageDtos) {
@@ -820,7 +822,7 @@
                     .collect(Collectors.toList());
 
             // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
-            if(CollectionUtils.isEmpty(collect1)){
+            if (CollectionUtils.isEmpty(collect1)) {
                 dto.setInboundNum0(dto.getInboundNum());
                 continue;
             }
@@ -836,15 +838,6 @@
         return procurementPageDtoIPage;
     }
 
-    public List<Long> listCopyIds(String ids) {
-        List<Long> idsSet = new ArrayList<>();
-        String[] split = ids.split(",");
-        for (String s : split) {
-            idsSet.add(Long.valueOf(s));
-        }
-        return idsSet;
-    }
-
     @Override
     public IPage<ProcurementPageDtoCopy> listPageCopy(Page page, ProcurementPageDto procurementDto) {
         IPage<ProcurementPageDtoCopy> procurementPageDtoCopyIPage = procurementRecordMapper.listPageCopy(page, procurementDto);
@@ -852,14 +845,14 @@
         // 璁$畻寰呭叆搴撴暟閲�
         // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
         List<Integer> collect = procurementPageDtoCopyList.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty( collect)){
+        if (CollectionUtils.isEmpty(collect)) {
             return procurementPageDtoCopyIPage;
         }
         LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
-        procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType,1);
+        procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 1);
         List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty( procurementRecords)){
+        if (CollectionUtils.isEmpty(procurementRecords)) {
             return procurementPageDtoCopyIPage;
         }
         for (ProcurementPageDtoCopy dto : procurementPageDtoCopyList) {
@@ -869,13 +862,14 @@
                     .collect(Collectors.toList());
 
             // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
-            if(CollectionUtils.isEmpty(collect1)){
+            if (CollectionUtils.isEmpty(collect1)) {
                 dto.setInboundNum0(dto.getInboundNum());
                 dto.setTotalInboundNum(BigDecimal.ZERO);
                 continue;
             }
+
             // 璁$畻宸插嚭搴撴暟閲忔�诲拰锛屽苟璁剧疆寰呭嚭搴撴暟閲�
-            BigDecimal totalInboundNum = procurementRecords.stream()
+            BigDecimal totalInboundNum = collect1.stream()
                     .map(ProcurementRecordOut::getInboundNum)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
             // 鍑哄簱鏁伴噺 = 鎬绘暟閲� - 寰呭嚭搴撴暟閲�
@@ -883,12 +877,13 @@
             // 寰呭嚭搴撴暟閲� = 鎬绘暟閲� - 宸插嚭搴撴暟閲�
             dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum));
             // 搴撳瓨浠峰��
-            if(dto.getUnitPrice() != null){
+            if (dto.getUnitPrice() != null) {
                 dto.setTotalPrice(dto.getInboundNum0().multiply(dto.getUnitPrice()));
             }
         }
         return procurementPageDtoCopyIPage;
     }
+
     @Override
     public IPage<ProductModel> listPageProductionStock(Page page) {
         ProductModel productModel = new ProductModel();
@@ -901,9 +896,46 @@
         return iPage;
     }
 
+
     @Override
     public IPage<ProcurementPageDto> listPageByProductProduction(Page page, ProcurementPageDto procurementDto) {
         IPage<ProcurementPageDto> procurementPageDtoIPage = procurementRecordMapper.listPageByProductProduction(page, procurementDto);
+
+
+        List<ProcurementPageDto> procurementPageDtos = procurementPageDtoIPage.getRecords();
+        // 璁$畻寰呭叆搴撴暟閲�
+        // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
+        List<Integer> collect = procurementPageDtos.stream().map(ProcurementPageDto::getId).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(collect)) {
+            return procurementPageDtoIPage;
+        }
+        LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect)
+                .eq(ProcurementRecordOut::getType, 4);
+        List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
+        if (CollectionUtils.isEmpty(procurementRecords)) {
+            return procurementPageDtoIPage;
+        }
+        for (ProcurementPageDto dto : procurementPageDtos) {
+            // 鏍规嵁閲囪喘鍙拌处ID绛涢�夊搴旂殑鍑哄簱璁板綍
+            List<ProcurementRecordOut> collect1 = procurementRecords.stream()
+                    .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId()))
+                    .collect(Collectors.toList());
+
+            // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
+            if (CollectionUtils.isEmpty(collect1)) {
+                dto.setInboundNum0(dto.getInboundNum());
+                continue;
+            }
+
+            // 璁$畻宸插嚭搴撴暟閲忔�诲拰锛屽苟璁剧疆寰呭嚭搴撴暟閲�
+            BigDecimal totalInboundNum = collect1.stream()
+                    .map(ProcurementRecordOut::getInboundNum)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+            // 寰呭嚭搴撴暟閲� = 鎬绘暟閲� - 宸插嚭搴撴暟閲�
+            dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum));
+        }
         return procurementPageDtoIPage;
     }
 
diff --git a/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java b/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
index 31ff3fb..3604ebf 100644
--- a/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
@@ -1,12 +1,9 @@
 package com.ruoyi.production.controller;
 
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.production.dto.ProcessRouteDto;
 import com.ruoyi.production.pojo.ProcessRoute;
-import com.ruoyi.production.pojo.ProcessRouteItem;
-import com.ruoyi.production.service.ProcessRouteItemService;
 import com.ruoyi.production.service.ProcessRouteService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -22,9 +19,6 @@
 
     @Autowired
     private ProcessRouteService processRouteService;
-
-    @Autowired
-    private ProcessRouteItemService processRouteItemService;
 
     @GetMapping("page")
     @ApiOperation("鍒嗛〉鏌ヨ")
@@ -45,8 +39,6 @@
     @ApiOperation("鍒犻櫎宸ヨ壓璺嚎")
     @DeleteMapping("/{ids}")
     public R delete(@PathVariable("ids") Long[] ids) {
-        //鍒犻櫎宸ヨ壓璺嚎璇︽儏
-        processRouteItemService.remove(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId,Arrays.asList(ids)));
-        return R.ok(processRouteService.removeBatchByIds(Arrays.asList(ids)));
+        return R.ok(processRouteService.batchDelete(Arrays.asList(ids)));
     }
 }
diff --git a/src/main/java/com/ruoyi/production/controller/ProcessRouteItemController.java b/src/main/java/com/ruoyi/production/controller/ProcessRouteItemController.java
index 451548d..18e8096 100644
--- a/src/main/java/com/ruoyi/production/controller/ProcessRouteItemController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProcessRouteItemController.java
@@ -1,24 +1,16 @@
 package com.ruoyi.production.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-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.ProcessRouteItemDto;
-import com.ruoyi.production.pojo.ProcessRoute;
 import com.ruoyi.production.pojo.ProcessRouteItem;
 import com.ruoyi.production.service.ProcessRouteItemService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
-
-import java.util.Arrays;
-import java.util.List;
 
 @RestController
 @RequestMapping("processRouteItem")
diff --git a/src/main/java/com/ruoyi/production/controller/ProductBomController.java b/src/main/java/com/ruoyi/production/controller/ProductBomController.java
index b8d9416..6352640 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductBomController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductBomController.java
@@ -7,13 +7,12 @@
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.production.dto.ProductBomDto;
-import com.ruoyi.production.dto.ProductProcessDto;
 import com.ruoyi.production.pojo.ProcessRoute;
 import com.ruoyi.production.pojo.ProductBom;
-import com.ruoyi.production.pojo.ProductProcess;
+import com.ruoyi.production.pojo.ProductProcessRoute;
 import com.ruoyi.production.service.ProcessRouteService;
 import com.ruoyi.production.service.ProductBomService;
-import com.ruoyi.production.service.ProductProcessService;
+import com.ruoyi.production.service.ProductProcessRouteService;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,6 +38,9 @@
 
     @Autowired
     private ProcessRouteService processRouteService;
+
+    @Autowired
+    private ProductProcessRouteService productProcessRouteService;
 
     @GetMapping("/listPage")
     @Log(title = "BOM-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
@@ -67,7 +69,8 @@
     @Log(title = "鍒犻櫎", businessType = BusinessType.DELETE)
     public AjaxResult batchDelete(@RequestBody List<Integer> ids) {
         List<ProcessRoute> list = processRouteService.list(Wrappers.<ProcessRoute>lambdaQuery().in(ProcessRoute::getBomId, ids));
-        if (list.size()>0){
+        List<ProductProcessRoute> list2 = productProcessRouteService.list(Wrappers.<ProductProcessRoute>lambdaQuery().in(ProductProcessRoute::getBomId, ids));
+        if (list.size()>0 || list2.size()>0){
             return AjaxResult.error("璇OM宸茬粡瀛樺湪瀵瑰簲鐨勫伐鑹鸿矾绾�,鏃犳硶杩涜鍒犻櫎");
         }
         if(CollectionUtils.isEmpty(ids)){
diff --git a/src/main/java/com/ruoyi/production/controller/ProductOrderController.java b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
index 658b40a..0fad508 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
@@ -1,13 +1,11 @@
 package com.ruoyi.production.controller;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.basic.pojo.Customer;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.production.dto.ProductOrderDto;
-import com.ruoyi.production.pojo.ProcessRoute;
 import com.ruoyi.production.pojo.ProductOrder;
 import com.ruoyi.production.service.ProductOrderService;
 import io.swagger.annotations.Api;
diff --git a/src/main/java/com/ruoyi/production/controller/ProductProcessController.java b/src/main/java/com/ruoyi/production/controller/ProductProcessController.java
index cff0c60..78d7cfd 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductProcessController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductProcessController.java
@@ -2,14 +2,11 @@
 
 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;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.oA.pojo.OaProject;
 import com.ruoyi.production.dto.ProductProcessDto;
 import com.ruoyi.production.pojo.ProductProcess;
 import com.ruoyi.production.service.impl.ProductProcessServiceImpl;
@@ -17,7 +14,6 @@
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -59,10 +55,7 @@
     @DeleteMapping("/batchDelete")
     @Log(title = "鍒犻櫎", businessType = BusinessType.DELETE)
     public AjaxResult batchDelete(@RequestBody List<Integer> ids) {
-        if(CollectionUtils.isEmpty(ids)){
-            return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
-        }
-        return AjaxResult.success(productProcessService.removeBatchByIds(ids));
+        return AjaxResult.success(productProcessService.batchDelete(ids));
     }
 
     @ApiOperation("鏌ヨ鎵�鏈夊伐搴�")
diff --git a/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java b/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
index 2d5231d..2deb126 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
@@ -1,34 +1,13 @@
 package com.ruoyi.production.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.framework.web.domain.R;
-import com.ruoyi.production.dto.ProductProcessRouteItemDto;
-import com.ruoyi.production.mapper.*;
-import com.ruoyi.production.pojo.*;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
 import com.ruoyi.production.service.ProductProcessRouteItemService;
 import com.ruoyi.production.service.ProductProcessRouteService;
-import com.ruoyi.production.service.ProductWorkOrderService;
-import com.ruoyi.quality.mapper.QualityInspectMapper;
-import com.ruoyi.quality.pojo.QualityInspect;
-import com.ruoyi.sales.mapper.SalesLedgerMapper;
-import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
-import com.ruoyi.sales.pojo.SalesLedger;
-import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
-
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
 @RequestMapping("/productProcessRoute")
 @RestController
diff --git a/src/main/java/com/ruoyi/production/controller/ProductStructureController.java b/src/main/java/com/ruoyi/production/controller/ProductStructureController.java
index 2f99a00..9f6c628 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductStructureController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductStructureController.java
@@ -1,22 +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;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-
-import java.util.Arrays;
 
 @RequestMapping("productStructure")
 @RestController
diff --git a/src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java b/src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java
index f595d98..188a701 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java
@@ -34,4 +34,13 @@
         return R.ok(productWorkOrderservice.updateProductWorkOrder(productWorkOrderDto));
     }
 
+    /**
+     * pda鏍规嵁浜岀淮鐮佺殑宸ュ崟id鏌ヨ鏁版嵁
+     */
+    @ApiOperation("pda鏍规嵁浜岀淮鐮佺殑宸ュ崟id鏌ヨ鏁版嵁")
+    @GetMapping("/getProductWorkOrderById")
+    public R getProductWorkOrderById(Long id) {
+        return R.ok(productWorkOrderservice.getById(id));
+    }
+
 }
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java b/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
index 948d6de..fdf91bb 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
@@ -1,8 +1,8 @@
 package com.ruoyi.production.controller;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.domain.R;
-import com.ruoyi.production.dto.ProductProcessRouteItemDto;
 import com.ruoyi.production.dto.ProductionProductMainDto;
 import com.ruoyi.production.service.ProductionProductMainService;
 import io.swagger.annotations.Api;
@@ -11,7 +11,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Arrays;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RequestMapping("productionProductMain")
@@ -49,4 +49,16 @@
     public R delete(@RequestBody ProductionProductMainDto productionProductMainDto) {
         return R.ok(productionProductMainService.removeProductMain(productionProductMainDto));
     }
+
+
+    /**
+     * 瀵煎嚭
+     */
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ProductionProductMainDto productionProductMainDto) {
+        List<ProductionProductMainDto> list;
+        list = productionProductMainService.listPageProductionProductMainDto(new Page<>(1, -1), productionProductMainDto).getRecords();
+        ExcelUtil<ProductionProductMainDto> util = new ExcelUtil<ProductionProductMainDto>(ProductionProductMainDto.class);
+        util.exportExcel(response, list, "鐢熶骇鎶ュ伐鏁版嵁");
+    }
 }
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionProductOutputController.java b/src/main/java/com/ruoyi/production/controller/ProductionProductOutputController.java
index ca9c1e8..68dde0a 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionProductOutputController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionProductOutputController.java
@@ -2,9 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.framework.web.domain.R;
-import com.ruoyi.production.dto.ProductionProductInputDto;
 import com.ruoyi.production.dto.ProductionProductOutputDto;
-import com.ruoyi.production.service.ProductionProductInputService;
 import com.ruoyi.production.service.ProductionProductOutputService;
 import io.swagger.annotations.Api;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java b/src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java
index fb9ea56..bfcd8af 100644
--- a/src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java
+++ b/src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java
@@ -2,12 +2,12 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.production.dto.SalesLedgerProductionAccountingDto;
-import com.ruoyi.production.pojo.SalesLedgerProductionAccounting;
 import com.ruoyi.production.service.impl.SalesLedgerProductionAccountingServiceImpl;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -18,6 +18,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * @author :yys
@@ -41,12 +42,13 @@
 
     /**
      * 瀵煎嚭
-     * @param response
      */
     @PostMapping("/export")
-    @ApiOperation("鐢熶骇绠$悊-鐢熶骇鏍哥畻-瀵煎嚭")
-    public void export(HttpServletResponse response) {
-        salesLedgerProductionAccountingService.export(response);
+    public void export(HttpServletResponse response, SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto) {
+        List<SalesLedgerProductionAccountingDto> list;
+        list = salesLedgerProductionAccountingService.listPage(new Page<>(1, -1), salesLedgerProductionAccountingDto).getRecords();
+        ExcelUtil<SalesLedgerProductionAccountingDto> util = new ExcelUtil<SalesLedgerProductionAccountingDto>(SalesLedgerProductionAccountingDto.class);
+        util.exportExcel(response, list, "鐢熶骇鏍哥畻鏁版嵁");
     }
 
 }
diff --git a/src/main/java/com/ruoyi/production/controller/SalesLedgerSchedulingController.java b/src/main/java/com/ruoyi/production/controller/SalesLedgerSchedulingController.java
index ae73e64..0b4f574 100644
--- a/src/main/java/com/ruoyi/production/controller/SalesLedgerSchedulingController.java
+++ b/src/main/java/com/ruoyi/production/controller/SalesLedgerSchedulingController.java
@@ -8,7 +8,6 @@
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.procurementrecord.dto.ProcurementDto;
 import com.ruoyi.production.dto.ProcessSchedulingDto;
 import com.ruoyi.production.dto.ProductionDispatchAddDto;
 import com.ruoyi.production.dto.SalesLedgerSchedulingDto;
@@ -38,6 +37,7 @@
 @RestController
 @Api(tags = "鐢熶骇璁㈠崟")
 @RequestMapping("/salesLedger/scheduling")
+@Deprecated // 鏍囪璇ョ被宸插純鐢�
 public class SalesLedgerSchedulingController extends BaseController {
 
     @Autowired
diff --git a/src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java b/src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java
index ba6a596..20e8c03 100644
--- a/src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java
+++ b/src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java
@@ -7,12 +7,8 @@
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.production.dto.ProcessSchedulingDto;
 import com.ruoyi.production.dto.ProductionReportDto;
-import com.ruoyi.production.dto.SalesLedgerSchedulingProcessDto;
 import com.ruoyi.production.dto.SalesLedgerWorkDto;
-import com.ruoyi.production.pojo.SalesLedgerWork;
-import com.ruoyi.production.service.SalesLedgerWorkService;
 import com.ruoyi.production.service.impl.SalesLedgerWorkServiceImpl;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -30,6 +26,7 @@
 @RestController
 @Api(tags = "鐢熶骇鎶ュ伐(鎺掍骇璁板綍)")
 @RequestMapping("/salesLedger/work")
+@Deprecated // 鏍囪璇ョ被宸插純鐢�
 public class SalesLedgerWorkController extends BaseController {
 
 
@@ -55,7 +52,7 @@
         SalesLedgerWorkDto salesLedgerSchedulingDto = new SalesLedgerWorkDto();
         IPage<SalesLedgerWorkDto> result = salesLedgerWorkService.listPage(page,salesLedgerSchedulingDto);
         result.getRecords().forEach(item -> {
-            item.setDaiNum(item.getSchedulingNum().subtract(item.getFinishedNum()));
+            item.setDaiNum(item.getFinishedNum().subtract(item.getSchedulingNum()));
             item.setStatusName(item.getStatus().toString());
         });
         ExcelUtil<SalesLedgerWorkDto> util = new ExcelUtil<>(SalesLedgerWorkDto.class);
diff --git a/src/main/java/com/ruoyi/production/dto/ProcessRouteItemDto.java b/src/main/java/com/ruoyi/production/dto/ProcessRouteItemDto.java
index 705354c..bd9a9a4 100644
--- a/src/main/java/com/ruoyi/production/dto/ProcessRouteItemDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProcessRouteItemDto.java
@@ -4,8 +4,6 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.util.List;
-
 @Data
 public class ProcessRouteItemDto extends ProcessRouteItem {
 
diff --git a/src/main/java/com/ruoyi/production/dto/ProcessSchedulingDto.java b/src/main/java/com/ruoyi/production/dto/ProcessSchedulingDto.java
index 1143abd..87f29d7 100644
--- a/src/main/java/com/ruoyi/production/dto/ProcessSchedulingDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProcessSchedulingDto.java
@@ -5,7 +5,6 @@
 import lombok.Data;
 
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 
 /**
  * @author :yys
diff --git a/src/main/java/com/ruoyi/production/dto/ProductBomDto.java b/src/main/java/com/ruoyi/production/dto/ProductBomDto.java
index ab695ca..b4a4c9a 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductBomDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductBomDto.java
@@ -3,8 +3,6 @@
 import com.ruoyi.production.pojo.ProductBom;
 import lombok.Data;
 
-import java.util.List;
-
 //鍒嗛〉鏌ヨ鍥炴樉鏁版嵁
 @Data
 public class ProductBomDto extends ProductBom {
diff --git a/src/main/java/com/ruoyi/production/dto/ProductProcessDto.java b/src/main/java/com/ruoyi/production/dto/ProductProcessDto.java
index 7383a82..1e40c00 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductProcessDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductProcessDto.java
@@ -2,10 +2,7 @@
 
 import com.ruoyi.production.pojo.ProductProcess;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-
-import java.math.BigDecimal;
 
 @Data
 @ApiModel
diff --git a/src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java b/src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java
index d235ccb..5a0f4d2 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java
@@ -1,11 +1,8 @@
 package com.ruoyi.production.dto;
 
-import com.ruoyi.production.pojo.ProcessRouteItem;
 import com.ruoyi.production.pojo.ProductProcessRouteItem;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-
-import java.util.List;
 
 @Data
 public class ProductProcessRouteItemDto extends ProductProcessRouteItem {
diff --git a/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java b/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
index f4ebe75..d8ef0f5 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
@@ -1,6 +1,5 @@
 package com.ruoyi.production.dto;
 
-import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import com.ruoyi.production.pojo.ProductWorkOrder;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
diff --git a/src/main/java/com/ruoyi/production/dto/ProductionProductInputDto.java b/src/main/java/com/ruoyi/production/dto/ProductionProductInputDto.java
index 1e6e02e..13bb4a3 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductionProductInputDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductionProductInputDto.java
@@ -11,4 +11,10 @@
 
     @ApiModelProperty(value = "浜у搧鍨嬪彿")
     private String model;
+
+    @ApiModelProperty(value = "浜у搧鍚嶇О")
+    private String productName;
+
+    @ApiModelProperty(value = "鍗曚綅")
+    private String unit;
 }
diff --git a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
index cb34380..f851c05 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
@@ -1,29 +1,44 @@
 package com.ruoyi.production.dto;
 
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import com.ruoyi.production.pojo.ProductionProductMain;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 
 @Data
+@ExcelIgnoreUnannotated
 public class ProductionProductMainDto extends ProductionProductMain {
     @ApiModelProperty(value = "宸ュ崟缂栧彿")
+    @Excel(name = "宸ュ崟缂栧彿")
     private String workOrderNo;
 
     @ApiModelProperty(value = "宸ュ崟鐘舵��")
     private String workOrderStatus;
 
     @ApiModelProperty(value = "鎶ュ伐浜哄憳鏄电О")
+    @Excel(name = "鎶ュ伐浜�")
     private String nickName;
 
     @ApiModelProperty(value = "鎶ュ伐鏁伴噺")
+    @Excel(name = "鎶ュ伐鏁伴噺")
     private BigDecimal quantity;
 
-    @ApiModelProperty(value = "鏄惁鎶ュ伐")
-    private boolean reportWork;
+    //浜у搧鍚嶇О
+    @Excel(name = "浜у搧鍚嶇О")
+    private String productName;
 
-    @ApiModelProperty(value = "鎶ュ伐id")
-    private Long productMainId;
+    //浜у搧瑙勬牸鍨嬪彿
+    @Excel(name = "浜у搧瑙勬牸鍨嬪彿")
+    private String productModelName;
+
+    //鍗曚綅
+    @Excel(name = "鍗曚綅")
+    private String unit;
+
+    //閿�鍞悎鍚屽彿
+    @Excel(name = "閿�鍞悎鍚屽彿")
+    private String salesContractNo;
 }
diff --git a/src/main/java/com/ruoyi/production/dto/ProductionProductOutputDto.java b/src/main/java/com/ruoyi/production/dto/ProductionProductOutputDto.java
index f98cc80..6710342 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductionProductOutputDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductionProductOutputDto.java
@@ -1,6 +1,5 @@
 package com.ruoyi.production.dto;
 
-import com.ruoyi.production.pojo.ProductionProductInput;
 import com.ruoyi.production.pojo.ProductionProductOutput;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
diff --git a/src/main/java/com/ruoyi/production/dto/SalesLedgerProductDto.java b/src/main/java/com/ruoyi/production/dto/SalesLedgerProductDto.java
index 33e758d..9c4400e 100644
--- a/src/main/java/com/ruoyi/production/dto/SalesLedgerProductDto.java
+++ b/src/main/java/com/ruoyi/production/dto/SalesLedgerProductDto.java
@@ -1,13 +1,9 @@
 package com.ruoyi.production.dto;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.util.Date;
 
 /**
  * @author :yys
diff --git a/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java b/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java
index 7a5ae26..6707622 100644
--- a/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java
+++ b/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java
@@ -1,5 +1,6 @@
 package com.ruoyi.production.dto;
 
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -13,6 +14,7 @@
  */
 @Data
 @ApiModel
+@ExcelIgnoreUnannotated
 public class SalesLedgerProductionAccountingDto extends SalesLedgerProductDto{
 
     /**
@@ -25,7 +27,7 @@
      * 鎺掍骇浜哄悕绉�
      */
     @ApiModelProperty(value = "鐢熶骇浜哄悕绉�")
-    @Excel(name = "鐢熶骇浜哄悕绉�")
+    @Excel(name = "鐢熶骇浜�")
     private String schedulingUserName;
 
 
@@ -60,7 +62,7 @@
      * 鎺掍骇鏃ユ湡
      */
     @ApiModelProperty(value = "鎺掍骇鏃ユ湡")
-    @Excel(name = "鎺掍骇鏃ユ湡")
+    @Excel(name = "鐢熶骇鏃ユ湡")
     private String schedulingDate;
 
     @ApiModelProperty(value = "寮�濮嬫椂闂�")
diff --git a/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingDto.java b/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingDto.java
index 57d14ab..c6ac103 100644
--- a/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingDto.java
+++ b/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingDto.java
@@ -1,7 +1,5 @@
 package com.ruoyi.production.dto;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import io.swagger.annotations.ApiModel;
@@ -10,7 +8,6 @@
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
-import java.time.LocalDate;
 import java.util.Date;
 
 /**
diff --git a/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingProcessDto.java b/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingProcessDto.java
index b04e43e..6e46ec7 100644
--- a/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingProcessDto.java
+++ b/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingProcessDto.java
@@ -1,7 +1,5 @@
 package com.ruoyi.production.dto;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import io.swagger.annotations.ApiModel;
diff --git a/src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java b/src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java
index 3e982e7..76ce7db 100644
--- a/src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java
+++ b/src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java
@@ -6,7 +6,6 @@
 import lombok.Data;
 
 import java.math.BigDecimal;
-import java.time.LocalDate;
 
 /**
  * @author :yys
diff --git a/src/main/java/com/ruoyi/production/mapper/ProcessRouteItemMapper.java b/src/main/java/com/ruoyi/production/mapper/ProcessRouteItemMapper.java
index 394c3a7..f4bde19 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProcessRouteItemMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProcessRouteItemMapper.java
@@ -1,8 +1,6 @@
 package com.ruoyi.production.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.production.dto.ProcessRouteItemDto;
 import com.ruoyi.production.pojo.ProcessRouteItem;
 import org.apache.ibatis.annotations.Mapper;
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductBomMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductBomMapper.java
index 1183335..084445e 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductBomMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductBomMapper.java
@@ -1,11 +1,10 @@
 package com.ruoyi.production.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.production.dto.ProductBomDto;
-import com.ruoyi.production.dto.ProductProcessDto;
 import com.ruoyi.production.pojo.ProductBom;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
index 94d41f3..9da50d5 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
@@ -3,7 +3,6 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.production.dto.ProductBomDto;
 import com.ruoyi.production.dto.ProductOrderDto;
 import com.ruoyi.production.dto.ProductStructureDto;
 import com.ruoyi.production.pojo.ProcessRoute;
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductProcessRouteMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductProcessRouteMapper.java
index 06ae748..9284c5d 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductProcessRouteMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductProcessRouteMapper.java
@@ -1,8 +1,8 @@
 package com.ruoyi.production.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.production.dto.ProcessRouteDto;
 import com.ruoyi.production.pojo.ProductProcessRoute;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductStructureMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductStructureMapper.java
index 9ab7ba7..a1ce7a8 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductStructureMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductStructureMapper.java
@@ -1,8 +1,6 @@
 package com.ruoyi.production.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.production.dto.ProductStructureDto;
 import com.ruoyi.production.pojo.ProductStructure;
 import org.apache.ibatis.annotations.Mapper;
@@ -15,5 +13,5 @@
 
     List<ProductStructureDto> listBybomId(@Param("bomId") Long bomId);
 
-    List<ProductStructureDto> listByproductModelId(@Param("productModelId") Long productModelId);
+    List<ProductStructureDto> listBybomAndProcess(@Param("bomId") Long bomId, @Param("processId") Long processId);
 }
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
index 93f443e..ae52c3b 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
@@ -1,6 +1,5 @@
 package com.ruoyi.production.mapper;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -10,21 +9,11 @@
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
-import java.util.Map;
 
 @Mapper
 public interface ProductWorkOrderMapper extends BaseMapper<ProductWorkOrder> {
 
     IPage<ProductWorkOrderDto> pageProductWorkOrder(Page<ProductWorkOrderDto> page, @Param("c") ProductWorkOrderDto productWorkOrder);
-
-    int updatePlanQuantity(Map<String, Object> params);
-
-    /**
-     * 鍥炴粴宸ュ崟璁″垝鏁伴噺锛氫粠production_product_output鍙杚uantity鍔犲洖plan_quantity
-     * @param productMainId
-     * @return
-     */
-    int rollbackPlanQuantity(@Param("productMainId") Long productMainId);
 
     List<ProductWorkOrderDto> selectProductWorkOrderDtoList();
 }
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductBom.java b/src/main/java/com/ruoyi/production/pojo/ProductBom.java
index 802724a..f4a04cb 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductBom.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductBom.java
@@ -1,13 +1,6 @@
 package com.ruoyi.production.pojo;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
+import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -15,6 +8,9 @@
 import lombok.Setter;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
 /**
  * <p>
  * BOM涓昏〃
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductOrder.java b/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
index c729ea9..fde5aa6 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
@@ -3,7 +3,6 @@
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
-import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -34,7 +33,7 @@
     private Long productModelId;
 
     /**
-     * 宸ヨ壓璺嚎id
+     * 妯$増鐨勫伐鑹鸿矾绾縤d
      */
     @ApiModelProperty(value = "宸ヨ壓璺嚎id")
     private Long routeId;
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductProcessRoute.java b/src/main/java/com/ruoyi/production/pojo/ProductProcessRoute.java
index fac6d15..c0881ea 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductProcessRoute.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductProcessRoute.java
@@ -1,17 +1,14 @@
 package com.ruoyi.production.pojo;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
 /**
  * <p>
  *
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java b/src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java
index 4efc694..d4b950e 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductWorkOrder.java
@@ -2,7 +2,6 @@
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java b/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
index 3dbe688..2064e04 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
@@ -1,8 +1,11 @@
 package com.ruoyi.production.pojo;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
 
@@ -14,6 +17,7 @@
     private Long id;
 
     @ApiModelProperty(value = "鎶ュ伐鍗曞彿")
+    @Excel(name = "鎶ュ伐鍗曞彿")
     private String productNo;
 
     @ApiModelProperty(value = "鎶ュ伐浜哄憳id")
@@ -33,10 +37,15 @@
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "鍒涘缓鏃堕棿")
     private LocalDateTime createTime;
 
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    @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;
 
     @ApiModelProperty(value = "绉熸埛ID")
diff --git a/src/main/java/com/ruoyi/production/service/ProcessRouteItemService.java b/src/main/java/com/ruoyi/production/service/ProcessRouteItemService.java
index 3299048..9ec2b5c 100644
--- a/src/main/java/com/ruoyi/production/service/ProcessRouteItemService.java
+++ b/src/main/java/com/ruoyi/production/service/ProcessRouteItemService.java
@@ -1,9 +1,6 @@
 package com.ruoyi.production.service;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.production.dto.ProcessRouteItemDto;
 import com.ruoyi.production.pojo.ProcessRouteItem;
 
diff --git a/src/main/java/com/ruoyi/production/service/ProcessRouteService.java b/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
index bd26b0b..f7e7dba 100644
--- a/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
+++ b/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
@@ -5,11 +5,14 @@
 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;
+
+import java.util.List;
 
 public interface ProcessRouteService extends IService<ProcessRoute> {
 
     IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto);
 
     Integer saveProcessRoute(ProcessRoute processRoute);
+
+    int batchDelete(List<Long> ids);
 }
diff --git a/src/main/java/com/ruoyi/production/service/ProductBomService.java b/src/main/java/com/ruoyi/production/service/ProductBomService.java
index 0736338..d204be6 100644
--- a/src/main/java/com/ruoyi/production/service/ProductBomService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductBomService.java
@@ -2,11 +2,10 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.production.dto.ProductBomDto;
-import com.ruoyi.production.dto.ProductProcessDto;
 import com.ruoyi.production.pojo.ProductBom;
-import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/production/service/ProductOrderService.java b/src/main/java/com/ruoyi/production/service/ProductOrderService.java
index 78a3de1..e35905f 100644
--- a/src/main/java/com/ruoyi/production/service/ProductOrderService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductOrderService.java
@@ -3,7 +3,6 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.production.dto.ProductBomDto;
 import com.ruoyi.production.dto.ProductOrderDto;
 import com.ruoyi.production.dto.ProductStructureDto;
 import com.ruoyi.production.pojo.ProcessRoute;
diff --git a/src/main/java/com/ruoyi/production/service/ProductProcessRouteService.java b/src/main/java/com/ruoyi/production/service/ProductProcessRouteService.java
index 238aa1e..37ddb71 100644
--- a/src/main/java/com/ruoyi/production/service/ProductProcessRouteService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductProcessRouteService.java
@@ -1,8 +1,8 @@
 package com.ruoyi.production.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.production.dto.ProcessRouteDto;
 import com.ruoyi.production.pojo.ProductProcessRoute;
-import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/production/service/ProductProcessService.java b/src/main/java/com/ruoyi/production/service/ProductProcessService.java
index a5ab6c3..3964166 100644
--- a/src/main/java/com/ruoyi/production/service/ProductProcessService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductProcessService.java
@@ -3,14 +3,11 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.device.pojo.DeviceRepair;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.production.dto.*;
+import com.ruoyi.production.dto.ProductProcessDto;
 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;
 
 /**
@@ -23,4 +20,6 @@
     AjaxResult add(ProductProcessDto productProcessDto);
 
     AjaxResult importData(MultipartFile file);
+
+    String batchDelete(List<Integer> ids);
 }
diff --git a/src/main/java/com/ruoyi/production/service/ProductStructureService.java b/src/main/java/com/ruoyi/production/service/ProductStructureService.java
index b85a040..1ede09a 100644
--- a/src/main/java/com/ruoyi/production/service/ProductStructureService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductStructureService.java
@@ -1,7 +1,6 @@
 package com.ruoyi.production.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.basic.dto.ProductModelDto;
 import com.ruoyi.production.dto.ProductStructureDto;
 import com.ruoyi.production.pojo.ProductStructure;
 
diff --git a/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java b/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
index 0980cae..1ef2fae 100644
--- a/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
@@ -3,12 +3,8 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.production.dto.ProcessRouteItemDto;
-import com.ruoyi.production.dto.ProductOrderDto;
 import com.ruoyi.production.dto.ProductionProductMainDto;
 import com.ruoyi.production.pojo.ProductionProductMain;
-
-import java.util.List;
 
 public interface ProductionProductMainService extends IService<ProductionProductMain> {
     IPage<ProductionProductMainDto> listPageProductionProductMainDto(Page page, ProductionProductMainDto productionProductMainDto);
diff --git a/src/main/java/com/ruoyi/production/service/SalesLedgerProductionAccountingService.java b/src/main/java/com/ruoyi/production/service/SalesLedgerProductionAccountingService.java
index 50daae0..11c62f4 100644
--- a/src/main/java/com/ruoyi/production/service/SalesLedgerProductionAccountingService.java
+++ b/src/main/java/com/ruoyi/production/service/SalesLedgerProductionAccountingService.java
@@ -6,8 +6,6 @@
 import com.ruoyi.production.dto.SalesLedgerProductionAccountingDto;
 import com.ruoyi.production.pojo.SalesLedgerProductionAccounting;
 
-import javax.servlet.http.HttpServletResponse;
-
 /**
  * @author :yys
  * @date : 2025/7/21 14:39
@@ -18,5 +16,4 @@
     IPage<SalesLedgerProductionAccountingDto> listPage(Page page, SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto);
 
 
-    void export(HttpServletResponse response);
 }
diff --git a/src/main/java/com/ruoyi/production/service/SalesLedgerWorkService.java b/src/main/java/com/ruoyi/production/service/SalesLedgerWorkService.java
index b219515..b99855f 100644
--- a/src/main/java/com/ruoyi/production/service/SalesLedgerWorkService.java
+++ b/src/main/java/com/ruoyi/production/service/SalesLedgerWorkService.java
@@ -3,7 +3,6 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.production.dto.ProductionReportDto;
 import com.ruoyi.production.dto.SalesLedgerWorkDto;
 import com.ruoyi.production.pojo.SalesLedgerWork;
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteItemServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteItemServiceImpl.java
index 5614366..793ed4d 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteItemServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteItemServiceImpl.java
@@ -1,8 +1,6 @@
 package com.ruoyi.production.service.impl;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 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.production.dto.ProcessRouteItemDto;
 import com.ruoyi.production.mapper.ProcessRouteItemMapper;
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 a5427d2..78ee944 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -1,20 +1,25 @@
 package com.ruoyi.production.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+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.production.dto.ProcessRouteDto;
+import com.ruoyi.production.mapper.ProcessRouteItemMapper;
 import com.ruoyi.production.mapper.ProcessRouteMapper;
+import com.ruoyi.production.mapper.ProductOrderMapper;
 import com.ruoyi.production.pojo.ProcessRoute;
+import com.ruoyi.production.pojo.ProcessRouteItem;
+import com.ruoyi.production.pojo.ProductOrder;
 import com.ruoyi.production.service.ProcessRouteService;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 @Service
 @AllArgsConstructor
@@ -23,6 +28,12 @@
 
     @Autowired
     private ProcessRouteMapper processRouteMapper;
+
+    @Autowired
+    private ProcessRouteItemMapper processRouteItemMapper;
+
+    @Autowired
+    private ProductOrderMapper productOrderMapper;
 
     @Override
     public IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) {
@@ -40,4 +51,16 @@
         processRoute.setProcessRouteCode(newProductCode);
         return processRouteMapper.updateById(processRoute);
     }
+
+    @Override
+    public int batchDelete(List<Long> ids) {
+        //鍏堝垽鏂槸鍚﹀凡缁忓紩鐢ㄤ簡
+        List<ProductOrder> productOrders = productOrderMapper.selectList(Wrappers.<ProductOrder>lambdaQuery().in(ProductOrder::getRouteId, ids));
+        if (productOrders.size()>0){
+            throw new RuntimeException("璇ュ伐鑹鸿矾绾跨敓浜у凡寮曠敤锛屼笉鑳藉垹闄�");
+        }
+        //鍒犻櫎宸ヨ壓璺嚎璇︽儏
+        processRouteItemMapper.delete(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId, ids));
+        return processRouteMapper.deleteBatchIds(ids);
+    }
 }
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductBomServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductBomServiceImpl.java
index d519593..ae09630 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductBomServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductBomServiceImpl.java
@@ -1,17 +1,13 @@
 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.framework.web.domain.AjaxResult;
 import com.ruoyi.production.dto.ProductBomDto;
-import com.ruoyi.production.dto.ProductProcessDto;
-import com.ruoyi.production.pojo.ProductBom;
 import com.ruoyi.production.mapper.ProductBomMapper;
-import com.ruoyi.production.pojo.ProductProcess;
+import com.ruoyi.production.pojo.ProductBom;
 import com.ruoyi.production.service.ProductBomService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
index 075815c..b37b9d1 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -4,12 +4,10 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.production.dto.ProductBomDto;
 import com.ruoyi.production.dto.ProductOrderDto;
 import com.ruoyi.production.dto.ProductStructureDto;
 import com.ruoyi.production.mapper.*;
 import com.ruoyi.production.pojo.*;
-import com.ruoyi.production.service.ProcessRouteService;
 import com.ruoyi.production.service.ProductOrderService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -65,6 +63,7 @@
             productProcessRouteItem.setProcessId(processRouteItem.getProcessId());
             productProcessRouteItem.setProductOrderId(productOrder.getId());
             productProcessRouteItem.setProductRouteId(productProcessRoute.getId());
+            productProcessRouteItem.setDragSort(processRouteItem.getDragSort());
             int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
             if (insert > 0) {
                 // 鏌ヨ浠婃棩宸插瓨鍦ㄧ殑鏈�澶у伐鍗曞彿
@@ -90,7 +89,8 @@
                 ProductWorkOrder productWorkOrder = new ProductWorkOrder();
                 productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
                 productWorkOrder.setProductOrderId(productOrder.getId());
-                productWorkOrder.setPlanQuantity(productOrder.getQuantity());
+                ProductOrder order = productOrderMapper.selectById(productOrder.getId());
+                productWorkOrder.setPlanQuantity(order.getQuantity());
                 productWorkOrder.setWorkOrderNo(workOrderNoStr);
                 productWorkOrder.setStatus(1);
                 productWorkOrderMapper.insert(productWorkOrder);
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
index 6c87939..47cba0e 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
@@ -12,21 +12,13 @@
 import com.ruoyi.quality.mapper.QualityInspectMapper;
 import com.ruoyi.quality.pojo.QualityInspect;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
-import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import lombok.AllArgsConstructor;
-import org.apache.poi.ss.formula.functions.T;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
 
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
 @Service
 @Transactional(rollbackFor = Exception.class)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteServiceImpl.java
index f5b2e92..b856e34 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteServiceImpl.java
@@ -1,10 +1,10 @@
 package com.ruoyi.production.service.impl;
 
-import com.ruoyi.production.dto.ProcessRouteDto;
-import com.ruoyi.production.pojo.ProductProcessRoute;
-import com.ruoyi.production.mapper.ProductProcessRouteMapper;
-import com.ruoyi.production.service.ProductProcessRouteService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.production.dto.ProcessRouteDto;
+import com.ruoyi.production.mapper.ProductProcessRouteMapper;
+import com.ruoyi.production.pojo.ProductProcessRoute;
+import com.ruoyi.production.service.ProductProcessRouteService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
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 6a8cf73..138754f 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
@@ -2,14 +2,18 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+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.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.production.dto.ProductProcessDto;
+import com.ruoyi.production.mapper.ProcessRouteItemMapper;
 import com.ruoyi.production.mapper.ProductProcessMapper;
+import com.ruoyi.production.mapper.ProductProcessRouteItemMapper;
+import com.ruoyi.production.pojo.ProcessRouteItem;
 import com.ruoyi.production.pojo.ProductProcess;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
 import com.ruoyi.production.service.ProductProcessService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +27,10 @@
 public class ProductProcessServiceImpl extends ServiceImpl<ProductProcessMapper, ProductProcess> implements ProductProcessService {
     @Autowired
     private ProductProcessMapper productProcessMapper;
+    @Autowired
+    private ProcessRouteItemMapper processRouteItemMapper;
+    @Autowired
+    private ProductProcessRouteItemMapper productProcessRouteItemMapper;
 
     @Override
     public IPage<ProductProcessDto> listPage(Page page, ProductProcessDto productProcessDto) {
@@ -34,7 +42,7 @@
         ProductProcess productProcess = new ProductProcess();
         BeanUtils.copyProperties(productProcessDto,productProcess);
         boolean save = productProcessMapper.insert(productProcess) > 0;
-        if (save && ObjectUtils.isNotNull(productProcessDto.getNo())) {
+        if (save && ObjectUtils.isNull(productProcessDto.getNo())) {
             // 鏍规嵁id鐢熸垚no瀛楁锛欸X + 8浣嶆暟瀛楋紙涓嶈冻8浣嶅墠闈㈣ˉ0锛�
             String no = "GX" + String.format("%08d", productProcess.getId());
             productProcess.setNo(no);
@@ -42,7 +50,7 @@
             productProcessMapper.updateById(productProcess);
             return AjaxResult.success();
         }
-        return AjaxResult.error();
+        return AjaxResult.success();
     }
 
     @Override
@@ -60,4 +68,16 @@
             return AjaxResult.error("瀵煎叆澶辫触");
         }
     }
+
+    @Override
+    public String 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("璇ュ伐搴忓凡缁忚浣跨敤锛屾棤娉曞垹闄�");
+        }
+        productProcessMapper.deleteBatchIds(ids);
+        return null;
+    }
 }
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
index 310a723..9b76222 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
@@ -1,26 +1,16 @@
 package com.ruoyi.production.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.basic.dto.ProductModelDto;
-import com.ruoyi.basic.dto.ProductTreeDto;
-import com.ruoyi.basic.mapper.ProductMapper;
-import com.ruoyi.basic.mapper.ProductModelMapper;
-import com.ruoyi.basic.pojo.Product;
-import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.production.dto.ProductStructureDto;
-import com.ruoyi.production.mapper.ProductBomMapper;
 import com.ruoyi.production.mapper.ProductStructureMapper;
 import com.ruoyi.production.pojo.ProductStructure;
 import com.ruoyi.production.service.ProductStructureService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
 import java.util.List;
 
 @Service
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index c4d2ba5..0738d94 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -2,16 +2,15 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+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.mapper.ProductMapper;
 import com.ruoyi.basic.mapper.ProductModelMapper;
 import com.ruoyi.basic.pojo.Product;
 import com.ruoyi.basic.pojo.ProductModel;
-import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
@@ -23,29 +22,27 @@
 import com.ruoyi.production.pojo.*;
 import com.ruoyi.production.service.ProductionProductMainService;
 import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.quality.mapper.QualityInspectMapper;
 import com.ruoyi.quality.mapper.QualityInspectParamMapper;
 import com.ruoyi.quality.mapper.QualityTestStandardMapper;
 import com.ruoyi.quality.pojo.QualityInspect;
 import com.ruoyi.quality.pojo.QualityInspectParam;
 import com.ruoyi.quality.pojo.QualityTestStandard;
-import io.swagger.models.auth.In;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import com.ruoyi.production.mapper.ProductionProductMainMapper;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 @Service
 @AllArgsConstructor
+@Transactional(rollbackFor = Exception.class)
 public class ProductionProductMainServiceImpl extends ServiceImpl<ProductionProductMainMapper, ProductionProductMain> implements ProductionProductMainService {
 
     private final ProcurementRecordOutMapper procurementRecordOutMapper;
@@ -56,6 +53,7 @@
     private ProductWorkOrderMapper productWorkOrderMapper;
 
     private ProductProcessRouteItemMapper productProcessRouteItemMapper;
+    private SysUserMapper userMapper;
 
     private ProductionProductOutputMapper productionProductOutputMapper;
 
@@ -66,8 +64,10 @@
     private QualityInspectMapper qualityInspectMapper;
 
     private ProductProcessMapper productProcessMapper;
+    private ProductProcessRouteMapper productProcessRouteMapper;
 
     private ProductMapper productMapper;
+
 
     private QualityTestStandardMapper qualityTestStandardMapper;
 
@@ -90,40 +90,35 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public Boolean addProductMain(ProductionProductMainDto dto) {
-        if (dto == null) {
-            throw new RuntimeException("鍙傛暟涓嶈兘涓虹┖");
-        }
-
-        SysUser user = SecurityUtils.getLoginUser().getUser();
-
-
-        // 鏂板閫昏緫
+        SysUser user = userMapper.selectUserById(dto.getUserId());
         ProductionProductMain productionProductMain = new ProductionProductMain();
+        //褰撳墠宸ヨ壓璺嚎瀵瑰簲鐨勫伐搴忚鎯�
         ProductProcessRouteItem productProcessRouteItem = productProcessRouteItemMapper.selectById(dto.getProductProcessRouteItemId());
         if (productProcessRouteItem == null) {
             throw new RuntimeException("宸ヨ壓璺嚎椤逛笉瀛樺湪");
         }
-
-        String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
-
+        //褰撳墠鍏蜂綋宸ュ簭
+        ProductProcess productProcess = productProcessMapper.selectById(productProcessRouteItem.getProcessId());
+        //宸ヨ壓璺嚎涓綋鍓嶅伐搴忓搴旂殑浜у嚭瑙勬牸鍨嬪彿
+        ProductModel productModel = productModelMapper.selectById(productProcessRouteItem.getProductModelId());
+        //鏌ヨ璇ョ敓浜ц鍗曞搴旂殑bom
+        ProductProcessRoute productProcessRoute = productProcessRouteMapper.selectById(productProcessRouteItem.getProductRouteId());
+        /*鏂板鎶ュ伐涓昏〃*/
+        //鏌ヨ鏈�澶ф姤宸ョ紪鍙�
+        String datePrefix = "BG" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"));
         QueryWrapper<ProductionProductMain> queryWrapper = new QueryWrapper<>();
         queryWrapper.select("MAX(product_no) as maxNo")
                 .likeRight("product_no", datePrefix);
-
         List<Map<String, Object>> resultList = productionProductMainMapper.selectMaps(queryWrapper);
-
         int sequenceNumber = 1;
         if (resultList != null && !resultList.isEmpty()) {
             Map<String, Object> result = resultList.get(0);
-
             if (result != null) {
                 Object maxNoObj = result.get("maxNo");
                 if (maxNoObj != null) {
                     String lastNo = maxNoObj.toString();
                     System.out.println("lastNo: " + lastNo);
-
                     if (lastNo.startsWith(datePrefix)) {
                         try {
                             String seqStr = lastNo.substring(datePrefix.length());
@@ -135,117 +130,114 @@
                 }
             }
         }
-
         String productNo = String.format("%s%03d", datePrefix, sequenceNumber);
         productionProductMain.setProductNo(productNo);
-        productionProductMain.setUserId(user.getUserId());
+        productionProductMain.setUserId(dto.getUserId());
+        productionProductMain.setUserName(dto.getUserName());
         productionProductMain.setProductProcessRouteItemId(dto.getProductProcessRouteItemId());
         productionProductMain.setWorkOrderId(dto.getWorkOrderId());
         productionProductMain.setStatus(0);
-        // 娣诲姞鎶ュ伐涓昏〃
-        int insert = productionProductMainMapper.insert(productionProductMain);
-
-        //鏇存柊宸ュ崟
-        if (insert > 0) {
-            Map<String, Object> params = new HashMap<>();
-            params.put("workOrderId", dto.getWorkOrderId());
-            params.put("deductQuantity", dto.getQuantity());
-
-            productWorkOrderMapper.updatePlanQuantity(params);
+        productionProductMainMapper.insert(productionProductMain);
+        /*鏂板鎶ュ伐鎶曞叆琛�*/
+        List<ProductStructureDto> productStructureDtos = productStructureMapper.listBybomAndProcess(productProcessRoute.getBomId(), productProcess.getId());
+        if (productStructureDtos.size() == 0) {
+            //濡傛灉璇ュ伐搴忔病鏈変骇鍝佺粨鏋勭殑鎶曞叆鍝�,閭h繖涓姇鍏ュ搧鍜屼骇鍑哄搧鏄悓涓�涓�
+            ProductStructureDto productStructureDto = new ProductStructureDto();
+            productStructureDto.setProductModelId(productProcessRouteItem.getProductModelId());
+            productStructureDto.setUnitQuantity(BigDecimal.ONE);
+            productStructureDtos.add(productStructureDto);
         }
-        ProductProcess productProcess = productProcessMapper.selectById(productProcessRouteItem.getProcessId());
-        ProductModel productModel = productProcessRouteItem.getProductModelId() != null ?
-                productModelMapper.selectById(productProcessRouteItem.getProductModelId()) : null;
-
-        if (productModel != null) {
-            Product product = productMapper.selectById(productModel.getProductId());
-            int inspectType = "缁勮".equals(productProcess.getName()) ? 2 : 1;
-
-            QualityInspect qualityInspect = new QualityInspect();
-            qualityInspect.setProductId(product.getId());
-            qualityInspect.setProductName(product.getProductName());
-            qualityInspect.setModel(productModel.getModel());
-            qualityInspect.setUnit(productModel.getUnit());
-            qualityInspect.setQuantity(dto.getQuantity());
-            qualityInspect.setProcess(productProcess.getName());
-            qualityInspect.setInspectState(0);
-            qualityInspect.setInspectType(inspectType);
-            qualityInspect.setProductMainId(productionProductMain.getId());
-            qualityInspect.setProductModelId(productModel.getId());
-            qualityInspectMapper.insert(qualityInspect);
-
-            qualityTestStandardMapper.selectList(
-                    new LambdaQueryWrapper<QualityTestStandard>()
-                            .eq(QualityTestStandard::getProductId, product.getId())
-            ).forEach(standard -> {
-                QualityInspectParam param = new QualityInspectParam();
-                BeanUtils.copyProperties(standard, param);
-                param.setId(null);
-                param.setInspectId(qualityInspect.getId());
-                qualityInspectParamMapper.insert(param);
-            });
-        }
-        // 娣诲姞鎶曞叆
-        if (productModel != null) {
-            List<ProductStructureDto> productStructureDtos = productStructureMapper.listByproductModelId(productModel.getId());
-            for (ProductStructureDto productStructureDto : productStructureDtos) {
-                ProductModel productModel1 = productModelMapper.selectById(productStructureDto.getProductModelId());
-                Product product = productMapper.selectById(productModel1.getProductId());
-                BigDecimal stockQuantity = stockUtils.getStockQuantity(productModel1.getId()).get("stockQuantity");
-                if (!(stockQuantity.compareTo(BigDecimal.ZERO) > 0)) {
-                    throw new RuntimeException(product.getProductName() + "搴撳瓨涓�0");
-                }
-                if (stockQuantity.compareTo(productStructureDto.getUnitQuantity().multiply(dto.getQuantity())) < 0) {
-                    throw new RuntimeException(product.getProductName() + "搴撳瓨涓嶈冻");
-                }
-                ProductionProductInput productionProductInput = new ProductionProductInput();
-                productionProductInput.setProductModelId(productStructureDto.getProductModelId());
-                productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity()));
-                productionProductInput.setProductMainId(productionProductMain.getId());
-                productionProductInputMapper.insert(productionProductInput);
-
-
-                DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyyMMdd");
-                LocalDate now = LocalDate.now();
-                ProcurementRecordOut procurementRecordOut1 = procurementRecordOutMapper.selectCode(dateFormat.format(now));
-                Long aLong = procurementRecordOut1 == null ? 1L : Long.valueOf(procurementRecordOut1.getCode().split("LS"+dateFormat.format(now))[1]);
-                //娣诲姞鍑哄簱澶勭悊
-                ProcurementRecordOut.ProcurementRecordOutBuilder procurementRecordOut = ProcurementRecordOut.builder()
-                        .procurementRecordStorageId(0)
-                        .code("LS" + dateFormat.format(now) + String.format("%03d", aLong + 1))
-                        .salesLedgerProductId(0)
-                        .inboundBatches(aLong.equals(0L) ? "绗�1鎵规" : "绗�"+ (aLong + 1) + "鎵规")
-                        .inboundNum(productionProductInput.getQuantity())
-                        .type(4)
-                        .createTime(LocalDateTime.now())
-                        .createUser(user.getUserId())
-                        .createBy(user.getNickName())
-                        .updateUser(user.getUserId())
-                        .updateTime(LocalDateTime.now())
-                        .productModelId(productModel1.getId());
-                procurementRecordOutMapper.insert(procurementRecordOut.build());
+        for (ProductStructureDto productStructureDto : productStructureDtos) {
+            ProductModel productModel1 = productModelMapper.selectById(productStructureDto.getProductModelId());
+            Product product = productMapper.selectById(productModel1.getProductId());
+            BigDecimal stockQuantity = stockUtils.getStockQuantity(productModel1.getId()).get("stockQuantity");
+            if (!(stockQuantity.compareTo(BigDecimal.ZERO) > 0)) {
+                throw new RuntimeException(product.getProductName()+"浜у搧鐨�"+productModel1.getModel() + "鐨勮鏍煎簱瀛樹负0");
             }
+            if (stockQuantity.compareTo(productStructureDto.getUnitQuantity().multiply(dto.getQuantity())) < 0) {
+                throw new RuntimeException(product.getProductName()+"浜у搧鐨�"+productModel1.getModel() + "鐨勮鏍煎簱瀛樹笉瓒�");
+            }
+            ProductionProductInput productionProductInput = new ProductionProductInput();
+            productionProductInput.setProductModelId(productStructureDto.getProductModelId());
+            productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity()));
+            productionProductInput.setProductMainId(productionProductMain.getId());
+            productionProductInputMapper.insert(productionProductInput);
+            //瀵瑰簲鐨勫簱瀛樺嚭搴�
+            DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyyMMdd");
+            LocalDate now = LocalDate.now();
+            ProcurementRecordOut procurementRecordOut1 = procurementRecordOutMapper.selectCode(dateFormat.format(now));
+            Long aLong = procurementRecordOut1 == null ? 1L : Long.valueOf(procurementRecordOut1.getCode().split("LS" + dateFormat.format(now))[1]);
+            ProcurementRecordOut.ProcurementRecordOutBuilder procurementRecordOut = ProcurementRecordOut.builder()
+                    .procurementRecordStorageId(0)
+                    .code("LS" + dateFormat.format(now) + String.format("%03d", aLong + 1))
+                    .salesLedgerProductId(productionProductMain.getId())//鍏宠仈鎶ュ伐浜у嚭
+                    .inboundBatches(aLong.equals(0L) ? "绗�1鎵规" : "绗�" + (aLong + 1) + "鎵规")
+                    .inboundNum(productionProductInput.getQuantity())
+                    .type(4)
+                    .createBy(user.getNickName())
+                    .productModelId(productModel1.getId());
+            procurementRecordOutMapper.insert(procurementRecordOut.build());
         }
-
-        // 娣诲姞浜у嚭
+        /*鏂板鎶ュ伐浜у嚭琛�*/
         ProductionProductOutput productionProductOutput = new ProductionProductOutput();
         productionProductOutput.setProductMainId(productionProductMain.getId());
         productionProductOutput.setProductModelId(productProcessRouteItem.getProductModelId());
         productionProductOutput.setQuantity(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO);
         productionProductOutputMapper.insert(productionProductOutput);
-
-        // 鑾峰彇鐢熶骇璁㈠崟
+        //瀵瑰簲鐨勮繃绋嬫鎴栬�呭嚭鍘傛
+        List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
+        int inspectType = 1;
+        if (productProcessRouteItem.getDragSort()==productProcessRouteItems.size()){
+            //鏈�鍚庝竴閬撳伐搴忕敓鎴愬嚭鍘傛
+            inspectType = 2;
+        }
+        Product product = productMapper.selectById(productModel.getProductId());
+        QualityInspect qualityInspect = new QualityInspect();
+        qualityInspect.setProductId(product.getId());
+        qualityInspect.setProductName(product.getProductName());
+        qualityInspect.setModel(productModel.getModel());
+        qualityInspect.setUnit(productModel.getUnit());
+        qualityInspect.setQuantity(dto.getQuantity());
+        qualityInspect.setProcess(productProcess.getName());
+        qualityInspect.setInspectState(0);
+        qualityInspect.setInspectType(inspectType);
+        qualityInspect.setProductMainId(productionProductMain.getId());
+        qualityInspect.setProductModelId(productModel.getId());
+        qualityInspectMapper.insert(qualityInspect);
+        qualityTestStandardMapper.selectList(
+                new LambdaQueryWrapper<QualityTestStandard>()
+                        .eq(QualityTestStandard::getProductId, product.getId())
+        ).forEach(standard -> {
+            QualityInspectParam param = new QualityInspectParam();
+            BeanUtils.copyProperties(standard, param);
+            param.setId(null);
+            param.setInspectId(qualityInspect.getId());
+            qualityInspectParamMapper.insert(param);
+        });
+        /*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
         ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId());
-        List<ProductionProductMain> productionProductMains = productionProductMainMapper.selectList(new QueryWrapper<ProductionProductMain>().lambda().eq(ProductionProductMain::getWorkOrderId, dto.getWorkOrderId()));
-
-        if (productionProductMains.isEmpty()) {
-            productWorkOrder.setActualStartTime(LocalDate.now());
+        productWorkOrder.setCompleteQuantity(productWorkOrder.getCompleteQuantity().add(dto.getQuantity()));
+        if (ObjectUtils.isNull(productWorkOrder.getActualStartTime())){
+            productWorkOrder.setActualStartTime(LocalDate.now());//瀹為檯寮�濮嬫椂闂�
         }
+        if (productWorkOrder.getCompleteQuantity().compareTo(productWorkOrder.getPlanQuantity()) == 0){
+            productWorkOrder.setActualEndTime(LocalDate.now());//瀹為檯缁撴潫鏃堕棿
+        }
+        productWorkOrderMapper.updateById(productWorkOrder);
+        //鐢熶骇璁㈠崟
         ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
-        if (productOrder == null) {
-            throw new RuntimeException("鐢熶骇璁㈠崟涓嶅瓨鍦�");
+        if (ObjectUtils.isNull(productOrder.getStartTime())){
+            productOrder.setStartTime(LocalDateTime.now());//寮�濮嬫椂闂�
         }
-        // 娣诲姞鐢熶骇鏍哥畻
+        if (productProcessRouteItem.getDragSort()==productProcessRouteItems.size()){
+            //濡傛灉鏄渶鍚庝竴閬撳伐搴忔姤宸ヤ箣鍚庣敓浜ц鍗曞畬鎴愭暟閲�+
+            productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().add(dto.getQuantity()));
+            if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) == 0){
+                productOrder.setEndTime(LocalDateTime.now());//缁撴潫鏃堕棿
+            }
+        }
+        productOrderMapper.updateById(productOrder);
+        /*娣诲姞鐢熶骇鏍哥畻*/
         SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder()
                 .salesLedgerWorkId(productionProductMain.getId())
                 .salesLedgerSchedulingId(0L)
@@ -260,40 +252,54 @@
                 .tenantId(dto.getTenantId())
                 .build();
         salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting);
-
         return true;
     }
 
     @Override
-    @Transactional
     public Boolean removeProductMain(ProductionProductMainDto dto) {
-        Long id = dto.getId();
-
-        // 鏇存柊宸ュ崟
-        productWorkOrderMapper.rollbackPlanQuantity(id);
-        // 鍒犻櫎璐ㄦ鍙傛暟鍜岃川妫�璁板綍
+        ProductionProductMain productionProductMain = productionProductMainMapper.selectById(dto.getId());
+        //璇ユ姤宸ュ搴旂殑宸ヨ壓璺嚎璇︽儏
+        ProductProcessRouteItem productProcessRouteItem = productProcessRouteItemMapper.selectById(productionProductMain.getProductProcessRouteItemId());
+        ProductionProductOutput productionProductOutput = productionProductOutputMapper.selectList(Wrappers.<ProductionProductOutput>lambdaQuery().eq(ProductionProductOutput::getProductMainId, productionProductMain.getId())).get(0);
+        /*鍒犻櫎鏍哥畻*/
+        salesLedgerProductionAccountingMapper.delete(
+                new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
+                        .eq(SalesLedgerProductionAccounting::getSalesLedgerWorkId, productionProductMain.getId())
+        );
+        /*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
+        ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
+        productWorkOrder.setCompleteQuantity(productWorkOrder.getCompleteQuantity().subtract(productionProductOutput.getQuantity()));
+        productWorkOrder.setActualEndTime(null);
+        productWorkOrderMapper.updateById(productWorkOrder);
+        //鍒ゆ柇鏄惁鏄渶鍚庝竴閬撳伐搴�
+        List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
+        if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()){
+            ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
+            productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().subtract(productionProductOutput.getQuantity()));
+            productOrder.setEndTime(null);
+            productOrderMapper.updateById(productOrder);
+        }
+        /*鍒犻櫎浜у嚭*/
+        //鍒犻櫎璐ㄦ
         qualityInspectMapper.selectList(
                 new LambdaQueryWrapper<QualityInspect>()
-                        .eq(QualityInspect::getProductMainId, id)
+                        .eq(QualityInspect::getProductMainId, productionProductMain.getId())
         ).forEach(q -> {
             qualityInspectParamMapper.delete(
                     new LambdaQueryWrapper<QualityInspectParam>()
                             .eq(QualityInspectParam::getInspectId, q.getId()));
             qualityInspectMapper.deleteById(q.getId());
         });
-
         // 鍒犻櫎浜у嚭璁板綍
         productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>()
-                .eq(ProductionProductOutput::getProductMainId, id)
-        );
-
-        // 鍒犻櫎鍏宠仈鐨勬牳绠楁暟鎹�
-        salesLedgerProductionAccountingMapper.delete(
-                new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
-                        .eq(SalesLedgerProductionAccounting::getSalesLedgerWorkId, id)
-        );
-
+                .eq(ProductionProductOutput::getProductMainId, productionProductMain.getId()));
+        /*鍒犻櫎鎶曞叆*/
+        procurementRecordOutMapper.delete(new LambdaQueryWrapper<ProcurementRecordOut>()
+                .eq(ProcurementRecordOut::getSalesLedgerProductId, productionProductMain.getId()));
+        productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>()
+                .eq(ProductionProductInput::getProductMainId, productionProductMain.getId()));
         // 鍒犻櫎涓昏〃
-        return productionProductMainMapper.deleteById(id) > 0;
+        productionProductMainMapper.deleteById(productionProductMain.getId());
+        return true;
     }
 }
diff --git a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java
index c6224cd..43f32aa 100644
--- a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java
@@ -1,26 +1,19 @@
 package com.ruoyi.production.service.impl;
 
-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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.production.dto.SalesLedgerProductionAccountingDto;
-import com.ruoyi.production.dto.SalesLedgerSchedulingDto;
 import com.ruoyi.production.mapper.SalesLedgerProductionAccountingMapper;
 import com.ruoyi.production.pojo.SalesLedgerProductionAccounting;
-import com.ruoyi.production.pojo.SalesLedgerWork;
 import com.ruoyi.production.service.SalesLedgerProductionAccountingService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
 
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
 
 import java.math.BigDecimal;
 
@@ -61,11 +54,11 @@
         return true;
     }
 
-    @Override
-    public void export(HttpServletResponse response) {
-        Page page =  new Page(-1,-1);
-        IPage<SalesLedgerProductionAccountingDto> salesLedgerProductionAccountingDtoIPage = listPage(page, new SalesLedgerProductionAccountingDto());
-        ExcelUtil<SalesLedgerProductionAccountingDto> util = new ExcelUtil<>(SalesLedgerProductionAccountingDto.class);
-        util.exportExcel(response, salesLedgerProductionAccountingDtoIPage.getRecords(), "鐢熶骇璁㈠崟");
-    }
+//    @Override
+//    public void export(HttpServletResponse response) {
+//        Page page =  new Page(-1,-1);
+//        IPage<SalesLedgerProductionAccountingDto> salesLedgerProductionAccountingDtoIPage = listPage(page, new SalesLedgerProductionAccountingDto());
+//        ExcelUtil<SalesLedgerProductionAccountingDto> util = new ExcelUtil<>(SalesLedgerProductionAccountingDto.class);
+//        util.exportExcel(response, salesLedgerProductionAccountingDtoIPage.getRecords(), "鐢熶骇璁㈠崟");
+//    }
 }
diff --git a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java
index 2ebc028..81fd76f 100644
--- a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java
@@ -84,9 +84,9 @@
             }
 
             // 鐘舵�� = 鏁伴噺鍜屽畬宸ユ暟閲忔瘮杈�
-            if(i.getSuccessNum().compareTo(new BigDecimal(0)) == 0){
+            if(i.getSchedulingNum().compareTo(new BigDecimal(0)) == 0){
                 i.setStatus("鏈紑濮�");
-            } else if(i.getQuantity().compareTo(i.getSuccessNum()) <= 0){
+            } else if(i.getQuantity().compareTo(i.getSchedulingNum()) <= 0){
                 i.setStatus("宸插畬鎴�");
             }else{
                 i.setStatus("鐢熶骇涓�");
@@ -129,13 +129,6 @@
                     .filter(j -> j.getSalesLedgerProductId().equals(i.getSalesLedgerProductId()))
                     .map(SalesLedgerWork::getFinishedNum)
                     .reduce(BigDecimal.ZERO, BigDecimal::add));
-            if(i.getSuccessNum().compareTo(new BigDecimal(0)) == 0){
-                i.setStatus("鏈紑濮�");
-            } else if(i.getQuantity().compareTo(i.getSuccessNum()) <= 0){
-                i.setStatus("宸插畬鎴�");
-            }else{
-                i.setStatus("鐢熶骇涓�");
-            }
         });
         ExcelUtil<SalesLedgerSchedulingDto> util = new ExcelUtil<>(SalesLedgerSchedulingDto.class);
         util.exportExcel(response, list, "鐢熶骇璁㈠崟");
diff --git a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java
index 2135a8b..90d8a90 100644
--- a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java
@@ -18,7 +18,6 @@
 import com.ruoyi.production.mapper.SalesLedgerWorkMapper;
 import com.ruoyi.production.pojo.SalesLedgerProductionAccounting;
 import com.ruoyi.production.pojo.SalesLedgerWork;
-import com.ruoyi.production.service.SalesLedgerProductionAccountingService;
 import com.ruoyi.production.service.SalesLedgerWorkService;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysUserMapper;
diff --git a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
index 6411be5..4fcbe99 100644
--- a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
@@ -24,6 +24,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
@@ -181,7 +182,7 @@
         salesLedgerIPage.getRecords().forEach(receiptPaymentRecordDto -> {
             ReceiptPaymentRecordDto receiptPaymentRecordDto1 = new ReceiptPaymentRecordDto();
             BeanUtils.copyProperties(receiptPaymentRecordDto, receiptPaymentRecordDto1);
-            receiptPaymentRecordDto1.setInvoiceDate(Date.from(receiptPaymentRecordDto.getCreateTime().atZone(DEFAULT_ZONE_ID).toInstant()));
+            receiptPaymentRecordDto1.setInvoiceDate(LocalDateTime.from(receiptPaymentRecordDto.getCreateTime().atZone(DEFAULT_ZONE_ID).toInstant()));
             receiptPaymentRecordDto1.setReceiptPaymentAmountTotal(receiptPaymentRecordDto.getReceiptPaymentAmount());
             BeanUtils.copyProperties(receiptPaymentRecordDto, receiptPaymentRecordDto1);
             receiptPaymentRecordDtos.add(receiptPaymentRecordDto1);
diff --git a/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
index a34f809..946cd75 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
@@ -101,7 +101,7 @@
             //  鐢熸垚鍑哄簱璁板綍
             ProcurementRecordOutAdd procurementRecordOutAdd = new ProcurementRecordOutAdd();
             procurementRecordOutAdd.setId(procurementRecordStorage.getId());
-            procurementRecordOutAdd.setSalesLedgerProductId(Math.toIntExact(salesLedgerProduct.getId()));
+            procurementRecordOutAdd.setSalesLedgerProductId(salesLedgerProduct.getId());
             procurementRecordOutAdd.setType(2);
             procurementRecordOutAdd.setUserId(Math.toIntExact(getUserId()));
             procurementRecordOutAdd.setQuantity(salesLedgerProduct.getQuantity().toPlainString());
diff --git a/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentRecordDto.java b/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentRecordDto.java
index bf90b88..b2bf08c 100644
--- a/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentRecordDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentRecordDto.java
@@ -1,6 +1,5 @@
 package com.ruoyi.sales.dto;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
@@ -10,7 +9,6 @@
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.Date;
 
 /**
  * @author :yys
@@ -31,7 +29,7 @@
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "鐧昏鏃ユ湡",width = 30,dateFormat = "yyyy-MM-dd")
     @ApiModelProperty(value = "鐧昏鏃ユ湡")
-    private LocalDateTime createTime;
+    private LocalDateTime invoiceDate;
 
     @ApiModelProperty(value = "閿�鍞悎鍚屽彿")
     @Excel(name = "閿�鍞悎鍚屽彿")
@@ -39,7 +37,7 @@
 
     @ApiModelProperty(value = "鍥炴閲戦")
     @Excel(name = "鍥炴閲戦")
-    private BigDecimal receiptPaymentAmount;
+    private BigDecimal receiptPaymentAmountTotal;
 
     @ApiModelProperty(value = "椤圭洰鍚嶇О")
     @Excel(name = "椤圭洰鍚嶇О")
diff --git a/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductMapper.java b/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductMapper.java
index 1c1ae7a..bc4b193 100644
--- a/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductMapper.java
@@ -5,10 +5,12 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
 import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
+@Mapper
 public interface InvoiceRegistrationProductMapper extends BaseMapper<InvoiceRegistrationProduct> {
 
     /**
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 303335c..b72b74b 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -93,7 +93,6 @@
 
     private final SalesLedgerProductionAccountingMapper  salesLedgerProductionAccountingMapper;
 
-    private final InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
 
     private final InvoiceRegistrationMapper invoiceRegistrationMapper;
 
@@ -704,7 +703,6 @@
                 productOrderMapper.insert(productOrder);
 
                 ProcessRoute processRoute = processRouteMapper.selectOne(new QueryWrapper<ProcessRoute>().lambda().eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId()));
-                List<ProductStructureDto> productStructureDtos = productStructureMapper.listByproductModelId(salesLedgerProduct.getProductModelId());
                 if (processRoute != null) {
                     //鏂板鐢熶骇璁㈠崟宸ヨ壓璺嚎涓昏〃
                     ProductProcessRoute productProcessRoute = new ProductProcessRoute();
@@ -749,11 +747,6 @@
                             // 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
                             String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber);
                             ProductWorkOrder productWorkOrder = new ProductWorkOrder();
-                            productStructureDtos.stream().forEach(productStructureDto -> {
-                                if (productStructureDto.getProductModelId().equals(productProcessRouteItem.getProductModelId())){
-                                    productWorkOrder.setPlanQuantity(productWorkOrder.getPlanQuantity());
-                                }
-                            });
                             if (Objects.equals(productProcessRouteItem.getProductModelId(), salesLedgerProduct.getProductModelId())) {
                                 productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity());
                             }
diff --git a/src/main/resources/mapper/basic/ProductModelMapper.xml b/src/main/resources/mapper/basic/ProductModelMapper.xml
index afdfc4a..07804bc 100644
--- a/src/main/resources/mapper/basic/ProductModelMapper.xml
+++ b/src/main/resources/mapper/basic/ProductModelMapper.xml
@@ -9,11 +9,9 @@
         <result column="product_id" property="productId" />
         <result column="model" property="model" />
         <result column="unit" property="unit" />
-        <result column="speculative_trading_name" property="speculativeTradingName" />
         <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
diff --git a/src/main/resources/mapper/production/ProductStructureMapper.xml b/src/main/resources/mapper/production/ProductStructureMapper.xml
index 1833487..3f04be2 100644
--- a/src/main/resources/mapper/production/ProductStructureMapper.xml
+++ b/src/main/resources/mapper/production/ProductStructureMapper.xml
@@ -40,4 +40,19 @@
         where pb.product_model_id = #{productModelId}
         order by ps.id
     </select>
+    <select id="listBybomAndProcess" resultType="com.ruoyi.production.dto.ProductStructureDto">
+        select ps.*,
+               p.product_name,
+               pp.name as  process_name,
+               pm.product_id,
+               pm.model
+        from
+            product_structure ps
+                left join product_model pm on ps.product_model_id = pm.id
+                left join product p on pm.product_id = p.id
+                left join product_process pp on ps.process_id = pp.id
+        where ps.bom_id = #{bomId}
+          and ps.process_id=#{processId}
+        order by ps.id
+    </select>
 </mapper>

--
Gitblit v1.9.3