From fd7446cbdb4f852cd0d9098aa3f103fd15edbfbe Mon Sep 17 00:00:00 2001
From: yaowanxin <3588231647@qq.com>
Date: 星期日, 04 一月 2026 14:28:52 +0800
Subject: [PATCH] 财务管理的存货核算获取数据接口,统计数据类

---
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java    |    6 ++
 src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java          |    2 +
 src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml                  |    4 +-
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java |   63 +++++++++++++++++++++++++++++++
 src/main/java/com/ruoyi/procurementrecord/dto/InventoryInformationDto.java               |   28 ++++++++++++++
 5 files changed, 100 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
index 7fb7b44..931ec2e 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -72,7 +72,11 @@
         IPage<ProcurementPageDto> result =procurementRecordService.listPage(page, procurementDto);
         return AjaxResult.success(result);
     }
-
+    @GetMapping("/listReport")
+    @ApiOperation(value = "鏌ヨ搴撳瓨鍥捐〃鏁版嵁")
+    public AjaxResult listReport() {
+        return AjaxResult.success(procurementRecordService.getReportList());
+    }
     @GetMapping("/listPageCopy")
     @Log(title = "閲囪喘鍏ュ簱-鍏ュ簱绠$悊-鍏ュ簱鏌ヨ", businessType = BusinessType.OTHER)
     public AjaxResult listPageCopy(Page page, ProcurementPageDto procurementDto) {
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/InventoryInformationDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/InventoryInformationDto.java
new file mode 100644
index 0000000..2396b29
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/InventoryInformationDto.java
@@ -0,0 +1,28 @@
+package com.ruoyi.procurementrecord.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 瀛樿揣鏍哥畻淇℃伅Dto-璧勪骇鎶ヨ〃
+ */
+@Data
+public class InventoryInformationDto {
+    /**
+     * 鎬诲簱瀛樻暟閲�
+     */
+    private Integer totalInventoryCount;
+    /**
+     * 鎬诲簱瀛橀噾棰�
+     */
+    private BigDecimal totalInventoryValue;
+    /**
+     * 搴撳瓨鍙樺姩鏁伴噺
+     */
+    private Integer inventoryChangeCount;
+    /**
+     * 搴撳瓨鍙樺姩閲戦
+     */
+    private BigDecimal inventoryChangeValue;
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
index 79603ae..ec9014f 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
@@ -34,4 +34,6 @@
     void exportCopy(HttpServletResponse response);
 
     Map<String, Object> getReportList(Page page, ProcurementPageDto procurementDto);
+
+    InventoryInformationDto getReportList();
 }
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 1675069..6e103b4 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -336,6 +336,69 @@
     }
 
     @Override
