From d95f6551e8214d69cd0fd511ec693641eb61ba16 Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Mon, 01 Aug 2022 10:36:26 +0800
Subject: [PATCH] 1、大屏首页接口修复,解决double类型相加精度问题

---
 src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml |   66 ++++++++++++++++++++++-----------
 1 files changed, 44 insertions(+), 22 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 0d20db2..11691b3 100644
--- a/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml
+++ b/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml
@@ -23,6 +23,8 @@
         <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>
 
 
@@ -32,13 +34,19 @@
             user.real_name,
             strain.strain_name,
             strain.url,
-            district.name as district
+            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
         WHERE
+        <if test="sale.strainId !=null and sale.strainId != '' ">
+            sale.strain_id = #{sale.strainId} AND
+        </if>
             sale.is_deleted = 0
     </select>
 
@@ -60,8 +68,12 @@
             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 ( sale_time ) = YEAR ( NOW( ) )
+        <if test="farmId != null and farmId != ''">
+            and sl.farm_id = #{farmId}
+        </if>
     </select>
 
     <!--统计今年和去年的销售总额-->
@@ -69,37 +81,43 @@
         SELECT
             IFNULL( SUM( sale_num * sale_price), 0 ) AS num
         FROM
-            sys_sale
+            sys_sale ss
+        LEFT JOIN sys_land sl ON sl.id = ss.land_id
         WHERE
-            YEAR ( sale_time ) = YEAR ( NOW( )-1 ) UNION ALL
+            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
+            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 ) )
+        <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
-        WHERE
-            YEAR ( sale_time ) = YEAR ( NOW( ) ) UNION ALL
-        SELECT
-            IFNULL( SUM( sale_num ), 0 ) AS num
-        FROM
-            sys_sale
-        WHERE
-            YEAR ( sale_time ) = YEAR ( date_sub( now( ), INTERVAL 1 YEAR ) ) UNION ALL
-        SELECT
-            IFNULL( SUM( sale_num ), 0 ) AS num
-        FROM
-            sys_sale
-        WHERE
-            DATE_FORMAT( sale_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ), '%Y%m' )
+        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,
@@ -109,8 +127,12 @@
         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
         WHERE
             YEAR ( sale_time ) = YEAR ( NOW( ) )
+        <if test="farmId != null and farmId != ''">
+            and sl.farm_id = #{farmId}
+        </if>
         GROUP BY
             dis.NAME,
             dis.lat,

--
Gitblit v1.9.3