From 057d4df78bcc5b34ca7c6897918946c4a9e65d18 Mon Sep 17 00:00:00 2001
From: Fancy <Fancy.fx@outlook.com>
Date: 星期二, 14 一月 2025 13:52:06 +0800
Subject: [PATCH] queryStatisticOrder

---
 pms-parent/pms-global/src/main/resources/mapper/PrOrderMapper.xml |   43 +++++++++++++++++++++++++++++++++++++++----
 1 files changed, 39 insertions(+), 4 deletions(-)

diff --git a/pms-parent/pms-global/src/main/resources/mapper/PrOrderMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/PrOrderMapper.xml
index 8fc48f4..3a63783 100644
--- a/pms-parent/pms-global/src/main/resources/mapper/PrOrderMapper.xml
+++ b/pms-parent/pms-global/src/main/resources/mapper/PrOrderMapper.xml
@@ -12,6 +12,9 @@
             <result property="director" column="director" jdbcType="VARCHAR"/>
             <result property="dMobile" column="d_mobile" jdbcType="VARCHAR"/>
             <result property="deliveryDate" column="delivery_date" jdbcType="VARCHAR"/>
+            <result property="deliveryAddress" column="delivery_address" jdbcType="VARCHAR"/>
+            <result property="recipient" column="recipient" jdbcType="VARCHAR"/>
+            <result property="rMobile" column="r_mobile" jdbcType="VARCHAR"/>
             <result property="status" column="status" jdbcType="TINYINT"/>
             <result property="creator" column="creator" jdbcType="VARCHAR"/>
             <result property="dt" column="dt" jdbcType="TIMESTAMP"/>
@@ -26,7 +29,7 @@
     </resultMap>
     <sql id="Base_Column_List">
         id,`name`,customer_name,project_name,
-        director,d_mobile,delivery_date,
+        director,d_mobile,delivery_date,delivery_address,recipient,r_mobile,
         status,creator,dt,
         deleted,remark
     </sql>
@@ -141,6 +144,23 @@
         </trim>
         order by id desc
     </select>
+    <select id="queryStatisticOrder" resultType="cn.hutool.json.JSONObject">
+        SELECT
+            count(1) AS total,
+            SUM(CASE WHEN delivery_date >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR) THEN 1 ELSE 0 END) AS year_total,
+            SUM(CASE WHEN complete = 'complete' THEN 1 ELSE 0 END) AS complete,
+            SUM(CASE WHEN complete = 'uncomplete' THEN 1 ELSE 0 END) AS uncomplete
+        FROM(
+                SELECT po.id,po.delivery_date, CASE WHEN po.`status`= -1 OR poi.complete ='complete' THEN 'complete' ELSE 'uncomplete' END AS complete FROM
+                    (SELECT id,`name`, `status`,delivery_date FROM pr_order WHERE deleted = 0) po
+                        LEFT JOIN (
+                        SELECT pr.order_id ,CASE WHEN COUNT(pr.order_id) - SUM(pr.flag) = 0 THEN 'complete' ELSE 'uncomplete' END AS complete
+                        FROM
+                            (SELECT item.order_id,item.pro_id,CASE WHEN item.complete_number - item.number >= 0 THEN 1  ELSE 0 END AS flag FROM
+                                (SELECT order_id,pro_id, SUM(number) number,SUM(IFNULL(complete_number,0)) complete_number FROM pr_order_item GROUP BY order_id,pro_id) item
+                            ) pr GROUP BY pr.order_id) poi
+                        ON po.id = poi.order_id) statistic
+    </select>
     <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
         delete from pr_order
         where  id = #{id,jdbcType=BIGINT} 
@@ -159,9 +179,12 @@
                 <if test="director != null and director !=''">director,</if>
                 <if test="dMobile != null and dMobile !=''">d_mobile,</if>
                 <if test="deliveryDate!= null and deliveryDate !=''">delivery_date,</if>
+                <if test="deliveryAddress!= null and deliveryAddress !=''">delivery_date,</if>
+                <if test="recipient!= null and recipient !=''">recipient,</if>
+                <if test="rMobile!= null and rMobile !=''">r_mobile,</if>
                 <if test="status != null">status,</if>
                 <if test="creator != null and creator !=''">creator,</if>
-                <if test="dt != null and dt !=''">dt,</if>
+                <if test="dt != null">dt,</if>
                 <if test="deleted != null">deleted,</if>
                 <if test="remark != null and remark !=''">remark,</if>
         </trim>
@@ -173,9 +196,12 @@
                 <if test="director != null and director !=''">#{director,jdbcType=VARCHAR},</if>
                 <if test="dMobile != null and dMobile !=''">#{dMobile,jdbcType=VARCHAR},</if>
                 <if test="deliveryDate!= null and deliveryDate !=''">#{deliveryDate,jdbcType=VARCHAR},</if>
+                <if test="deliveryAddress!= null and deliveryAddress !=''">#{deliveryAddress,jdbcType=VARCHAR},</if>
+                <if test="recipient!= null and recipient !=''">#{recipient,jdbcType=VARCHAR},</if>
+                <if test="rMobile!= null and rMobile !=''">#{rMobile,jdbcType=VARCHAR},</if>
                 <if test="status != null">#{status,jdbcType=TINYINT},</if>
                 <if test="creator != null and creator !=''">#{creator,jdbcType=VARCHAR},</if>
-                <if test="dt != null and dt !=''">#{dt,jdbcType=TIMESTAMP},</if>
+                <if test="dt != null">#{dt,jdbcType=TIMESTAMP},</if>
                 <if test="deleted != null">#{deleted,jdbcType=TINYINT},</if>
                 <if test="remark != null and remark !=''">#{remark,jdbcType=VARCHAR},</if>
         </trim>
@@ -201,13 +227,22 @@
                 <if test="deliveryDate!= null and deliveryDate !=''">
                     delivery_date = #{deliveryDate,jdbcType=VARCHAR},
                 </if>
+                <if test="deliveryAddress!= null and deliveryAddress !=''">
+                    delivery_date = #{deliveryAddress,jdbcType=VARCHAR},
+                </if>
+                <if test="recipient!= null and recipient !=''">
+                    recipient = #{recipient,jdbcType=VARCHAR},
+                </if>
+                <if test="rMobile!= null and rMobile !=''">
+                    r_mobile = #{rMobile,jdbcType=VARCHAR},
+                </if>
                 <if test="status != null">
                     status = #{status,jdbcType=TINYINT},
                 </if>
                 <if test="creator != null and creator !=''">
                     creator = #{creator,jdbcType=VARCHAR},
                 </if>
-                <if test="dt != null and dt !=''">
+                <if test="dt != null">
                     dt = #{dt,jdbcType=TIMESTAMP},
                 </if>
                 <if test="deleted != null">

--
Gitblit v1.8.0