Ejemplo n.º 1
0
        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
                });
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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()
            });
        }
Ejemplo n.º 6
0
        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, "获取项目数据异常");
            }
        }