diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java index 458995f8..5c8d5886 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java @@ -543,14 +543,14 @@ public class XmTaskController { } boolean isHead=groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups,xmTaskDb.getCreateUserid(),user.getUserid()); if(!isHead){ - boolean isPm=groupService.checkUserIsProjectManager(pgroups,user.getUserid()); + boolean isPm=groupService.checkUserIsProjectAdm(xmTaskDb.getProjectId(),user.getUserid()); if(!isPm){ tips.setFailureMsg("您无权修改该该任务的责任人!项目管理者、组长可以修改任务的责任人。"); m.put("tips", tips); return m; } } - boolean existsGrouop=groupService.checkUserExistsGroup(xmTaskVo.getProjectId(),xmTaskVo.getCreateUserid()); + boolean existsGrouop=groupService.checkUserExistsGroup(pgroups,xmTaskVo.getCreateUserid()); if(!existsGrouop){ tips.setFailureMsg(xmTaskVo.getCreateUsername()+"不是项目组成员,不能作为任务责任人"); m.put("tips", tips); @@ -560,6 +560,7 @@ public class XmTaskController { xmTask.setCreateUserid(xmTaskVo.getCreateUserid()); xmTask.setCreateUsername(xmTaskVo.getCreateUsername()); this.xmTaskService.updateSomeFieldByPk(xmTask); + this.xmRecordService.addXmTaskRecord(xmTaskDb.getProjectId(),xmTaskDb.getId(),"项目-任务-修改任务责任人","修改任务【"+xmTaskDb.getName()+"】责任人。原责任人【"+xmTaskDb.getCreateUsername()+"】,新责任人【"+xmTask.getCreateUsername()+"】"); m.put("data",xmTaskVo); }catch (BizException e) { tips=e.getTips(); @@ -648,7 +649,8 @@ public class XmTaskController { } } } - //xmRecordService.addXmTaskRecord(xmTaskVo.getProjectPhaseId(), xmTaskVo.getId(), "项目-任务-修改任务", "修改任务"+xmTaskVo.getName(),JSON.toJSONString(xmTaskVo),null); + //改为服务处记录 + //xmRecordService.addXmTaskRecord(xmTaskVo.getProjectPhaseId(), xmTaskVo.getId(), "项目-任务-修改任务", "修改任务"+xmTaskVo.getName(),JSON.toJSONString(xmTaskVo),null); }else { tips=judgetTips; } @@ -858,7 +860,7 @@ public class XmTaskController { xmTaskService.parentIdPathsCalcBeforeSave(xmTasks); xmTaskService.batchImportFromTemplate(xmTasks); for (XmTask t : xmTasks) { - xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量新增任务", "新增任务"+t.getName(),JSON.toJSONString(t),null); + xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量新增任务", "新增任务"+t.getName(),"",null); } @@ -1037,6 +1039,7 @@ public class XmTaskController { } if(canDelNodes.size()>0){ this.xmTaskService.doBatchDelete(canDelNodes); + xmRecordService.addXmTaskRecord(canDelNodes,"项目-任务-批量删除","删除任务"); } List msgs=new ArrayList<>(); msgs.add("删除了"+canDelNodes.size()+"个任务。"); diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java index 47ad33ed..dfb757d8 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskExecuserController.java @@ -5,6 +5,7 @@ import com.mdp.audit.log.client.annotation.OperType; 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; @@ -124,22 +125,20 @@ public class XmTaskExecuserController { m.put("tips", tips); return m; } - if(user.getUserid().equals(xmTaskExecuser.getUserid())){ + if(user.getUserid().equals(xmTaskExecuser.getUserid())){//自己作为候选人 xmTaskExecuserService.addExecuser(xmTaskExecuser); m.put("data",xmTaskExecuser); }else { - List myGgroups=groupService.getProjectGroupVoList(projectId); - boolean isTeamHeader= groupService.checkUserIsOtherUserTeamHead(myGgroups,xmTask.getCreateUserid(),user.getUserid()); - boolean isPm=groupService.checkUserIsProjectManager(myGgroups,user.getUserid()); - if( !isTeamHeader && !isPm ) { - if(!user.getUserid().equals(xmTask.getCreateUserid())){ - tips.setFailureMsg("无权操作!只有任务负责人、组长、项目管理者可以给任务分配候选人。"); - } + boolean isPm=groupService.checkUserIsProjectAdm(xmTask.getProjectId(),user.getUserid()); + if(!isPm){ + List myGgroups=groupService.getProjectGroupVoList(projectId); + boolean isTeamHeader= groupService.checkUserIsOtherUserTeamHeadOrAss(myGgroups,xmTaskExecuser.getCreateUserid(),user.getUserid()); + if(!isTeamHeader){ + return ResponseHelper.failed("no-qx","您无权操作!只有任务负责人、组长、项目管理者可以给任务分配候选人。"); + } } - if(tips.isOk()) { xmTaskExecuserService.addExecuser(xmTaskExecuser); m.put("data",xmTaskExecuser); - } } }catch (BizException e) { @@ -189,7 +188,7 @@ public class XmTaskExecuserController { break; } if(!user.getUserid().equals(xmTaskExecuser.getUserid())) {//只有组长、任务责任人可以请别人请离开任务 - boolean isHead= groupService.checkUserIsOtherUserTeamHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); + boolean isHead= groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); if(isHead || isTaskCreater ) { allowUsers.add(xmTaskExecuser); allowUserNames.add(xmTaskExecuser.getUsername()); @@ -259,7 +258,7 @@ public class XmTaskExecuserController { User user=LoginUtils.getCurrentUserInfo(); boolean isTaskCreater=user.getUserid().equals(xmTask.getCreateUserid()); List pgroups=groupService.getProjectGroupVoList(projectId); - boolean isHead= groupService.checkUserIsOtherUserTeamHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); + boolean isHead= groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); if( isHead || isTaskCreater ) { //放行,组长和任务责任人可以将候选人变更为执行人 } else{ @@ -271,7 +270,7 @@ public class XmTaskExecuserController { } if(tips.isOk()) { - boolean exists=groupService.checkUserExistsGroup(projectId, xmTaskExecuser.getUserid()); + boolean exists=groupService.checkUserExistsGroup(pgroups, xmTaskExecuser.getUserid()); if(exists) { @@ -328,7 +327,7 @@ public class XmTaskExecuserController { if(!user.getUserid().equals(xmTaskExecuser.getUserid())) { String projectId=xmTaskExecuser.getProjectId(); List pgroups=groupService.getProjectGroupVoList(projectId); - boolean isHead= groupService.checkUserIsOtherUserTeamHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); + boolean isHead= groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); if( !isHead && !isTaskCreater ) { tips.setFailureMsg("自己或者组长可以提交任务到测试,"+user.getUsername()+"不是"+xmTaskExecuser.getUsername()+"的组长,无权提交"); } @@ -374,7 +373,7 @@ public class XmTaskExecuserController { boolean isTaskCreater=user.getUserid().equals(xmTask.getCreateUserid()); String projectId=xmTaskExecuser.getProjectId(); List pgroups=groupService.getProjectGroupVoList(projectId); - boolean isHead= groupService.checkUserIsOtherUserTeamHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); + boolean isHead= groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); if( !isHead && !isTaskCreater ) { tips.setFailureMsg("您无权提交测试结果!任务责任人、组长可以提交该任务的测试结果。"); } @@ -421,7 +420,7 @@ public class XmTaskExecuserController { boolean isTaskCreater=user.getUserid().equals(xmTask.getCreateUserid()); String projectId=xmTaskExecuser.getProjectId(); List pgroups=groupService.getProjectGroupVoList(projectId); - boolean isHead= groupService.checkUserIsOtherUserTeamHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); + boolean isHead= groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); if( !isHead && !isTaskCreater ) { tips.setFailureMsg("您无权提交测试结果!任务责任人、组长可以提交该任务的测试结果。"); @@ -468,7 +467,7 @@ public class XmTaskExecuserController { String projectId=xmTaskExecuser.getProjectId(); if(!user.getUserid().equals(xmTaskExecuser.getUserid())) { List pgroups=groupService.getProjectGroupVoList(projectId); - boolean isHead= groupService.checkUserIsOtherUserTeamHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); + boolean isHead= groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); if( !isHead && !isTaskCreater ) { tips.setFailureMsg("无权操作!自己、任务责任人、组长可以修改任务的报价信息"); } @@ -522,7 +521,7 @@ public class XmTaskExecuserController { if(!user.getUserid().equals(xmTaskExecuser.getUserid())) { List pgroups=groupService.getProjectGroupVoList(projectId); - boolean isHead= groupService.checkUserIsOtherUserTeamHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); + boolean isHead= groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); if( !isHead && !isTaskCreater ) { tips.setFailureMsg("无权操作!任务责任人、组长可以邀请用户成为任务候选人,普通用户可以自己申请成为候选人"); } @@ -567,7 +566,7 @@ public class XmTaskExecuserController { String projectId=xmTaskExecuser.getProjectId(); if(!user.getUserid().equals(xmTaskExecuser.getUserid())) { List pgroups=groupService.getProjectGroupVoList(projectId); - boolean isHead= groupService.checkUserIsOtherUserTeamHead(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); + boolean isHead= groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups, xmTaskExecuser.getUserid(), user.getUserid()); if( !isHead && !isTaskCreater ) { tips.setFailureMsg("无权操作!只有自己、任务责任人、组长可以删除任务执行人."); } 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 4deec397..72d0e2d3 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 @@ -408,6 +408,10 @@ public class XmProjectGroupService extends BaseService { List userGroups= getUserGroupsByProjectId(projectId,userid); return userGroups!=null && userGroups.size()>0; } + public boolean checkUserExistsGroup(List userGroups,String userid){ + List userGroups2= this.getUserGroups(userGroups, userid); + return userGroups2!=null && userGroups2.size()>0; + } /** * 检查某个人是否为指定的小组的组长 * @param xmProjectGroupVo diff --git a/xm-core/src/main/java/com/xm/core/service/XmRecordService.java b/xm-core/src/main/java/com/xm/core/service/XmRecordService.java index 4da0ca50..8d918361 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmRecordService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmRecordService.java @@ -5,6 +5,7 @@ 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.XmRecord; +import com.xm.core.entity.XmTask; import org.slf4j.MDC; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -110,7 +111,36 @@ public class XmRecordService extends BaseService { record.setObjType("project"); this.insert(record); } - + + /** + * 针对项目下的任务的所有操作用此方法 + * @param tasks 任务列表 + * @param action 操作如 新增任务,修改任务信息,修改任务进度 等 + * @param remarks 人性化语言描述 + */ + @Async + public void addXmTaskRecord(List tasks,String action, String remarks) { + User user=LoginUtils.getCurrentUserInfo(); + List records=new ArrayList<>(); + for (XmTask task : tasks) { + 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(task.getProductId()); + record.setBizId(task.getId()); + record.setAction(action); + record.setRemarks(remarks+" 任务名称【"+task.getName()+"】"); + record.setObjType("task"); + records.add(record); + } + if(records.size()>0){ + super.batchInsert(records); + } + } /** * 针对项目下的任务的所有操作用此方法 * @param projectId 项目编号