diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmProjectGroupController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmProjectGroupController.java
index 36949c28..8ef7483e 100644
--- a/xm-core/src/main/java/com/xm/core/ctrl/XmProjectGroupController.java
+++ b/xm-core/src/main/java/com/xm/core/ctrl/XmProjectGroupController.java
@@ -29,6 +29,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
/**
* url编制采用rest风格,如对XM.xm_project_group xm_project_group的操作有增删改查,对应的url分别为:
@@ -255,7 +256,6 @@ public class XmProjectGroupController {
return m;
}
- /**
@ApiOperation( value = "删除一条xm_project_group信息",notes="delXmProjectGroup,仅需要上传主键字段")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}")
@@ -265,7 +265,44 @@ public class XmProjectGroupController {
Map m = new HashMap<>();
Tips tips=new Tips("成功删除一条数据");
try{
- xmProjectGroupService.deleteByPk(xmProjectGroup);
+ User u = LoginUtils.getCurrentUserInfo();
+ if(!StringUtils.hasText(xmProjectGroup.getId())){
+ return ResponseHelper.failed("id-0","请上送小组编号");
+ }
+ XmProjectGroup groupDb=this.xmProjectGroupService.selectOneObject(xmProjectGroup);
+ if(groupDb==null){
+ return ResponseHelper.failed("data-0","小组已不存在");
+ }
+ if(!"1".equals(groupDb.getPgClass())) {
+ if(StringUtils.hasText(groupDb.getProjectId())){
+ XmProject project = xmProjectService.getProjectFromCache(xmProjectGroup.getProjectId());
+ if(project==null){
+ return ResponseHelper.failed("project-0","项目已不存在");
+ }
+ Map projectAdmMap=xmProjectGroupService.getProjectAdmUsers(project);
+ if (projectAdmMap.containsKey(u.getUserid())) {
+ return ResponseHelper.failed("not-project-adm","您不是项目管理人员,不能删除小组。项目级助理以上人员可以删除小组。");
+ }
+ }
+
+
+ }else{
+ if(!StringUtils.hasText(xmProjectGroup.getProductId())){
+ XmProduct product = xmProductService.selectOneObject(new XmProduct(xmProjectGroup.getProductId()));
+ if(product==null){
+ return ResponseHelper.failed("product-0","产品已不存在");
+ }
+ Map productAdmMap=xmProjectGroupService.getProductAdmUsers(product);
+ if (productAdmMap.containsKey(u.getUserid())) {
+ return ResponseHelper.failed("not-product-adm","您不是产品管理人员,不能删除小组。产品级助理及以上人员可以删除小组。");
+ }
+ }
+
+ }
+ if(groupDb.getChildrenCnt()!=null && groupDb.getChildrenCnt()>0){
+ return ResponseHelper.failed("childrenCnt-no-0","该小组有下级小组,不能删除。请先删除下级小组。");
+ }
+ xmProjectGroupService.doDeleteByPk(xmProjectGroup,groupDb);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
@@ -276,7 +313,6 @@ public class XmProjectGroupController {
m.put("tips", tips);
return m;
}
- */
/**
@ApiOperation( value = "根据主键修改一条xm_project_group信息",notes="editXmProjectGroup")
@@ -303,8 +339,7 @@ public class XmProjectGroupController {
*/
-
- /**
+
@ApiOperation( value = "根据主键列表批量删除xm_project_group信息",notes="batchDelXmProjectGroup,仅需要上传主键字段")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
@@ -313,8 +348,50 @@ public class XmProjectGroupController {
public Map batchDelXmProjectGroup(@RequestBody List xmProjectGroups) {
Map m = new HashMap<>();
Tips tips=new Tips("成功删除"+xmProjectGroups.size()+"条数据");
- try{
- xmProjectGroupService.batchDelete(xmProjectGroups);
+ try{
+ List groupsDb=this.xmProjectGroupService.selectListByIds(xmProjectGroups.stream().map(i->i.getId()).collect(Collectors.toList()));
+ if(groupsDb==null || groupsDb.size()==0){
+ return ResponseHelper.failed("data-0","要删除的小组已不存在");
+ }
+ User user=LoginUtils.getCurrentUserInfo();
+ XmProjectGroup groupDb=groupsDb.get(0);
+ String pgClass=groupDb.getPgClass();
+ String id=groupDb.getProductId();
+
+ List hasChildNodes=new ArrayList<>();
+ List noQxs=new ArrayList<>();
+ List canDelNodes=new ArrayList<>();
+ if("0".equals(pgClass)){
+ id=groupDb.getProjectId();
+ XmProject prject=this.xmProjectService.getProjectFromCache(id);
+ Map projectAdmMap=xmProjectGroupService.getProjectAdmUsers(prject);
+ if (projectAdmMap.containsKey(user.getUserid())) {
+ return ResponseHelper.failed("not-project-adm","您不是项目管理人员,不能删除小组。项目级助理以上人员可以删除小组。");
+ }
+ }else{
+ id=groupDb.getProductId();
+ XmProduct product=this.xmProductService.selectOneObject(new XmProduct(id));
+ Map productAdmMap=xmProjectGroupService.getProductAdmUsers(product);
+ if (productAdmMap.containsKey(user.getUserid())) {
+ return ResponseHelper.failed("not-product-adm","您不是产品管理人员,不能删除小组。产品级助理以上人员可以删除小组。");
+ }
+ }
+ if(canDelNodes.size()>0){
+ for (XmProjectGroup canDelNode : canDelNodes) {
+ if(!xmProjectGroupService.checkCanDelAllChild(canDelNode,canDelNodes)){
+ hasChildNodes.add(canDelNode);
+ }else{
+ canDelNodes.add(canDelNode);
+ }
+ }
+ }
+ if(canDelNodes.size()>0){
+ if("1".equals(pgClass)){
+ xmProjectGroupService.doBatchDeleteProductGroups(canDelNodes);
+ }else {
+ xmProjectGroupService.doBatchDeleteProjectGroups(canDelNodes);
+ }
+ }
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
@@ -324,6 +401,5 @@ public class XmProjectGroupController {
}
m.put("tips", tips);
return m;
- }
- */
+ }
}
diff --git a/xm-core/src/main/java/com/xm/core/service/XmProjectGroupService.java b/xm-core/src/main/java/com/xm/core/service/XmProjectGroupService.java
index 2888de1c..2a4b69d2 100644
--- a/xm-core/src/main/java/com/xm/core/service/XmProjectGroupService.java
+++ b/xm-core/src/main/java/com/xm/core/service/XmProjectGroupService.java
@@ -752,5 +752,27 @@ public class XmProjectGroupService extends BaseService {
return true;
}
+
+ @Transactional
+ public void doDeleteByPk(XmProjectGroup xmProjectGroup,XmProjectGroup groupDb) {
+ super.deleteByPk(xmProjectGroup);
+ this.sumParents(groupDb);
+ }
+
+ public List selectListByIds(List ids) {
+ return super.selectList("selectListByIds",ids);
+ }
+
+ @Transactional
+ public void doBatchDeleteProductGroups(List canDelNodes) {
+ super.batchDelete(canDelNodes);
+ batchSumParents(canDelNodes);
+ }
+
+ @Transactional
+ public void doBatchDeleteProjectGroups(List canDelNodes) {
+ super.batchDelete(canDelNodes);
+ batchSumParents(canDelNodes);
+ }
}