From 6416b165e4a3c8ecc2d547ceef0fb3962d3c7b56 Mon Sep 17 00:00:00 2001
From: yaowanxin <3588231647@qq.com>
Date: 星期一, 12 一月 2026 14:58:45 +0800
Subject: [PATCH] 1.查询产品信息列表接口,销售台账查询其产品的状态 2.增添不合格现象字段,取消生产状态字段 3.修改发货审批接口,发货审批通过,生产该订单出库记录 4.存在质检记录并已提交的销售台账删除时做出限制 5.生产报工投入,产出2:1调整

---
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java             |    5 ++
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |    2 
 src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java                            |    8 ++--
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java                |   11 +++++
 src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml               |    9 +++-
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java                 |    7 +++
 src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java            |   19 +++++++++
 src/main/java/com/ruoyi/quality/pojo/QualityInspect.java                              |    3 +
 src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java              |   20 ++++++++++
 9 files changed, 74 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
index 2ac434b..a23002a 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
@@ -54,7 +54,7 @@
     @Excel(name = "瀹㈡埛鍚嶇О")
     private String customerName;
 
-    private String salesLedgerProductId;
+    private Long salesLedgerProductId;
 
     /**
      * 鍑哄叆搴撴暟閲�
@@ -120,6 +120,11 @@
      */
     @Excel(name = "浜у搧澶х被")
     private String productCategory;
+     /**
+     * 浜у搧id
+     */
+    @Excel(name = "浜у搧id")
+    private Long productId;
 
     /**
      * 瑙勬牸鍨嬪彿
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
index b5dcb70..0bf8547 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
@@ -131,6 +131,11 @@
      */
     @Excel(name = "浜у搧澶х被")
     private String productCategory;
+     /**
+     * 浜у搧id
+     */
+    @Excel(name = "浜у搧id")
+    private Long productId;
 
     /**
      * 瑙勬牸鍨嬪彿
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 31a1e9c..c137411 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -185,7 +185,7 @@
             for (ProductStructureDto productStructureDto : productStructureDtos) {
                 ProductionProductInput productionProductInput = new ProductionProductInput();
                 productionProductInput.setProductModelId(productStructureDto.getProductModelId());
-                productionProductInput.setQuantity(productStructureDto.getUnitQuantity());
+                productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity()));
                 productionProductInput.setProductMainId(productionProductMain.getId());
                 productionProductInputMapper.insert(productionProductInput);
             }
diff --git a/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java b/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
index e03b74a..4207b8b 100644
--- a/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
+++ b/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
@@ -144,6 +144,7 @@
      * 鎶ュ伐id
      */
     private Long productMainId;
-
+    //涓嶅悎鏍肩幇璞�
+    private String defectivePhenomena;
 
 }
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
index 4c38a59..058360b 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -2,7 +2,12 @@
 
 import javax.servlet.http.HttpServletResponse;
 
+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.procurementrecord.dto.ProcurementPageDto;
+import com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy;
+import com.ruoyi.procurementrecord.service.ProcurementRecordService;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.sales.service.ISalesLedgerProductService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,7 +38,8 @@
 {
     @Autowired
     private ISalesLedgerProductService salesLedgerProductService;
-
+    @Autowired
+    private ProcurementRecordService procurementRecordService;
     /**
      * 鏌ヨ浜у搧淇℃伅鍒楄〃
      */
@@ -41,6 +47,17 @@
     public AjaxResult list(SalesLedgerProduct salesLedgerProduct)
     {
         List<SalesLedgerProduct> list = salesLedgerProductService.selectSalesLedgerProductList(salesLedgerProduct);
+        list.forEach(item -> {
+            ProcurementPageDto procurementDto = new ProcurementPageDto();
+            procurementDto.setSalesLedgerProductId(item.getId());
+            procurementDto.setProductCategory(item.getProductCategory());
+            IPage<ProcurementPageDtoCopy> result = procurementRecordService.listPageCopyByProduction(new Page<>(1,-1), procurementDto);
+            ProcurementPageDtoCopy procurementDtoCopy = result.getRecords().get(0);
+            if(item.getQuantity().compareTo(procurementDtoCopy.getInboundNum0())>=0){
+                item.setApproveStatus(1);
+                salesLedgerProductService.addOrUpdateSalesLedgerProduct(item);
+            }
+        });
         return AjaxResult.success(list);
     }
 
diff --git a/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
index 047cb37..c678c48 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
@@ -6,6 +6,10 @@
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.procurementrecord.dto.ProcurementAddDto;
+import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
+import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
+import com.ruoyi.procurementrecord.service.ProcurementRecordOutService;
 import com.ruoyi.sales.mapper.ShipmentApprovalMapper;
 import com.ruoyi.sales.mapper.ShippingInfoMapper;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
@@ -21,6 +25,8 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.List;
 
 @RestController
@@ -35,6 +41,8 @@
 
     @Autowired
     private ISalesLedgerProductService salesLedgerProductService;
+    @Autowired
+    private ProcurementRecordOutService procurementRecordOutService;
 
     @GetMapping("/listPage")
     @ApiOperation("鍙戣揣瀹℃壒鍒楄〃")
@@ -58,6 +66,18 @@
             SalesLedgerProduct salesLedgerProduct = salesLedgerProductService.getById(shipmentApproval.getSalesLedgerProductId());
             salesLedgerProduct.setApproveStatus(req.getApproveStatus());
             salesLedgerProductService.updateById(salesLedgerProduct);
+            if(req.getApproveStatus()==3){
+                //鍙戣揣瀹℃壒閫氳繃锛岀敓浜ц璁㈠崟鍑哄簱璁板綍
+                ProcurementRecordOutAdd procurementRecordOutAdd = new ProcurementRecordOutAdd();
+                procurementRecordOutAdd.setSalesLedgerProductId(Math.toIntExact(salesLedgerProduct.getId()));
+                procurementRecordOutAdd.setType(2);
+                procurementRecordOutAdd.setUserId(Math.toIntExact(getUserId()));
+                procurementRecordOutAdd.setQuantity(String.valueOf(salesLedgerProduct.getQuantity()));
+                //鑾峰彇褰撳墠鏃堕棿
+                LocalDateTime now = LocalDateTime.now();
+                procurementRecordOutAdd.setTime(now.toString());
+                procurementRecordOutService.stockout(procurementRecordOutAdd);
+            }
         }
         return update ? AjaxResult.success() : AjaxResult.error();
     }
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index f35b916..c4e21b2 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -200,13 +200,13 @@
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date shippingDate;
 
