Browse Source

添加节点类型、标签等

master
陈裕财 4 years ago
parent
commit
e2b7a5f0ec
  1. 35
      xm-core/src/main/java/com/xm/core/ctrl/XmProjectGroupController.java
  2. 24
      xm-core/src/main/java/com/xm/core/entity/XmProject.java
  3. 303
      xm-core/src/main/java/com/xm/core/service/XmProjectGroupService.java

35
xm-core/src/main/java/com/xm/core/ctrl/XmProjectGroupController.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.mdp.core.utils.RequestUtils;
import com.mdp.core.utils.ResponseHelper;
import com.mdp.mybatis.PageUtils;
import com.mdp.qx.HasQx;
import com.mdp.safe.client.entity.User;
@ -63,22 +64,38 @@ public class XmProjectGroupController {
})
@HasQx(value = "xm_core_xmProjectGroup_updateGroup",name = "批量更新修改项目团队信息",categoryId = "admin-xm",categoryName = "管理端-项目管理系统")
@RequestMapping(value="/updateGroup",method=RequestMethod.POST)
public Map<String,Object> updateGroup(@RequestBody List<XmProjectGroupVo> xmProjectGroupVo) {
public Map<String,Object> updateGroup(@RequestBody XmProjectGroup xmProjectGroup) {
Tips tips=new Tips("团队更新成功");
Map<String,Object> m = new HashMap<>();
if(xmProjectGroupVo==null || xmProjectGroupVo.size()==0){
tips.setFailureMsg("团队列表不能为空");
if(xmProjectGroup==null){
tips.setFailureMsg("团队信息不能为空");
m.put("tips", tips);
return m;
}
String projectId = xmProjectGroupVo.get(0).getProjectId();
if(!StringUtils.hasText(projectId)){
tips.setFailureMsg("项目编号projectId不能为空");
m.put("tips", tips);
return m;
if(StringUtils.hasText(xmProjectGroup.getId())){
return ResponseHelper.failed("id-0","团队编号不能为空");
}
XmProjectGroup groupDb=this.xmProjectGroupService.selectOneObject(new XmProjectGroup(xmProjectGroup.getId()));
if(groupDb==null){
return ResponseHelper.failed("data-0","该团队已不存在");
}
XmProject xmProject=this.xmProjectService.getProjectFromCache(groupDb.getProjectId());
if(xmProject==null){
return ResponseHelper.failed("prj-0","项目已不存在");
}
if("4".equals(xmProject.getStatus())){
return ResponseHelper.failed("prj-status-4","项目暂停中,不能操作");
}
if("9".equals(xmProject.getStatus())){
return ResponseHelper.failed("prj-status-9","项目已关闭,不能操作");
}
User user=LoginUtils.getCurrentUserInfo();
if(!xmProject.getCreateUserid().equals(user.getUserid())&& user.getUserid().equals(xmProject.get)){
}
tips= xmProjectGroupService.updateGroup(projectId,xmProjectGroupVo); //列出XmProjectGroup列表
xmProjectGroupService.parentIdPathsCalcBeforeSave(xmProjectGroup);
tips= xmProjectGroupService.updateGroup(xmProjectGroup,groupDb); //列出XmProjectGroup列表
//m.put("data",xmProjectGroupVo);
m.put("tips", tips);
return m;

24
xm-core/src/main/java/com/xm/core/entity/XmProject.java

@ -252,7 +252,17 @@ public class XmProject implements java.io.Serializable {
this.assessRemarks = assessRemarks;
}
/**
* 项目状态cs-初始lxz-立项中ssz-执行中jxz-结项中yjx-已结项ztz-暂停sq-售前sh-售后
* 项目状态
* 0|初始
* 1|售前
* 2|立项中
* 3|实施中
* 4|暂停中
* 5|结项中
* 6|已结项
* 7|售后
* 8|已完成
* 9|已关闭
**/
public void setStatus(String status) {
this.status = status;
@ -511,7 +521,17 @@ public class XmProject implements java.io.Serializable {
return this.assessRemarks;
}
/**
* 项目状态cs-初始lxz-立项中ssz-执行中jxz-结项中yjx-已结项ztz-暂停sq-售前sh-售后
* 项目状态
* 0|初始
* 1|售前
* 2|立项中
* 3|实施中
* 4|暂停中
* 5|结项中
* 6|已结项
* 7|售后
* 8|已完成
* 9|已关闭
**/
public String getStatus() {
return this.status;

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

@ -156,306 +156,17 @@ public class XmProjectGroupService extends BaseService {
* 4.项目管理者创建人可以调整小组组长
*/
@Transactional
public Tips updateGroup(String projectId,List<XmProjectGroupVo> xmProjectGroupVoList) {
XmProjectGroup group = new XmProjectGroup();
group.setProjectId(projectId);
List<XmProjectGroup> groupListDb = this.selectListByWhere(group);
List<XmProjectGroup> delGroups=new ArrayList<>();
User user=LoginUtils.getCurrentUserInfo();
XmProject project = xmProjectService.getProjectFromCache(projectId);
List<XmProjectGroupVo> projectGroupVos=this.getProjectGroupVoList(projectId);
Map<String,XmProjectGroupVo> groupVoMap=new HashMap<>();
if(projectGroupVos!=null && projectGroupVos.size()>0){
for (XmProjectGroupVo projectGroupVo : projectGroupVos) {
groupVoMap.put(projectGroupVo.getId(),projectGroupVo);
}
}
List<String> tipsList=new ArrayList<>();
boolean isProjectCreate=user.getUserid().equals(project.getCreateUserid());
boolean isPm = this.checkUserIsProjectManager(projectGroupVos, user.getUserid());
boolean isHeadPm=this.checkUserIsHeadProjectManager(projectGroupVos,user.getUserid());
//查出需要删除的组进行删除组及关联组成员
groupListDb.forEach(g->{
if(xmProjectGroupVoList.stream().noneMatch(new Predicate<XmProjectGroupVo>() {
@Override
public boolean test(XmProjectGroupVo t) {
if(t.getGroupName().equals(g.getGroupName())) {
t.setId(g.getId());
t.setPgTypeId(g.getPgTypeId());
t.setPgTypeName(g.getPgTypeName());
return true;
}else {
return false;
}
}
})) {
if(!isProjectCreate) {
if(!isPm) {
throw new BizException("无权操作!只有项目创建人、项目管理者可以删除小组");
}
}
if("nbxmjl".equals(g.getPgTypeId()) ){
throw new BizException("无权操作!"+g.getGroupName()+"小组性质属于"+g.getPgTypeName()+",永远不能删除。");
}
delGroups.add(g);
}
});
//查询新增的组进行增加并添加组成员,同时查出修改的组进行更新组及成员
List<XmProjectGroupVo> xmProjectGroupVoAdd=new ArrayList<>();
List<XmProjectGroupVo> xmProjectGroupVoEdit=new ArrayList<>();
xmProjectGroupVoList.forEach(vo->{
if(groupListDb.stream().noneMatch(new Predicate<XmProjectGroup>() {
@Override
public boolean test(XmProjectGroup t) {
return t.getGroupName().equals(vo.getGroupName());
}
})) {
if( isProjectCreate || isPm ) {
xmProjectGroupVoAdd.add(vo);
}else{
throw new BizException("您无权操作!只有项目创建人、项目管理人员可创建小组");
}
}else {
xmProjectGroupVoEdit.add(vo);
}
});
List<XmProjectGroupUser> allUsersFromUi=new ArrayList<>();
if(xmProjectGroupVoEdit.size()>0) {
xmProjectGroupVoEdit.forEach(gvo -> {
gvo.setProjectId(projectId);
XmProjectGroup g = new XmProjectGroup();
BeanUtils.copyProperties(gvo,g);
//xmProjectGroupService.updateSomeFieldByPk(g);
List<XmProjectGroupUser> guser = gvo.getGroupUsers();
if( guser !=null && guser.size()>0) {
for (XmProjectGroupUser guser2 : guser) {
guser2.setGroupId(gvo.getId());
allUsersFromUi.add(guser2);
}
}
});
if(allUsersFromUi.size()>0) {
List<XmProjectGroupUser> groupUserDbList=this.xmProjectGroupUserService.selectGroupUserListByProjectId(projectId);
List<XmProjectGroupUser> allUsersAdd=new ArrayList<>();
List<XmProjectGroupUser> allUsersDel=new ArrayList<>();
List<XmProjectGroupUser> allUsersEdit=new ArrayList<>();
//找出新增的用户插入
//找出删除的用户进行删除
allUsersFromUi.forEach(gu->{
boolean existsInDb=false;
XmProjectGroupUser currDbUser=null;
for (XmProjectGroupUser t : groupUserDbList) {
if(t.getGroupId().equals(gu.getGroupId()) && t.getUserid().equals(gu.getUserid())) {
existsInDb=true;
currDbUser=t;
break;
}
}
if(!existsInDb) {
gu.setJoinTime(new Date());
gu.setStatus("0");
if(isPm || isProjectCreate ){ //项目创建者管理者平躺
allUsersAdd.add(gu);
}else{
//小组长可以添加人但是不能设置组长
if(!gu.getUserid().equals(user.getUserid())){//不允许自己加自己
XmProjectGroupVo xmProjectGroupVo = groupVoMap.get(gu.getGroupId());
if (this.checkUserIsTeamHead(xmProjectGroupVo, user.getUserid())) {
allUsersAdd.add(gu);
}else{
tipsList.add(gu.getUsername()+"添加到小组"+xmProjectGroupVo.getGroupName()+"不成功!只有项目创建人、管理者、组长可以添加人员。");
}
}else{
tipsList.add("普通用户不允许自己添加自己");
}
}
}else {
if(!StringUtils.hasText(currDbUser.getIsHead())){
currDbUser.setIsHead("0");
}
if(!StringUtils.hasText(gu.getIsHead())){
gu.setIsHead("0");
}
if(!currDbUser.getIsHead().equals(gu.getIsHead())){
//需要判断我是不是项目创建者管理者如果不是则无权利去指定小组组长
XmProjectGroupVo xmProjectGroupVo = groupVoMap.get(gu.getGroupId());
if("nbxmjl".equals(xmProjectGroupVo.getPgTypeId())){
if(isProjectCreate || isHeadPm ){
currDbUser.setIsHead(gu.getIsHead());
allUsersEdit.add(currDbUser);
}else{
tipsList.add(currDbUser.getUsername()+"组长身份变更被忽略,只有项目创建者、项目经理可以变更项目经理身份");
}
}else{
if(isPm || isProjectCreate){
currDbUser.setIsHead(gu.getIsHead());
allUsersEdit.add(currDbUser);
}else{
tipsList.add(currDbUser.getUsername()+"组长身份变更被忽略,只有项目创建者、管理者可以变更组长身份");
}
}
}
}
});
groupUserDbList.forEach(gu->{
if(allUsersFromUi.stream().noneMatch(new Predicate<XmProjectGroupUser>() {
@Override
public boolean test(XmProjectGroupUser t) {
return t.getGroupId().equals(gu.getGroupId()) && t.getUserid().equals(gu.getUserid());
}
})) {
// 普通用户不允许删除任何人包括自己组长可以删除小组除了自己外所有人员项目创建人管理者可以删除任何人
if(isProjectCreate || isPm || isHeadPm ){
XmProjectGroupVo xmProjectGroupVo = groupVoMap.get(gu.getGroupId());
if(!gu.getUserid().equals(user.getUserid())){
if("nbxmjl".equals(xmProjectGroupVo.getPgTypeId())){
if(isHeadPm || isProjectCreate ){
allUsersDel.add(gu);
}else{
tipsList.add(gu.getUsername()+"移出小组"+xmProjectGroupVo.getGroupName()+"不成功,只有项目经理、项目创建者可以把其他管理者请出内部管理组");
}
}else{
allUsersDel.add(gu);
}
}else{
if("nbxmjl".equals(xmProjectGroupVo.getPgTypeId())){
tipsList.add("项目管理者不允许把自己从内部项目经理组中删除");
}else{
allUsersDel.add(gu);
}
}
}else{
if(!gu.getUserid().equals(user.getUserid())) {//删除自己也是不可以的
XmProjectGroupVo xmProjectGroupVo = groupVoMap.get(gu.getGroupId());
if (this.checkUserIsTeamHead(xmProjectGroupVo, user.getUserid())) {
allUsersDel.add(gu);
}else{
tipsList.add("您不是"+gu.getUsername()+"组长,无权将其移出小组"+xmProjectGroupVo.getGroupName()+"!");
}
}else{
tipsList.add("普通用户不允许删除自己");
}
}
}
});
if(allUsersAdd.size()>0) {
xmProjectGroupUserService.batchInsert(allUsersAdd);
allUsersAdd.forEach(u->{
Map<String,Object> usermap=new HashMap<>();
usermap.put("userid", u.getUserid());
usermap.put("username", u.getUsername());
List<Map<String,Object>> users=new ArrayList<>();
users.add(usermap);
pushMsgService.pushJoinChannelGroupMsg(user.getBranchId(), u.getGroupId(), users);
xmRecordService.addXmGroupRecord(projectId,u.getGroupId(), "项目-团队-新增小组成员", "增加组员["+u.getUsername()+"]",u.getUserid(),null);
});
}
if(allUsersDel.size()>0) {
xmProjectGroupUserService.batchDelete(allUsersDel);
allUsersDel.forEach(u->{
Map<String,Object> usermap=new HashMap<>();
usermap.put("userid", u.getUserid());
usermap.put("username", u.getUsername());
List<Map<String,Object>> users=new ArrayList<>();
users.add(usermap);
pushMsgService.pushLeaveChannelGroupMsg(user.getBranchId(), u.getGroupId(), users);
xmRecordService.addXmGroupRecord(projectId,u.getGroupId(), "项目-团队-删除小组成员", "删除组员["+u.getUsername()+"]",u.getUserid(),null);
});
}
if(allUsersEdit.size()>0) {
List<XmProjectGroupUser> allUsersEdit2=new ArrayList<>();
allUsersEdit.forEach(u->{
XmProjectGroupUser u2=new XmProjectGroupUser();
allUsersEdit2.add(u2);
xmProjectGroupUserService.updateSomeFieldByPk(u2);
xmRecordService.addXmGroupRecord(projectId, u2.getGroupId(),"项目-团队-变更小组成员状态", "变更["+u.getUsername()+"]为 "+("0".equals(u2.getIsHead())?"普通组员":"组长"),u2.getUserid(),null);
});
}
}
}
if(delGroups.size()>0) {
delGroups.forEach(g->{
XmProjectGroupUser UserDel = new XmProjectGroupUser();
UserDel.setGroupId(g.getId());
xmProjectGroupUserService.delete("deleteByGroupId",UserDel);
XmProjectGroup delGroup=new XmProjectGroup();
delGroup.setId(g.getId());
this.deleteByPk(delGroup);
pushMsgService.pushChannelGroupRemoveMsg(user.getBranchId(), g.getId());
xmRecordService.addXmGroupRecord(projectId, g.getId(),"项目-团队-删除小组", "删除小组["+g.getGroupName()+"]",g.getId(),null);
});
}
if(xmProjectGroupVoAdd.size()>0) {
xmProjectGroupVoAdd.forEach(gvo -> {
gvo.setId(xmProjectGroupService.createKey("id"));
gvo.setProjectId(projectId);
XmProjectGroup g = new XmProjectGroup();
BeanUtils.copyProperties(gvo,g);
xmProjectGroupService.insert(g);
List<XmProjectGroupUser> guser = gvo.getGroupUsers();
List<String> addGroupUsernames=new ArrayList<>();
List<Map<String,Object>> users=new ArrayList<>();
if(guser != null && guser.size() > 0) {
guser.forEach(u -> {
Map<String,Object> userMap=new HashMap<>();
userMap.put("userid", u.getUserid());
userMap.put("username", u.getUsername());
users.add(userMap);
u.setGroupId(gvo.getId());
u.setJoinTime(new Date());
u.setStatus("0");
addGroupUsernames.add(u.getUsername());
xmProjectGroupUserService.insert(u);
allUsersFromUi.add(u);
});
public Tips updateGroup(XmProjectGroup group,XmProjectGroup groupDb) {
Tips tips=new Tips("成功");
super.updateSomeFieldByPk(group);
this.sumParents(group);
return tips;
}
pushMsgService.pushChannelGroupCreateMsg(user.getBranchId(),g.getProjectId(),g.getId(), g.getId(), g.getGroupName(), user.getUserid(), user.getUsername(), users,"新增小组["+gvo.getGroupName()+"]及以下组员:"+StringUtils.arrayToDelimitedString(addGroupUsernames.toArray(), ","));
xmRecordService.addXmGroupRecord(projectId, gvo.getId(),"项目-团队-新增小组", "新增小组["+gvo.getGroupName()+"]及以下组员:"+StringUtils.arrayToDelimitedString(addGroupUsernames.toArray(), ","),JSON.toJSONString(gvo),null);
});
}
groupCacheService.putGroups(projectId, null);
public void pushMsg(User user,XmProjectGroup g,List<Map<String,Object>> users){
pushMsgService.pushChannelGroupCreateMsg(user.getBranchId(),g.getProjectId(),g.getId(), g.getId(), g.getGroupName(), user.getUserid(), user.getUsername(), users,"新增小组["+g.getGroupName()+"]及以下组员:"+ users.stream().map(i->(String)i.get("username")).collect(Collectors.joining(",")));
Tips tips=new Tips("全部更新成功");
if(tipsList.size()>0){
String tipsMsg=StringUtils.arrayToDelimitedString(tipsList.toArray(),";");
tips.setOkMsg("更新成功,但是有部分更新被忽略,原因如下:"+tipsMsg);
return tips;
}else{
return tips;
}
}
/**

Loading…
Cancel
Save