From cc0635fdc45d9b0e9396f76ed4074bdb1d81f9d3 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期二, 11 十一月 2025 11:07:19 +0800
Subject: [PATCH] yys  优化仓储物流模块

---
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java    |   50 +++++
 src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java            |    8 
 src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java                    |   11 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java    |  116 ++++++++++++
 src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml                  |  104 +++++++++++
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java       |   66 ++++++
 src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java                           |   29 +++
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java                  |    5 
 src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java             |   10 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java |   13 +
 src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java               |    4 
 src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java          |    4 
 src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml                     |   55 ++++++
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java                       |    1 
 src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java              |   18 ++
 15 files changed, 472 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
index 8ab1c1a..62fb1d2 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -2,15 +2,18 @@
 
 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.procurementrecord.dto.*;
+import com.ruoyi.procurementrecord.mapper.CustomStorageMapper;
 import com.ruoyi.procurementrecord.pojo.CustomStorage;
 import com.ruoyi.procurementrecord.service.ProcurementRecordService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.ibatis.annotations.Delete;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -52,6 +55,20 @@
     @Transactional
     public AjaxResult addCustom(@RequestBody List<CustomStorage> customStorage) {
         return procurementRecordService.addCustom(customStorage);
+    }
+
+    @PostMapping("/updateCustom")
+    @Log(title = "鑷畾涔夊叆搴�-鍏ュ簱绠$悊-淇敼鍏ュ簱", businessType = BusinessType.UPDATE)
+    @Transactional
+    public AjaxResult updateCustom(@RequestBody CustomStorage customStorage) {
+        return procurementRecordService.updateCustom(customStorage);
+    }
+
+    @Delete("/delteCustom")
+    @Log(title = "鑷畾涔夊叆搴�-鍏ュ簱绠$悊-鍒犻櫎鍏ュ簱", businessType = BusinessType.DELETE)
+    @Transactional
+    public AjaxResult deleteCustom(@RequestBody List<Long> ids) {
+        return procurementRecordService.deleteCustom(ids);
     }
 
     @PostMapping("/update")
@@ -127,21 +144,62 @@
     }
 
     /**
-     * 瀵煎嚭
+     * 搴撳瓨绠$悊閲囪喘瀵煎嚭
      * @param response
      */
     @PostMapping("/exportCopy")
     public void exportCopy(HttpServletResponse response) {
-        procurementRecordService.exportCopy(response);
+        procurementRecordService.exportCopy(response,1);
     }
 
     /**
-     * 瀵煎嚭
+     * 搴撳瓨绠$悊鐢熶骇瀵煎嚭
+     * @param response
+     */
+    @PostMapping("/exportCopyOne")
+    public void exportCopyOne(HttpServletResponse response) {
+        procurementRecordService.exportCopy(response,2);
+    }
+
+    /**
+     * 搴撳瓨绠$悊鑷畾涔夊鍑�
+     * @param response
+     */
+    @PostMapping("/exportCopyTwo")
+    public void exportCopyTwo(HttpServletResponse response) {
+        procurementRecordService.exportCopyTwo(response,3);
+    }
+
+    /**
+     * 鍏ュ簱锛屽嚭搴撶鐞嗛噰璐鍑�
      * @param response
      */
     @PostMapping("/export")
     public void export(HttpServletResponse response) {
-        procurementRecordService.export(response);
+        procurementRecordService.export(response,1);
+    }
+
+    /**
+     * 鍏ュ簱锛屽嚭搴撶鐞嗙敓浜у鍑�
+     * @param response
+     */
+    @PostMapping("/exportOne")
+    public void exportOne(HttpServletResponse response) {
+        procurementRecordService.export(response,2);
+    }
+
+    @Autowired
+    private CustomStorageMapper customStorageMapper;
+
+    /**
+     * 鍏ュ簱锛屽嚭搴撶鐞嗚嚜瀹氫箟瀵煎嚭
+     * @param response
+     */
+    @PostMapping("/exportTwo")
+    public void exportTwo(HttpServletResponse response) {
+        List<CustomStorage> customStorages = customStorageMapper.selectList(null);
+        ExcelUtil<CustomStorage> util = new ExcelUtil<CustomStorage>(CustomStorage.class);
+        util.exportExcel(response, customStorages, "鍏ュ簱鍙拌处");
     }
 
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
index 1a656be..5245149 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
@@ -2,6 +2,7 @@
 
 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;
