Jelajahi Sumber

解决质检系统`跨节点移动`移动剩下的全部子节点时数据统计错误的问题

lvy 1 Minggu lalu
induk
melakukan
9656f8d386

+ 4 - 2
blade-service/blade-business/src/main/java/org/springblade/business/mapper/WbsTreeContractStatisticsMapper.xml

@@ -28,14 +28,16 @@
     <update id="updateLeafNum">
         UPDATE m_wbs_tree_contract_statistics a INNER JOIN (
                 select  b.id, COUNT(c.id) AS leaf_num, sum(c.fill_num) as fill_num, sum(c.approve_num) as approve_num, sum(c.complete_num) as complete_num, sum(c.jl_fill_num) as jl_fill_num, sum(c.jl_approve_num) as jl_approve_num, sum(c.jl_complete_num) as jl_complete_num
-                FROM m_wbs_tree_contract_statistics b INNER JOIN m_wbs_tree_contract_statistics c  ON c.contract_id = b.contract_id AND c.leaf_num = 0 AND c.is_deleted = 0  AND c.status = 1 AND c.ancestors LIKE CONCAT(b.ancestors, ',', b.id, '%')
+                FROM m_wbs_tree_contract_statistics b LEFT JOIN m_wbs_tree_contract_statistics c  ON c.contract_id = b.contract_id AND c.leaf_num = 0 AND c.is_deleted = 0  AND c.status = 1 AND c.ancestors LIKE CONCAT(b.ancestors, ',', b.id, '%')
                 WHERE b.id IN (
                     <foreach collection="ids" item="item" separator=",">
                         #{item}
                     </foreach>
                     ) GROUP BY b.id
             ) AS t ON a.id = t.id
-        SET a.leaf_num = t.leaf_num, a.fill_num = t.fill_num,a.approve_num = t.approve_num, a.complete_num = t.complete_num, a.jl_fill_num =t.jl_fill_num, a.jl_approve_num = t.jl_approve_num, a.jl_complete_num = t.jl_complete_num, a.is_leaf = if(t.leaf_num > 0, 0, 1);
+        SET a.leaf_num = ifnull(t.leaf_num, a.leaf_num), a.fill_num = ifnull(t.fill_num, a.fill_num),a.approve_num = ifnull(t.approve_num, a.approve_num),
+            a.complete_num = ifnull(t.complete_num, a.complete_num), a.jl_fill_num = ifnull(t.jl_fill_num, a.jl_fill_num), a.jl_approve_num = ifnull(t.jl_approve_num, a.jl_approve_num),
+            a.jl_complete_num = ifnull(t.jl_complete_num, a.jl_complete_num), a.is_leaf = if(t.leaf_num > 0, 0, 1);
     </update>
     <select id="getByIdOnLock" resultMap="ResultMap">
         select <include refid="includeSql"/> from m_wbs_tree_contract_statistics where id = #{id} for update