From dce632a5aef6e11788162a3f7c04ff63a6a7059a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Thu, 31 Mar 2022 06:00:03 +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 --- .../core/ctrl/XmTaskWorkloadController.java | 5 +++ .../com/xm/core/service/XmMenuService.java | 15 +++++++ .../mapper/xm/core/dao/XmMenuMapper.xml | 41 +++++++++++++++++++ 3 files changed, 61 insertions(+) diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java index e24d8309..0e6a8033 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java @@ -151,6 +151,8 @@ public class XmTaskWorkloadController { xmTaskWorkload.setWstatus("0"); xmTaskWorkload.setProjectId(xmTaskDb.getProjectId()); xmTaskWorkloadService.insert(xmTaskWorkload); + xmMenuService.calcWorkloadByRecord(xmTaskDb.getMenuId()); + this.xmTaskService.calcWorkloadByRecord(xmTaskDb.getId()); this.xmTaskService.sumParents(xmTaskDb); m.put("data",xmTaskWorkload); @@ -200,6 +202,8 @@ public class XmTaskWorkloadController { } xmTaskWorkloadService.updateSomeFieldByPk(xmTaskWorkload); this.xmTaskService.sumParents(xmTaskDb); + xmMenuService.calcWorkloadByRecord(xmTaskDb.getMenuId()); + this.xmTaskService.calcWorkloadByRecord(xmTaskWorkload.getTaskId()); m.put("data",xmTaskWorkload); @@ -285,6 +289,7 @@ public class XmTaskWorkloadController { this.xmTaskService.calcWorkloadByRecord(canDelTaskMap.keySet().stream().collect(Collectors.toList())); this.xmTaskService.batchSumParents(canDelTaskMap.values().stream().collect(Collectors.toList())); + xmMenuService.calcWorkloadByRecord(canDelTaskMap.values().stream().filter(i->StringUtils.hasText(i.getMenuId())).collect(Collectors.toList()).stream().map(i->i.getMenuId()).collect(Collectors.toSet()).stream().collect(Collectors.toList())); msgs.add("成功删除"+canDel.size()+"条工时单据。"); } if(state1Ndel.size()>0){ diff --git a/xm-core/src/main/java/com/xm/core/service/XmMenuService.java b/xm-core/src/main/java/com/xm/core/service/XmMenuService.java index ef8dd0c1..156076bf 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmMenuService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmMenuService.java @@ -309,5 +309,20 @@ public class XmMenuService extends BaseService { public List selectListByIdsWithsChildrenCnt(List ids) { return super.selectList("selectListByIdsWithsChildrenCnt",ids); } + public void calcWorkloadByRecord(String menuId) { + if(!StringUtils.hasText(menuId)){ + return; + } + List ids=new ArrayList<>(); + ids.add(menuId); + calcWorkloadByRecord(ids); + } + public void calcWorkloadByRecord(List menuIds) { + if(menuIds==null || menuIds.size()<=0){ + return; + } + menuIds=menuIds.stream().collect(Collectors.toSet()).stream().collect(Collectors.toList()); + super.update("calcWorkloadByRecord",menuIds); + } } 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..fd4865b0 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,47 @@ ( #{item}) + + update xm_menu res left join (select t.menu_id, + sum(ifnull(t.budget_workload,0)) as budget_workload, + sum(ifnull(t.budget_cost,0)) as budget_cost, + sum(ifnull(t.act_workload,0)) as act_workload, + sum(ifnull(t.act_cost,0)) as act_cost, + sum(ifnull(t.rworkload,ifnull(t.budget_workload,0)-ifnull(t.act_workload,0))) as rworkload + from xm_task t where t.menu_id in + + ( #{item}) + + and t.ntype='0' + group by menu_id + ) t on t.menu_id=res.menu_id + left join ( + select q.menu_id, + sum(ifnull(q.budget_workload,0)) as budget_workload, + sum(ifnull(q.budget_cost,0)) as budget_cost, + sum(ifnull(q.act_workload,0)) as act_workload, + sum(ifnull(q.act_cost,0)) as act_cost, + sum(ifnull(q.rworkload,ifnull(q.budget_workload,0)-ifnull(q.act_workload,0))) as rworkload + + from xm_question q where q.menu_id in + + ( #{item}) + + group by q.menu_id + ) as q on q.menu_id=res.menu_id + set res.budget_workload=ifnull(t.budget_workload,0)+ifnull(q.budget_workload,0), + set res.budget_cost=ifnull(t.budget_cost,0)+ifnull(q.budget_cost,0), + set res.mact_workload=ifnull(t.act_workload,0)+ifnull(q.act_workload,0), + set res.mact_cost=ifnull(t.act_cost,0)+ifnull(q.act_cost,0), + set res.rworkload=ifnull(t.rworkload,0)+ifnull(q.rworkload,0), + set res.mact_rate=case when (ifnull(t.rworkload,0)+ifnull(q.rworkload,0)+ifnull(t.act_workload,0)+ifnull(q.act_workload,0))!=0 then (ifnull(t.act_workload,0)+ifnull(q.act_workload,0))*100/(ifnull(t.rworkload,0)+ifnull(q.rworkload,0)+ifnull(t.act_workload,0)+ifnull(q.act_workload,0)) + else 0 end + where (res.menu_id) in + + ( #{item}) + + and res.dclass='3' +