From d1dfff01c9a4d0e502596f575a227ee78cfbb15b Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 27 Sep 2022 15:20:03 +0800
Subject: [PATCH] 大屏修改加工产品统计

---
 src/main/java/org/springblade/modules/lang/mapper/LandMapper.xml |  179 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 143 insertions(+), 36 deletions(-)

diff --git a/src/main/java/org/springblade/modules/lang/mapper/LandMapper.xml b/src/main/java/org/springblade/modules/lang/mapper/LandMapper.xml
index 3a83ae7..61d41a9 100644
--- a/src/main/java/org/springblade/modules/lang/mapper/LandMapper.xml
+++ b/src/main/java/org/springblade/modules/lang/mapper/LandMapper.xml
@@ -17,13 +17,17 @@
 
     <select id="selectLandPage" resultMap="landResultMap">
         SELECT l.land_name,
+        l.land_unit,
         l.id,
         l.land_area ,
         ST_ASTEXT(land_range) as land_range,
         l.url,
         d.dict_value as dic,
         c.dict_value as dica,
-        v.dept_name as deptname
+        v.farm_name as deptname,
+        l.farm_id as farmId,
+        l.land_type,l.type,
+        GROUP_CONCAT(a.url) AS strainUrl
         FROM `sys_land` l
         LEFT JOIN (SELECT dict_key, dict_value FROM blade_dict_biz WHERE CODE = 'land' AND is_deleted = 0 <if
         test="land.tenantId!=null and land.tenantId != ''">
@@ -37,9 +41,13 @@
         test="land.tenantId!=null and land.tenantId != ''">
         AND blade_dict_biz.tenant_id = #{land.tenantId}
     </if> ) c ON c.dict_key = l.land_unit
-        LEFT JOIN ( SELECT id, dept_name FROM blade_dept WHERE is_deleted = 0 ) v ON v.id = l.dept_id
+        LEFT JOIN ( SELECT id, farm_name FROM sys_farm ) v ON v.id = l.farm_id
+        LEFT JOIN
+        (
+            SELECT sfp.strain_id,strain.url,sfp.land_id FROM sys_farm_plant sfp LEFT JOIN sys_strain strain ON strain.id = sfp.strain_id WHERE sfp.`status` = 1
+        ) a ON l.id = a.land_id
         where l.is_deleted = 0
-        <if test="land.landType!=null and land.landType != ''">
+        <if test="land.landType!=null and land.landType != '' or land.landType == 0 ">
             and l.land_type = #{land.landType}
         </if>
         <if test="land.landName!=null and land.landName != ''">
@@ -54,17 +62,31 @@
         <if test="land.tenantId!=null and land.tenantId != ''">
             and l.tenant_id =#{land.tenantId}
         </if>
+        <if test="land.farmId !=null and land.farmId !=''">
+            AND l.farm_id = #{land.farmId}
+        </if>
+        GROUP BY l.id,d.dict_value,c.dict_value
     </select>
 
     <!--查询地块列表(不分页)-->
-    <select id="getLandList" resultType="org.springblade.modules.lang.vo.LandVO">
+    <select id="getLandList"  resultMap="landResultMap">
         SELECT
-        id,
-        land_name,
-        land_area,
-        ST_ASTEXT(land_range) as land_range,
-        url
-        FROM sys_land
+        l.id,
+        l.land_name,
+        l.land_area,
+        ST_ASTEXT(l.land_range) as land_range,
+        l.url,
+        l.type,
+        l.land_type,
+        l.land_unit,
+        l.dept_id,
+        l.farm_id,
+        GROUP_CONCAT(a.url) AS strainUrl
+        FROM sys_land l
+        LEFT JOIN
+        (
+        SELECT sfp.strain_id,strain.url,sfp.land_id FROM sys_farm_plant sfp LEFT JOIN sys_strain strain ON strain.id = sfp.strain_id WHERE sfp.`status` = 1
+        ) a ON l.id = a.land_id
         where is_deleted = 0
         <if test="land.landType!=null and land.landType != ''">
             and land_type = #{land.landType}
