|
|
@ -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) { |
|
|
|