From 64984c01892d6fe51d8ab550c6a28f2d0e81d6fe Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 15 一月 2026 17:55:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtwy' into jtwy

---
 src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java                 |    4 
 src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml                        |    4 
 src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java            |    4 
 src/main/resources/mapper/purchase/ProductRecordMapper.xml                                  |   13 +
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java                |    2 
 src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java                                  |    8 
 src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml                                 |    6 
 src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java                                  |   18 ++
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java               |    1 
 src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml                  |  166 ++++++++++++++---------
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java       |    8 +
 src/main/java/com/ruoyi/purchase/service/IProductRecordService.java                         |    2 
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java                      |   19 ++
 src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java          |    2 
 src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java                   |    6 
 src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java                  |    7 +
 src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java                 |   18 ++
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java    |    7 +
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java       |   41 +++++
 src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java                            |    4 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java    |    6 
 src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java               |    8 
 src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java             |    2 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java |    7 
 src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java               |    2 
 src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml                     |   23 +++
 26 files changed, 285 insertions(+), 103 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
index 4a15307..5234b3f 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -133,6 +133,14 @@
         return AjaxResult.success(result);
     }
 
+    @GetMapping("/listPageByProductProduction")
+    @Log(title = "鐢熶骇鍏ュ簱-鍏ュ簱绠$悊-鐢熶骇鍏ュ簱鏌ヨ", businessType = BusinessType.OTHER)
+    @ApiOperation(value = "鍏ュ簱鏌ヨ")
+    public AjaxResult listPageByProductProduction(Page page, ProcurementPageDto procurementDto) {
+        IPage<ProcurementPageDto> result = procurementRecordService.listPageByProductProduction(page, procurementDto);
+        return AjaxResult.success(result);
+    }
+
     @GetMapping("/listPageByCustom")
     @Log(title = "鑷畾涔夊叆搴�-鍏ュ簱绠$悊-鍏ュ簱鏌ヨ", businessType = BusinessType.OTHER)
     @ApiOperation(value = "鍏ュ簱鏌ヨ")
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
index 5245149..1fb594b 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
@@ -52,6 +52,13 @@
         return AjaxResult.success(result);
     }
 
+    @GetMapping("/listPageBySemiProduct")
+    @Log(title = "鐢熶骇鍑哄簱-鍑哄簱鍙拌处-鍑哄簱鏌ヨ", businessType = BusinessType.OTHER)
+    public AjaxResult listPageBySemiProduct(Page page, ProcurementRecordOutPageDto procurementDto) {
+        IPage<ProcurementRecordOutPageDto> result = procurementRecordOutService.listPageBySemiProduct(page, procurementDto);
+        return AjaxResult.success(result);
+    }
+
     @GetMapping("/listPageByCustom")
     @Log(title = "鑷畾涔夊嚭搴�-鍑哄簱鍙拌处-鍑哄簱鏌ヨ", businessType = BusinessType.OTHER)
     public AjaxResult listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto) {
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
index 19e76e6..b41cf62 100644
--- a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
@@ -44,4 +44,6 @@
     IPage<ProcurementPageDtoCopy> listPagePRS(Page page, @Param("req") ProcurementPageDto procurementDto);
 
     BigDecimal getSumQuantity(@Param("productModelId") Long productModelId);
+
+    IPage<ProcurementPageDto> listPageByProductProduction(Page page, @Param("req") ProcurementPageDto procurementDto);
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
index bb24eb5..eebd7cc 100644
--- a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
@@ -29,4 +29,8 @@
     IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto);
 
     BigDecimal getSumQuantity(@Param("productModelId") Long productModelId);
+
+    ProcurementRecordOut selectCode(@Param("format") String format);
+
+    IPage<ProcurementRecordOutPageDto> listPageBySemiProduct(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto);
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
index a8fb7eb..31fc05e 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
@@ -27,4 +27,6 @@
     IPage<ProcurementRecordOutPageDto> listPageByProduct(Page page, ProcurementRecordOutPageDto procurementDto);
 
     IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto);
+
+    IPage<ProcurementRecordOutPageDto> listPageBySemiProduct(Page page, ProcurementRecordOutPageDto procurementDto);
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
index 9813441..4c3ffee 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
@@ -61,4 +61,6 @@
     InventoryInformationDto getReportList();
 
     IPage<ProductModel> listPageProductionStock(Page page);
