public async Task CreateProjectWorkSpaceNotice(NoticePublishInputForWorkSpaceInput input) { var projectModel = await _singleProjectInfoRepository.GetAsync(input.ProjectId); string userIdStr = ""; switch (input.UserType) { case 0: var projectMembers = _projectAuditMemberRepository.GetAll().Where(r => r.ProjectBaseId == projectModel.Id); var userIds = await projectMembers.Select(r => r.UserId).Distinct().ToListAsync(); if (projectModel.CreatorUserId.HasValue) { if (!userIds.Contains(projectModel.CreatorUserId.Value)) { userIds.Add(projectModel.CreatorUserId.Value); } } Debug.Assert(AbpSession.UserId != null, ""); var currentUserId = AbpSession.UserId.Value; if (!userIds.Contains(currentUserId)) { userIds.Add(currentUserId); } userIdStr = string.Join(",", userIds); break; case 1: var task = _workFlowTaskRepository.GetAll().Where(x => x.InstanceID == projectModel.Id.ToString()).OrderByDescending(x => x.Sort).FirstOrDefault(); if (task != null) { var taskUserIds = await _workFlowTaskRepository.GetAll().Where(x => x.InstanceID == projectModel.Id.ToString() && x.Sort < task.Sort).Select(r => r.ReceiveID).Distinct().ToListAsync(); userIdStr = string.Join(",", taskUserIds); } break; case 3: var taskAllUserIds = await _workFlowTaskRepository.GetAll().Where(x => x.InstanceID == projectModel.Id.ToString()).Select(r => r.ReceiveID).Distinct().ToListAsync(); userIdStr = string.Join(",", taskAllUserIds); break; case 2: userIdStr = input.NoticeUserIds; break; } if (!string.IsNullOrEmpty(userIdStr)) { await _noticeManager.CreateOrUpdateNoticeAsync(new ZCYX.FRMSCore.Application.NoticePublishInput() { Title = input.Title, Content = input.Content, NoticeUserIds = userIdStr, NoticeType = 1 }); } }
public string ProjectWriteRegisFlowActive(Guid instanceId) { var subInstaceId = ""; var projectRegisModel = _projectRegistrationRepository.Get(instanceId); var noticeService = Abp.AbpBootstrapper.Create <Abp.Modules.AbpModule>().IocManager.IocContainer.Resolve <IProjectNoticeAppService>(); var noticeInput = new NoticePublishInputForWorkSpaceInput(); noticeInput.ProjectId = projectRegisModel.ProjectId.Value; var inputTypeStr = projectRegisModel.Type == 1 ? "工作联系" : "意见征询"; noticeInput.Content = $"发布{inputTypeStr},详情在项目查询工作室查看"; var projectName = from p in _singleProjectInfoRepository.GetAll() where p.Id == projectRegisModel.ProjectId select p.SingleProjectName; if (projectName.Any()) { //noticeInput.Title = $"项目:{projectName.FirstOrDefault()} 发布{inputTypeStr}"; //noticeService.CreateProjectWorkSpaceNotice(noticeInput); var model = new NoticeDocument(); model.Id = Guid.NewGuid(); model.DispatchTime = DateTime.Now; model.Content = projectRegisModel.Content; model.IsNeedRes = true; model.ProjectId = projectRegisModel.ProjectId; model.Title = $"{projectName.FirstOrDefault()}-工作联系"; model.ProjectRegistrationId = instanceId; //model.NoticeType = input.NoticeType; //model.DispatchUnit = input.DispatchUnit; //model.Status = 0; //model.PrintNum = input.PrintNum; //model.DispatchCode = input.DispatchCode; //model.Urgency = input.Urgency; //model.SecretLevel = input.SecretLevel; //model.ReceiveId = input.ReceiveId; //model.ReceiveName = input.ReceiveName; //model.Reason = input.Reason; //model.PubilishUserName = input.PubilishUserName; //model.MainReceiveName = input.MainReceiveName; //model.DocumentTyep = input.DocumentTyep; //model.DispatchUnitName = input.DispatchUnitName; _noticeDocumentRepository.Insert(model); subInstaceId = model.Id.ToString(); } else { throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "获取项目数据异常"); } return(subInstaceId); }
public void PassProjectStop(Guid instanceId) { var stopModel = _projectAuditStopRepository.Get(instanceId); var singleProjectModel = _singleProjectInfoRepository.Get(stopModel.ProjectId); singleProjectModel.IsStop = ProjectStopTypeEnum.WaitRelieve; _singleProjectInfoRepository.Update(singleProjectModel); var noticeService = Abp.AbpBootstrapper.Create <Abp.Modules.AbpModule>().IocManager.IocContainer.Resolve <IProjectNoticeAppService>(); var noticeInput = new NoticePublishInputForWorkSpaceInput(); noticeInput.ProjectId = singleProjectModel.Id; noticeInput.Content = "开始停滞"; noticeInput.UserType = 1; noticeInput.Title = $"项目:{singleProjectModel.SingleProjectName} 开始停滞"; noticeService.CreateProjectWorkSpaceNoticeSync(noticeInput); }
public void CompleteRejectProject(Guid instanceId) { var stopModel = _projectAuditStopRepository.Get(instanceId); var singleProjectModel = _singleProjectInfoRepository.Get(stopModel.ProjectId); singleProjectModel.IsStop = ProjectStopTypeEnum.NoStop; _singleProjectInfoRepository.Update(singleProjectModel); var noticeService = Abp.AbpBootstrapper.Create <Abp.Modules.AbpModule>().IocManager.IocContainer.Resolve <IProjectNoticeAppService>(); var noticeInput = new NoticePublishInputForWorkSpaceInput(); noticeInput.ProjectId = singleProjectModel.Id; noticeInput.Content = "停滞结束"; noticeInput.UserType = 1; noticeInput.Title = $"项目:{singleProjectModel.SingleProjectName} 停滞结束"; noticeService.CreateProjectWorkSpaceNoticeSync(noticeInput); StopProjectInWorkFlow(singleProjectModel.Id, AuditFlowId.ToGuid(), false); }
public async Task <InitWorkFlowOutput> CreateStopAsync(CreateProjectAuditStopInput input) { var projectModel = await _singleProjectInfoRepository.GetAsync(input.ProjectBaseId); if (projectModel == null) { throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "项目已被删除"); } var exitprojectStopModelCount = await _projectAuditStopRepository.GetAll().Where(r => r.Status >= 0 && r.ProjectId == input.ProjectBaseId).CountAsync(); if (exitprojectStopModelCount > 0) { throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "存在未解除的停滞申请。"); } var model = new ProjectAuditStop() { Id = Guid.NewGuid(), Status = 0, ProjectId = input.ProjectBaseId, Remark = input.Remark, DelayDay = input.DelayDay, }; await _projectAuditStopRepository.InsertAsync(model); projectModel.IsStop = ProjectStopTypeEnum.AapplyStop; await _singleProjectInfoRepository.UpdateAsync(projectModel); await StopProjectInWorkFlowAsync(input.ProjectBaseId, AuditFlowId.ToGuid()); var noticeService = Abp.AbpBootstrapper.Create <Abp.Modules.AbpModule>().IocManager.IocContainer.Resolve <IProjectNoticeAppService>(); var noticeInput = new NoticePublishInputForWorkSpaceInput(); noticeInput.ProjectId = input.ProjectBaseId; noticeInput.Content = "提交停滞申请"; noticeInput.UserType = 1; noticeInput.Title = $"项目:{projectModel.SingleProjectName} 停滞申请"; await noticeService.CreateProjectWorkSpaceNotice(noticeInput); return(new InitWorkFlowOutput() { InStanceId = model.Id.ToString() }); }
public async Task WriteWorkLog(WorkLogInput input) { long userId = AbpSession.UserId.Value; if (input.StepId.HasValue) { var taskModel = await _workFlowTaskRepository.FirstOrDefaultAsync(r => r.InstanceID == input.ProjectId.Value.ToString() && r.StepID == input.StepId.Value); if (taskModel != null) { input.StepName = taskModel.StepName; } } var logId = await _workTaskManager.InsertWorkLog(new ProjectWorkTask { UserId = userId, ProjectId = input.ProjectId, Title = string.Format("{0}-{1}", input.Title, input.WorkTime.ToString("yyyyMMdd")), StepId = input.StepId, StepName = input.StepName }, new ProjectWorkLog { UserId = userId, ProjectId = input.ProjectId, Title = string.Format("{0}-{1}", input.Title, input.WorkTime.ToString("yyyyMMdd")), Content = input.Content, WorkTime = input.WorkTime, LogType = input.LogType, //Files = Newtonsoft.Json.JsonConvert.SerializeObject(input.Files), StepId = input.StepId, StepName = input.StepName }); var fileList = new List <AbpFileListInput>(); foreach (var filemodel in input.Files) { var fileone = new AbpFileListInput() { Id = filemodel.Id, Sort = filemodel.Sort }; fileList.Add(fileone); } await _abpFileRelationAppService.CreateAsync(new CreateFileRelationsInput() { BusinessId = logId.ToString(), BusinessType = (int)AbpFileBusinessType.工作底稿附件, Files = fileList }); var noticeService = Abp.AbpBootstrapper.Create <Abp.Modules.AbpModule>().IocManager.IocContainer.Resolve <IProjectNoticeAppService>(); var noticeInput = new NoticePublishInputForWorkSpaceInput(); noticeInput.ProjectId = input.ProjectId.Value; noticeInput.Content = $"发布工作底稿,详情在项目查询工作室查看"; noticeInput.UserType = 1; var projectName = from p in _singleProjectInfoRepository.GetAll() where p.Id == input.ProjectId select p.SingleProjectName; if (projectName.Any()) { noticeInput.Title = $"项目:{projectName.FirstOrDefault()} 发布工作底稿"; await noticeService.CreateProjectWorkSpaceNotice(noticeInput); await CurrentUnitOfWork.SaveChangesAsync(); } else { throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "获取项目数据异常"); } }