From 9dfddb73a329af5afb72c47ba0fd500962f78321 Mon Sep 17 00:00:00 2001
From: jyy <935090232@qq.com>
Date: Thu, 08 Apr 2021 19:13:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/score_shop' into score_shop

---
 zq-erp/src/main/resources/mybatis/mapper/hive/SysBusinessDataDao.xml |  265 +++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 209 insertions(+), 56 deletions(-)

diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/SysBusinessDataDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/SysBusinessDataDao.xml
index 84736e1..2cfc1a1 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/SysBusinessDataDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/SysBusinessDataDao.xml
@@ -619,95 +619,105 @@
         ) a
     </select>
 
-    <select id="selectDemo" resultType="com.matrix.system.app.vo.BusinessesDataShowVo">
+    <select id="selectApiBusinessData" resultType="com.matrix.system.app.vo.BusinessesDataShowVo">
         <foreach collection="list" index="index" item="item"   separator="union all"  >
             select
-                (select sum(amount) from sys_order_flow
-                    where <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
+                #{item.beginTime} dataTime,
+                (select shop_short_name from sys_shop_info where id=#{shopId}) shopName,
+                (select IFNULL(sum(a.amount),0) from sys_order_flow a
+                    inner join sys_order b on a.order_id=b.id and b.statu!='已取消'
+                    where <![CDATA[ a.create_time > #{item.beginTime} and a.create_time < #{item.endTime}]]> and a.pay_method!='欠款'
                     <if test="shopId != null">
-                        and shop_id=#{shopId}
+                        and a.shop_id=#{shopId}
                     </if>
                     <if test="companyId != null">
-                        and company_id=#{companyId}
+                        and a.company_id=#{companyId}
                     </if>
                     )totalPay,
-                (select sum(amount) from sys_order_flow
-                    where pay_method not in ('储值卡', '欠款') and flow_type != '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
+                (select IFNULL(sum(a.amount),0) from sys_order_flow a
+                    inner join sys_order b on a.order_id=b.id and b.statu!='已取消'
+                    where a.pay_method not in ('储值卡', '欠款') and a.flow_type != '退款' and <![CDATA[ a.create_time > #{item.beginTime} and a.create_time < #{item.endTime}]]>
                     <if test="shopId != null">
-                        and shop_id=#{shopId}
+                        and a.shop_id=#{shopId}
                     </if>
                     <if test="companyId != null">
-                        and company_id=#{companyId}
+                        and a.company_id=#{companyId}
                     </if>
                     ) cashPay,
-                (select sum(amount) from sys_order_flow
-                    where pay_method = '储值卡' and flow_type != '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
+                (select IFNULL(sum(a.amount),0) from sys_order_flow a
+                    inner join sys_order b on a.order_id=b.id and b.statu!='已取消'
+                    where a.pay_method = '储值卡' and a.flow_type != '退款' and <![CDATA[ a.create_time > #{item.beginTime} and a.create_time < #{item.endTime}]]>
                     <if test="shopId != null">
-                        and shop_id=#{shopId}
+                        and a.shop_id=#{shopId}
                     </if>
                     <if test="companyId != null">
-                        and company_id=#{companyId}
+                        and a.company_id=#{companyId}
                     </if>
                     ) cardPay,
-                (select sum(amount) from sys_order_flow
-                    where pay_method = '欠款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
+                (select IFNULL(sum(a.amount),0) from sys_order_flow a
+                    inner join sys_order b on a.order_id=b.id and b.statu!='已取消'
+                    where a.pay_method = '欠款' and <![CDATA[ a.create_time > #{item.beginTime} and a.create_time < #{item.endTime}]]>
                     <if test="shopId != null">
-                        and shop_id=#{shopId}
+                        and a.shop_id=#{shopId}
                     </if>
                     <if test="companyId != null">
-                        and company_id=#{companyId}
+                        and a.company_id=#{companyId}
                     </if>
                     ) arrearsPay,
-                (select sum(amount) from sys_order_flow
-                    where pay_method not in ('储值卡', '欠款') and flow_type = '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
+                (select IFNULL(sum(a.amount),0) from sys_order_flow a
+                    inner join sys_order b on a.order_id=b.id and b.statu!='已取消'
+                    where a.pay_method not in ('储值卡', '欠款') and a.flow_type = '退款' and <![CDATA[ a.create_time > #{item.beginTime} and a.create_time < #{item.endTime}]]>
                     <if test="shopId != null">
-                        and shop_id=#{shopId}
+                        and a.shop_id=#{shopId}
                     </if>
                     <if test="companyId != null">
-                        and company_id=#{companyId}
+                        and a.company_id=#{companyId}
                     </if>
                     ) refundCashPay,
-                (select sum(amount) from sys_order_flow
-                    where pay_method in ('储值卡') and flow_type = '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
+                (select IFNULL(sum(a.amount),0) from sys_order_flow a
+                    inner join sys_order b on a.order_id=b.id and b.statu!='已取消'
+                    where a.pay_method in ('储值卡') and a.flow_type = '退款' and <![CDATA[ a.create_time > #{item.beginTime} and a.create_time < #{item.endTime}]]>
                     <if test="shopId != null">
-                        and shop_id=#{shopId}
+                        and a.shop_id=#{shopId}
                     </if>
                     <if test="companyId != null">
-                        and company_id=#{companyId}
+                        and a.company_id=#{companyId}
                     </if>
                     ) refundCardPay,
-                (select sum(a.amount) from sys_order_flow a
-                    inner join sys_order_item b on a.order_id=b.ORDER_ID
-                    inner join shopping_goods c on b.goods_id=c.id
-                    where c.good_type='家居产品' and <![CDATA[ a.create_time > #{item.beginTime} and a.create_time < #{item.endTime}]]>
+                (select IFNULL(sum(zk_price*count),0) from sys_order_item a
+                    inner join shopping_goods b on a.goods_id=b.id
+                    inner join sys_order c on a.ORDER_ID=c.id and c.statu!='已取消'
+                    where b.good_type='家居产品' and <![CDATA[ c.pay_time > #{item.beginTime} and c.pay_time < #{item.endTime}]]>
                     <if test="shopId != null">
-                        and a.shop_id=#{shopId}
+                        and c.shop_id=#{shopId}
                     </if>
                     <if test="companyId != null">
-                        and a.company_id=#{companyId}
+                        and c.company_id=#{companyId}
                     </if>
                     ) productAchieve,
-                (select sum(a.amount) from sys_order_flow a
-                    inner join sys_order_item b on a.order_id=b.ORDER_ID
-                    inner join shopping_goods c on b.goods_id=c.id
-                    where c.good_type!='家居产品' and <![CDATA[ a.create_time > #{item.beginTime} and a.create_time < #{item.endTime}]]>
+                (select IFNULL(sum(zk_price*count),0) from sys_order_item a
+                    inner join shopping_goods b on a.goods_id=b.id
+                    inner join sys_order c on a.ORDER_ID=c.id and c.statu!='已取消'
+                    where b.good_type!='家居产品' and <![CDATA[ c.pay_time > #{item.beginTime} and c.pay_time < #{item.endTime}]]>
+                    <if test="shopId != null">
+                        and c.shop_id=#{shopId}
+                    </if>
+                    <if test="companyId != null">
+                        and c.company_id=#{companyId}
+                    </if>
+                    ) cardAchieve,
+                (select IFNULL(sum(a.amount),0) from sys_order_flow a
+                    inner join sys_order b on a.order_id=b.id and b.statu!='已取消'
+                    where a.flow_type = '还款' and <![CDATA[ a.create_time > #{item.beginTime} and a.create_time < #{item.endTime}]]>
                     <if test="shopId != null">
                         and a.shop_id=#{shopId}
                     </if>
                     <if test="companyId != null">
                         and a.company_id=#{companyId}
                     </if>
-                    ) cardAchieve,
-                (select sum(amount) from sys_order_flow where flow_type = '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
-                    <if test="shopId != null">
-                        and shop_id=#{shopId}
-                    </if>
-                    <if test="companyId != null">
-                        and company_id=#{companyId}
-                    </if>
                 ) refund,
-                (select count(1) from sys_order
-                    where STATU in ('已付款', '欠款') and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
+                (select IFNULL(count(1),0) from sys_order
+                    where STATU in ('已付款', '欠款') and orderType=1 and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
                     <if test="shopId != null">
                         and shop_id=#{shopId}
                     </if>
@@ -715,8 +725,8 @@
                         and company_id=#{companyId}
                     </if>
                     ) perCustomCnt,
-                (select sum(b.COUNT) from sys_order a inner join sys_order_item b on a.ID=b.ORDER_ID
-                    where a.STATU in ('已付款', '欠款') and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
+                (select IFNULL(sum(b.COUNT),0) from sys_order a inner join sys_order_item b on a.ID=b.ORDER_ID
+                    where a.STATU in ('已付款', '欠款') and a.orderType=1 and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
                     <if test="shopId != null">
                         and shop_id=#{shopId}
                     </if>
@@ -724,13 +734,13 @@
                         and company_id=#{companyId}
                     </if>
                     ) totalSaleCnt,
-                (select sum(e.count * d.GOODS_PRICE) from sys_order a
+                (select IFNULL(sum(e.count * d.GOODS_PRICE),0) from sys_order a
                     inner join sys_out_store b on a.id=b.ORDER_ID
                     inner join sys_out_store_item c on b.id=c.OUT_STORE_ID
                     inner join sys_store_info d on c.store_id = d.ID
                     inner join sys_order_item e on a.ID=e.ORDER_ID
                     inner join shopping_goods f on e.goods_id=f.id and f.good_type='家居产品'
-                    where a.STATU in ('已付款', '欠款') and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
+                    where a.STATU in ('已付款', '欠款') and a.orderType=1 and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
                     <if test="shopId != null">
                         and a.shop_id=#{shopId}
                     </if>
@@ -738,10 +748,10 @@
                         and a.company_id=#{companyId}
                     </if>
                 ) goodsCost,
-                (select sum(b.COUNT * IFNULL(c.price, 0)) from sys_order a
+                (select IFNULL(sum(b.COUNT * IFNULL(c.price, 0)),0) from sys_order a
                     inner join sys_order_item b on a.ID=b.ORDER_ID
                     inner join shopping_goods c on c.good_type != '家居产品' and b.goods_id=c.id
-                    where a.STATU in ('已付款', '欠款') and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
+                    where a.STATU in ('已付款', '欠款') and a.orderType=1 and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
                     <if test="shopId != null">
                         and a.shop_id=#{shopId}
                     </if>
@@ -749,7 +759,7 @@
                         and a.company_id=#{companyId}
                     </if>
                 ) otherCost,
-                (select sum(IFNULL(his_consume, 0)) from achieve_new
+                (select IFNULL(sum(IFNULL(his_consume, 0)),0) from achieve_new
                     where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime}]]>
                     <if test="shopId != null">
                         and shop_id=#{shopId}
@@ -758,7 +768,7 @@
                         and company_id=#{companyId}
                     </if>
                     ) consumePay,
-                (select sum(IFNULL(free_consume, 0)) from achieve_new
+                (select IFNULL(sum(IFNULL(free_consume, 0)),0) from achieve_new
                     where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime}]]>
                     <if test="shopId != null">
                         and shop_id=#{shopId}
@@ -767,7 +777,7 @@
                         and company_id=#{companyId}
                     </if>
                     ) freeConsumePay,
-                (select sum(IFNULL(number_of_people, 0)) from achieve_new
+                (select IFNULL(sum(IFNULL(number_of_people, 0)),0) from achieve_new
                     where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime}]]>
                     <if test="shopId != null">
                         and shop_id=#{shopId}
@@ -776,7 +786,7 @@
                         and company_id=#{companyId}
                     </if>
                     ) peopleCnt,
-                (select sum(IFNULL(proj_num, 0)) from achieve_new
+                (select IFNULL(sum(IFNULL(proj_num, 0)),0) from achieve_new
                     where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime}]]>
                     <if test="shopId != null">
                         and shop_id=#{shopId}
@@ -785,7 +795,7 @@
                         and company_id=#{companyId}
                     </if>
                     ) projConsumeCnt,
-                (select sum(IFNULL(proj_time, 0)) from achieve_new
+                (select IFNULL(sum(IFNULL(proj_time, 0)),0) from achieve_new
                     where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime}]]>
                     <if test="shopId != null">
                         and shop_id=#{shopId}
@@ -798,4 +808,147 @@
         </foreach>
     </select>
 
+    <select id="selectDailySaleData" resultType="com.matrix.system.hive.statistics.DailySaleVo">
+        <foreach collection="list" index="index" item="item"   separator="union all"  >
+            select
+            #{item.beginTime} dataTime,
+            (select shop_short_name from sys_shop_info where id=#{shopId}) shopName,
+            (select sum(total) shouldPay from sys_order
+                where STATU in ('已付款', '欠款') and orderType=1 and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
+                <if test="shopId != null">
+                    and shop_id=#{shopId}
+                </if>
+                ) shouldPay,
+            (select IFNULL(sum(amount),0) from sys_order_flow
+                where <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]> and pay_method!='欠款'
+                <if test="shopId != null">
+                    and shop_id=#{shopId}
+                </if>
+            )totalPay,
+            (select IFNULL(sum(amount),0) from sys_order_flow
+            where pay_method not in ('储值卡', '欠款') and flow_type != '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
+            <if test="shopId != null">
+                and shop_id=#{shopId}
+            </if>
+            ) cashPay,
+            (select IFNULL(sum(amount),0) from sys_order_flow
+            where pay_method = '储值卡' and flow_type != '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
+            <if test="shopId != null">
+                and shop_id=#{shopId}
+            </if>
+            ) cardPay,
+            (select IFNULL(sum(amount),0) from sys_order_flow
+            where pay_method = '欠款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
+            <if test="shopId != null">
+                and shop_id=#{shopId}
+            </if>
+            ) arrearsPay,
+            (select IFNULL(sum(amount),0) from sys_order_flow
+            where pay_method not in ('储值卡', '欠款') and flow_type = '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
+            <if test="shopId != null">
+                and shop_id=#{shopId}
+            </if>
+            ) refundCashPay,
+            (select IFNULL(sum(amount),0) from sys_order_flow
+            where pay_method in ('储值卡') and flow_type = '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
+            <if test="shopId != null">
+                and shop_id=#{shopId}
+            </if>
+            ) refundCardPay,
+            (select IFNULL(sum(zk_price*count),0) from sys_order_item a
+            inner join shopping_goods b on a.goods_id=b.id
+            inner join sys_order c on a.ORDER_ID=c.id
+            where b.good_type='家居产品' and <![CDATA[ c.pay_time > #{item.beginTime} and c.pay_time < #{item.endTime}]]>
+            <if test="shopId != null">
+                and c.shop_id=#{shopId}
+            </if>
+            ) productAchieve,
+            (select IFNULL(sum(zk_price*count),0) from sys_order_item a
+            inner join shopping_goods b on a.goods_id=b.id
+            inner join sys_order c on a.ORDER_ID=c.id
+            where b.good_type!='家居产品' and <![CDATA[ c.pay_time > #{item.beginTime} and c.pay_time < #{item.endTime}]]>
+            <if test="shopId != null">
+                and c.shop_id=#{shopId}
+            </if>
+            ) cardAchieve,
+            (select IFNULL(sum(amount),0) from sys_order_flow where flow_type = '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
+            <if test="shopId != null">
+                and shop_id=#{shopId}
+            </if>
+            ) refund,
+            (select IFNULL(count(1),0) from sys_order
+            where STATU in ('已付款', '欠款') and orderType=1 and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
+            <if test="shopId != null">
+                and shop_id=#{shopId}
+            </if>
+            ) perCustomCnt,
+            (select IFNULL(sum(b.COUNT),0) from sys_order a inner join sys_order_item b on a.ID=b.ORDER_ID
+            where a.STATU in ('已付款', '欠款') and a.orderType=1 and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
+            <if test="shopId != null">
+                and shop_id=#{shopId}
+            </if>
+            ) totalSaleCnt,
+            (select IFNULL(sum(e.count * d.GOODS_PRICE),0) from sys_order a
+            inner join sys_out_store b on a.id=b.ORDER_ID
+            inner join sys_out_store_item c on b.id=c.OUT_STORE_ID
+            inner join sys_store_info d on c.store_id = d.ID
+            inner join sys_order_item e on a.ID=e.ORDER_ID
+            inner join shopping_goods f on e.goods_id=f.id and f.good_type='家居产品'
+            where a.STATU in ('已付款', '欠款') and a.orderType=1 and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
+            <if test="shopId != null">
+                and a.shop_id=#{shopId}
+            </if>
+            ) goodsCost,
+            (select IFNULL(sum(b.COUNT * IFNULL(c.price, 0)),0) from sys_order a
+            inner join sys_order_item b on a.ID=b.ORDER_ID
+            inner join shopping_goods c on c.good_type != '家居产品' and b.goods_id=c.id
+            where a.STATU in ('已付款', '欠款') and a.orderType=1 and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
+            <if test="shopId != null">
+                and a.shop_id=#{shopId}
+            </if>
+            ) otherCost,
+            (select  sum(case a.paymethod when '微信' then amount else 0 end) wechat
+                from (<include refid="dailySaleFlow"></include>) a
+            ) wechat,
+            (select
+                sum(case a.paymethod when '支付宝' then amount else 0 end) alipay
+                from (<include refid="dailySaleFlow"></include>) a
+            ) alipay,
+            (select
+                sum(case a.paymethod when '现金支付' then amount else 0 end) cash
+                from (<include refid="dailySaleFlow"></include>) a
+            ) cash,
+            (select
+                sum(case a.paymethod when '银行卡' then amount else 0 end) bankCard
+                from (<include refid="dailySaleFlow"></include>) a
+            ) bankCard,
+            (select
+                sum(case a.paymethod when '团购' then amount else 0 end) tuan
+                from (<include refid="dailySaleFlow"></include>) a
+            ) tuan,
+            (select
+                sum(case a.paymethod when '本金收款' then amount else 0 end) cardBj
+                from (<include refid="dailySaleFlow"></include>) a
+            ) cardBj,
+            (select
+                sum(case a.paymethod when '赠金收款' then amount else 0 end) cardFree
+            from (<include refid="dailySaleFlow"></include>) a
+            ) cardFree,
+            (select
+                sum(case a.paymethod when '欠款' then amount else 0 end) arrears
+            from (<include refid="dailySaleFlow"></include>) a
+            ) arrears
+            from dual
+        </foreach>
+    </select>
+
+    <sql id="dailySaleFlow">
+        select sum(amount) amount, case when is_gift = 'Y' then '赠金收款' when is_gift='N' then '本金收款' else pay_method end paymethod
+        from sys_order_flow
+        where <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime} ]]>
+        <if test="shopId != null">
+            and shop_id=#{shopId}
+        </if>
+        group by paymethod
+    </sql>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1