Explorar el Código

修复 本年度种植数据统计没有包含正种植的数据的问题

zhaiyifei hace 8 meses
padre
commit
33a256d58b
Se han modificado 1 ficheros con 23 adiciones y 8 borrados
  1. 23 8
      src/main/resources/mapper/FmsScreenMapper.xml

+ 23 - 8
src/main/resources/mapper/FmsScreenMapper.xml

@@ -28,14 +28,29 @@
 
     <select id="planPickStat" parameterType="com.yunfeiyun.agmp.fms.domain.reqvo.FmsScreenStatReqVo"
             resultType="com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanPickStatResVo">
-        SELECT t.blockId, max(tp.pickArea) AS planArea, sum(tp.pickWeight) AS pickWeight, fb.blockName
-        FROM FmsTaskpick AS tp
-            LEFT JOIN FmsTask AS t ON t.taskId = tp.taskId
-            LEFT JOIN FmsBlock AS fb ON fb.blockId = t.blockId
-        WHERE t.landId = #{landId} AND t.taskStatus = '3'
-            AND (tp.pickDate >= #{startDate} AND tp.pickDate <![CDATA[ <= ]]> #{endDate})
-        GROUP BY t.blockId
-        ORDER BY fb.blockSeq
+        SELECT f.blockId, sum(f.planArea) AS planArea, sum(f.pickWeight) AS pickWeight, f.blockName
+        FROM (
+            SELECT fb.blockId, fb.blockName,
+                COALESCE(MAX(CASE
+                    WHEN fp.planStatus IN ('1', '2')
+                        AND (fp.planStartdate >= #{startDate} OR fp.planEnddate <![CDATA[ <= ]]> #{endDate})
+                    THEN fp.planArea
+                    ELSE 0
+                    END), 0) AS planArea,
+                COALESCE(MAX(CASE
+                    WHEN ft.taskStatus = '3' AND ftk.pickDate BETWEEN #{startDate} AND #{endDate}
+                    THEN ftk.pickWeight
+                    ELSE 0
+                    END), 0) AS pickWeight
+            FROM FmsBlock fb
+                LEFT JOIN FmsPlan fp ON fb.blockId = fp.blockId
+                LEFT JOIN FmsTask ft ON fb.blockId = ft.blockId
+                LEFT JOIN FmsTaskpick ftk ON ft.taskId = ftk.taskId
+            WHERE fb.landId = #{landId} AND fp.planId IS NOT NULL
+            GROUP BY fb.blockId, fp.planId
+        ) AS f
+        GROUP BY f.blockId
+        ORDER BY f.blockId
     </select>
 
     <select id="investStat" parameterType="com.yunfeiyun.agmp.fms.domain.reqvo.FmsScreenStatReqVo"