Browse Source

添加节点类型、标签等

master
陈裕财 4 years ago
parent
commit
c7583c3c50
  1. 36
      xm-core/src/main/java/com/xm/core/ctrl/XmIterationMenuController.java
  2. 82
      xm-core/src/main/java/com/xm/core/ctrl/XmPhaseMenuController.java
  3. 4
      xm-core/src/main/java/com/xm/core/ctrl/XmProductController.java
  4. 4
      xm-core/src/main/java/com/xm/core/ctrl/XmProjectGroupUserController.java
  5. 4
      xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java
  6. 51
      xm-core/src/main/java/com/xm/core/service/XmProjectGroupService.java
  7. 36
      xm-core/src/main/java/com/xm/core/service/XmRecordService.java

36
xm-core/src/main/java/com/xm/core/ctrl/XmIterationMenuController.java

@ -10,6 +10,7 @@ import com.mdp.safe.client.utils.LoginUtils;
import com.xm.core.entity.XmIteration; import com.xm.core.entity.XmIteration;
import com.xm.core.entity.XmMenu; import com.xm.core.entity.XmMenu;
import com.xm.core.service.XmMenuService; import com.xm.core.service.XmMenuService;
import com.xm.core.service.XmProjectGroupService;
import com.xm.core.service.push.XmMenuPushMsgService; import com.xm.core.service.push.XmMenuPushMsgService;
import com.xm.core.vo.XmIterationMenuVo; import com.xm.core.vo.XmIterationMenuVo;
import io.swagger.annotations.*; import io.swagger.annotations.*;
@ -48,6 +49,10 @@ public class XmIterationMenuController {
@Autowired @Autowired
XmMenuService xmMenuService; XmMenuService xmMenuService;
@Autowired
XmProjectGroupService groupService;
@Autowired @Autowired
XmMenuController xmMenuController; XmMenuController xmMenuController;
@ -113,16 +118,13 @@ public class XmIterationMenuController {
if(menus==null || menus.size()==0){ if(menus==null || menus.size()==0){
return ResponseHelper.failed("menus-0","需求已不存在"); return ResponseHelper.failed("menus-0","需求已不存在");
} }
/**
String productId=menus.get(0).getProductId();
if(menus.stream().filter(i->!productId.equals(i.getProductId())).findAny().isPresent()){
return ResponseHelper.failed("productId-0","批量操作的需求必须是同一个产品下的需求。");
}
**/
List<XmMenu> noQxOpList=new ArrayList<>();
List<XmMenu> canOpList=new ArrayList<>();
groupService.calcCanOpMenus(menus,canOpList,noQxOpList);
List<XmMenu> notJoins=new ArrayList<>(); List<XmMenu> notJoins=new ArrayList<>();
List<XmMenu> status7=new ArrayList<>(); List<XmMenu> status7=new ArrayList<>();
List<XmMenu> canDels=new ArrayList<>(); List<XmMenu> canDels=new ArrayList<>();
for (XmMenu menu : menus) {
for (XmMenu menu : canOpList) {
if(!StringUtils.hasText(menu.getIterationId())){ if(!StringUtils.hasText(menu.getIterationId())){
notJoins.add(menu); notJoins.add(menu);
continue; continue;
@ -147,9 +149,9 @@ public class XmIterationMenuController {
msgs.add("有"+notJoins.size()+"个需求未加入迭代,无需移出。【"+notJoins.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】"); msgs.add("有"+notJoins.size()+"个需求未加入迭代,无需移出。【"+notJoins.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】");
} }
if(canDels.size()==0){ if(canDels.size()==0){
tips.setFailureMsg(msgs.stream().collect(Collectors.joining("\n")));
tips.setFailureMsg(msgs.stream().collect(Collectors.joining(";")));
}else { }else {
tips.setOkMsg(msgs.stream().collect(Collectors.joining("\n")));
tips.setOkMsg(msgs.stream().collect(Collectors.joining(";")));
} }
}catch (BizException e) { }catch (BizException e) {
tips=e.getTips(); tips=e.getTips();
@ -177,17 +179,15 @@ public class XmIterationMenuController {
if(menus==null || menus.size()==0){ if(menus==null || menus.size()==0){
return ResponseHelper.failed("menus-0","需求已不存在"); return ResponseHelper.failed("menus-0","需求已不存在");
} }
/**
String productId=menus.get(0).getProductId();
if(menus.stream().filter(i->!productId.equals(i.getProductId())).findAny().isPresent()){
return ResponseHelper.failed("productId-0","批量操作的需求必须是同一个产品下的需求。");
}
**/
List<XmMenu> noQxOpList=new ArrayList<>();
List<XmMenu> canOpList=new ArrayList<>();
groupService.calcCanOpMenus(menus,canOpList,noQxOpList);
List<XmMenu> hadJoin=new ArrayList<>(); List<XmMenu> hadJoin=new ArrayList<>();
List<XmMenu> ntype1=new ArrayList<>(); List<XmMenu> ntype1=new ArrayList<>();
List<XmMenu> status789=new ArrayList<>(); List<XmMenu> status789=new ArrayList<>();
List<XmMenu> canAdds=new ArrayList<>(); List<XmMenu> canAdds=new ArrayList<>();
for (XmMenu menu : menus) {
for (XmMenu menu : canOpList) {
if(StringUtils.hasText(menu.getIterationId())){ if(StringUtils.hasText(menu.getIterationId())){
hadJoin.add(menu); hadJoin.add(menu);
continue; continue;
@ -219,9 +219,9 @@ public class XmIterationMenuController {
msgs.add("有"+ntype1.size()+"个为需求集,不用加入迭代。【"+ntype1.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】"); msgs.add("有"+ntype1.size()+"个为需求集,不用加入迭代。【"+ntype1.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】");
} }
if(canAdds.size()==0){ if(canAdds.size()==0){
tips.setFailureMsg(msgs.stream().collect(Collectors.joining("\n")));
tips.setFailureMsg(msgs.stream().collect(Collectors.joining(";")));
}else { }else {
tips.setOkMsg(msgs.stream().collect(Collectors.joining("\n")));
tips.setOkMsg(msgs.stream().collect(Collectors.joining(";")));
} }
}catch (BizException e) { }catch (BizException e) {

82
xm-core/src/main/java/com/xm/core/ctrl/XmPhaseMenuController.java

@ -3,11 +3,19 @@ package com.xm.core.ctrl;
import com.mdp.core.entity.Tips; import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException; import com.mdp.core.err.BizException;
import com.mdp.core.utils.ResponseHelper; 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.XmMenu; import com.xm.core.entity.XmMenu;
import com.xm.core.entity.XmProduct;
import com.xm.core.entity.XmProjectGroup;
import com.xm.core.service.XmMenuService; import com.xm.core.service.XmMenuService;
import com.xm.core.service.XmProductService;
import com.xm.core.service.XmProjectGroupService;
import com.xm.core.service.XmRecordService;
import com.xm.core.service.push.XmMenuPushMsgService; import com.xm.core.service.push.XmMenuPushMsgService;
import com.xm.core.vo.XmPhaseMenusVo; import com.xm.core.vo.XmPhaseMenusVo;
import com.xm.core.vo.XmPhaseMenusVo; import com.xm.core.vo.XmPhaseMenusVo;
import com.xm.core.vo.XmProjectGroupVo;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
@ -30,7 +38,7 @@ import java.util.stream.Collectors;
* 删除: xm/xmPhaseMenu/del<br> * 删除: xm/xmPhaseMenu/del<br>
* 批量删除: xm/xmPhaseMenu/batchDel<br> * 批量删除: xm/xmPhaseMenu/batchDel<br>
* 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br> * 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br>
* 实体 XmIterationMenu XM.xm_iteration_menu 当前主键(包括多主键): id;
* 实体 XmPhaseMenu XM.xm_iteration_menu 当前主键(包括多主键): id;
***/ ***/
@RestController("xm.core.xmPhaseMenuController") @RestController("xm.core.xmPhaseMenuController")
@RequestMapping(value="/**/xm/core/xmPhaseMenu") @RequestMapping(value="/**/xm/core/xmPhaseMenu")
@ -50,7 +58,17 @@ public class XmPhaseMenuController {
@Autowired @Autowired
XmMenuController xmMenuController; XmMenuController xmMenuController;
@ApiOperation( value = "查询计划定义信息列表",notes="listXmIterationMenu,条件之间是 and关系,模糊查询写法如 {studentName:'%才哥%'}")
@Autowired
XmProjectGroupService groupService;
@Autowired
XmProductService xmProductService;
@Autowired
XmRecordService xmRecordService;
@ApiOperation( value = "查询计划定义信息列表",notes="listXmPhaseMenu,条件之间是 and关系,模糊查询写法如 {studentName:'%才哥%'}")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name="id",value="主键,主键",required=false), @ApiImplicitParam(name="id",value="主键,主键",required=false),
@ApiImplicitParam(name="phaseId",value="对应的计划编号",required=false), @ApiImplicitParam(name="phaseId",value="对应的计划编号",required=false),
@ -74,12 +92,12 @@ public class XmPhaseMenuController {
@ApiOperation( value = "根据主键列表批量删除计划定义信息",notes="batchDelXmIterationMenu,仅需要上传主键字段")
@ApiOperation( value = "根据主键列表批量删除计划定义信息",notes="batchDelXmPhaseMenu,仅需要上传主键字段")
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}") @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
}) })
@RequestMapping(value="/batchDel",method=RequestMethod.POST) @RequestMapping(value="/batchDel",method=RequestMethod.POST)
public Map<String,Object> batchDelXmIterationMenu(@RequestBody XmPhaseMenusVo xmPhaseMenus) {
public Map<String,Object> batchDelXmPhaseMenu(@RequestBody XmPhaseMenusVo xmPhaseMenus) {
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功将需求移出计划"); Tips tips=new Tips("成功将需求移出计划");
try{ try{
@ -91,8 +109,13 @@ public class XmPhaseMenuController {
if(menus==null || menus.size()==0){ if(menus==null || menus.size()==0){
return ResponseHelper.failed("menus-0","需求已不存在"); return ResponseHelper.failed("menus-0","需求已不存在");
} }
List<XmMenu> noQxOpList=new ArrayList<>();
List<XmMenu> canOpList=new ArrayList<>();
groupService.calcCanOpMenus(menus,canOpList,noQxOpList);
/** /**
String productId=menus.get(0).getProductId();
if(menus.stream().filter(i->!productId.equals(i.getProductId())).findAny().isPresent()){ if(menus.stream().filter(i->!productId.equals(i.getProductId())).findAny().isPresent()){
return ResponseHelper.failed("productId-0","批量操作的需求必须是同一个产品下的需求。"); return ResponseHelper.failed("productId-0","批量操作的需求必须是同一个产品下的需求。");
} }
@ -100,8 +123,8 @@ public class XmPhaseMenuController {
List<XmMenu> notJoins=new ArrayList<>(); List<XmMenu> notJoins=new ArrayList<>();
List<XmMenu> status7=new ArrayList<>(); List<XmMenu> status7=new ArrayList<>();
List<XmMenu> canDels=new ArrayList<>(); List<XmMenu> canDels=new ArrayList<>();
for (XmMenu menu : menus) {
if(!StringUtils.hasText(menu.getIterationId())){
for (XmMenu menu : canOpList) {
if(!StringUtils.hasText(menu.getPhaseId())){
notJoins.add(menu); notJoins.add(menu);
continue; continue;
} }
@ -112,22 +135,26 @@ public class XmPhaseMenuController {
canDels.add(menu); canDels.add(menu);
} }
List<String> msgs=new ArrayList<>(); List<String> msgs=new ArrayList<>();
msgs.add("成功将"+canDels.size()+"个需求移出计划");
if(canDels.size()>0){ if(canDels.size()>0){
msgs.add("成功将"+canDels.size()+"个需求移出计划");
xmPhaseMenus.setMenuIds(canDels.stream().map(i->i.getMenuId()).collect(Collectors.toList())); xmPhaseMenus.setMenuIds(canDels.stream().map(i->i.getMenuId()).collect(Collectors.toList()));
xmMenuService.batchUnProductPhase(xmPhaseMenus); xmMenuService.batchUnProductPhase(xmPhaseMenus);
xmRecordService.addXmMenuRecord( canDels,"产品-计划-批量将需求移出","将需求移出计划");
//this.xmMenuPushMsgService.pushMenuRelUsersMsg(user.getBranchId(), xmPhaseMenu.getMenuId(), user.getUserid(), user.getUsername(), user.getUsername()+"将需求【"+xmPhaseMenu.getMenuId()+"】加入计划"); //this.xmMenuPushMsgService.pushMenuRelUsersMsg(user.getBranchId(), xmPhaseMenu.getMenuId(), user.getUserid(), user.getUsername(), user.getUsername()+"将需求【"+xmPhaseMenu.getMenuId()+"】加入计划");
} }
if(noQxOpList.size()>0){
msgs.add("有"+noQxOpList.size()+"个需求无权限操作,【"+noQxOpList.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】");
}
if(status7.size()>0){ if(status7.size()>0){
msgs.add("有"+status7.size()+"个需求状态为已上线,不能移出计划。【"+status7.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】");
msgs.add("有"+status7.size()+"个需求状态为已上线,不能移出计划【"+status7.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】");
} }
if(notJoins.size()>0){ if(notJoins.size()>0){
msgs.add("有"+notJoins.size()+"个需求未加入计划,无需移出【"+notJoins.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】");
msgs.add("有"+notJoins.size()+"个需求未加入计划,无需移出【"+notJoins.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】");
} }
if(canDels.size()==0){ if(canDels.size()==0){
tips.setFailureMsg(msgs.stream().collect(Collectors.joining("\n")));
tips.setFailureMsg(msgs.stream().collect(Collectors.joining(";")));
}else { }else {
tips.setOkMsg(msgs.stream().collect(Collectors.joining("\n")));
tips.setOkMsg(msgs.stream().collect(Collectors.joining(";")));
} }
}catch (BizException e) { }catch (BizException e) {
tips=e.getTips(); tips=e.getTips();
@ -140,7 +167,7 @@ public class XmPhaseMenuController {
return m; return m;
} }
@RequestMapping(value="/batchAdd",method=RequestMethod.POST) @RequestMapping(value="/batchAdd",method=RequestMethod.POST)
public Map<String,Object> batchAddXmIterationMenu(@RequestBody XmPhaseMenusVo xmPhaseMenus) {
public Map<String,Object> batchAddXmPhaseMenu(@RequestBody XmPhaseMenusVo xmPhaseMenus) {
Map<String,Object> m = new HashMap<>(); Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功将需求与计划关联"); Tips tips=new Tips("成功将需求与计划关联");
try{ try{
@ -155,18 +182,16 @@ public class XmPhaseMenuController {
if(menus==null || menus.size()==0){ if(menus==null || menus.size()==0){
return ResponseHelper.failed("menus-0","需求已不存在"); return ResponseHelper.failed("menus-0","需求已不存在");
} }
/**
String productId=menus.get(0).getProductId();
if(menus.stream().filter(i->!productId.equals(i.getProductId())).findAny().isPresent()){
return ResponseHelper.failed("productId-0","批量操作的需求必须是同一个产品下的需求。");
}
**/
List<XmMenu> noQxOpList=new ArrayList<>();
List<XmMenu> canOpList=new ArrayList<>();
groupService.calcCanOpMenus(menus,canOpList,noQxOpList);
List<XmMenu> hadJoin=new ArrayList<>(); List<XmMenu> hadJoin=new ArrayList<>();
List<XmMenu> ntype1=new ArrayList<>(); List<XmMenu> ntype1=new ArrayList<>();
List<XmMenu> status789=new ArrayList<>(); List<XmMenu> status789=new ArrayList<>();
List<XmMenu> canAdds=new ArrayList<>(); List<XmMenu> canAdds=new ArrayList<>();
for (XmMenu menu : menus) {
if(StringUtils.hasText(menu.getIterationId())){
for (XmMenu menu : canOpList) {
if(StringUtils.hasText(menu.getPhaseId())){
hadJoin.add(menu); hadJoin.add(menu);
continue; continue;
} }
@ -181,12 +206,19 @@ public class XmPhaseMenuController {
canAdds.add(menu); canAdds.add(menu);
} }
List<String> msgs=new ArrayList<>(); List<String> msgs=new ArrayList<>();
msgs.add("成功将"+canAdds.size()+"个需求加入计划");
if(canAdds.size()>0){ if(canAdds.size()>0){
msgs.add("成功将"+canAdds.size()+"个需求加入计划");
xmPhaseMenus.setMenuIds(canAdds.stream().map(i->i.getMenuId()).collect(Collectors.toList())); xmPhaseMenus.setMenuIds(canAdds.stream().map(i->i.getMenuId()).collect(Collectors.toList()));
xmMenuService.batchProductPhase(xmPhaseMenus); xmMenuService.batchProductPhase(xmPhaseMenus);
xmRecordService.addXmMenuRecord( canAdds,"产品-计划-批量将需求加入计划","将需求加入计划");
//this.xmMenuPushMsgService.pushMenuRelUsersMsg(user.getBranchId(), xmPhaseMenu.getMenuId(), user.getUserid(), user.getUsername(), user.getUsername()+"将需求【"+xmPhaseMenu.getMenuId()+"】加入计划"); //this.xmMenuPushMsgService.pushMenuRelUsersMsg(user.getBranchId(), xmPhaseMenu.getMenuId(), user.getUserid(), user.getUsername(), user.getUsername()+"将需求【"+xmPhaseMenu.getMenuId()+"】加入计划");
} }
if(noQxOpList.size()>0){
msgs.add("有"+noQxOpList.size()+"个需求无权限操作,【"+noQxOpList.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】");
}
if(status789.size()>0){ if(status789.size()>0){
msgs.add("有"+status789.size()+"个需求状态为已上线、已下线、已删除状态,不能加入计划。【"+status789.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】"); msgs.add("有"+status789.size()+"个需求状态为已上线、已下线、已删除状态,不能加入计划。【"+status789.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】");
} }
@ -194,12 +226,12 @@ public class XmPhaseMenuController {
msgs.add("有"+hadJoin.size()+"个需求已加入计划,不能重复加入。【"+hadJoin.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】"); msgs.add("有"+hadJoin.size()+"个需求已加入计划,不能重复加入。【"+hadJoin.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】");
} }
if(ntype1.size()>0){ if(ntype1.size()>0){
msgs.add("有"+ntype1.size()+"个为需求集,不用加入计划。【"+ntype1.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】");
msgs.add("有"+ntype1.size()+"个需求为需求集,不用加入计划。【"+ntype1.stream().map(i->i.getMenuName()).collect(Collectors.joining(","))+"】");
} }
if(canAdds.size()==0){ if(canAdds.size()==0){
tips.setFailureMsg(msgs.stream().collect(Collectors.joining("\n")));
tips.setFailureMsg(msgs.stream().collect(Collectors.joining(";")));
}else { }else {
tips.setOkMsg(msgs.stream().collect(Collectors.joining("\n")));
tips.setOkMsg(msgs.stream().collect(Collectors.joining(";")));
} }
}catch (BizException e) { }catch (BizException e) {

4
xm-core/src/main/java/com/xm/core/ctrl/XmProductController.java

@ -403,10 +403,10 @@ public class XmProductController {
tips.setOkMsg(msg); tips.setOkMsg(msg);
}else{ }else{
if(errTips.size()>0 && canDelList.size()>0){ if(errTips.size()>0 && canDelList.size()>0){
String errmsg=errTips.stream().map(i->i.getMsg()).collect(Collectors.joining("\n"));
String errmsg=errTips.stream().map(i->i.getMsg()).collect(Collectors.joining(";"));
tips.setOkMsg(msg+"\n"+errmsg); tips.setOkMsg(msg+"\n"+errmsg);
}else{ }else{
tips.setFailureMsg(errTips.stream().map(i->i.getMsg()).collect(Collectors.joining("\n")));
tips.setFailureMsg(errTips.stream().map(i->i.getMsg()).collect(Collectors.joining(";")));
} }
} }
return tips; return tips;

4
xm-core/src/main/java/com/xm/core/ctrl/XmProjectGroupUserController.java

@ -445,9 +445,9 @@ public class XmProjectGroupUserController {
msg.add("以下"+noDelUsers.size()+"个小组用户无权限删除。【"+noDelUsers.stream().collect(Collectors.toSet()).stream().collect(Collectors.joining(","))+"】"); msg.add("以下"+noDelUsers.size()+"个小组用户无权限删除。【"+noDelUsers.stream().collect(Collectors.toSet()).stream().collect(Collectors.joining(","))+"】");
} }
if(canDelUsers.size()!=0){ if(canDelUsers.size()!=0){
tips.setOkMsg(msg.stream().collect(Collectors.joining("\n")));
tips.setOkMsg(msg.stream().collect(Collectors.joining(";")));
}else{ }else{
tips.setFailureMsg(msg.stream().collect(Collectors.joining("\n")));
tips.setFailureMsg(msg.stream().collect(Collectors.joining(";")));
} }
groupUsersMap.forEach((groupId,groupUsers)->{ groupUsersMap.forEach((groupId,groupUsers)->{
List<Map<String,Object>> users=groupUsers.stream().map(i->map("userid",i.getUserid(),"username",i.getUsername())).collect(Collectors.toList()); List<Map<String,Object>> users=groupUsers.stream().map(i->map("userid",i.getUserid(),"username",i.getUsername())).collect(Collectors.toList());

4
xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java

@ -1050,9 +1050,9 @@ public class XmTaskController {
msgs.add("以下"+existsExecuserList.size()+"个任务存在待结算的执行人,不能删除。【"+existsExecuserList.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】"); msgs.add("以下"+existsExecuserList.size()+"个任务存在待结算的执行人,不能删除。【"+existsExecuserList.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】");
} }
if(canDelNodes.size()==0){ if(canDelNodes.size()==0){
tips.setFailureMsg(msgs.stream().collect(Collectors.joining("\n")));
tips.setFailureMsg(msgs.stream().collect(Collectors.joining(";")));
}else{ }else{
tips.setOkMsg(msgs.stream().collect(Collectors.joining("\n")));
tips.setOkMsg(msgs.stream().collect(Collectors.joining(";")));
} }
}catch (BizException e) { }catch (BizException e) {

51
xm-core/src/main/java/com/xm/core/service/XmProjectGroupService.java

@ -55,6 +55,57 @@ public class XmProjectGroupService extends BaseService {
@Autowired @Autowired
XmPushMsgService pushMsgService; XmPushMsgService pushMsgService;
public void calcCanOpMenus(List<XmMenu> menus,List<XmMenu> canOpResult,List<XmMenu> noQxOpResult){
//按产品分组检查权限
Map<String,List<XmMenu>> productMenusMap=new HashMap<>();
for (XmMenu menu : menus) {
List<XmMenu> menus0=productMenusMap.get(menu.getProductId());
if(menus0==null){
menus0=new ArrayList<>();
productMenusMap.put(menu.getProductId(),menus0);
}
menus0.add(menu);
}
User user= LoginUtils.getCurrentUserInfo();
productMenusMap.forEach((key,menuList)->{
XmProduct xmProduct=this.xmProductService.getProductFromCache(key);
if(xmProduct==null||"3".equals(xmProduct.getPstatus())){
noQxOpResult.addAll(menuList);
}else{
if(!this.checkUserIsProductAdm(xmProduct,user.getUserid())){
List<XmProjectGroupVo> groupVoList=this.getProductGroupVoList(xmProduct.getId());
for (XmMenu xmMenu : menuList) {
boolean canOp=false;
if(user.getUserid().equals(xmMenu.getMmUserid())){
canOp=true;
}else{
if(StringUtils.hasText(xmMenu.getMmUserid())){
if(this.checkUserIsOtherUserTeamHeadOrAss(groupVoList,xmMenu.getMmUserid(),user.getUserid())){
canOp=true;
}
}else{
if(this.checkUserIsOtherUserTeamHeadOrAss(groupVoList,user.getUserid(),user.getUserid())){
canOp=true;
}
}
}
if(canOp){
canOpResult.add(xmMenu);
}else{
noQxOpResult.add(xmMenu);
}
}
}else{
canOpResult.addAll(menuList);
}
}
});
}
/** 请在此类添加自定义函数 */ /** 请在此类添加自定义函数 */
public List<XmProjectGroupVo> getProjectGroupVoList(String projectId) { public List<XmProjectGroupVo> getProjectGroupVoList(String projectId) {
List<XmProjectGroupVo> groupVoList=new ArrayList<>(); List<XmProjectGroupVo> groupVoList=new ArrayList<>();

36
xm-core/src/main/java/com/xm/core/service/XmRecordService.java

@ -3,12 +3,16 @@ package com.xm.core.service;
import com.mdp.core.service.BaseService; import com.mdp.core.service.BaseService;
import com.mdp.safe.client.entity.User; import com.mdp.safe.client.entity.User;
import com.mdp.safe.client.utils.LoginUtils; import com.mdp.safe.client.utils.LoginUtils;
import com.xm.core.entity.XmMenu;
import com.xm.core.entity.XmRecord; import com.xm.core.entity.XmRecord;
import org.slf4j.MDC; import org.slf4j.MDC;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br> * 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br>
* 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br> * 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br>
@ -28,7 +32,7 @@ public class XmRecordService extends BaseService {
record.setReqNo(MDC.get("reqNo")); record.setReqNo(MDC.get("reqNo"));
record.setOperUserid(user.getUserid()); record.setOperUserid(user.getUserid());
record.setOperUsername(user.getUsername()); record.setOperUsername(user.getUsername());
record.setBranchId(user.getBranchId());
record.setBranchId(user.getBranchId());
return record; return record;
} }
@ -164,7 +168,37 @@ public class XmRecordService extends BaseService {
record.setObjType("menu"); record.setObjType("menu");
this.insert(record); this.insert(record);
} }
/**
* 针对产品下的需求的所有操作用此方法
* @param productId 产品编号
* @param menus 需求列表
* @param action 操作如 新增任务修改任务信息修改任务进度
* @param remarks 人性化语言描述 ,自动添加 需求名称xxxxx
*/
@Async
public void addXmMenuRecord(List<XmMenu> menus, String action, String remarks) {
User user=LoginUtils.getCurrentUserInfo();
List<XmRecord> records=new ArrayList<>();
for (XmMenu menu : menus) {
XmRecord record=new XmRecord();
record.setId(this.createKey("id"));
record.setOperTime(new Date());
record.setReqNo(MDC.get("reqNo"));
record.setOperUserid(user.getUserid());
record.setOperUsername(user.getUsername());
record.setBranchId(user.getBranchId());
record.setProductId(menu.getProductId());
record.setBizId(menu.getMenuId());
record.setAction(action);
record.setRemarks(remarks+" 需求名称【"+menu.getMenuName()+"】");
record.setObjType("menu");
records.add(record);
}
if(records.size()>0){
super.batchDelete(records);
}
}
/** /**
* 针对产品下的需求的所有操作用此方法 * 针对产品下的需求的所有操作用此方法
* @param productId 产品编号 * @param productId 产品编号

Loading…
Cancel
Save