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..894d32ad 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_menu 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_menu 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_menu 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' + +