From e3037da4ef36346da74538ddacdb702701685ad6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Mon, 20 Jun 2022 15:27:10 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=99=E5=86=85=E4=BF=A1=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xm/core/ctrl/XmIterationController.java | 9 +++++++ .../com/xm/core/ctrl/XmMenuController.java | 13 ++++------ .../com/xm/core/ctrl/XmProductController.java | 23 +++++++++++++++++ .../com/xm/core/ctrl/XmProjectController.java | 25 +++++++++++++++++++ .../xm/core/ctrl/XmQuestionController.java | 2 +- .../com/xm/core/ctrl/XmTaskController.java | 14 ++++++++++- .../com/xm/core/service/XmTaskService.java | 11 ++++++-- 7 files changed, 85 insertions(+), 12 deletions(-) diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmIterationController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmIterationController.java index 7ccfabcc..a9928571 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmIterationController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmIterationController.java @@ -5,6 +5,7 @@ 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.msg.client.PushNotifyMsgService; import com.mdp.mybatis.PageUtils; import com.mdp.qx.HasQx; import com.mdp.safe.client.entity.User; @@ -65,6 +66,10 @@ public class XmIterationController { XmMenuOperQxService operQxService; + @Autowired + PushNotifyMsgService notifyMsgService; + + @ApiOperation( value = "查询迭代定义信息列表",notes="listXmIteration,条件之间是 and关系,模糊查询写法如 {studentName:'%才哥%'}") @ApiEntityParams(XmIteration.class) @ApiImplicitParams({ @@ -179,6 +184,7 @@ public class XmIterationController { if(!operQxService.checkIsProductAdmOrAss(xmProductService.getProductFromCache(xmIteration.getProductId()), user.getUserid())){ return ResponseHelper.failed("no-product-qx","您不是产品管理人员,无权将该产品与迭代关联"); }; + notifyMsgService.pushMsg(user,xmIteration.getAdminUserid(),xmIteration.getAdminUsername(),"6",xmIteration.getProductId(),xmIteration.getId(),"您成为迭代【"+xmIteration.getIterationName()+"】管理员,请及时跟进。"); xmIterationService.addIteration(xmIteration); xmIterationStateService.loadTasksToXmIterationState(xmIteration.getId()); xmRecordService.addXmIterationRecord(xmIteration.getId(),"迭代-新增","新增迭代"+xmIteration.getIterationName()); @@ -264,6 +270,9 @@ public class XmIterationController { return ResponseHelper.failed("no-qx","您无权修改,迭代创建人、负责人可以修改"); } xmIterationService.updateByPk(xmIteration); + if(!xmIteration.getAdminUserid().equals(iterationDb.getAdminUserid())){ + notifyMsgService.pushMsg(user,xmIteration.getAdminUserid(),xmIteration.getAdminUsername(),"6",iterationDb.getProductId(),iterationDb.getId(),"您成为迭代【"+iterationDb.getIterationName()+"】管理员,请及时跟进。"); + } xmRecordService.addXmIterationRecord(xmIteration.getId(),"迭代-修改","修改迭代"+iterationDb.getIterationName(),JSON.toJSONString(xmIteration), JSON.toJSONString(iterationDb)); m.put("data",xmIteration); }catch (BizException e) { diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java index 9630c04a..050178a0 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java @@ -288,9 +288,8 @@ public class XmMenuController { xmMenu.setCtime(new Date()); xmMenu.setLtime(new Date()); xmMenuService.insert(xmMenu); - if("3".equals(xmMenu.getDclass())){ - notifyMsgService.pushMsg(user,xmMenu.getMmUserid(),xmMenu.getMmUsername(),"4",xmMenu.getProductId(),xmMenu.getMenuId(),"您成为故事【"+xmMenu.getMenuName()+"】的负责人,请跟进需求!"); - } + notifyMsgService.pushMsg(user,xmMenu.getMmUserid(),xmMenu.getMmUsername(),"4",xmMenu.getProductId(),xmMenu.getMenuId(),"您成为需求【"+xmMenu.getMenuName()+"】的负责人,请跟进需求!"); + xmRecordService.addXmMenuRecord(xmMenu.getProductId(),xmMenu.getMenuId(),"新增产品需求","新增需求"+xmMenu.getMenuName()); m.put("data",xmMenu); }catch (BizException e) { @@ -434,12 +433,10 @@ public class XmMenuController { xmMenuMap.put("ltime",new Date()); xmMenuService.editSomeFields(xmMenuMap); if(xmMenuMap.containsKey("mmUserid")){ - if("3".equals(xmMenu.getDclass())){ - for (XmMenu menu : can) { - notifyMsgService.pushMsg(user,xmMenu.getMmUserid(),xmMenu.getMmUsername(),"4",menu.getProductId(),menu.getMenuId(),"您成为故事【"+menu.getMenuName()+"】的负责人,请跟进需求!"); - } - + for (XmMenu menu : can) { + notifyMsgService.pushMsg(user,xmMenu.getMmUserid(),xmMenu.getMmUsername(),"4",menu.getProductId(),menu.getMenuId(),"您成为需求【"+menu.getMenuName()+"】的负责人,请跟进需求!"); } + } xmRecordService.addXmMenuRecord(xmMenu.getProductId(),xmMenu.getMenuId(),"修改产品需求","修改产品需求"+xmMenu.getMenuName(),"", JSON.toJSONString(xmMenu)); diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmProductController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmProductController.java index 04aeb563..454e31fd 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmProductController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmProductController.java @@ -5,6 +5,7 @@ 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.msg.client.PushNotifyMsgService; import com.mdp.mybatis.PageUtils; import com.mdp.qx.HasQx; import com.mdp.safe.client.entity.User; @@ -59,6 +60,9 @@ public class XmProductController { @Autowired private XmRecordService xmRecordService; + @Autowired + PushNotifyMsgService notifyMsgService; + @Value("${mdp.platform-branch-id:platform-branch-001}") String platformBranchId="platform-branch-001"; @Autowired @@ -277,6 +281,14 @@ public class XmProductController { } } xmProductService.addProduct(xmProduct); + notifyMsgService.pushMsg(user,xmProduct.getPmUserid(),xmProduct.getPmUsername(),"3",xmProduct.getId(),xmProduct.getId(),"您成为产品【"+xmProduct.getProductName()+"】的产品经理,请及时跟进。"); + if(StringUtils.hasText(xmProduct.getAssUserid()) && !xmProduct.getAssUserid().equals(xmProduct.getPmUserid())){ + notifyMsgService.pushMsg(user,xmProduct.getAssUserid(),xmProduct.getAssUsername(),"3",xmProduct.getId(),xmProduct.getId(),"您成为产品【"+xmProduct.getProductName()+"】的副经理、助理,请及时跟进。"); + + } + if(StringUtils.hasText(xmProduct.getAdmUserid()) && !xmProduct.getAdmUserid().equals(xmProduct.getPmUserid())){ + notifyMsgService.pushMsg(user,xmProduct.getAdmUserid(),xmProduct.getAdmUsername(),"3",xmProduct.getId(),xmProduct.getId(),"您成为产品【"+xmProduct.getProductName()+"】的产品总监,请及时跟进。"); + } xmRecordService.addXmProductRecord(xmProduct.getId(),"创建产品","创建产品【"+xmProduct.getId()+"】【"+xmProduct.getProductName()+"】"); xmProductStateService.loadTasksToXmProductState(xmProduct.getId()); m.put("data",xmProduct); @@ -446,6 +458,17 @@ public class XmProductController { xmProductService.clearCache(xmProduct.getId()); xmRecordService.addXmProductRecord(xmProduct.getId(),"修改产品","修改产品【"+xmProductDb.getId()+"】【"+xmProductDb.getProductName()+"】",JSON.toJSONString(xmProduct),JSON.toJSONString(xmProductDb)); + if(StringUtils.hasText(xmProduct.getPmUserid()) && !xmProduct.getPmUserid().equals(xmProductDb.getPmUserid())){ + notifyMsgService.pushMsg(user,xmProduct.getPmUserid(),xmProduct.getPmUsername(),"3",xmProduct.getId(),xmProduct.getId(),"您成为产品【"+xmProduct.getProductName()+"】的产品经理,请及时跟进。"); + + } + if(StringUtils.hasText(xmProduct.getAssUserid()) && !xmProduct.getAssUserid().equals(xmProductDb.getAssUserid())){ + notifyMsgService.pushMsg(user,xmProduct.getAssUserid(),xmProduct.getAssUsername(),"3",xmProduct.getId(),xmProduct.getId(),"您成为产品【"+xmProduct.getProductName()+"】的副经理、助理,请及时跟进。"); + + } + if(StringUtils.hasText(xmProduct.getAdmUserid()) && !xmProduct.getAdmUserid().equals(xmProductDb.getAdmUserid()) ){ + notifyMsgService.pushMsg(user,xmProduct.getAdmUserid(),xmProduct.getAdmUsername(),"3",xmProduct.getId(),xmProduct.getId(),"您成为产品【"+xmProduct.getProductName()+"】的产品总监,请及时跟进。"); + } m.put("data",xmProduct); }catch (BizException e) { tips=e.getTips(); diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java index d634b386..a38aa010 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmProjectController.java @@ -7,6 +7,7 @@ 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.msg.client.PushNotifyMsgService; import com.mdp.mybatis.PageUtils; import com.mdp.qx.HasQx; import com.mdp.safe.client.entity.User; @@ -58,6 +59,10 @@ public class XmProjectController { @Autowired private XmRecordService xmRecordService; + + @Autowired + PushNotifyMsgService notifyMsgService; + @Value("${mdp.platform-branch-id:platform-branch-001}") String platformBranchId="platform-branch-001"; @@ -156,7 +161,16 @@ public class XmProjectController { } } } + User user = LoginUtils.getCurrentUserInfo(); xmProjectService.saveProject(xmProjectVo); + notifyMsgService.pushMsg(user,xmProjectVo.getPmUserid(),xmProjectVo.getPmUsername(),"1",xmProjectVo.getId(),xmProjectVo.getId(),"您成为项目【"+xmProjectVo.getName()+"】的项目经理,请及时跟进。"); + if(StringUtils.hasText(xmProjectVo.getAssUserid()) && !xmProjectVo.getAssUserid().equals(xmProjectVo.getPmUserid())){ + notifyMsgService.pushMsg(user,xmProjectVo.getAssUserid(),xmProjectVo.getAssUsername(),"1",xmProjectVo.getId(),xmProjectVo.getId(),"您成为项目【"+xmProjectVo.getName()+"】的副经理、助理,请及时跟进。"); + + } + if(StringUtils.hasText(xmProjectVo.getAdmUserid()) && !xmProjectVo.getAdmUserid().equals(xmProjectVo.getPmUserid())){ + notifyMsgService.pushMsg(user,xmProjectVo.getAdmUserid(),xmProjectVo.getAdmUsername(),"1",xmProjectVo.getId(),xmProjectVo.getId(),"您成为项目【"+xmProjectVo.getName()+"】的项目总监,请及时跟进。"); + } xmProjectService.clearProject(xmProjectVo.getId()); xmProjectStateService.loadTasksToXmProjectState(xmProjectVo.getId()); m.put("data",xmProjectVo); @@ -450,6 +464,17 @@ public class XmProjectController { return m; } xmProjectService.updateProject(xmProject); + if(StringUtils.hasText(xmProject.getPmUserid()) && !xmProject.getPmUserid().equals(xmProjectDb.getPmUserid())){ + notifyMsgService.pushMsg(user,xmProject.getPmUserid(),xmProject.getPmUsername(),"1",xmProjectDb.getId(),xmProjectDb.getId(),"您成为项目【"+xmProjectDb.getName()+"】的项目经理,请及时跟进。"); + + } + if(StringUtils.hasText(xmProject.getAssUserid()) && !xmProject.getAssUserid().equals(xmProjectDb.getAssUserid())){ + notifyMsgService.pushMsg(user,xmProject.getAssUserid(),xmProject.getAssUsername(),"1",xmProjectDb.getId(),xmProjectDb.getId(),"您成为项目【"+xmProjectDb.getName()+"】的副经理、助理,请及时跟进。"); + + } + if(StringUtils.hasText(xmProject.getAdmUserid()) && !xmProject.getAdmUserid().equals(xmProjectDb.getAdmUserid())){ + notifyMsgService.pushMsg(user,xmProject.getAdmUserid(),xmProject.getAdmUsername(),"1",xmProjectDb.getId(),xmProjectDb.getId(),"您成为项目【"+xmProjectDb.getName()+"】的项目总监,请及时跟进。"); + } xmProjectService.clearProject(xmProject.getId()); xmRecordService.addXmProjectRecord(xmProject.getId(),"项目-修改","修改项目【"+xmProjectDb.getName()+"】的基础信息", JSON.toJSONString(xmProject), JSON.toJSONString(xmProjectDb)); diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmQuestionController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmQuestionController.java index 4c823f94..6b8e6a69 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmQuestionController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmQuestionController.java @@ -330,7 +330,7 @@ public class XmQuestionController { handle.setReceiptMessage(user.getUsername()+"修改缺陷处理意见为:"+xmQuestionVo.getRemarks()); }else if(StringUtils.hasText(handlerUsername)){ handle.setReceiptMessage(user.getUsername()+"将缺陷指派给"+handlerUsername); - notifyMsgService.pushMsg(user,xmQuestionVo.getHandlerUserid(),xmQuestionVo.getHandlerUsername(),"5",xmQuestionVo.getProductId(),xmQuestionVo.getId(),"您有新的bug【"+xmQuestionVo.getName()+"】需要处理,请尽快修复!"); + notifyMsgService.pushMsg(user,xmQuestionVo.getHandlerUserid(),xmQuestionVo.getHandlerUsername(),"5",xmQuestionVo.getProductId(),xmQuestionVo.getId(),user.getUsername()+"将bug【"+xmQuestionVo.getName()+"】指派给您,请及时跟进。"); }else if(StringUtils.hasText(bugStatus)){ handle.setReceiptMessage(user.getUsername()+"将缺陷状态改为"+bugStatus); 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 89f7eaf3..31174081 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 @@ -9,6 +9,7 @@ import com.mdp.core.utils.BaseUtils; import com.mdp.core.utils.NumberUtil; import com.mdp.core.utils.RequestUtils; import com.mdp.core.utils.ResponseHelper; +import com.mdp.msg.client.PushNotifyMsgService; import com.mdp.mybatis.PageUtils; import com.mdp.qx.HasQx; import com.mdp.safe.client.entity.User; @@ -84,6 +85,10 @@ public class XmTaskController { @Autowired XmTaskSumParentsPushService pushService; + + @Autowired + PushNotifyMsgService notifyMsgService; + Map fieldsMap = BaseUtils.toMap(new XmTask()); Map fieldNameMap=map("id","任务编号","name","任务名称","parentTaskid","父任务编号","parentTaskname","父任务名称","projectId","项目编号","projectName","项目名称","level","任务级别","sortLevel","序号","executorUserid","任务执行人编号","executorUsername","任务执行人","preTaskid","前置任务编号","preTaskname","前置任务名称","startTime","任务开始时间","endTime","任务结束时间","milestone","里程碑","description","任务描述","remarks","备注","createUserid","任务创建人编号(谁创建谁负责)","createUsername","任务创建人(谁创建谁负责)","createTime","创建时间","rate","任务进度0-100(=实际工时/(实际工时+剩余工时)*100)","budgetAt","当前任务预算金额(calc_type=2时预算工时*单价,calc_type=1时下级汇总)","budgetWorkload","预算工时(calc_type=2时手工填写,calc_type=1时下级汇总)","actAt","当前任务实际费用金额(calc_type=2时,取实际工时*单价,calc_type=1时取下级汇总数据)待结算金额","actWorkload","任务取工时表报工工时汇总,","taskState","任务状态0待领取1已领取执行中2已完工3已结算4已关闭","taskType","0售前方案1投标2需求3设计4开发5测试6验收7部署8运维--来自基础数据表taskType","taskClass","1需结算0不需结算","toTaskCenter","是否发布到任务大厅0否1是,1时互联网可访问","actStartTime","实际开始时间-任务状态变成执行中的时间","actEndTime","实际结束时间-任务状态变成完工状态时的时间","bizProcInstId","当前流程实例编号","bizFlowState","当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除","phaseId","项目阶段编号(作废)","phaseName","项目阶段名称(作废)","taskSkillNames","技能列表,逗号分隔","exeUsernames","执行人列表逗号分隔如陈x(审核人),王x(监控人)","taskSkillIds","技能编号列表逗号分隔","exeUserids","执行人编号列表逗号分隔如u1(1),u2(2)","taskOut","执行方式-0内研1外购","planType","计划类型w1-周,w2-2周,w3-3周,m1-1月,m2-2月,q1-季,q2-半年,y1-年","settleSchemel","任务结算方案-来自数字字典xmTaskSettleSchemel","menuId","归属功能编号","menuName","归属功能名称","productId","产品编号根据功能变化带进","cbranchId","创建机构","cdeptid","创建部门","tagIds","标签编号,逗号分割","tagNames","标签名称,逗号分割","ntype","节点类型0-任务,1-计划。计划下可建立计划和任务,任务下不允许再扩展。也就是非叶子节点都是计划,叶子节点有可能是计划或者任务","childrenCnt","儿子节点个数","ltime","更新时间","pidPaths","父级id逗号分割,最后一个为本节点节点编号,以,号结尾","lvl","层级0-顶级,1-一级,2-二级,3-三级,4-四级。总共5级","isTpl","是否为模板","keyPath","是否为关键路径上的节点","uniInnerPrice","内部单位工时单价","uniOutPrice","外部单位工时单价","calcType","数据统计方式","ptype","计划分类0-项目,1产品,空为不区分","wtype","报工方式1-强制每日报工,2-工期内报工,0-无需报工","bctrl","报工限制0-不限制,1-不得超出预估工时","initWorkload","原始预估工作量,budget_workload发生变化后,进行备份","shareFee","分享赚佣金","oshare","开启分享赚功能0-否1是","crowd","是否众包0否1是,众包属于外购的一种"); @@ -274,7 +279,6 @@ public class XmTaskController { List can=new ArrayList<>(); List no=new ArrayList<>(); - for (XmTask xmTaskDb : xmTasksDb) { if(StringUtils.hasText(xmTaskDb.getCreateUserid())){ tips=groupService.checkIsAdmOrTeamHeadOrAss(user,xmTaskDb.getCreateUserid(),xmTaskDb.getProjectId()); @@ -320,6 +324,13 @@ public class XmTaskController { for (XmTask task : can) { xmRecordService.addXmTaskRecord(task.getProjectId(),task.getId(),"项目-任务-批量修改","修改任务"+task.getName(),"", JSON.toJSONString(xmTask)); } + if(xmTaskMap.containsKey("createUserid")){ + String createUserid= (String) xmTaskMap.get("createUserid"); + String createUsername= (String) xmTaskMap.get("createUsername"); + for (XmTask task : can) { + notifyMsgService.pushMsg(user,createUserid,createUsername,"2",task.getProjectId(),task.getId(),"您成为任务【"+task.getName()+"】的负责人,请注意跟进。"); + } + } } @@ -851,6 +862,7 @@ public class XmTaskController { } xmTaskService.batchImportFromTemplate(xmTasks); for (XmTask t : xmTasks) { + notifyMsgService.pushMsg(user,t.getCreateUserid(),t.getCreateUsername(),"2",t.getProjectId(),t.getId(),"您成为任务【"+t.getName()+"】的负责人,请注意跟进。"); xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量新增任务", "新增任务"+t.getName(),"",null); } diff --git a/xm-core/src/main/java/com/xm/core/service/XmTaskService.java b/xm-core/src/main/java/com/xm/core/service/XmTaskService.java index e0cb21bc..12317d8d 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmTaskService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmTaskService.java @@ -7,6 +7,7 @@ import com.mdp.core.service.BaseService; import com.mdp.core.utils.BaseUtils; import com.mdp.core.utils.DateUtils; import com.mdp.core.utils.NumberUtil; +import com.mdp.msg.client.PushNotifyMsgService; import com.mdp.safe.client.entity.User; import com.mdp.safe.client.utils.LoginUtils; import com.xm.core.entity.XmMenu; @@ -54,6 +55,10 @@ public class XmTaskService extends BaseService { XmTaskSumParentsPushService pushService; + @Autowired + PushNotifyMsgService notifyMsgService; + + @Autowired XmGroupService groupService; @@ -213,8 +218,10 @@ public class XmTaskService extends BaseService { //xmTaskSkillService.updateXmTaskSkillIdsAndNamesByTaskId(xmTaskVo.getId()); //新增日志 - xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-新增任务", "新增任务"+xmTask.getName()); - + xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-新增任务", "新增任务"+xmTask.getName()); + + notifyMsgService.pushMsg(user,xmTask.getCreateUserid(),xmTask.getCreateUsername(),"2",xmTask.getProjectId(),xmTask.getId(),"您成为任务【"+xmTask.getName()+"】的负责人,请注意跟进。"); + return xmTaskVo; } /**