@@ -10,12 +11,14 @@
 import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
 import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
 import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto;
+import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
 import com.ruoyi.procurementrecord.service.ProcurementRecordOutService;
 import io.swagger.annotations.Api;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * @author :yys
@@ -30,26 +33,40 @@
     private ProcurementRecordOutService procurementRecordOutService;
 
     @PostMapping("/stockout")
-    @Log(title = "閲囪喘鍏ュ簱-鍑哄簱绠$悊-鍑哄簱", businessType = BusinessType.INSERT)
+    @Log(title = "閲囪喘鍑哄簱-鍑哄簱绠$悊-鍑哄簱", businessType = BusinessType.INSERT)
     public AjaxResult stockout(@RequestBody ProcurementRecordOutAdd procurementRecordOutAdd) {
         return AjaxResult.success(procurementRecordOutService.stockout(procurementRecordOutAdd));
     }
 
     @GetMapping("/listPage")
-    @Log(title = "閲囪喘鍏ュ簱-鍑哄簱绠$悊-鍑哄簱鏌ヨ", businessType = BusinessType.OTHER)
+    @Log(title = "閲囪喘鍑哄簱-鍑哄簱鍙拌处-鍑哄簱鏌ヨ", businessType = BusinessType.OTHER)
     public AjaxResult listPage(Page page, ProcurementRecordOutPageDto procurementDto) {
         IPage<ProcurementRecordOutPageDto> result = procurementRecordOutService.listPage(page, procurementDto);
         return AjaxResult.success(result);
     }
 
+    @GetMapping("/listPageByProduct")
+    @Log(title = "鐢熶骇鍑哄簱-鍑哄簱鍙拌处-鍑哄簱鏌ヨ", businessType = BusinessType.OTHER)
+    public AjaxResult listPageByProduct(Page page, ProcurementRecordOutPageDto procurementDto) {
+        IPage<ProcurementRecordOutPageDto> result = procurementRecordOutService.listPageByProduct(page, procurementDto);
+        return AjaxResult.success(result);
+    }
+
+    @GetMapping("/listPageByCustom")
+    @Log(title = "鑷畾涔夊嚭搴�-鍑哄簱鍙拌处-鍑哄簱鏌ヨ", businessType = BusinessType.OTHER)
+    public AjaxResult listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto) {
+        IPage<ProcurementRecordOutPageDto> result = procurementRecordOutService.listPageByCustom(page, procurementDto);
+        return AjaxResult.success(result);
+    }
+
     @PostMapping("/del")
-    @Log(title = "閲囪喘鍏ュ簱-鍑哄簱绠$悊-鍒犻櫎鍑哄簱", businessType = BusinessType.DELETE)
+    @Log(title = "閲囪喘鍑哄簱-鍑哄簱鍙拌处-鍒犻櫎鍑哄簱", businessType = BusinessType.DELETE)
     public AjaxResult deletePro(@RequestBody ProcurementUpdateDto procurementDto) {
         return AjaxResult.success(procurementRecordOutService.deletePro(procurementDto));
     }
 
     /**
-     * 瀵煎嚭
+     * 閲囪喘鍑哄簱瀵煎嚭
      * @param response
      */
     @PostMapping("/export")
@@ -57,4 +74,29 @@
         procurementRecordOutService.export(response);
     }
 
+
+    @Autowired
+    public ProcurementRecordOutMapper procurementRecordOutMapper;
+    /**
+     * 鐢熶骇鍑哄簱瀵煎嚭
+     * @param response
+     */
+    @PostMapping("/exportOne")
+    public void exportOne(HttpServletResponse response) {
+        List<ProcurementRecordOutPageDto> list = procurementRecordOutMapper.listOne();
+        ExcelUtil<ProcurementRecordOutPageDto> util = new ExcelUtil<>(ProcurementRecordOutPageDto.class);
+        util.exportExcel(response, list, "鐢熶骇鍑哄簱鍙拌处");
+    }
+
+    /**
+     * 鑷畾涔夊嚭搴撳鍑�
+     * @param response
+     */
+    @PostMapping("/exportTwo")
+    public void exportTwo(HttpServletResponse response) {
+        List<ProcurementRecordOutPageDto> list = procurementRecordOutMapper.listTwo();
+        ExcelUtil<ProcurementRecordOutPageDto> util = new ExcelUtil<>(ProcurementRecordOutPageDto.class);
+        util.exportExcel(response, list, "鐢熶骇鍑哄簱鍙拌处");
+    }
+
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
index 8e253da..4670aa0 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
@@ -50,6 +50,7 @@
     /**
      * 瀹㈡埛鍚嶇О
      */