+    public InventoryInformationDto getReportList() {
+        InventoryInformationDto inventoryInformationDto = new InventoryInformationDto();
+        IPage<ProcurementPageDto> procurementPageDtoIPage = this.listPage(new Page<>(1, -1), new ProcurementPageDto());
+        if(CollectionUtils.isEmpty(procurementPageDtoIPage.getRecords())){
+            return inventoryInformationDto;
+        }
+        // 璁$畻鎬诲簱瀛樻暟閲�
+        inventoryInformationDto.setTotalInventoryCount(procurementPageDtoIPage.getRecords().stream()
+                .map(ProcurementPageDto::getInboundNum0)
+                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                .intValue());
+        // 璁$畻鎬诲簱瀛橀噾棰�-ProcurementPageDto閲屾瘡涓璞$殑inboundNum0鍊煎拰taxInclusiveUnitPrice鐨勪箻绉紝涔嬪悗鐩稿姞寰楀埌鎬诲簱瀛橀噾棰�
+        BigDecimal totalInventoryValue = procurementPageDtoIPage.getRecords().stream()
+                // 杩囨护绌哄璞★紝閬垮厤NPE
+                .filter(Objects::nonNull)
+                // 澶勭悊姣忎釜瀵硅薄鐨勭┖鍊硷細null杞负0
+                .map(dto -> {
+                    // 鍏ュ簱鏁伴噺锛歯ull 鈫� 0
+                    BigDecimal inboundNum0 = Optional.ofNullable(dto.getInboundNum0()).orElse(BigDecimal.ZERO);
+                    // 鍚◣鍗曚环锛歯ull 鈫� 0
+                    BigDecimal taxInclusiveUnitPrice = Optional.ofNullable(dto.getTaxInclusiveUnitPrice()).orElse(BigDecimal.ZERO);
+                    // 璁$畻鍗曚釜瀵硅薄鐨勫簱瀛橀噾棰濓細鏁伴噺 脳 鍚◣鍗曚环
+                    return inboundNum0.multiply(taxInclusiveUnitPrice);
+                })
+                // 鎵�鏈夊崟涓噾棰濇眰鍜岋紝鍒濆鍊间负0
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        // 璁剧疆鎬诲簱瀛橀噾棰�
+        inventoryInformationDto.setTotalInventoryValue(totalInventoryValue);
+        // 璁$畻搴撳瓨鍙樺姩鏁伴噺-ProcurementPageDto閲屾瘡涓璞$殑inboundNum鍊煎拰inboundNum0鍊肩殑宸�硷紝涔嬪悗鐩稿姞寰楀埌搴撳瓨鍙樺姩鏁伴噺
+        inventoryInformationDto.setInventoryChangeCount(procurementPageDtoIPage.getRecords().stream()
+                // 杩囨护绌哄璞★紝閬垮厤NPE
+                .filter(Objects::nonNull)
+                // 澶勭悊姣忎釜瀵硅薄鐨勭┖鍊硷細null杞负0
+                .map(dto -> {
+                    // 鍏ュ簱鏁伴噺锛歯ull 鈫� 0
+                    BigDecimal inboundNum = Optional.ofNullable(dto.getInboundNum()).orElse(BigDecimal.ZERO);
+                    // 寰呭嚭搴撴暟閲忥細null 鈫� 0
+                    BigDecimal inboundNum0 = Optional.ofNullable(dto.getInboundNum0()).orElse(BigDecimal.ZERO);
+                    // 璁$畻鍗曚釜瀵硅薄鐨勫簱瀛樺彉鍔ㄦ暟閲忥細鏁伴噺 - 寰呭嚭搴撴暟閲�
+                    return inboundNum.subtract(inboundNum0);
+                })
+                // 鎵�鏈夊崟涓彉鍔ㄦ暟閲忔眰鍜岋紝鍒濆鍊间负0
+                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                .intValue());
+        // 璁$畻搴撳瓨鍙樺姩閲戦ProcurementPageDto閲屾瘡涓璞$殑taxInclusiveTotalPrice鍊肩殑鍜�
+        BigDecimal inventoryChangeValue = procurementPageDtoIPage.getRecords().stream()
+                // 杩囨护绌哄璞★紝閬垮厤NPE
+                .filter(Objects::nonNull)
+                // 澶勭悊姣忎釜瀵硅薄鐨勭┖鍊硷細null杞负0
+                .map(dto -> {
+                    // 鍚◣鎬讳环锛歯ull 鈫� 0
+                    BigDecimal taxInclusiveTotalPrice = Optional.ofNullable(dto.getTaxInclusiveTotalPrice()).orElse(BigDecimal.ZERO);
+                    // 璁$畻鍗曚釜瀵硅薄鐨勫叆搴撳簱瀛橀噾棰濓細鍚◣鎬讳环
+                    return taxInclusiveTotalPrice;
+                })
+                // 鎵�鏈夊崟涓彉鍔ㄩ噾棰濇眰鍜岋紝鍒濆鍊间负0
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        // 璁剧疆搴撳瓨鍙樺姩閲戦
+        inventoryInformationDto.setInventoryChangeValue(inventoryChangeValue.subtract(totalInventoryValue));
+        return inventoryInformationDto;
+    }
+
+    @Override
     public int add(ProcurementAddDto procurementDto) {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         // 鎵归噺鏂板
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
index c378c6a..0ce76e2 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -55,10 +55,10 @@
         <where>
             1 = 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.timeStr != null and req.timeStr != ''">
-                and t1.create_time like  concat('%',#{req.timeStr},'%')
+                and t1.create_time like concat('%',#{req.timeStr},'%')
             </if>
         </where>
     </select>

--
Gitblit v1.9.3