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