From 72b971c98c46531064d74b68fc8fe8864ed0b544 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 08 Nov 2022 09:04:56 +0800
Subject: [PATCH] 大屏溯源统计次数sql修改

---
 src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml |  180 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 165 insertions(+), 15 deletions(-)

diff --git a/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml b/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml
index 8e1f3ca..6f97f7c 100644
--- a/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml
+++ b/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml
@@ -3,7 +3,7 @@
 <mapper namespace="org.springblade.modules.sale.mapper.SaleMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="saleResultMap" type="org.springblade.modules.sale.entity.Sale">
+    <resultMap id="saleResultMap" type="org.springblade.modules.sale.vo.SaleVO">
         <result column="id" property="id"/>
         <result column="create_user" property="createUser"/>
         <result column="create_dept" property="createDept"/>
@@ -18,35 +18,185 @@
         <result column="sale_destination" property="saleDestination"/>
         <result column="sale_destination1" property="saleDestination1"/>
         <result column="sale_price" property="salePrice"/>
+        <result column="real_name" property="realName"/>
+        <result column="strain_name" property="strainName"/>
+        <result column="url" property="url"/>
+        <result column="district" property="district"/>
+        <result column="land_id" property="landId"/>
+        <result column="city_name" property="cityName"/>
+        <result column="district_name" property="countyName"/>
     </resultMap>
 
 
     <select id="selectSalePage" resultMap="saleResultMap">
