From c31d6758842cdb7ebe11e9ca83991818f402bea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sun, 26 Jun 2022 00:50:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=BA=E9=99=B7=E9=BB=98=E8=AE=A4=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E4=BA=BA=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/ctrl/XmTaskExecuserController.java | 77 +++++++++++-------- .../core/service/XmTaskExecuserService.java | 18 ++++- 2 files changed, 60 insertions(+), 35 deletions(-) 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 ce66501b..277c2159 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 @@ -195,7 +195,24 @@ public class XmTaskExecuserController { isBranch=!"0".equals(user.getMemType()); xmTaskExecuser.setExecUserBranchId(user.getBranchId()); } - if("1".equals(xmTask.getCrowd()) && "1".equals(xmTask.getTaskOut())){ + boolean isPm=groupService.checkUserIsProjectAdm(xmTask.getProjectId(),user.getUserid()); + boolean isTeamHeader=false; + List myGgroups=groupService.getProjectGroupVoList(projectId); + if(!isPm){ + isTeamHeader= groupService.checkUserIsOtherUserTeamHeadOrAss(myGgroups,user.getUserid(),xmTask.getCreateUserid()); + } + if(!user.getUserid().equals(xmTaskExecuser.getUserid()) ){//只有上级可以拉人 + if(!isPm && !isTeamHeader){ + return ResponseHelper.failed("no-qx","您无权操作!只有任务负责人、组长、项目管理者可以给任务分配候选人。"); + } + }else{ + if(!"1".equals(xmTask.getCrowd())){//如果是众包任务,自己可以直接加入,如果不是众包任务,必须任务负责人、组长、经理等拉人作为执行人 + if(!isPm && !isTeamHeader){ + return ResponseHelper.failed("no-qx","您无权操作!只有任务负责人、组长、项目管理者可以给任务分配执行人。"); + } + } + } + if("1".equals(xmTask.getCrowd())){ Map result=null; if(isBranch){ result=mkClient.checkAndGetMemberInterests(xmTaskExecuser.getUserid(),xmTask.getBudgetAt(),xmTask.getBudgetWorkload(),1); @@ -213,37 +230,35 @@ public class XmTaskExecuserController { xmTaskExecuser.setSfee(xmTaskExecuser.getQuoteAmount().multiply(BigDecimal.valueOf(xmTaskExecuser.getSfeeRate()/100))); } } - } - - - if(user.getUserid().equals(xmTaskExecuser.getUserid())){//自己作为候选人 - xmTaskExecuser.setExecUserBranchId(user.getBranchId()); - xmTaskExecuserService.addExecuser(xmTaskExecuser); - if(isBranch){ - sysClient.pushBidsAfterBidSuccess(xmTaskExecuser.getExecUserBranchId(),xmTask.getBudgetAt(),xmTask.getBudgetWorkload(),1); - }else { - mkClient.pushBidsAfterBidSuccess(xmTaskExecuser.getUserid(),xmTask.getBudgetAt(),xmTask.getBudgetWorkload(),1); - } - - m.put("data",xmTaskExecuser); - }else { - boolean isPm=groupService.checkUserIsProjectAdm(xmTask.getProjectId(),user.getUserid()); - if(!isPm){ - List myGgroups=groupService.getProjectGroupVoList(projectId); - boolean isTeamHeader= groupService.checkUserIsOtherUserTeamHeadOrAss(myGgroups,user.getUserid(),xmTaskExecuser.getCreateUserid()); - if(!isTeamHeader){ - return ResponseHelper.failed("no-qx","您无权操作!只有任务负责人、组长、项目管理者可以给任务分配候选人。"); - } - } - xmTaskExecuserService.addExecuser(xmTaskExecuser); - if(isBranch){ - sysClient.pushBidsAfterBidSuccess(xmTaskExecuser.getExecUserBranchId(),xmTask.getBudgetAt(),xmTask.getBudgetWorkload(),1); - }else { - mkClient.pushBidsAfterBidSuccess(xmTaskExecuser.getUserid(),xmTask.getBudgetAt(),xmTask.getBudgetWorkload(),1); - } - m.put("data",xmTaskExecuser); - } + xmTaskExecuser.setStatus("0"); //如果是众包,智能添加为候选人 + }else { + //如果不是众包,需要判断是否已加入项目组组织架构中,如未加入,需要提示其先加入 + boolean exists=groupService.checkUserExistsGroup(myGgroups, xmTaskExecuser.getUserid()); + if(!exists) { + tips.setFailureMsg(xmTaskExecuser.getUsername()+"不在项目组织架构中,请先将其拉入项目组织架构中"); + return ResponseHelper.failed("user-not-in-project",xmTaskExecuser.getUsername()+"不在项目组织架构中,请先将其拉入项目组织架构中"); + } + //检查是否已经存在执行人 + XmTaskExecuser query=new XmTaskExecuser(); + query.setTaskId(xmTask.getId()); + List xmTaskExecusersDb=this.xmTaskExecuserService.selectListByWhere(query); + if(xmTaskExecusersDb !=null && xmTaskExecusersDb.size()>0) { + for (XmTaskExecuser exe : xmTaskExecusersDb) { + if(!"0".equals(exe.getStatus()) && !"7".equals(exe.getStatus())) { + throw new BizException(exe.getUsername()+"是当前执行人,不允许再添加其它执行人。"); + } + } + } + xmTaskExecuser.setStatus("1");//如果不是众包,则添加为执行人 + } + xmTaskExecuserService.addExecuser(xmTaskExecuser); + if(isBranch){ + sysClient.pushBidsAfterBidSuccess(xmTaskExecuser.getExecUserBranchId(),xmTask.getBudgetAt(),xmTask.getBudgetWorkload(),1); + }else { + mkClient.pushBidsAfterBidSuccess(xmTaskExecuser.getUserid(),xmTask.getBudgetAt(),xmTask.getBudgetWorkload(),1); + } + m.put("data",xmTaskExecuser); }catch (BizException e) { tips=e.getTips(); logger.error("",e); diff --git a/xm-core/src/main/java/com/xm/core/service/XmTaskExecuserService.java b/xm-core/src/main/java/com/xm/core/service/XmTaskExecuserService.java index cd9a9bde..2cf12552 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmTaskExecuserService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmTaskExecuserService.java @@ -60,14 +60,24 @@ public class XmTaskExecuserService extends BaseService { xmTaskExecuser.setCreateUsername(user.getUsername()); xmTaskExecuser.setCreateTime(new Date()); xmTaskExecuser.setStartTime(new Date()); - xmTaskExecuser.setStatus("0"); + if(StringUtils.hasText(xmTaskExecuser.getStatus())){ + xmTaskExecuser.setStatus("0"); + } this.insert(xmTaskExecuser); + + String imMsg=""; + String notifyMsg=""; updateXmTaskExeUseridsAndUsernamesByTaskId(xmTaskExecuser.getTaskId()); - - String imMsg=xmTaskExecuser.getUsername()+"成为任务【"+xmTaskExecuser.getTaskId()+"-"+xmTaskExecuser.getTaskName()+"】的候选人"; + if("0".equals(xmTaskExecuser.getStatus())){ + imMsg=xmTaskExecuser.getUsername()+"成为任务【"+xmTaskExecuser.getTaskId()+"-"+xmTaskExecuser.getTaskName()+"】的候选人,待雇主选标。"; + notifyMsg="您成为任务【"+xmTaskExecuser.getTaskId()+"-"+xmTaskExecuser.getTaskName()+"】的候选人,请等待雇主选标,在雇主选标前,您还可以修改报价,合理的报价更容易获得雇主的喜欢哦!"; + }else { + imMsg=xmTaskExecuser.getUsername()+"成为任务【"+xmTaskExecuser.getTaskId()+"-"+xmTaskExecuser.getTaskName()+"】的执行人,请及时跟进任务!"; + notifyMsg="您成为任务【"+xmTaskExecuser.getTaskId()+"-"+xmTaskExecuser.getTaskName()+"】的执行人,请及时跟进任务!"; + } this.pushMsgService.pushPrichatMsgToIm(user.getBranchId(),user.getUserid(),user.getUsername(), xmTaskExecuser.getUserid(), xmTaskExecuser.getUsername(),imMsg); this.pushMsgService.pushCreateCssGroupMsg(user.getBranchId(), xmTaskExecuser.getUserid(), xmTaskExecuser.getUsername(), imMsg); - notifyMsgService.pushMsg(user,xmTaskExecuser.getUserid(),xmTaskExecuser.getUsername(),"2",xmTaskExecuser.getProjectId(),xmTaskExecuser.getTaskId(),"您成为任务【"+xmTaskExecuser.getTaskId()+"-"+xmTaskExecuser.getTaskName()+"】的候选人,请等待雇主选标,在雇主选标前,您还可以修改报价,合理的报价更容易获得雇主的喜欢哦!"); + notifyMsgService.pushMsg(user,xmTaskExecuser.getUserid(),xmTaskExecuser.getUsername(),"2",xmTaskExecuser.getProjectId(),xmTaskExecuser.getTaskId(),notifyMsg); xmRecordService.addXmTaskRecord(xmTaskExecuser.getProjectId(), xmTaskExecuser.getTaskId(), "项目-任务-增加候选人", "任务增加候选人"+xmTaskExecuser.getUsername(),JSONObject.toJSONString(xmTaskExecuser),null); }