+    @Excel(name = "瀹㈡埛鍚嶇О")
     private String customerName;
 
     private String salesLedgerProductId;
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
index 6c76cdd..9124e75 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
@@ -19,4 +19,9 @@
 
     private Integer salesLedgerProductId;
 
+    /**
+     * 鍑哄簱绫诲瀷 1-閲囪喘鍑哄簱 2-閿�鍞嚭搴� 3-鑷畾涔�
+     */
+    private Integer type;
+
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
index 55ceb9c..3be8ed5 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
@@ -20,6 +20,22 @@
     private Integer id;
 
     private BigDecimal warnNum;
+    /**
+     * 閿�鍞悎鍚屽彿
+     */
+    private String salesContractNo;
+
+    /**
+     * 瀹㈡埛鍚堝悓鍙�
+     */
+    private String customerContractNo;
+
+    /**
+     * 瀹㈡埛鍚嶇О
+     */
+    @Excel(name = "瀹㈡埛鍚嶇О")
+    private String customerName;
+
 
     /**
      * 鍑哄叆搴撴暟閲�
@@ -52,6 +68,8 @@
     private String supplierName;
 
 
+
+
     /**
      * 浜у搧澶х被
      */
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
index bd0f2a2..183d62c 100644
--- a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
@@ -30,8 +30,12 @@
 
     List<ProcurementPageDtoCopy> listCopy();
 
+    List<ProcurementPageDtoCopy> listCopyOne();
+
     List<ProcurementPageDto> list();
 
+    List<ProcurementPageDto> listOne();
+
     IPage<ProcurementPageDto> listPageByProduction(Page page, @Param("req") ProcurementPageDto procurementDto);
 
     IPage<ProcurementPageDtoCopy> listPageCopyByProduction(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 4a9390b..6cd9dab 100644
--- a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
@@ -18,4 +18,12 @@
     IPage<ProcurementRecordOutPageDto> listPage(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto);
 
     List<ProcurementRecordOutPageDto> list();
+
+    List<ProcurementRecordOutPageDto> listOne();
+
+    List<ProcurementRecordOutPageDto> listTwo();
+
+    IPage<ProcurementRecordOutPageDto> listPageByProduct(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto);
+
+    IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto);
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java b/src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java
index 0594a58..ab500b7 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -25,32 +26,58 @@
     // 鍏ュ簱鏃堕棿
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "鍏ュ簱鏃堕棿")
     private Date inboundDate;
+
+    /**
+     * 寰呭嚭搴撴暟閲�
+     */
+    @Excel(name = "寰呭嚭搴撴暟閲�")
+    @TableField(exist = false)
+    private BigDecimal inboundNum0;
+    /**
+     * 鍑哄簱鏁伴噺
+     */
+    @Excel(name = "鍑哄簱鏁伴噺")
+    @TableField(exist = false)
+    private BigDecimal totalInboundNum;
     // 鐗╁搧绫诲瀷
+    @Excel(name = "鐗╁搧绫诲瀷")
     private String itemType;
     // 鍏ュ簱鎵规
+    @Excel(name = "鍏ュ簱鎵规")
     private String inboundBatches;
     // 鍏ュ簱鏁伴噺
+    @Excel(name = "鍏ュ簱鏁伴噺")
     private BigDecimal inboundNum;
     // 渚涘簲鍟嗗悕绉�
+    @Excel(name = "渚涘簲鍟嗗悕绉�")
     private String supplierName;
     // 浜у搧澶х被
+    @Excel(name = "浜у搧澶х被")
     private String productCategory;
     // 瑙勬牸鍨嬪彿
+    @Excel(name = "瑙勬牸鍨嬪彿")
     private String specificationModel;
     // 鍗曚綅
+    @Excel(name = "鍗曚綅")
     private String unit;
     // 鍚◣鍗曚环