+
+    IPage<ProcurementPageDto> listPageByProductProduction(Page page, ProcurementPageDto procurementDto);
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
index b6e215c..1255afd 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
@@ -69,7 +69,7 @@
         Long aLong = procurementRecordOutMapper.selectCount(procurementRecordLambdaQueryWrapper);
         ProcurementRecordOut.ProcurementRecordOutBuilder procurementRecordOut = ProcurementRecordOut.builder()
                 .procurementRecordStorageId(procurementRecordOutAdd.getId())
-                .code("LS" + dateFormat.format(now) + String.format("%03d", aLong1 + 1))
+                .code("SC" + dateFormat.format(now) + String.format("%03d", aLong1 + 1))
                 .salesLedgerProductId(procurementRecordOutAdd.getSalesLedgerProductId())
                 .inboundBatches(aLong.equals(0L) ? "绗�1鎵规" : "绗�"+ (aLong + 1) + "鎵规")
                 .inboundNum(new BigDecimal(procurementRecordOutAdd.getQuantity()))
@@ -119,4 +119,9 @@
     public IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto) {
         return procurementRecordOutMapper.listPageByCustom(page, procurementDto);
     }
+
+    @Override
+    public IPage<ProcurementRecordOutPageDto> listPageBySemiProduct(Page page, ProcurementRecordOutPageDto procurementDto) {
+        return procurementRecordOutMapper.listPageBySemiProduct(page, procurementDto);
+    }
 }
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 a81c83e..4bfa4b8 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -889,4 +889,10 @@
         return iPage;
     }
 
+    @Override
+    public IPage<ProcurementPageDto> listPageByProductProduction(Page page, ProcurementPageDto procurementDto) {
+        IPage<ProcurementPageDto> procurementPageDtoIPage = procurementRecordMapper.listPageByProductProduction(page, procurementDto);
+        return procurementPageDtoIPage;
+    }
+
 }
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 482755b..9722fb3 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -13,6 +13,8 @@
 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;
 import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.production.controller.ProductWorkOrderController;
 import com.ruoyi.production.dto.ProductStructureDto;
@@ -27,6 +29,7 @@
 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;
@@ -34,6 +37,8 @@
 
 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;
@@ -43,6 +48,7 @@
 @AllArgsConstructor
 public class ProductionProductMainServiceImpl extends ServiceImpl<ProductionProductMainMapper, ProductionProductMain> implements ProductionProductMainService {
 
+    private final ProcurementRecordOutMapper procurementRecordOutMapper;
     private ProductionProductMainMapper productionProductMainMapper;
 
     private ProductWorkOrderController productWorkOrderController;
@@ -93,7 +99,6 @@
         SysUser user = SecurityUtils.getLoginUser().getUser();
 
 
-
         // 鏂板閫昏緫
         ProductionProductMain productionProductMain = new ProductionProductMain();
         ProductProcessRouteItem productProcessRouteItem = productProcessRouteItemMapper.selectById(dto.getProductProcessRouteItemId());
@@ -137,7 +142,6 @@
         productionProductMain.setProductProcessRouteItemId(dto.getProductProcessRouteItemId());
         productionProductMain.setWorkOrderId(dto.getWorkOrderId());
         productionProductMain.setStatus(0);
-
         // 娣诲姞鎶ュ伐涓昏〃
         int insert = productionProductMainMapper.insert(productionProductMain);
 
@@ -188,16 +192,40 @@
             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("搴撳瓨涓嶈冻");
+                    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());
             }
         }
 
@@ -210,6 +238,11 @@
 
         // 鑾峰彇鐢熶骇璁㈠崟
         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());
