From c958e400221fa3c25b0293c810dd3b280db7387e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Wed, 30 Mar 2022 16:33:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8A=82=E7=82=B9=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E3=80=81=E6=A0=87=E7=AD=BE=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/xm/core/dao/XmMenuMapper.xml | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmMenuMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmMenuMapper.xml index 68221dfb..fd5547fe 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmMenuMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmMenuMapper.xml @@ -193,6 +193,94 @@ ( #{item}) + + + + + UPDATE xm_menu res + LEFT JOIN ( + SELECT + t.pmenu_id, + count(1) as children_cnt, + sum( ifnull( t.budget_cost, 0 ) ) AS budget_cost, + sum( ifnull( t.budget_workload, 0 ) ) AS budget_workload, + sum( ifnull( t.mact_cost, 0 ) ) AS mact_cost, + sum( ifnull( t.mact_workload, 0 ) ) AS mact_workload, + sum( ifnull( t.rworkload, if(t.budget_workload>0,(t.budget_workload-ifnull(t.mact_workload,0)),0) ) ) AS rworkload, + sum( ifnull(t.mact_rate,0)) as total_rate, + min( t.start_time ) AS start_time, + max( t.end_time ) AS end_time + FROM + xm_task t + WHERE + t.pmenu_id in + + #{item} + + group by t.pmenu_id + ) t2 ON t2.pmenu_id = res.menu_id + SET + + res.budget_workload=ifnull(t2.budget_workload,0), + res.budget_cost=ifnull(t2.budget_cost,0), + res.mact_cost = t2.mact_cost, + res.mact_workload = t2.mact_workload, + res.mact_rate = case when (ifnull(t2.rworkload,0)+ifnull(t2.mact_workload,0)>0) then ifnull(t2.mact_workload,0)*100/(ifnull(t2.rworkload,0)+ifnull(t2.mact_workload,0)) + when t2.children_cnt >0 then t2.total_rate/t2.children_cnt + else 0 end, + res.start_time = ifnull(res.start_time,t2.start_time), + res.end_time = ifnull(t2.end_time,t2.end_time), + res.children_cnt = ifnull( t2.children_cnt, 0 ), + res.ntype=if(t2.children_cnt>0,"1",res.ntype) + WHERE + res.menu_id in + + #{item} + + and res.ntype='1' + + + + + UPDATE xm_task res + left JOIN ( + SELECT + t.pmenu_id, + count(1) as children_cnt, + sum( ifnull( t.mact_cost, 0 ) ) AS act_cost, + sum( ifnull( t.mact_workload, 0 ) ) AS act_workload, + sum( ifnull( t.budget_cost, 0 ) ) AS budget_cost, + sum( ifnull( t.rworkload, if(t.budget_workload>0,(t.budget_workload-ifnull(t.mact_workload,0)),0) ) ) AS rworkload, + + sum( ifnull( t.budget_workload, 0 ) * ifnull( t.rate, 0 ) ) as budget_workload_rate, + sum( ifnull(t.rate,0)) as total_rate, + sum( ifnull( t.budget_workload, 0 )) as budget_workload, + min( t.mact_start_time ) AS act_start_time, + max( t.mact_end_time ) AS act_end_time, + min( t.start_time ) AS start_time, + max( t.end_time ) AS end_time + FROM + xm_task t + WHERE + t.pmenu_id = #{item} + ) t2 ON t2.pmenu_id = res.menu_id + SET + res.budget_workload=ifnull(t2.budget_workload,0), + res.budget_cost=ifnull(t2.budget_cost,0), + res.mact_cost = t2.mact_cost, + res.mact_workload = t2.mact_workload, + res.mact_rate = case when (ifnull(t2.rworkload,0)+ifnull(t2.mact_workload,0)>0) then ifnull(t2.mact_workload,0)*100/(ifnull(t2.rworkload,0)+ifnull(t2.mact_workload,0)) + when t2.children_cnt >0 then t2.total_rate/t2.children_cnt + else 0 end, + res.start_time = ifnull(res.start_time,t2.start_time), + res.end_time = ifnull(t2.end_time,t2.end_time), + res.children_cnt = ifnull( t2.children_cnt, 0 ), + res.ntype=if(t2.children_cnt>0,"1",res.ntype) + WHERE + res.menu_id = #{item} + and res.ntype='1' + +