@@ -84,6 +106,7 @@
         <if test="land.farmId!=null and land.farmId != ''">
             and farm_id =#{land.farmId}
         </if>
+        GROUP BY l.id
     </select>
 
     <insert id="saveLandInfo">
@@ -104,18 +127,22 @@
 
     <!--详情信息(自定义查询)-->
     <select id="getLandInfo" resultType="org.springblade.modules.lang.vo.LandVO">
-        select user_id,
-               land_name,
-               land_type,
-               land_area,
-               ST_ASTEXT(land_range) as landRange,
-               type,
-               land_unit,
-               url
-        from sys_land
+        select
+               l.user_id,
+               l.land_name,
+               l.land_type,
+               l.land_area,
+               ST_ASTEXT(l.land_range) as landRange,
+               l.type,
+               l.land_unit,
+               l.url,
+               bdb.dict_value dica
+        from sys_land l
+        LEFT JOIN blade_dict_biz bdb ON l.land_unit  = bdb.dict_key
         where 1 = 1
-          and is_deleted = 0
-          and id = #{land.id}
+          and l.is_deleted = 0
+          AND bdb.code = 'landunit' AND bdb.tenant_id = '000000' AND bdb.is_deleted = 0
+          and l.id = #{land.id}
     </select>
 
     <!--自定义地块数据-->
@@ -130,6 +157,16 @@
         type = #{land.type},
         land_unit = #{land.landUnit},
         farm_id = #{land.farmId},
+        url = #{land.url}
+        where id = #{land.id}
+    </update>
+
+    <update id="updateLandAr">
+        update sys_land set user_id = #{land.userId},
+        land_area = #{land.landArea},
+        <if test="land.landRange!=null and land.landRange!=''">
+            land_range = ST_GeomFromText(${land.landRange}),
+        </if>
         url = #{land.url},
         where id = #{land.id}
     </update>
@@ -137,16 +174,15 @@
     <select id="selectLandList" resultType="java.util.HashMap">
         select id, land_name as landName
         from sys_land
-        where dept_id = #{userid}
+        where farm_id = #{userid}
           and is_deleted = 0
     </select>
     <!--土地总面积-->
     <select id="selectZAre" resultType="java.util.HashMap">
-        SELECT IFNULL(land_area, 0) as area, IFNULL(land_unit, 0) as unit
-        FROM sys_land
+        SELECT IFNULL(land_area, 0) as area, IFNULL(land_unit, 0) as unit FROM sys_land
         WHERE is_deleted = 0
-        <if test="deptId!= null and deptId!=''">
-            and dept_id=#{deptId}
+        <if test="land.farmId!= null and land.farmId!=''">
+            and farm_id=#{land.farmId}
         </if>
     </select>
     <!--土地使用面积-->
@@ -155,8 +191,8 @@
         FROM sys_land
         WHERE is_deleted = 0
         and type = 0
-        <if test="deptId!= null and deptId!=''">
-            and dept_id=#{deptId}
+        <if test="land.farmId!= null and land.farmId!=''">
+            and farm_id=#{land.farmId}
         </if>
     </select>
     <!--土地未使用面积-->
@@ -165,18 +201,89 @@
         FROM sys_land
         WHERE is_deleted = 0
         and type = 1
-        <if test="deptId!= null and deptId!=''">
-            and dept_id=#{deptId}
+        <if test="land.farmId!= null and land.farmId!=''">
+            and farm_id=#{land.farmId}
         </if>
     </select>
+
     <select id="selectNum" resultType="java.util.HashMap">
-        SELECT strain_id
-        FROM `sys_farm_plant`
-        WHERE status = 1
-        <if test="deptId!= null and deptId!=''">
-            and dept_id=#{deptId}
+        SELECT strain_id FROM sys_farm_plant sfp
+        left join sys_land sl on sl.id = sfp.land_id
+        WHERE sfp.status = 1
+        <if test="land.farmId!= null and land.farmId!=''">
+            and sl.farm_id=#{land.farmId}
         </if>