+        }
         ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
         if (productOrder == null) {
             throw new RuntimeException("鐢熶骇璁㈠崟涓嶅瓨鍦�");
diff --git a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
index cbb2e00..1d76fe2 100644
--- a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
@@ -22,6 +22,7 @@
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -194,6 +195,11 @@
         IPage<PurchaseLedgerDto> purchaseLedgerDtoIPage = purchaseLedgerService.selectPurchaseLedgerListPage(page ,purchaseLedger);
         //杩囨护鎺塧pprovalStatus=3鐨勮褰�
         purchaseLedgerDtoIPage.getRecords().removeIf(purchaseLedgerDto -> purchaseLedgerDto.getApprovalStatus() == 3);
+        purchaseLedgerDtoIPage.getRecords().forEach(purchaseLedgerDto -> {
+            if (purchaseLedgerDto.getUnReceiptPaymentAmount().compareTo(BigDecimal.ZERO) == 0) {
+                purchaseLedgerDto.setUnReceiptPaymentAmount(purchaseLedgerDto.getContractAmount());
+            }
+        });
          return AjaxResult.success(purchaseLedgerDtoIPage);
     }
 
diff --git a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
index d3a230f..ecd50bc 100644
--- a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
@@ -138,12 +138,12 @@
     }
 
 
-    @GetMapping("/getProductRecordById")
-    public AjaxResult getProductRecordById(Long id) {
-        if (id == null) {
+    @PostMapping("/getProductRecordById")
+    public AjaxResult getProductRecordById(@RequestBody ProductRecordDto productRecordDto) {
+        if (productRecordDto.getId() == null) {
             return AjaxResult.error("鍙傛暟閿欒");
         }
-        return AjaxResult.success(productRecordService.getProductRecordById(id));
+        return AjaxResult.success(productRecordService.getProductRecordById(productRecordDto));
     }
 
     @ApiModelProperty("淇敼鏉ョエ鐧昏")
diff --git a/src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java b/src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java
index b4edc0d..1b3c691 100644
--- a/src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java
@@ -5,6 +5,7 @@
 import com.ruoyi.sales.pojo.CommonFile;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Data
@@ -28,12 +29,21 @@
     private String projectName;
     private Long issUerId;
     private String issUer;
+    /**
+     * 鍚堝悓閲戦锛堜骇鍝佸惈绋庢�讳环锛�
+     */
+    private BigDecimal contractAmount = BigDecimal.ZERO;
     //澧炲�肩◣
-    private String invoiceAmount = "0";
-
+    /**
+     * 宸叉潵绁ㄩ噾棰濓紙鍙戠エ閲戦锛�
+     */
+    private BigDecimal invoiceTotal = BigDecimal.ZERO;
+    private BigDecimal invoiceAmount = BigDecimal.ZERO;
+    /**
+     * 鍙戠エ鍙�
+     */
     private String invoiceNumber;
-
-    private String unTicketsPrice = "0";
+    private BigDecimal unTicketsPrice = BigDecimal.ZERO;
 
     private List<CommonFile> commonFiles;
 
diff --git a/src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java b/src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java
index 9d003ba..b4bdea9 100644
--- a/src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java
+++ b/src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java
@@ -8,6 +8,8 @@
 import com.ruoyi.purchase.pojo.ProductRecord;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * 閲囪喘鍙拌处浜у搧寮�绁ㄨ褰昅apper鎺ュ彛
  *
@@ -18,5 +20,5 @@
 
     IPage<ProductRecordDto> productRecordPage(Page page, @Param("c") TicketRegistrationDto ticketRegistrationDto);
 
-    ProductRecordDto getProductRecordById(Long id);
+    List<ProductRecordDto> getProductRecordById(@Param("c") ProductRecordDto productRecordDto);
 }
diff --git a/src/main/java/com/ruoyi/purchase/service/IProductRecordService.java b/src/main/java/com/ruoyi/purchase/service/IProductRecordService.java
index 2fa21ca..3ab3d32 100644
--- a/src/main/java/com/ruoyi/purchase/service/IProductRecordService.java
+++ b/src/main/java/com/ruoyi/purchase/service/IProductRecordService.java
@@ -24,5 +24,5 @@
 
     AjaxResult updateRecord(ProductRecordDto productRecordDto);
 
-    ProductRecordDto getProductRecordById(Long id);
+    ProductRecordDto getProductRecordById(ProductRecordDto productRecordDto);
 }
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
index 7c1d837..d5c67b9 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
@@ -101,9 +101,19 @@
         return AjaxResult.success("淇敼鎴愬姛");
     }
 
