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'
+
+