+    @Excel(name = "鍚◣鍗曚环")
     private BigDecimal taxInclusiveUnitPrice;
     // 鍚◣鎬讳环
+    @Excel(name = "鍚◣鎬讳环")
     private BigDecimal taxInclusiveTotalPrice;
     // 绋庣巼(%)
+    @Excel(name = "绋庣巼(%)")
     private BigDecimal taxRate;
     // 涓嶅惈绋庢�讳环
+    @Excel(name = "涓嶅惈绋庢�讳环")
     private BigDecimal taxExclusiveTotalPrice;
     /**
-     * 鍑哄嚭搴撶敤鎴�
+     * 鍏ュ簱鐢ㄦ埛
      */
+    @Excel(name = "鍏ュ簱鐢ㄦ埛")
     private String createBy;
     /**
      * 鍏ュ簱鐢ㄦ埛id
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
index 45de179..60fc6db 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
@@ -22,7 +22,7 @@
     private Integer id;
 
     /**
-     * 浜у搧淇℃伅琛╥d
+     * 浜у搧淇℃伅琛╥d锛堣嚜瀹氫箟鍏ュ簱鏃朵负0锛�
      */
     private Integer salesLedgerProductId;
 
@@ -43,12 +43,17 @@
     private String inboundBatches;
 
     /**
-     * 鍑哄嚭搴撴暟閲�
+     * 鍑哄簱鏁伴噺
      */
     private BigDecimal inboundNum;
 
     /**
-     * 鍑哄嚭搴撶敤鎴�
+     * 鍑哄簱绫诲瀷 1-閲囪喘 2-閿�鍞� 3-鑷畾涔�
+     */
+    private Integer type;
+
+    /**
+     * 鍑哄簱鐢ㄦ埛
      */
     private String createBy;
     /**
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
index 785efc4..a8fb7eb 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
@@ -23,4 +23,8 @@
     int deletePro(ProcurementUpdateDto procurementDto);
 
     void export(HttpServletResponse response);
+
+    IPage<ProcurementRecordOutPageDto> listPageByProduct(Page page, ProcurementRecordOutPageDto procurementDto);
+
+    IPage<ProcurementRecordOutPageDto> listPageByCustom(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 feabbf3..e28e9f0 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
@@ -29,11 +29,13 @@
 
     int deletePro(ProcurementUpdateDto procurementDto);
 
-    void export(HttpServletResponse response);
+    void export(HttpServletResponse response,Integer type);
 
     int updateManagement(ProcurementManagementUpdateDto procurementDto);
 
-    void exportCopy(HttpServletResponse response);
+    void exportCopy(HttpServletResponse response,Integer type);
+
+    void exportCopyTwo(HttpServletResponse response,Integer type);
 
     Map<String, Object> getReportList(Page page, ProcurementPageDto procurementDto);
 
@@ -46,4 +48,8 @@
     IPage<ProcurementPageDtoCopy> listPageCopyByProduction(Page page, ProcurementPageDto procurementDto);
 
     IPage<CustomStorage> listPageCopyByCustom(Page page, CustomStorage customStorage);
+
+    AjaxResult updateCustom(CustomStorage customStorage);
+
+    AjaxResult deleteCustom(List<Long> ids);
 }
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 29cba69..8fa2530 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
@@ -65,6 +65,7 @@
                 .salesLedgerProductId(procurementRecordOutAdd.getSalesLedgerProductId())
                 .inboundBatches(aLong.equals(0L) ? "绗�1鎵规" : "绗�"+ (aLong + 1) + "鎵规")
                 .inboundNum(new BigDecimal(procurementRecordOutAdd.getQuantity()))
+                .type(procurementRecordOutAdd.getType())
                 .createTime(LocalDateTime.now())
                 .createUser(Long.valueOf(procurementRecordOutAdd.getUserId()))
                 .createBy(sysUser.getNickName())
@@ -95,8 +96,18 @@
 
     @Override
     public void export(HttpServletResponse response) {
-        List<ProcurementRecordOutPageDto> list =procurementRecordOutMapper.list();
+        List<ProcurementRecordOutPageDto> list = procurementRecordOutMapper.list();
         ExcelUtil<ProcurementRecordOutPageDto> util = new ExcelUtil<>(ProcurementRecordOutPageDto.class);
         util.exportExcel(response, list, "鍑哄簱鍙拌处");
     }
+
+    @Override
+    public IPage<ProcurementRecordOutPageDto> listPageByProduct(Page page, ProcurementRecordOutPageDto procurementDto) {
+        return procurementRecordOutMapper.listPageByProduct(page, procurementDto);
+    }
+
+    @Override
+    public IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto) {
+        return procurementRecordOutMapper.listPageByCustom(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 3d03087..06ca0e8 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -128,8 +128,13 @@
     }
 
     @Override
-    public void export(HttpServletResponse response) {
-        List<ProcurementPageDto> list =procurementRecordMapper.list();
+    public void export(HttpServletResponse response,Integer type) {
+        List<ProcurementPageDto> list = new ArrayList<>();
+        if(type == 1){
+            list = procurementRecordMapper.list();
+        }else{
+            list = procurementRecordMapper.listOne();
+        }
         // 璁$畻寰呭叆搴撴暟閲�
         // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
         List<Integer> collect = list.stream().map(ProcurementPageDto::getId).collect(Collectors.toList());
@@ -140,6 +145,7 @@
         }
         LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
+        procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, type);
         List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
         if(CollectionUtils.isEmpty( procurementRecords)){
             ExcelUtil<ProcurementPageDto> util = new ExcelUtil<ProcurementPageDto>(ProcurementPageDto.class);
@@ -199,8 +205,13 @@
     }
 
     @Override
-    public void exportCopy(HttpServletResponse response) {
-        List<ProcurementPageDtoCopy> list =procurementRecordMapper.listCopy();
+    public void exportCopy(HttpServletResponse response,Integer type) {
+        List<ProcurementPageDtoCopy> list = new ArrayList<>();
+        if(type == 1){
+            list = procurementRecordMapper.listCopy();
+        }else{
+            list = procurementRecordMapper.listCopyOne();
+        }
         // 璁$畻寰呭叆搴撴暟閲�
         // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
         List<Integer> collect = list.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList());
@@ -211,6 +222,7 @@
         }
         LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
+        procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, type);
         List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
         if(CollectionUtils.isEmpty( procurementRecords)){
             ExcelUtil<ProcurementPageDtoCopy> util = new ExcelUtil<ProcurementPageDtoCopy>(ProcurementPageDtoCopy.class);
@@ -238,6 +250,51 @@
             dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum));
         }
         ExcelUtil<ProcurementPageDtoCopy> util = new ExcelUtil<ProcurementPageDtoCopy>(ProcurementPageDtoCopy.class);
+        util.exportExcel(response, list, "搴撳瓨绠$悊");
+    }
+
+    @Override
+    public void exportCopyTwo(HttpServletResponse response,Integer type) {
+        List<CustomStorage> list = customStorageMapper.selectList(null);
+        // 璁$畻寰呭叆搴撴暟閲�
+        // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
+        List<Integer> collect = list.stream().map(CustomStorage::getId).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty( collect)){
+            ExcelUtil<CustomStorage> util = new ExcelUtil<CustomStorage>(CustomStorage.class);
+            util.exportExcel(response, list, "搴撳瓨绠$悊");
+            return;
+        }
+        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)){
+            ExcelUtil<CustomStorage> util = new ExcelUtil<CustomStorage>(CustomStorage.class);
+            util.exportExcel(response, list, "搴撳瓨绠$悊");
+            return;
+        }
+        for (CustomStorage dto : list) {
+            // 鏍规嵁閲囪喘鍙拌处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));
+        }
+        ExcelUtil<CustomStorage> util = new ExcelUtil<CustomStorage>(CustomStorage.class);
         util.exportExcel(response, list, "搴撳瓨绠$悊");
     }
 
@@ -423,6 +480,7 @@
         }
         LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
+        procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 2);
         List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
         if(CollectionUtils.isEmpty( procurementRecords)){
             return procurementPageDtoCopyIPage;
@@ -464,7 +522,54 @@
                 customStorageLambdaQueryWrapper.eq(CustomStorage::getInboundDate, customStorage.getInboundDate());
             }
         }
-        return customStorageMapper.selectPage(page, customStorageLambdaQueryWrapper);
+        IPage<CustomStorage> pageList = customStorageMapper.selectPage(page, customStorageLambdaQueryWrapper);
+        List<CustomStorage> procurementPageDtoCopyList = pageList.getRecords();
+        // 璁$畻寰呭叆搴撴暟閲�
+        // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
+        List<Integer> collect = procurementPageDtoCopyList.stream().map(CustomStorage::getId).collect(Collectors.toList());
+        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)){
+            return pageList;
+        }
+        for (CustomStorage dto : procurementPageDtoCopyList) {
+            // 鏍规嵁閲囪喘鍙拌处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.setTotalInboundNum(totalInboundNum);
+            // 寰呭嚭搴撴暟閲� = 鎬绘暟閲� - 宸插嚭搴撴暟閲�
+            dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum));
+        }
+        pageList.setRecords(procurementPageDtoCopyList);
+        return pageList;
+    }
+
+    @Override
+    public AjaxResult updateCustom(CustomStorage customStorage) {
+        return AjaxResult.success(customStorageMapper.updateById(customStorage));
+    }
+
+    @Override
+    public AjaxResult deleteCustom(List<Long> ids) {
+        return AjaxResult.success(customStorageMapper.deleteBatchIds(ids));
     }
 
     @Override
@@ -554,6 +659,7 @@
         }
         LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
         procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
+        procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType,1);
         List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
         if(CollectionUtils.isEmpty( procurementRecords)){
             return procurementPageDtoCopyIPage;
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
index 3f059e7..d7799dc 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -84,6 +84,32 @@
         from  procurement_record_storage 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.ProcurementPageDto">
+        select
+            t3.customer_contract_no,
+            t3.sales_contract_no,
+            t3.customer_name,
+            t2.product_category,
+            t1.id,
+            t2.specification_model,
+            t2.unit,
+            t2.quantity,
+            t2.quantity as quantity0,
+            t2.tax_rate,
+            t2.tax_inclusive_unit_price,
+            t2.tax_inclusive_total_price,
+            t2.tax_exclusive_total_price,
+            t1.inbound_batches,
+            t1.inbound_num,
+            t1.create_time,
+            t1.create_time as time,
+            t1.create_by
+        from  procurement_record_storage 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="listPageCopy" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
         select
@@ -162,6 +188,35 @@
         from  procurement_record_storage 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="listCopyOne" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
+        select
+            t3.customer_contract_no,
+            t3.sales_contract_no,
+            t3.customer_name,
+            t2.product_category,
+            t1.id,
+            t1.sales_ledger_product_id,
+            t1.create_user,
+            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_batches,
+            t1.inbound_num,
+            t1.inbound_num as inboundNum0,
+            t1.create_time,
+            t1.update_time,
+            t1.create_time as cTime,
+            t1.update_time as uTime,
+            t1.create_by
+        from  procurement_record_storage 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="listPageByProduction" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto">
         select
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
index ec91c53..f335353 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
@@ -19,10 +19,10 @@
         t1.create_by,
         t2.warn_num
         from  procurement_record_out t1
-        left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
+        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
         <where>
-            1 = 1
+            and t1.type = 1
             <if test="req.supplierName != null and req.supplierName != ''">
                 and t3.supplier_name like  concat('%',#{req.supplierName},'%')
             </if>
@@ -49,5 +49,105 @@
         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
+        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
+        where t1.type = 3
+    </select>
+    <select id="listPageByProduct" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
+        select
+        t3.customer_contract_no,
+        t3.sales_contract_no,
+        t3.customer_name,
+        t2.product_category,
+        t1.id,
+        t1.code,
+        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_by
+        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
+        <where>
+            and t1.type = 2
+            <if test="req.customerName != null and req.customerName != ''">
+                and t3.customer_name like  concat('%',#{req.customerName},'%')
+            </if>
+            <if test="req.timeStr != null and req.timeStr != ''">
+                and t1.create_time like  concat('%',#{req.timeStr},'%')
+            </if>
+        </where>
+    </select>
+    <select id="listPageByCustom" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
+        select
+        t2.supplier_name,
+        t2.product_category,
+        t1.id,
+        t1.code,
+        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_by
+        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},'%')
+            </if>
+            <if test="req.timeStr != null and req.timeStr != ''">
+                and t1.create_time like  concat('%',#{req.timeStr},'%')
+            </if>
+        </where>
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3