-        GROUP BY strain_id
+        <if test="land.deptId!= null and land.deptId!=''">
+            and sfp.dept_id=#{land.deptId}
+        </if>
+        GROUP BY sfp.strain_id
+    </select>
+
+    <!--查询统计地块是否有轮廓-->
+    <select id="getLandIsAreaStatistic" resultType="java.lang.Integer">
+        SELECT count(*) FROM sys_land where land_range is not null AND sys_land.is_deleted = 0
+        <if test="land.farmId!= null and land.farmId!=''">
+            and farm_id=#{land.farmId}
+        </if>
+        <if test="land.deptId!= null and land.deptId!=''">
+            and dept_id=#{land.deptId}
+        </if>
+        union all
+        SELECT count(*) FROM sys_land where land_range is null AND sys_land.is_deleted = 0
+        <if test="land.farmId!= null and land.farmId!=''">
+            and farm_id=#{land.farmId}
+        </if>
+        <if test="land.deptId!= null and land.deptId!=''">
+            and dept_id=#{land.deptId}
+        </if>
+    </select>
+
+    <select id="selectByStrainId" resultType="org.springblade.modules.lang.vo.LandVO">
+        SELECT DISTINCT land.id,land.land_name,land.url,land.farm_id,fps.weight,
+        ( CASE WHEN land_unit = 2 THEN FORMAT(land.land_area * 0.0015,3) WHEN land_unit = 1 THEN land.land_area * 0.1 ELSE land.land_area END ) land_area
+        FROM sys_land land
+            LEFT JOIN sys_farm_product_stock fps ON fps.land_id = land.id
+            LEFT JOIN sys_farm_plant sfp ON sfp.land_id = land.id
+        WHERE 1=1
+        <if test="strainId !=null and strainId != ''">
+            AND fps.strain_id = #{strainId}
+        </if>
+        <if test="farmId !=null and farmId != '' ">
+            AND land.farm_id = #{farmId}
+        </if>
+    </select>
+    <select id="getByStrainIdFarmId" resultType="org.springblade.modules.lang.entity.Land">
+        SELECT DISTINCT land.id,land.land_name,land.url,land.farm_id
+        FROM sys_land land
+        LEFT JOIN sys_farm_plant sfp ON sfp.land_id = land.id
+        WHERE land.is_deleted = 0 AND sfp.planting_way !=2
+        <if test="land.strainId !=null and land.strainId !=''">
+            AND sfp.strain_id = #{land.strainId}
+        </if>
+        <if test="land.farmId !=null and land.farmId != '' ">
+            AND land.farm_id = #{land.farmId}
+        </if>
+        <if test="land.sfpStatus !=null and land.sfpStatus !=''">
+            AND sfp.status = #{land.sfpStatus}
+        </if>
+    </select>
+    <select id="findPlantInLand" resultType="org.springblade.modules.lang.vo.LandVO">
+        SELECT land.*,sfp.id AS sfpId,sfp.strain_id
+        FROM sys_land land
+        LEFT JOIN sys_farm_plant sfp ON land.id = sfp.land_id
+        WHERE land.is_deleted = 0  AND sfp.status = 1
+        AND land.id = #{ids}
+    </select>
+    <select id="selectRecoveryLandList" resultType="org.springblade.modules.lang.vo.LandVO">
+        SELECT
+            DISTINCT l.id,l.land_name AS landName
+        FROM
+            sys_recovery r
+        LEFT JOIN sys_land l ON r.land_id = l.id
+        WHERE l.is_deleted = 0
+        <if test="farmId !=null and farmId !=''">
+            AND r.dept_id = #{farmId}
+        </if>
     </select>
 
 </mapper>

--
Gitblit v1.9.3