-    @TableField(exist = false)
-    @ApiModelProperty(value = "鐢熶骇鐘舵��")
-    private String productionStatus = "鏈紑濮�";
+//    @TableField(exist = false)
+//    @ApiModelProperty(value = "鐢熶骇鐘舵��")
+//    private String productionStatus = "鏈紑濮�";
     /**
      * 鍙戣揣瀹℃壒鐘舵��
      */
 //    @TableField(exist = false)
-    @ApiModelProperty(value = "瀹℃壒鐘舵��")
+    @ApiModelProperty(value = "瀹℃壒鐘舵�侊細0鏈敓浜�,1宸茬敓浜�,2寰呭鏍�(瀹℃牳涓�),3瀹℃牳瀹屾垚,4瀹℃牳澶辫触")
     private Integer approveStatus;
 }
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 2154217..66fabe0 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -24,6 +24,7 @@
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.mapper.SysDeptMapper;
 import com.ruoyi.quality.mapper.QualityInspectMapper;
+import com.ruoyi.quality.pojo.QualityInspect;
 import com.ruoyi.sales.dto.MonthlyAmountDto;
 import com.ruoyi.sales.dto.SalesLedgerDto;
 import com.ruoyi.sales.mapper.*;
@@ -431,6 +432,16 @@
                     if (!CollectionUtils.isEmpty(productMainIds)) {
                         productionProductOutputMapper.deleteByProductMainIds(productMainIds);
                         productionProductInputMapper.deleteByProductMainIds(productMainIds);
+                        List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(
+                                new LambdaQueryWrapper<QualityInspect>()
+                                        .in(QualityInspect::getProductMainId, productMainIds)
+                        );
+                        qualityInspects.forEach(qualityInspect -> {
+                            //inspectState=1 宸叉彁浜� 涓嶈兘鍒犻櫎
+                            if(qualityInspect.getInspectState() == 1){
+                                throw new RuntimeException("宸叉彁浜ょ殑妫�楠屽崟涓嶈兘鍒犻櫎");
+                            }
+                        });
                         qualityInspectMapper.deleteByProductMainIds(productMainIds);
                     }
 
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
index cffeca8..fe9b9f8 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -255,7 +255,8 @@
         t1.create_time,
         t1.update_time,
         t1.create_by,
-        t2.warn_num
+        t2.warn_num,
+        t2.product_id
         from  procurement_record_storage t1
         left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 1
         left join sales_ledger t3 on t3.id = t2.sales_ledger_id
@@ -297,7 +298,8 @@
         t1.create_time,
         t1.update_time,
         t1.create_by,
-        t2.warn_num
+        t2.warn_num,
+        t2.product_id
         from  procurement_record_storage t1
         left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 1
         left join sales_ledger t3 on t3.id = t2.sales_ledger_id
@@ -312,6 +314,9 @@
             <if test="req.timeStr != null and req.timeStr != ''">
                 and t1.create_time like  concat('%',#{req.timeStr},'%')
             </if>
+            <if test="req.salesLedgerProductId != null and req.salesLedgerProductId != ''">
+                and t1.sales_ledger_product_id = #{req.salesLedgerProductId}
+            </if>
             <if test="req.reportDate != null">
                 and t1.create_time >= #{req.reportDate} and t1.create_time &lt; DATE_ADD(#{req.reportDate}, INTERVAL 1 DAY)
             </if>

--
Gitblit v1.9.3