From 8d9fd1da7c07c3b393428d8e2b5ff23b4f1e0851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Fri, 11 Mar 2022 18:45: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 --- .../core/ctrl/XmIterationLinkController.java | 4 +- .../com/xm/core/service/XmMenuService.java | 205 +++++++++--------- .../com/xm/core/service/XmTaskService.java | 11 +- .../mapper/xm/core/dao/XmMenuMapper.xml | 4 +- .../mapper/xm/core/dao/XmTaskMapper.xml | 8 +- 5 files changed, 122 insertions(+), 110 deletions(-) diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmIterationLinkController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmIterationLinkController.java index 0e711b29..980f2396 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmIterationLinkController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmIterationLinkController.java @@ -199,7 +199,7 @@ public class XmIterationLinkController { return ResponseHelper.failed("no-product-qx","您不是产品管理人员,无权将该产品移出迭代"); }; //检查是否有需求关联这个迭代,如果有,不允许删除 - List menus= xmMenuService.listTenMenuByIterationId(xmIterationLink.getIterationId()); + List menus= xmMenuService.listTenMenuByProductIdAndIterationId(xmIterationLink.getProId(),xmIterationLink.getIterationId()); if(menus!=null && menus.size()>0){ return ResponseHelper.failed("menus-not-0","存在至少"+menus.size()+"个需求与迭代关联,不能移出.关联需求【"+menus.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】"); } @@ -208,7 +208,7 @@ public class XmIterationLinkController { return ResponseHelper.failed("no-project-qx","您不是项目管理人员,无权将该项目移出迭代"); }; //检查是否有任务关联这个迭代,如果有,不允许删除 - List tasks= xmTaskService.listTenTaskByIterationId(xmIterationLink.getIterationId()); + List tasks= xmTaskService.listTenTaskByProjectIdAndIterationId(xmIterationLink.getProId(),xmIterationLink.getIterationId()); if(tasks!=null && tasks.size()>0){ return ResponseHelper.failed("tasks-not-0","存在至少"+tasks.size()+"个任务与迭代关联,不能移出.关联任务【"+tasks.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】"); } 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 8194d622..e226cf32 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 @@ -28,14 +28,17 @@ public class XmMenuService extends BaseService { /** * 连同功能关联的项目需求计划数据一起带出 + * * @param xmMenu * @return */ public List> selectListMapByWhereWithPlan(Map xmMenu) { return this.selectList("selectListMapByWhereWithPlan", xmMenu); } + /** * 连同功能关联的状态数据一起带出 + * * @param xmMenu * @return */ @@ -46,6 +49,7 @@ public class XmMenuService extends BaseService { /** * 连同功能关联的产品计划一并带出 + * * @param xmMenu * @return */ @@ -55,89 +59,91 @@ public class XmMenuService extends BaseService { } - - public void updateMenuChildrenCntByMenuId(String menuId){ - super.update("updateMenuChildrenCntByMenuId",menuId); + public void updateMenuChildrenCntByMenuId(String menuId) { + super.update("updateMenuChildrenCntByMenuId", menuId); } + public void updateChildrenCntByIds(List ids) { - super.update("updateChildrenCntByIds",ids); + super.update("updateChildrenCntByIds", ids); } + @Transactional public void batchInsertOrUpdate(List xmMenus) { - List addList=new ArrayList<>(); - List editList=new ArrayList<>(); - List xmMenusDb=this.selectListByIds(xmMenus.stream().map(i->i.getMenuId()).collect(Collectors.toList())); - editList=xmMenus.stream().filter(i->xmMenusDb.stream().filter(k->k.getMenuId().equals(i.getMenuId())).findAny().isPresent()).collect(Collectors.toList()); - addList=xmMenus.stream().filter(i->!xmMenusDb.stream().filter(k->k.getMenuId().equals(i.getMenuId())).findAny().isPresent()).collect(Collectors.toList()); - - List xmMenuList=new ArrayList<>(); - if(addList.size()>0) { - xmMenuList.addAll(addList.stream().map(i->(XmMenu)i).collect(Collectors.toList())); + List addList = new ArrayList<>(); + List editList = new ArrayList<>(); + List xmMenusDb = this.selectListByIds(xmMenus.stream().map(i -> i.getMenuId()).collect(Collectors.toList())); + editList = xmMenus.stream().filter(i -> xmMenusDb.stream().filter(k -> k.getMenuId().equals(i.getMenuId())).findAny().isPresent()).collect(Collectors.toList()); + addList = xmMenus.stream().filter(i -> !xmMenusDb.stream().filter(k -> k.getMenuId().equals(i.getMenuId())).findAny().isPresent()).collect(Collectors.toList()); + + List xmMenuList = new ArrayList<>(); + if (addList.size() > 0) { + xmMenuList.addAll(addList.stream().map(i -> (XmMenu) i).collect(Collectors.toList())); this.batchInsert(addList); - this.xmMenuStateService.batchLoadXmMenuToState(xmMenus.get(0).getProductId()); + this.xmMenuStateService.batchLoadXmMenuToState(xmMenus.get(0).getProductId()); } - if(editList.size()>0) { - xmMenuList.addAll(editList.stream().map(i->(XmMenu)i).collect(Collectors.toList())); + if (editList.size() > 0) { + xmMenuList.addAll(editList.stream().map(i -> (XmMenu) i).collect(Collectors.toList())); this.batchUpdate(editList); } - if(xmMenuList.size()>0){ + if (xmMenuList.size() > 0) { this.xmMenuStateService.batchSumParents(xmMenuList); } } - public List< Map> queryTaskUsersByMenuId(String menuId) { - return this.selectList("queryTaskUsersByMenuId", menuId); + + public List> queryTaskUsersByMenuId(String menuId) { + return this.selectList("queryTaskUsersByMenuId", menuId); } - public List selectExistIterationMenus(List menuIds) { + public List selectExistIterationMenus(List menuIds) { - return this.selectList("selectExistIterationMenus",map("menuIds",menuIds)); - } + return this.selectList("selectExistIterationMenus", map("menuIds", menuIds)); + } public List parentIdPathsCalcBeforeSave(List nodes) { - List noExistsList=nodes.stream().filter(i->!nodes.stream().filter(k->k.getMenuId().equals(i.getPmenuId())).findAny().isPresent()).collect(Collectors.toList()); - noExistsList=noExistsList.stream().filter(i->StringUtils.hasText(i.getPmenuId())).collect(Collectors.toList()); - Map hadCalcMap=new HashMap<>(); + List noExistsList = nodes.stream().filter(i -> !nodes.stream().filter(k -> k.getMenuId().equals(i.getPmenuId())).findAny().isPresent()).collect(Collectors.toList()); + noExistsList = noExistsList.stream().filter(i -> StringUtils.hasText(i.getPmenuId())).collect(Collectors.toList()); + Map hadCalcMap = new HashMap<>(); for (XmMenu node : noExistsList) { - if(hadCalcMap.containsKey(node.getPmenuId())){ - String idPaths=hadCalcMap.get(node.getPmenuId()); - node.setPidPaths(idPaths+node.getMenuId()+","); - }else{ + if (hadCalcMap.containsKey(node.getPmenuId())) { + String idPaths = hadCalcMap.get(node.getPmenuId()); + node.setPidPaths(idPaths + node.getMenuId() + ","); + } else { this.parentIdPathsCalcBeforeSave(node); - String idPaths=node.getPidPaths(); - idPaths=idPaths.substring(0,idPaths.length()-node.getMenuId().length()-1); - hadCalcMap.put(node.getPmenuId(),idPaths); + String idPaths = node.getPidPaths(); + idPaths = idPaths.substring(0, idPaths.length() - node.getMenuId().length() - 1); + hadCalcMap.put(node.getPmenuId(), idPaths); } } for (XmMenu node : nodes) { - if(!StringUtils.hasText(node.getPmenuId())){ - node.setPidPaths("0,"+node.getMenuId()+","); + if (!StringUtils.hasText(node.getPmenuId())) { + node.setPidPaths("0," + node.getMenuId() + ","); continue; } - if(hadCalcMap.containsKey(node.getPmenuId())){ - String idPaths=hadCalcMap.get(node.getPmenuId()); - node.setPidPaths(idPaths+node.getMenuId()+","); - }else{ - List pnodeList=this.getParentList(node,nodes); - if(pnodeList==null ||pnodeList.size()==0){ - node.setPidPaths("0,"+node.getMenuId()+","); + if (hadCalcMap.containsKey(node.getPmenuId())) { + String idPaths = hadCalcMap.get(node.getPmenuId()); + node.setPidPaths(idPaths + node.getMenuId() + ","); + } else { + List pnodeList = this.getParentList(node, nodes); + if (pnodeList == null || pnodeList.size() == 0) { + node.setPidPaths("0," + node.getMenuId() + ","); node.setPmenuId(null); continue; } - XmMenu topParent=pnodeList.get(pnodeList.size()-1); - String idPath="0,"; - if(hadCalcMap.containsKey(topParent.getPmenuId())){ - idPath=hadCalcMap.get(topParent.getPmenuId()); + XmMenu topParent = pnodeList.get(pnodeList.size() - 1); + String idPath = "0,"; + if (hadCalcMap.containsKey(topParent.getPmenuId())) { + idPath = hadCalcMap.get(topParent.getPmenuId()); } for (int i = pnodeList.size() - 1; i >= 0; i--) { - idPath=idPath+pnodeList.get(i).getMenuId()+","; + idPath = idPath + pnodeList.get(i).getMenuId() + ","; } - node.setPidPaths(idPath+node.getMenuId()+","); + node.setPidPaths(idPath + node.getMenuId() + ","); } } for (XmMenu node : nodes) { - String idPaths=node.getPidPaths(); - String[] idpss=idPaths.split(","); - node.setLvl(idpss.length-1); + String idPaths = node.getPidPaths(); + String[] idpss = idPaths.split(","); + node.setLvl(idpss.length - 1); } return nodes; } @@ -149,73 +155,73 @@ public class XmMenuService extends BaseService { currNode.setLvl(1); return tips; } else { - List parentList=this.getParentList(currNode); - if(parentList==null || parentList.size()==0){ - currNode.setPidPaths("0,"+currNode.getMenuId()+","); + List parentList = this.getParentList(currNode); + if (parentList == null || parentList.size() == 0) { + currNode.setPidPaths("0," + currNode.getMenuId() + ","); currNode.setPmenuId(null); currNode.setLvl(1); return tips; } - String idPath="0,"; + String idPath = "0,"; for (int i = parentList.size() - 1; i >= 0; i--) { - idPath=idPath+parentList.get(i).getMenuId()+","; + idPath = idPath + parentList.get(i).getMenuId() + ","; } - currNode.setPidPaths(idPath+currNode.getMenuId()+","); + currNode.setPidPaths(idPath + currNode.getMenuId() + ","); - String idPaths=currNode.getPidPaths(); - String[] idpss=idPaths.split(","); - currNode.setLvl(idpss.length-1); + String idPaths = currNode.getPidPaths(); + String[] idpss = idPaths.split(","); + currNode.setLvl(idpss.length - 1); } return tips; } - private List getParentList(XmMenu currNode){ - List parentList=new ArrayList<>(); - XmMenu current=currNode; - while (true){ - if(!StringUtils.hasText(current.getPmenuId()) || "0".equals(current.getPmenuId())||current.getMenuId().equals(current.getPmenuId())){ - return parentList; + private List getParentList(XmMenu currNode) { + List parentList = new ArrayList<>(); + XmMenu current = currNode; + while (true) { + if (!StringUtils.hasText(current.getPmenuId()) || "0".equals(current.getPmenuId()) || current.getMenuId().equals(current.getPmenuId())) { + return parentList; } - XmMenu query=new XmMenu(); + XmMenu query = new XmMenu(); query.setMenuId(current.getPmenuId()); - current=this.selectOneObject(query); - if(current==null){ + current = this.selectOneObject(query); + if (current == null) { return parentList; } parentList.add(current); } } - private List getParentList(XmMenu currNode,List nodes){ - List parentList=new ArrayList<>(); - XmMenu current=currNode; - while (true){ - if(!StringUtils.hasText(current.getPmenuId()) || "0".equals(current.getPmenuId())||current.getMenuId().equals(current.getPmenuId())){ + private List getParentList(XmMenu currNode, List nodes) { + List parentList = new ArrayList<>(); + XmMenu current = currNode; + while (true) { + if (!StringUtils.hasText(current.getPmenuId()) || "0".equals(current.getPmenuId()) || current.getMenuId().equals(current.getPmenuId())) { return parentList; } - XmMenu query=new XmMenu(); + XmMenu query = new XmMenu(); query.setMenuId(current.getPmenuId()); - Optional optional=nodes.stream().filter(i->i.getMenuId().equals(query.getMenuId())).findFirst(); - if(optional.isPresent()){ - current=optional.get(); + Optional optional = nodes.stream().filter(i -> i.getMenuId().equals(query.getMenuId())).findFirst(); + if (optional.isPresent()) { + current = optional.get(); parentList.add(current); - }else{ + } else { return parentList; } } } - @Transactional - public int insert(XmMenu xmMenu) { - int i= super.insert(xmMenu); + @Transactional + public int insert(XmMenu xmMenu) { + int i = super.insert(xmMenu); xmMenuStateService.batchLoadXmMenuToState(xmMenu.getProductId()); xmMenuStateService.sumParents(xmMenu); return i; } @Transactional - public int updateByPk(XmMenu xmMenu) { - int i= super.updateByPk(xmMenu); + public int updateByPk(XmMenu xmMenu) { + int i = super.updateByPk(xmMenu); return i; } @@ -232,27 +238,29 @@ public class XmMenuService extends BaseService { super.batchDelete(canDelList); this.xmMenuStateService.batchSumParents(canDelList); } + @Transactional public void doBatchDeleteByProductIds(List productIds) { - super.delete("doBatchDeleteByProductIds",productIds); + super.delete("doBatchDeleteByProductIds", productIds); } /** * 检查是否能删除干净所有儿子孙子节点。 - * @param delNode 当前删除节点 + * + * @param delNode 当前删除节点 * @param delNodes 本批量需要删除的全部节点 * @return */ public boolean checkCanDelAllChild(XmMenu delNode, List delNodes) { - if(delNode==null){ + if (delNode == null) { return true; } - if(delNode.getChildrenCnt()==null||delNode.getChildrenCnt()<=0){ + if (delNode.getChildrenCnt() == null || delNode.getChildrenCnt() <= 0) { return true; } - List childList=delNodes.stream().filter(i->delNode.getMenuId().equals(i.getPmenuId())).collect(Collectors.toList()); - if(childList==null||childList.size() childList = delNodes.stream().filter(i -> delNode.getMenuId().equals(i.getPmenuId())).collect(Collectors.toList()); + if (childList == null || childList.size() < delNode.getChildrenCnt()) { return false; } for (XmMenu n : childList) { @@ -264,26 +272,27 @@ public class XmMenuService extends BaseService { } - public void batchUnIteration(XmIterationMenuVo xmIterationMenus) { - super.update("batchUnIteration",xmIterationMenus); - } + public void batchUnIteration(XmIterationMenuVo xmIterationMenus) { + super.update("batchUnIteration", xmIterationMenus); + } public void batchIteration(XmIterationMenuVo xmIterationMenus) { - super.update("batchIteration",xmIterationMenus); + super.update("batchIteration", xmIterationMenus); } public void batchUnProductPhase(XmPhaseMenusVo xmPhaseMenusVo) { - super.update("batchUnProductPhase",xmPhaseMenusVo); + super.update("batchUnProductPhase", xmPhaseMenusVo); } public void batchProductPhase(XmPhaseMenusVo xmPhaseMenusVo) { - super.update("batchProductPhase",xmPhaseMenusVo); + super.update("batchProductPhase", xmPhaseMenusVo); } - public List listTenMenuByIterationId(String iterationId) { + public List listTenMenuByProductIdAndIterationId(String productId, String iterationId) { + + return super.selectList("listTenMenuByProductIdAndIterationId", map("productId", productId, "iterationId", iterationId)); + } - return super.selectList("listTenMenuByIterationId",iterationId); - } } 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 5e47796b..3a1e5a10 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 @@ -697,12 +697,15 @@ public class XmTaskService extends BaseService { return tips; } - public List listTenTaskByIterationId(String iterationId) { - return super.selectList("listTenTaskByIterationId",iterationId); + public List listTenTaskByProjectIdAndProductId(String projectId,String productId) { + + return super.selectList("listTenTaskByProductId",map("projectId", projectId, "productId", productId)); } - public List listTenTaskByProductId(String productId) { - return super.selectList("listTenTaskByProductId",productId); + + public List listTenTaskByProjectIdAndIterationId(String projectId, String iterationId) { + + return super.selectList("listTenTaskByProjectIdAndIterationId", map("projectId", projectId, "iterationId", iterationId)); } } 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 dd2810cd..f0415789 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 @@ -151,8 +151,8 @@ #{item} - + select menu_name from xm_menu res where res.product_id=#{productId} and res.iteration_id=#{iterationId} limit 10 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 e27fc61f..96394247 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 @@ -316,14 +316,14 @@ group by p.id - + select name from xm_task res where res.project_id=#{projectId} and exists(select 1 from xm_menu m where m.menu_id=res.menu_id and m.iteration_id=#{iterationId} and m.ntype='0') and res.ntype='0' limit 10 - + select name from xm_task res where res.project_id=#{projectId} and exists(select 1 from xm_menu m where m.menu_id=res.menu_id and m.product_id=#{productId} and m.ntype='0') and res.ntype='0' limit 10