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 22491d0f..c3d0a62e 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 @@ -4,14 +4,15 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import com.mdp.core.utils.ResponseHelper; import com.mdp.safe.client.entity.User; import com.mdp.safe.client.utils.LoginUtils; import com.xm.core.entity.XmIterationLink; -import com.xm.core.service.XmGroupService; -import com.xm.core.service.XmProductService; -import com.xm.core.service.XmProjectService; +import com.xm.core.entity.XmMenu; +import com.xm.core.entity.XmTask; +import com.xm.core.service.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -31,7 +32,6 @@ import com.mdp.mybatis.PageUtils; import com.mdp.core.entity.Tips; import com.mdp.core.err.BizException; import com.mdp.core.utils.RequestUtils; -import com.xm.core.service.XmIterationLinkService; /** * url编制采用rest风格,如对XM.xm_iteration_product_link 迭代表与产品表的关联关系,一般由迭代管理员将迭代挂接到产品表的操作有增删改查,对应的url分别为:
@@ -54,6 +54,17 @@ public class XmIterationLinkController { @Autowired private XmIterationLinkService xmIterationLinkService; + @Autowired + private XmIterationService xmIterationService; + + + @Autowired + private XmTaskService xmTaskService; + + + @Autowired + private XmMenuService xmMenuService; + @Autowired XmGroupService xmGroupService; @@ -187,13 +198,25 @@ public class XmIterationLinkController { if(!xmGroupService.checkUserIsProductAdm(xmIterationLink.getProId(),user.getUserid())){ return ResponseHelper.failed("no-product-qx","您不是产品管理人员,无权将该产品移出迭代"); }; + //检查是否有需求关联这个迭代,如果有,不允许删除 + List menus= xmMenuService.listTenMenuByIteration(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(","))+"】"); + } }else if("0".equals(xmIterationLink.getLtype())){ if(!xmGroupService.checkUserIsProjectAdm(xmIterationLink.getProId(),user.getUserid())){ return ResponseHelper.failed("no-project-qx","您不是项目管理人员,无权将该项目移出迭代"); }; + //检查是否有任务关联这个迭代,如果有,不允许删除 + List tasks= xmTaskService.listTenTaskByIteration(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(","))+"】"); + } }else{ return ResponseHelper.failed("ltype-not-0|1","请上送正确的关联类型"); } + + xmIterationLinkService.deleteByPk(xmIterationLink); }catch (BizException e) { tips=e.getTips(); diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmProductProjectLinkController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmProductProjectLinkController.java index ed374c83..1f01bcf7 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmProductProjectLinkController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmProductProjectLinkController.java @@ -5,6 +5,7 @@ import java.util.*; import com.mdp.core.utils.ResponseHelper; import com.mdp.safe.client.entity.User; import com.mdp.safe.client.utils.LoginUtils; +import com.xm.core.service.XmGroupService; import org.aspectj.weaver.ResolvedPointcutDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,7 +54,8 @@ public class XmProductProjectLinkController { @Autowired private XmProductProjectLinkService xmProductProjectLinkService; - + @Autowired + XmGroupService xmGroupService; @@ -97,6 +99,11 @@ public class XmProductProjectLinkController { m.put("tips", tips); return m; } + if(!xmGroupService.checkUserIsProductAdm(xmProductProjectLink.getProductId(),user.getUserid())){ + if(!xmGroupService.checkUserIsProjectAdm(xmProductProjectLink.getProjectId(),user.getUserid())){ + return ResponseHelper.failed("not-pm","您不是项目管理人员、也不是产品管理人员,无权关联"); + } + }; xmProductProjectLink.setCtime(new Date()); xmProductProjectLink.setLinkStatus("1"); xmProductProjectLink.setCuserid(user.getUserid()); @@ -123,13 +130,18 @@ public class XmProductProjectLinkController { Map m = new HashMap<>(); Tips tips=new Tips("成功删除一条数据"); try{ - + User user = LoginUtils.getCurrentUserInfo(); if(!StringUtils.hasText(xmProductProjectLink.getProductId())){ return ResponseHelper.failed("productId-0","产品编号不能为空"); } if(!StringUtils.hasText(xmProductProjectLink.getProjectId())){ return ResponseHelper.failed("projectId-0","项目编号不能为空"); } + if(!xmGroupService.checkUserIsProductAdm(xmProductProjectLink.getProductId(),user.getUserid())){ + if(!xmGroupService.checkUserIsProjectAdm(xmProductProjectLink.getProjectId(),user.getUserid())){ + return ResponseHelper.failed("not-pm","您不是项目管理人员、也不是产品管理人员,无权取消关联"); + } + }; xmProductProjectLinkService.deleteByPk(xmProductProjectLink); }catch (BizException e) { tips=e.getTips(); 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 3732729d..9a67982a 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 @@ -280,5 +280,10 @@ public class XmMenuService extends BaseService { public void batchProductPhase(XmPhaseMenusVo xmPhaseMenusVo) { super.update("batchProductPhase",xmPhaseMenusVo); } + + public List listTenMenuByIteration(String iterationId) { + + return super.selectList("listTenMenuByIteration",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 c2c505ed..83b8e1a9 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 @@ -696,5 +696,9 @@ public class XmTaskService extends BaseService { } return tips; } + + public List listTenTaskByIteration(String iterationId) { + return super.selectList("listTenTaskByIteration",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 781c3596..89603808 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,6 +151,10 @@ #{item} + 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 6df7f25c..e07ac674 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 @@ -315,6 +315,12 @@ group by p.id + +