-    @Override
-    public ProductRecordDto getProductRecordById(Long id) {
-        ProductRecordDto productRecordDto = productRecordMapper.getProductRecordById(id);
-        return productRecordDto;
+     @Override
+    public ProductRecordDto getProductRecordById(ProductRecordDto productRecordDto) {
+        List<ProductRecordDto> productRecordDtoList = productRecordMapper.getProductRecordById(productRecordDto);
+        if(productRecordDtoList != null && productRecordDtoList.size() > 0){
+            ProductRecordDto productRecordDto1 = productRecordDtoList.get(productRecordDtoList.size() - 1);
+            // 杩囨护鍑轰笌浼犲叆鐨� productRecordDto 涓婚敭鐩稿悓鐨勮褰�
+            ProductRecordDto productRecordDto2 = productRecordDtoList.stream().filter(item ->
+                            item.getId().equals(productRecordDto.getId()))
+                    .findFirst().orElse(null);
+            productRecordDto2.setFutureTickets(productRecordDto1.getFutureTickets());
+            productRecordDto2.setFutureTicketsAmount(productRecordDto1.getFutureTicketsAmount());
+            return productRecordDto2;
+        }
+        return null;
     }
 }
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index 12adbf0..0c02cf9 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -332,6 +332,8 @@
 
                 LocalDateTime localDateTime = entryDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
                 salesLedgerProduct.setRegisterDate(localDateTime);
+                salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity());
+                salesLedgerProduct.setFutureTicketsAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
                 salesLedgerProductMapper.insert(salesLedgerProduct);
             }
         }
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
index dec920d..f39a456 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -146,7 +146,7 @@
             procurementRecordOutAdd.setDetails(details);
 
             ProcurementRecordStorage.ProcurementRecordStorageBuilder procurementRecordBuilder = ProcurementRecordStorage.builder()
-                    .salesLedgerProductId(details1.getId())
+                    .salesLedgerProductId(0)
                     .inboundBatches( "鐢熶骇鍗婃垚鍝佸叆搴�")
                     .inboundNum(details1.getInboundQuantity())
                     .type(2)
@@ -173,7 +173,7 @@
             List<Details> details = new ArrayList<>();
             Details details1 = new Details();
             details1.setInboundQuantity(qualityInspect.getQuantity());
