From 0dbe7c95db9936c276e93de750c71785c56e67b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sun, 20 Feb 2022 03:25:11 +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 --- .../com/xm/core/service/XmTaskService.java | 21 ++++++++++++ .../mapper/xm/core/dao/XmTaskMapper.xml | 34 ++++++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/xm-core/src/main/java/com/xm/core/service/XmTaskService.java b/xm-core/src/main/java/com/xm/core/service/XmTaskService.java index d4268385..a9c4a8f3 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmTaskService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmTaskService.java @@ -510,6 +510,27 @@ public class XmTaskService extends BaseService { } return tips; } + @Transactional + public void sumParents(XmTask xmTaskDb){ + + String pidPaths=xmTaskDb.getPidPaths(); + if(!StringUtils.hasText(pidPaths)){ + return; + } + if(!pidPaths.startsWith("0,")){ + return; + } + pidPaths=pidPaths.substring(2); + if(!StringUtils.hasText(pidPaths)){ + return; + } + String[] pidPathss=pidPaths.split(","); + List pidPathsList=new ArrayList<>(); + for (int i = pidPathss.length-1; i >=0; i--) { + pidPathsList.add(pidPathss[i]); + } + super.update("sumParents",pidPathsList ); + } private List getParentList(XmTask currNode){ List parentList=new ArrayList<>(); diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml index 0a2c766d..e64624b6 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml @@ -183,7 +183,39 @@ - + + + UPDATE xm_task res + LEFT JOIN ( + SELECT + t.parent_taskid, + sum( ifnull( t.budget_cost, 0 ) ) AS budget_cost, + sum( ifnull( t.budget_workload, 0 ) ) AS budget_workload, + sum( ifnull( t.act_cost, 0 ) ) AS act_cost, + sum( ifnull( t.act_workload, 0 ) ) AS act_workload, + sum( ifnull( t.budget_workload, 0 ) * ifnull( t.rate, 0 ) )/100 / sum( ifnull( t.budget_workload, 0.00001 ) ) AS rate, + min( t.start_time ) AS start_time, + max( t.end_time ) AS end_time, + min( t.act_start_time ) AS act_start_time, + max( t.act_end_time ) AS act_end_time + FROM + xm_task t + WHERE + t.parent_taskid = #{item} + ) t2 ON t2.parent_taskid = res.id + SET res.budget_cost = t2.budget_cost, + res.budget_workload = t2.budget_workload, + res.act_cost = t2.act_cost, + res.act_workload = t2.act_workload, + res.rate = t2.rate, + res.start_time = t2.start_time, + res.end_time = t2.end_time, + res.act_start_time = t2.act_start_time, + res.act_end_time = t2.act_end_time + WHERE + res.id = #{item} and res.ntype='1' + +