-        select *
-        from sys_sale
-        where is_deleted = 0
+<!--        SELECT-->
+<!--            sale.*,-->
+<!--            user.real_name,-->
+<!--            strain.strain_name,-->
+<!--            strain.url,-->
+<!--            district.name as district,-->
+<!--            region.city_name,-->
+<!--            region.district_name,-->
+<!--        CASE WHEN sale.type = 1 THEN-->
+<!--        (-->
+<!--        SELECT m.machining_type FROM sys_process_inv inv-->
+<!--        LEFT JOIN sys_machining m ON m.id = inv.product_id-->
+<!--        WHERE sale.prod_id = inv.id-->
+<!--        )-->
+<!--        ELSE-->
+<!--        (-->
+<!--        SELECT strain.strain_name FROM sys_farm_product_stock sfps-->
+<!--        LEFT JOIN sys_strain strain ON strain.id = sfps.strain_id-->
+<!--        WHERE sale.prod_id = sfps.id-->
+<!--        )-->
+<!--        END AS proName-->
+<!--        FROM-->
+<!--            sys_sale sale-->
+<!--        LEFT JOIN blade_user user on sale.create_user = user.id-->
+<!--        LEFT JOIN sys_strain strain on sale.strain_id = strain.id-->
+<!--        LEFT JOIN sys_district district on sale.sale_destination = district.code-->
+<!--        LEFT JOIN blade_region region on sale.county = region.district_code-->
+<!--        LEFT JOIN sys_land land ON land.id = sale.land_id-->
+<!--        WHERE-->
+<!--        <if test="sale.strainId !=null and sale.strainId != '' ">-->
+<!--            sale.strain_id = #{sale.strainId} AND-->
+<!--        </if>-->
+<!--        <if test="sale.farmId != null and sale.farmId !=''">-->
+<!--           land.farm_id = #{sale.farmId} AND-->
+<!--        </if>-->
+<!--            sale.is_deleted = 0 ORDER BY sale.create_time DESC-->
+
+        SELECT
+            sale.*,
+            USER.real_name,
+            strain.strain_name,
+            mach.machining_type AS proName,
+            strain.url,
+            district.NAME AS district,
+            region.city_name,
+            region.district_name
+        FROM
+            sys_sale sale
+            LEFT JOIN blade_user USER ON sale.create_user = USER.id
+            LEFT JOIN sys_strain strain ON sale.strain_id = strain.id
+            LEFT JOIN sys_district district ON sale.sale_destination = district.CODE
+            LEFT JOIN blade_region region ON sale.county = region.district_code
+            LEFT JOIN sys_land land ON land.id = sale.land_id
+            LEFT JOIN sys_process_inv inv ON inv.id = sale.prod_id
+            LEFT JOIN sys_machining mach ON mach.id = inv.product_id
+        WHERE
+            1 = 1
+        <if test="sale.farmId != null and sale.farmId !=''">
+            AND (land.farm_id = #{sale.farmId} OR inv.fps_id = #{sale.farmId})
+        </if>
+        <if test="sale.type != null and sale.type !='' ">
+            AND sale.type = #{sale.type}
+        </if>
+        <if test="sale.kind != null and sale.kind !='' ">
+            AND (inv.product_id = #{sale.kind} OR sale.strain_id = #{sale.kind})
+        </if>
+        AND sale.is_deleted = 0
+        ORDER BY
+        sale.create_time DESC
+
     </select>
 
 
     <!--大屏销售每个月统计-->
     <select id="selctSaletCount" resultType="java.util.HashMap">
-        SELECT SUM(CASE WHEN MONTH ( s.sale_time ) = 1 THEN s.sale_price END ) AS '1', SUM(CASE WHEN MONTH ( s.sale_time ) = 2 THEN s.sale_price END ) AS '2', SUM(CASE WHEN MONTH ( s.sale_time ) = 3 THEN s.sale_price END ) AS '3', SUM(CASE WHEN MONTH ( s.sale_time ) = 4 THEN s.sale_price END ) AS '4', SUM(CASE WHEN MONTH ( s.sale_time ) = 5 THEN s.sale_price END ) AS '5', SUM(CASE WHEN MONTH ( s.sale_time ) = 6 THEN s.sale_price END ) AS '6', SUM(CASE WHEN MONTH ( s.sale_time ) = 7 THEN s.sale_price END ) AS '7', SUM(CASE WHEN MONTH ( s.sale_time ) = 8 THEN s.sale_price END ) AS '8', SUM(CASE WHEN MONTH ( s.sale_time ) = 9 THEN s.sale_price END ) AS '9', SUM(CASE WHEN MONTH ( s.sale_time ) = 10 THEN s.sale_price END ) AS '10', SUM(CASE WHEN MONTH ( s.sale_time ) = 11 THEN s.sale_price END ) AS '11', SUM(CASE WHEN MONTH ( s.sale_time ) = 12 THEN s.sale_price END ) AS '12'
-        FROM sys_sale AS s
+        SELECT
+            IFNULL(SUM( CASE WHEN MONTH ( s.sale_time ) = 1 THEN s.sale_num * sale_price END ),0) AS '1',
+            IFNULL(SUM( CASE WHEN MONTH ( s.sale_time ) = 2 THEN s.sale_num * sale_price END ),0) AS '2',
+            IFNULL(SUM( CASE WHEN MONTH ( s.sale_time ) = 3 THEN s.sale_num * sale_price END ),0) AS '3',
+            IFNULL(SUM( CASE WHEN MONTH ( s.sale_time ) = 4 THEN s.sale_num * sale_price END ),0) AS '4',
+            IFNULL(SUM( CASE WHEN MONTH ( s.sale_time ) = 5 THEN s.sale_num * sale_price END ),0) AS '5',
+            IFNULL(SUM( CASE WHEN MONTH ( s.sale_time ) = 6 THEN s.sale_num * sale_price END ),0) AS '6',
+            IFNULL(SUM( CASE WHEN MONTH ( s.sale_time ) = 7 THEN s.sale_num * sale_price END ),0) AS '7',
+            IFNULL(SUM( CASE WHEN MONTH ( s.sale_time ) = 8 THEN s.sale_num * sale_price END ),0) AS '8',
+            IFNULL(SUM( CASE WHEN MONTH ( s.sale_time ) = 9 THEN s.sale_num * sale_price END ),0) AS '9',
+            IFNULL(SUM( CASE WHEN MONTH ( s.sale_time ) = 10 THEN s.sale_num * sale_price END ),0) AS '10',
+            IFNULL(SUM( CASE WHEN MONTH ( s.sale_time ) = 11 THEN s.sale_num * sale_price END ),0) AS '11',
+            IFNULL(SUM( CASE WHEN MONTH ( s.sale_time ) = 12 THEN s.sale_num * sale_price END ),0) AS '12'
+        FROM
+            sys_sale AS s
+        LEFT JOIN sys_land sl ON sl.id = s.land_id
         WHERE
-            YEAR ( s.sale_time ) = #{year}
+            YEAR ( sale_time ) = YEAR ( NOW( ) )
+        <if test="farmId != null and farmId != ''">
+            and sl.farm_id = #{farmId}
+        </if>
     </select>
 
     <!--统计今年和去年的销售总额-->
     <select id="selctSaletZ" resultType="java.util.HashMap" >
-        SELECT IFNULL(SUM(sale_num), 0) AS num
-        FROM sys_sale
+        SELECT
+            IFNULL( SUM( sale_num * sale_price), 0 ) AS num
+        FROM
+            sys_sale ss
+        LEFT JOIN sys_land sl ON sl.id = ss.land_id
         WHERE
-            YEAR ( sale_time ) = YEAR ( NOW( ) )
-        UNION ALL
-        SELECT IFNULL(SUM(sale_num), 0) AS num
-        FROM sys_sale
+            YEAR ( sale_time ) = YEAR ( NOW( )-1 )
+        <if test="sale.farmId != null and sale.farmId != ''">
+            and sl.farm_id = #{sale.farmId}
+        </if>
+            UNION ALL
+        SELECT
+            IFNULL( SUM( sale_num * sale_price ), 0 ) AS num
+        FROM
+            sys_sale ss
+        LEFT JOIN sys_land sl ON sl.id = ss.land_id
         WHERE
-            YEAR ( sale_time ) = YEAR ( date_sub( now( )
-            , INTERVAL 1 YEAR ) );
+            YEAR ( sale_time ) = YEAR ( date_sub( now( ), INTERVAL 1 YEAR ) )
+        <if test="sale.farmId != null and sale.farmId != ''">
+            and sl.farm_id = #{sale.farmId}
+        </if>
     </select>
+    <!--统计市场流通/去年流通量/本月流通量-->
+    <select id="selectMarketCirculate" resultType="java.util.HashMap" >
+        SELECT IFNULL( SUM( sale_num ), 0 ) AS num FROM sys_sale ss
+        left join sys_land sl on sl.id = ss.land_id
+        WHERE YEAR ( ss.sale_time ) = YEAR ( NOW())
+        and sl.farm_id = #{sale.farmId}
+        UNION ALL
+        SELECT IFNULL(SUM(sale_num), 0) AS num FROM sys_sale ss
+        left join sys_land sl on sl.id = ss.land_id
+        WHERE YEAR ( ss.sale_time ) = YEAR ( date_sub( now( ), INTERVAL 1 YEAR ) )
+        and sl.farm_id = #{sale.farmId}
+        UNION ALL
+        SELECT IFNULL( SUM( sale_num ), 0 ) AS num FROM sys_sale ss
+        left join sys_land sl on sl.id = ss.land_id
+        WHERE DATE_FORMAT( ss.sale_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ), '%Y%m' )
+        and sl.farm_id = #{sale.farmId}
+    </select>
+
+    <select id="selectMarketDistrict" resultType="java.util.HashMap" >
+        SELECT
+            IFNULL( SUM( sale_num ), 0 ) AS num,
+            dis.`name`,
+            dis.lat,
+            dis.lng
+        FROM
+            sys_sale sale
+            LEFT JOIN sys_district dis ON sale.sale_destination = dis.CODE
+            LEFT JOIN sys_land sl ON sl.id = sale.land_id
+            LEFT JOIN sys_process_inv inv ON inv.id = sale.prod_id
+        WHERE 1 = 1 AND sale.is_deleted = 0
+        <if test="startTime != null and startTime != ''">
+            and sale_time &gt;= #{startTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            and sale_time &lt;= #{endTime}
+        </if>
+        <if test="startTime == null and endTime == null ">
+            and YEAR ( sale_time ) = YEAR ( NOW( ) )
+        </if>
+        <if test="farmId != null and farmId != ''">
+            and (sl.farm_id = #{farmId} or inv.fps_id = #{farmId})
+        </if>
+        GROUP BY
+            dis.NAME,
+            dis.lat,
+            dis.lng
+    </select>
+
 </mapper>

--
Gitblit v1.9.3