From acb3bc29c9a844049c417840cbfb6b9280c238b0 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 17 十月 2025 11:47:30 +0800
Subject: [PATCH] 项目管理代码生成,案件分类

---
 ruoyi-system/src/main/resources/mapper/system/ProjectInventoryMapper.xml |  139 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 139 insertions(+), 0 deletions(-)

diff --git a/ruoyi-system/src/main/resources/mapper/system/ProjectInventoryMapper.xml b/ruoyi-system/src/main/resources/mapper/system/ProjectInventoryMapper.xml
index 96317ed..88f739b 100644
--- a/ruoyi-system/src/main/resources/mapper/system/ProjectInventoryMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/ProjectInventoryMapper.xml
@@ -23,4 +23,143 @@
         id, investment_task, investment_task_finish, investment_task_rating, create_time, create_by, update_time, update_by, disabled, storage_task, storage_task_finish, storage_task_rating
     </sql>
 
+    <!-- 存量项目情况分页列表(按年度分组) -->
+<!--    <select id="selectStoragePageList" resultType="com.ruoyi.system.vo.InventoryStorageListVO">-->
+<!--        SELECT -->
+<!--            YEAR(ps.in_time) AS year,-->
+<!--            COUNT(ps.id) AS storageCount,-->
+<!--            COALESCE(SUM(ps.total_amount), 0) AS totalAmount,-->
+<!--            COALESCE(SUM(ps.total_amount) - COALESCE(SUM(all_items.amount), 0), SUM(ps.total_amount)) AS remainingAmount,-->
+<!--            COALESCE(SUM(year_items.amount), 0) AS yearAmount,-->
+<!--            COALESCE(SUM(all_items.amount), 0) AS allAmount-->
+<!--        FROM project_storage ps-->
+<!--        LEFT JOIN (-->
+<!--            SELECT -->
+<!--                project_storage_id,-->
+<!--                SUM(amount) AS amount-->
+<!--            FROM project_storage_item -->
+<!--            WHERE disabled = 0-->
+<!--            GROUP BY project_storage_id-->
+<!--        ) all_items ON ps.id = all_items.project_storage_id-->
+<!--        LEFT JOIN (-->
+<!--            SELECT -->
+<!--                project_storage_id,-->
+<!--                SUM(amount) AS amount-->
+<!--            FROM project_storage_item -->
+<!--            WHERE disabled = 0 -->
+<!--                AND YEAR(STR_TO_DATE(CONCAT(month, '-01'), '%Y-%m-%d')) = YEAR(CURDATE())-->
+<!--            GROUP BY project_storage_id-->
+<!--        ) year_items ON ps.id = year_items.project_storage_id-->
+<!--        WHERE ps.disabled = 0 -->
+<!--            AND ps.status = 1-->
+<!--            AND ps.in_time IS NOT NULL-->
+<!--        GROUP BY YEAR(ps.in_time)-->
+<!--        ORDER BY YEAR(ps.in_time) DESC-->
+<!--    </select>-->
+    <select id="selectStoragePageList" resultType="com.ruoyi.system.vo.InventoryStorageListVO">
+        SELECT
+            ps_year.year,
+            COUNT(ps_year.id) AS storageCount,
+            COALESCE(SUM(ps_year.total_amount), 0) AS totalAmount,
+            COALESCE(SUM(ps_year.total_amount) - COALESCE(SUM(all_items.amount), 0), SUM(ps_year.total_amount)) AS remainingAmount,
+            COALESCE(SUM(year_items.year_amount), 0) AS yearAmount,
+            COALESCE(SUM(all_items.amount), 0) AS allAmount
+        FROM (
+                 SELECT
+                     id,
+                     total_amount,
+                     YEAR(in_time) as year
+                 FROM project_storage
+                 WHERE disabled = 0
+                   AND status = 1
+                   AND in_time IS NOT NULL
+             ) ps_year
+                 LEFT JOIN (
+            SELECT
+                project_storage_id,
+                SUM(amount) AS amount
+            FROM project_storage_item
+            WHERE disabled = 0
+            GROUP BY project_storage_id
+        ) all_items ON ps_year.id = all_items.project_storage_id
+                 LEFT JOIN (
+            SELECT
+                psi.project_storage_id,
+                YEAR(STR_TO_DATE(CONCAT(psi.month, '-01'), '%Y-%m-%d')) as item_year,
+                SUM(psi.amount) AS year_amount
+            FROM project_storage_item psi
+            WHERE psi.disabled = 0
+            GROUP BY psi.project_storage_id, YEAR(STR_TO_DATE(CONCAT(psi.month, '-01'), '%Y-%m-%d'))
+        ) year_items ON ps_year.id = year_items.project_storage_id AND ps_year.year = year_items.item_year
+        GROUP BY ps_year.year
+        ORDER BY ps_year.year DESC
+    </select>
+    <select id="inStoragePageList" resultType="com.ruoyi.system.vo.InStorageListVO">
+        SELECT
+            DATE_FORMAT(ps.in_time, '%Y-%m') AS year,
+        COUNT(ps.id) AS storageCount,
+        COALESCE(SUM(ps.total_amount), 0) AS totalAmount
+        FROM project_storage ps
+        WHERE ps.disabled = 0
+          AND ps.status = 1
+          AND ps.in_time IS NOT NULL
+        GROUP BY DATE_FORMAT(ps.in_time, '%Y-%m')
+        ORDER BY DATE_FORMAT(ps.in_time, '%Y-%m') DESC
+    </select>
+    <select id="outStoragePageList" resultType="com.ruoyi.system.vo.OutStorageListVO">
+        SELECT
+            DATE_FORMAT(ps.in_time, '%Y-%m') AS year,
+        COUNT(ps.id) AS storageCount,
+        COALESCE(SUM(ps.total_amount), 0) AS totalAmount
+        FROM project_storage ps
+        WHERE ps.disabled = 0
+          AND ps.status = 2
+          AND ps.in_time IS NOT NULL
+        GROUP BY DATE_FORMAT(ps.in_time, '%Y-%m')
+        ORDER BY DATE_FORMAT(ps.in_time, '%Y-%m') DESC
+    </select>
+    <select id="monthStoragePageList" resultType="com.ruoyi.system.vo.MonthStorageListVO">
+        SELECT
+            DATE_FORMAT(ps.in_time, '%Y-%m') AS year,
+        COUNT(ps.id) AS storageCount,
+        COALESCE(SUM(ps.total_amount), 0) AS totalAmount,
+        COALESCE(SUM(ps.total_amount) - COALESCE(SUM(all_items.amount), 0), SUM(ps.total_amount)) AS remainingAmount,
+        COALESCE(SUM(year_items.year_amount), 0) AS yearAmount,
+        COALESCE(SUM(month_items.month_amount), 0) AS monthAmount,
+        COALESCE(SUM(all_items.amount), 0) AS allAmount
+        FROM project_storage ps
+            LEFT JOIN (
+            SELECT
+            project_storage_id,
+            SUM(amount) AS amount
+            FROM project_storage_item
+            WHERE disabled = 0
+            GROUP BY project_storage_id
+            ) all_items ON ps.id = all_items.project_storage_id
+            LEFT JOIN (
+            SELECT
+            psi.project_storage_id,
+            YEAR(STR_TO_DATE(CONCAT(psi.month, '-01'), '%Y-%m-%d')) as item_year,
+            SUM(psi.amount) AS year_amount
+            FROM project_storage_item psi
+            WHERE psi.disabled = 0
+            GROUP BY psi.project_storage_id, YEAR(STR_TO_DATE(CONCAT(psi.month, '-01'), '%Y-%m-%d'))
+            ) year_items ON ps.id = year_items.project_storage_id
+            AND YEAR(ps.in_time) = year_items.item_year
+            LEFT JOIN (
+            SELECT
+            psi.project_storage_id,
+            psi.month,
+            SUM(psi.amount) AS month_amount
+            FROM project_storage_item psi
+            WHERE psi.disabled = 0
+            GROUP BY psi.project_storage_id, psi.month
+            ) month_items ON ps.id = month_items.project_storage_id
+            AND DATE_FORMAT(ps.in_time, '%Y-%m') = month_items.month
+        WHERE ps.disabled = 0
+          AND ps.status = 1
+          AND ps.in_time IS NOT NULL
+        GROUP BY DATE_FORMAT(ps.in_time, '%Y-%m')
+        ORDER BY DATE_FORMAT(ps.in_time, '%Y-%m') DESC
+    </select>
 </mapper>

--
Gitblit v1.7.1