-            details1.setId(Math.toIntExact(salesLedgerProduct.getProductId()));
+            details1.setId(Math.toIntExact(salesLedgerProduct.getId()));
             details1.setUnitPrice(salesLedgerProduct.getTaxInclusiveUnitPrice());
             details1.setTotalPrice(salesLedgerProduct.getTaxInclusiveTotalPrice());
             details1.setProductModelId(salesLedgerProduct.getProductModelId());
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
index 78d78d8..d69d27a 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -24,6 +24,7 @@
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.framework.web.page.TableDataInfo;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -48,6 +49,12 @@
     {
         List<SalesLedgerProduct> list = salesLedgerProductService.selectSalesLedgerProductList(salesLedgerProduct);
         list.forEach(item -> {
+                if (item.getFutureTickets().compareTo(BigDecimal.ZERO) == 0) {
+                    item.setFutureTickets(item.getQuantity());
+                }
+            if (item.getFutureTicketsAmount().compareTo(BigDecimal.ZERO) == 0) {
+                item.setFutureTicketsAmount(item.getTaxInclusiveTotalPrice());
+            }
             ProcurementPageDto procurementDto = new ProcurementPageDto();
             procurementDto.setSalesLedgerProductId(item.getId());
             procurementDto.setProductCategory(item.getProductCategory());
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index c4e21b2..7af592b 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -111,22 +111,22 @@
     /**
      * 鏈鏉ョエ鏁�
      */
-    private BigDecimal ticketsNum;
+    private BigDecimal ticketsNum=BigDecimal.ZERO;
 
     /**
      * 鏈鏉ョエ閲戦(鍏�)
      */
-    private BigDecimal ticketsAmount;
+    private BigDecimal ticketsAmount=BigDecimal.ZERO;
 
     /**
      * 鏈潵绁ㄦ暟
      */
-    private BigDecimal futureTickets;
+    private BigDecimal futureTickets=BigDecimal.ZERO;
 
     /**
      * 鏈潵绁ㄩ噾棰�(鍏�)
      */
-    private BigDecimal futureTicketsAmount;
+    private BigDecimal futureTicketsAmount=BigDecimal.ZERO;
 
     @ApiModelProperty(value = "寮�绁ㄦ暟")
     private BigDecimal invoiceNum;
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index 88c25eb..fa9eb9a 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -245,6 +245,7 @@
                         ProductWorkOrder productWorkOrder = new ProductWorkOrder();
                         productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
                         productWorkOrder.setProductOrderId(productOrder.getId());
+                        productWorkOrder.setQuantity(salesLedgerProduct.getQuantity());
                         productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity());
                         productWorkOrder.setWorkOrderNo(workOrderNoStr);
                         productWorkOrder.setStatus(1);
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 135491b..90e4b07 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -12,13 +12,16 @@
 import com.ruoyi.account.pojo.AccountIncome;
 import com.ruoyi.account.service.AccountIncomeService;
 import com.ruoyi.basic.mapper.CustomerMapper;
+import com.ruoyi.basic.mapper.ProductModelMapper;
 import com.ruoyi.basic.pojo.Customer;
+import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.common.enums.FileNameType;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.other.mapper.TempFileMapper;
 import com.ruoyi.other.pojo.TempFile;
+import com.ruoyi.production.dto.ProductStructureDto;
 import com.ruoyi.production.mapper.*;
 import com.ruoyi.production.pojo.*;
 import com.ruoyi.project.system.domain.SysDept;
@@ -123,6 +126,10 @@
     private static final long LOCK_EXPIRE_TIME = 30;  // 閿佽嚜鍔ㄨ繃鏈熸椂闂达紙绉掞級
 
     private final RedisTemplate<String, String> redisTemplate;
+    @Autowired
+    private ProductModelMapper productModelMapper;
+    @Autowired
+    private ProductStructureMapper productStructureMapper;
 
     @Override
     public List<SalesLedger> selectSalesLedgerList(SalesLedgerDto salesLedgerDto) {
@@ -696,6 +703,7 @@
                 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();
@@ -740,9 +748,18 @@
                             // 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
                             String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber);
                             ProductWorkOrder productWorkOrder = new ProductWorkOrder();
+                            productStructureDtos.stream().forEach(productStructureDto -> {
+                                if (productStructureDto.getProductModelId().equals(productProcessRouteItem.getProductModelId())){
+                                    productWorkOrder.setQuantity(productStructureDto.getUnitQuantity().multiply(salesLedgerProduct.getQuantity()));
+                                    productWorkOrder.setPlanQuantity(productWorkOrder.getQuantity());
+                                }
+                            });
+                            if (Objects.equals(productProcessRouteItem.getProductModelId(), salesLedgerProduct.getProductModelId())) {
+                                productWorkOrder.setQuantity(salesLedgerProduct.getQuantity());
+                                productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity());
+                            }
                             productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
                             productWorkOrder.setProductOrderId(productOrder.getId());
-                            productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity());
                             productWorkOrder.setWorkOrderNo(workOrderNoStr);
                             productWorkOrder.setStatus(1);
                             productWorkOrderMapper.insert(productWorkOrder);
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
index 6384411..8861c9c 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -261,7 +261,7 @@
         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
         <where>
-            t1.type = 2
+            t1.type = 2 and t1.sales_ledger_product_id != 0
             <if test="req.customerName != null and req.customerName != ''">
                 and t3.customer_name like  concat('%',#{req.customerName},'%')
             </if>
@@ -358,4 +358,25 @@
         from procurement_record_storage
         where product_model_id = #{productModelId}
     </select>
+    <select id="listPageByProductProduction" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto">
+        select
+        t1.*,
+        t2.model as product_category ,
+        t2.unit,
+        t3.product_name
+        from  procurement_record_storage t1
+        left  join product_model t2 on t1.product_model_id = t2.id
+        left join product t3 on t2.product_id = t3.id
+        <where>
+            t1.type = 2 and t1.sales_ledger_product_id  = 0
+            <if test="req.productCategory != null and req.productCategory != ''">
+                and t3.product_name like  concat('%',#{req.productCategory},'%')
+            </if>
+
+            <if test="req.timeStr != null and req.timeStr != ''">
+                and t1.create_time like  concat('%',#{req.timeStr},'%')
+            </if>
+        </where>
+        order by t1.create_time desc
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
index 0fc12a9..adc64dd 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
@@ -19,85 +19,82 @@
         t1.create_by,
         t2.warn_num,
         t4.unit_price,
-        t4.unit_price *  t1.inbound_num as totalPrice
-        from  procurement_record_out t1
+        t4.unit_price * t1.inbound_num as totalPrice
+        from procurement_record_out t1
         left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 2
         left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
         left join procurement_record_storage t4 on t4.id = t1.procurement_record_storage_id
         <where>
             and t1.type = 1
             <if test="req.supplierName != null and req.supplierName != ''">
-                and t3.supplier_name like  concat('%',#{req.supplierName},'%')
+                and t3.supplier_name like concat('%',#{req.supplierName},'%')
             </if>
             <if test="req.productCategory != null and req.productCategory != ''">
-                and t2.product_category like  concat('%',#{req.productCategory},'%')
+                and t2.product_category like concat('%',#{req.productCategory},'%')
             </if>
             <if test="req.timeStr != null and req.timeStr != ''">
-                and t1.create_time like  concat('%',#{req.timeStr},'%')
+                and t1.create_time like concat('%',#{req.timeStr},'%')
             </if>
         </where>
         order by t1.create_time desc
     </select>
     <select id="list" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
-        select
-            t3.supplier_name,
-            t2.product_category,
-            t1.id,
-            t2.specification_model,
-            t2.unit,
-            t2.tax_rate,
-            t2.tax_inclusive_unit_price,
-            t2.tax_inclusive_total_price,
-            t2.tax_exclusive_total_price,
-            t1.inbound_num,
-            t1.create_time,
-            t1.create_time as time,
-            t1.create_by
-        from  procurement_record_out t1
-                  left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
-                  left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
-            where t1.type = 1
+        select t3.supplier_name,
+               t2.product_category,
+               t1.id,
+               t2.specification_model,
+               t2.unit,
+               t2.tax_rate,
+               t2.tax_inclusive_unit_price,
+               t2.tax_inclusive_total_price,
+               t2.tax_exclusive_total_price,
+               t1.inbound_num,
+               t1.create_time,
+               t1.create_time as time,
+               t1.create_by
+        from procurement_record_out t1
+                 left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
+                 left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
+        where t1.type = 1
     </select>
 
     <select id="listOne" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
-        select
-            t3.customer_contract_no,
-            t3.sales_contract_no,
-            t3.customer_name,
-            t2.product_category,
-            t1.id,
-            t2.specification_model,
-            t2.unit,
-            t2.tax_rate,
-            t2.tax_inclusive_unit_price,
-            t2.tax_inclusive_total_price,
-            t2.tax_exclusive_total_price,
-            t1.inbound_num,
-            t1.create_time,
-            t1.create_time as time,
-            t1.create_by
-        from  procurement_record_out t1
-            left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
-            left join sales_ledger t3 on t3.id = t2.sales_ledger_id
+        select t3.customer_contract_no,
+               t3.sales_contract_no,
+               t3.customer_name,
+               t2.product_category,
+               t1.id,
+               t2.specification_model,
+               t2.unit,
+               t2.tax_rate,
+               t2.tax_inclusive_unit_price,
+               t2.tax_inclusive_total_price,
+               t2.tax_exclusive_total_price,
+               t1.inbound_num,
+               t1.create_time,
+               t1.create_time as time,
+               t1.create_by
+        from procurement_record_out t1
+                 left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
+                 left join sales_ledger t3 on t3.id = t2.sales_ledger_id
         where t1.type = 2
     </select>
 
     <select id="listTwo" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
-        select
-            t1.supplier_name,
-            t1.product_category,
-            t1.id,
-            t1.specification_model,
-            t1.unit,
-            t1.tax_rate,
-            t1.tax_inclusive_unit_price,
-            t1.tax_inclusive_total_price,
-            t1.tax_exclusive_total_price,
-            t1.inbound_num,
-            t1.create_time,
-            t1.create_time as time,
-            t1.create_by
-        from  procurement_record_out t1
+        select t1.supplier_name,
+               t1.product_category,
+               t1.id,
+               t1.specification_model,
+               t1.unit,
+               t1.tax_rate,
+               t1.tax_inclusive_unit_price,
+               t1.tax_inclusive_total_price,
+               t1.tax_exclusive_total_price,
+               t1.inbound_num,
+               t1.create_time,
+               t1.create_time as time,
+               t1.create_by
+        from procurement_record_out t1
         where t1.type = 3
     </select>
     <select id="listPageByProduct" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
@@ -118,21 +115,21 @@
         t1.create_time,
         t1.create_by,
         t4.unit_price,
-        t4.unit_price *  t1.inbound_num as totalPrice
-        from  procurement_record_out t1
+        t4.unit_price * t1.inbound_num as totalPrice
+        from procurement_record_out 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
         left join procurement_record_storage t4 on t4.id = t1.procurement_record_storage_id
         <where>
             and t1.type = 2
             <if test="req.customerName != null and req.customerName != ''">
-                and t3.customer_name like  concat('%',#{req.customerName},'%')
+                and t3.customer_name like concat('%',#{req.customerName},'%')
             </if>
             <if test="req.productCategory != null and req.productCategory != ''">
-                and t2.product_category like  concat('%',#{req.productCategory},'%')
+                and t2.product_category like concat('%',#{req.productCategory},'%')
             </if>
             <if test="req.timeStr != null and req.timeStr != ''">
-                and t1.create_time like  concat('%',#{req.timeStr},'%')
+                and t1.create_time like concat('%',#{req.timeStr},'%')
             </if>
         </where>
         order by t1.create_time desc
@@ -153,18 +150,18 @@
         t1.create_by,
         t2.item_type,
         t2.code
-        from  procurement_record_out t1
+        from procurement_record_out t1
         left join custom_storage t2 on t2.id = t1.procurement_record_storage_id
         <where>
             t1.type = 3
             <if test="req.supplierName != null and req.supplierName != ''">
-                and t2.supplier_name like  concat('%',#{req.supplierName},'%')
+                and t2.supplier_name like concat('%',#{req.supplierName},'%')
             </if>
             <if test="req.productCategory != null and req.productCategory != ''">
-                and t2.product_category like  concat('%',#{req.productCategory},'%')
+                and t2.product_category like concat('%',#{req.productCategory},'%')
             </if>
             <if test="req.timeStr != null and req.timeStr != ''">
-                and t1.create_time like  concat('%',#{req.timeStr},'%')
+                and t1.create_time like concat('%',#{req.timeStr},'%')
             </if>
         </where>
         order by t1.create_time desc
@@ -173,7 +170,40 @@
     <select id="getSumQuantity" resultType="BigDecimal">
         select COALESCE(sum(inbound_num), 0)
         from procurement_record_out
-        where type = 1
-          and product_model_id = #{productModelId}
+        where
+           product_model_id = #{productModelId}
     </select>
+    <select id="selectCode" resultType="com.ruoyi.procurementrecord.pojo.ProcurementRecordOut">
+        select *
+        from procurement_record_out
+        where code like concat('%', #{format})
+        order by id desc
+        limit 1
+    </select>
+    <select id="listPageBySemiProduct" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
+        select
+        t1.id,
+        t1.code,
+        t2.unit,
+        t1.inbound_num,
+        t1.create_time,
+        t1.create_by,
+        t2.model as specification_model,
+        t2.product_code,
+        t3.product_name as product_category
+        from procurement_record_out t1
+        left join product_model t2 on t2.id = t1.product_model_id
+        left join product t3 on t3.id = t2.product_id
+        <where>
+            and t1.type = 4
+            <if test="req.productCategory !=null and req.productCategory !=''">
+                t3.product_name like concat('%',#{req.productCategory},'%')
+            </if>
+            <if test="req.timeStr != null and req.timeStr != ''">
+                and t1.create_time like concat('%',#{req.timeStr},'%')
+            </if>
+        </where>
+        order by t1.create_time desc
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/purchase/ProductRecordMapper.xml b/src/main/resources/mapper/purchase/ProductRecordMapper.xml
index 2c0cba4..aa850cb 100644
--- a/src/main/resources/mapper/purchase/ProductRecordMapper.xml
+++ b/src/main/resources/mapper/purchase/ProductRecordMapper.xml
@@ -34,10 +34,10 @@
             and pl.supplier_name like concat('%',#{c.supplierName},'%')
         </if>
         <if test="c.createdAtStart != null and c.createdAtStart != ''">
-            and pr.created_at &gt;= date_format(#{c.createdAtStart},'%Y-%m-%d hh:mm:ss')
+            and pr.created_at &gt;= str_to_date(#{c.createdAtStart}, '%Y-%m-%d')
         </if>
         <if test="c.createdAtEnd != null and c.createdAtEnd != ''">
-            and pr.created_at &lt;= date_format(#{c.createdAtEnd},'%Y-%m-%d hh:mm:ss')
+            and pr.created_at &lt; date_add(str_to_date(#{c.createdAtEnd}, '%Y-%m-%d'), interval 1 day)
         </if>
         <if test="c.purchaseContractNumber != null and c.purchaseContractNumber != ''">
             and tr.purchase_contract_number like concat('%',#{c.purchaseContractNumber},'%')
@@ -60,7 +60,12 @@
                  left join sales_ledger sl on sl.id = pl.sales_ledger_id
                  left join ticket_registration tr on tr.id = pr.ticket_registration_id
                  left join product_model pm on pm.id = pr.product_model_id
-
-        WHERE type = 2 and pr.id = #{id}
+        WHERE type = 2
+        <if test="c.purchaseLedgerId != null and c.purchaseLedgerId != ''">
+            and pr.purchase_ledger_id = #{c.purchaseLedgerId}
+        </if>
+        <if test="c.productModelId != null and c.productModelId != ''">
+            and pm.id = #{c.productModelId}
+        </if>
     </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
index b513ac1..9eaf966 100644
--- a/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
+++ b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
@@ -18,8 +18,8 @@
         pl.supplier_name,
         pl.project_name,
         pl.contract_amount,
-        sum(pr.tickets_amount)as receipt_payment_amount,
-        pl.contract_amount-sum(pr.tickets_amount) AS unReceipt_payment_amount,
+        sum(tr.invoice_amount)as receipt_payment_amount,
+        pl.contract_amount-sum(tr.invoice_amount) AS unReceipt_payment_amount,
         pl.entry_date,
         pl.recorder_id,
         pl.recorder_name,
@@ -29,7 +29,9 @@
         pl.approval_status,
         pl.payment_method
         from purchase_ledger pl
+        left join sales_ledger_product slp on slp.sales_ledger_id = pl.id and slp.type=2
         left join product_record pr on pl.id = pr.purchase_ledger_id
+        left join ticket_registration tr on tr.id = pr.ticket_registration_id
         left join supplier_manage sm on pl.supplier_id = sm.id
         <where>
             1 = 1
diff --git a/src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml b/src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml
index 3178871..cfd47e5 100644
--- a/src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml
+++ b/src/main/resources/mapper/sales/InvoiceRegistrationProductMapper.xml
@@ -110,10 +110,10 @@
                      )
             </if>
             <if test="invoiceRegistrationProductDto.invoiceDateStart != null and invoiceRegistrationProductDto.invoiceDateStart != ''">
-                AND T3.invoice_date &gt;= date_format(#{invoiceRegistrationProductDto.invoiceDateStart}, '%Y-%m-%d')
+                AND T3.invoice_date &gt;= str_to_date(#{invoiceRegistrationProductDto.invoiceDateStart}, '%Y-%m-%d')
             </if>
             <if test="invoiceRegistrationProductDto.invoiceDateEnd != null and invoiceRegistrationProductDto.invoiceDateEnd != ''">
-                AND T3.invoice_date &lt;= date_format(#{invoiceRegistrationProductDto.invoiceDateEnd}, '%Y-%m-%d')
+                AND T3.invoice_date &lt; date_add(str_to_date(#{invoiceRegistrationProductDto.invoiceDateEnd}, '%Y-%m-%d'), interval 1 day)
             </if>
             <if test="invoiceRegistrationProductDto.createTimeStart != null ">
                 AND T1.create_time &gt;= date_format(#{invoiceRegistrationProductDto.createTimeStart}, '%Y-%m-%d %H:%i:%s')

--
Gitblit v1.9.3