Exemple #1
0
        public async Task UpdateFinishAsync(ManagerProjectAuditMembersInput input)
        {
            //原来的
            var oldaudit = _projectAuditMemberRepository.GetAll().Where(ite => ite.ProjectBaseId == input.ProjectId && ite.UserAuditRole == (int)AuditRoleEnum.工程评审).ToList();

            //更新
            input.ProjectAuditMembersInput.ForEach(ite =>
            {
                var a = oldaudit.First(it => it.Id == ite.Id);
                a.AappraisalFileTypes = ite.AappraisalFileTypes;
                //a.FinishItems = ite.FinishItems;
                a.WorkDays = ite.WorkDays;
                a.WorkDes  = ite.WorkDes;
                a.GroupId  = ite.GroupId;
                _projectAuditMemberRepository.Update(a);
            });
        }
Exemple #2
0
        public async Task UpdateProjectAuditMembers(ManagerProjectAuditMembersInput input)
        {
            var baseinfo             = _projectBaseRepository.Get(input.ProjectId);
            var inputgroupMemberList = new List <CreateOrUpdateProjectAuditMembersInput>();
            var inputgroup           = input.ProjectAuditMembersInput.FirstOrDefault(r => r.IsGroup);

            if (inputgroup != null)
            {
                var groupService =
                    Abp.AbpBootstrapper.Create <Abp.Modules.AbpModule>()
                    .IocManager.IocContainer.Resolve <IProjectAuditGroupAppService>();
                var groupModel =
                    await groupService.GetProjectAuditGroupForEdit(new NullableIdDto <Guid>() { Id = inputgroup.GroupId });

                if (groupModel != null)
                {
                    var groupUserCharge = groupModel.Users.FirstOrDefault(r => r.UserRole == (int)ProjectAuditGroupRoleEnum.项目负责人);
                    if (groupUserCharge != null)
                    {
                        var entity = new CreateOrUpdateProjectAuditMembersInput()
                        {
                            UserAuditRole = 1,
                            IsGroup       = true,
                            UserId        = groupUserCharge.UserId,
                            GroupId       = groupUserCharge.GroupId,
                            ProjectBaseId = input.ProjectId
                        };
                        var entityFH2 = new CreateOrUpdateProjectAuditMembersInput()
                        {
                            UserAuditRole = (int)AuditRoleEnum.核人三,
                            IsGroup       = true,
                            UserId        = groupUserCharge.UserId,
                            GroupId       = groupUserCharge.GroupId,
                            ProjectBaseId = input.ProjectId
                        };
                        inputgroupMemberList.Add(entity);
                        inputgroupMemberList.Add(entityFH2);
                    }
                    var groupUserContact1 = groupModel.Users.FirstOrDefault(r => r.UserRole == (int)ProjectAuditGroupRoleEnum.联系人一);
                    if (groupUserContact1 != null)
                    {
                        var entity = new CreateOrUpdateProjectAuditMembersInput()
                        {
                            UserAuditRole = (int)AuditRoleEnum.联系人一,
                            IsGroup       = true,
                            UserId        = groupUserContact1.UserId,
                            GroupId       = groupUserContact1.GroupId,
                            ProjectBaseId = input.ProjectId
                        };
                        inputgroupMemberList.Add(entity);
                    }

                    var groupUserContact2 = groupModel.Users.FirstOrDefault(r => r.UserRole == (int)ProjectAuditGroupRoleEnum.联系人二);
                    if (groupUserContact2 != null)
                    {
                        var entity = new CreateOrUpdateProjectAuditMembersInput()
                        {
                            UserAuditRole = (int)AuditRoleEnum.联系人二,
                            IsGroup       = true,
                            UserId        = groupUserContact2.UserId,
                            GroupId       = groupUserContact2.GroupId,
                            ProjectBaseId = input.ProjectId
                        };
                        inputgroupMemberList.Add(entity);
                    }
                    input.ProjectAuditMembersInput.Remove(inputgroup);
                    input.ProjectAuditMembersInput.AddRange(inputgroupMemberList);
                }
            }


            //原来的
            var oldaudit = _projectAuditMemberRepository.GetAll().Where(ite => ite.ProjectBaseId == input.ProjectId).ToList();

            var shouldadd     = input.ProjectAuditMembersInput.Where(r => !r.Id.HasValue).ToList();
            var shouldupdate  = input.ProjectAuditMembersInput.Where(r => r.Id.HasValue).ToList();
            var shoulddel_Ids = oldaudit.Select(r => r.Id).ToList().Except(shouldupdate.Select(r => r.Id.Value).ToList()).ToList();

            //删除
            shoulddel_Ids.ForEach(ite =>
            {
                var deleModel = oldaudit.FirstOrDefault(r => r.Id == ite);
                _projectAuditMemberRepository.Delete(deleModel);
                if (deleModel.UserAuditRole == (int)AuditRoleEnum.工程评审 || deleModel.UserAuditRole == (int)AuditRoleEnum.财务评审)
                {
                    var finishsAllots = _projectPersentFinishAllotRepository.GetAll().Where(r => r.AuditMembeId == deleModel.Id);
                    if (finishsAllots.Count() > 0)
                    {
                        finishsAllots.ForEachAsync(r =>
                        {
                            _projectPersentFinishAllotRepository.Delete(r);
                            _projectPersentFinishRepository.Delete(r.FinishId);
                        });
                    }
                }
            });

            //更新
            shouldupdate.ForEach(ite =>
            {
                var a = oldaudit.First(it => it.Id == ite.Id);
                a.AappraisalFileTypes = ite.AappraisalFileTypes;
                //a.FinishItems = ite.FinishItems;
                a.WorkDays = ite.WorkDays;
                a.WorkDes  = ite.WorkDes;
                a.GroupId  = ite.GroupId;
                if (a.UserAuditRole == (int)AuditRoleEnum.财务初审)   ///财务初审 通过orgid 找到部门的分管领导的userid; orgidxieru flowid
                {
                    var orgmodel = _workFlowOrganizationUnitsRepository.Get(ite.UserId);
                    if (orgmodel.ChargeLeader.IsNullOrWhiteSpace())
                    {
                        throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "财务初审部门未指定分管领导");
                    }
                    var chargeleader = MemberPerfix.RemovePrefix(orgmodel.ChargeLeader).ToLong();
                    ite.UserId       = chargeleader;
                    ite.FlowId       = orgmodel.Id.ToString();
                }
                _projectAuditMemberRepository.Update(a);
                //if (string.IsNullOrWhiteSpace(ite.FinishItems) == false)
                //{
                //    //var ids = ite.FinishItems.Split(',');
                //    var ids = Array.ConvertAll(ite.FinishItems.Split(','), new Converter<string, Guid>(Guid.Parse));
                //    var items = _projectPersentFinishRepository.GetAll().Where(it => ids.Contains(it.Id)).ToList();
                //    var allpersent = items.Sum(it => it.Persent);
                //    foreach (var id in ids)
                //    {

                //        var finishitem = _projectPersentFinishRepository.Get(id);
                //        if (finishitem != null && finishitem.Name == "熟悉图纸")
                //        {
                //            double day = (double)(finishitem.Persent / allpersent) * ite.WorkDays.Value;
                //            _projectNoticeRepository.Insert(new ProjectNotice()
                //            {
                //                Content = "",
                //                FinishTime = DateTime.Now.AddDays(day),
                //                FinishId = id,
                //                ProjectId = input.BaseId.Value,
                //                UserId = ite.UserId
                //            });
                //            _backgroundWorkJobProjectPersentFinish.CreateJobForProjectPersentFinishSubmit(
                //                    input.BaseId.Value, id);
                //        }

                //    }
                //}
            });
            //新增
            shouldadd.ForEach(ite =>
            {
                ite.Id            = Guid.NewGuid();
                ite.ProjectBaseId = input.ProjectId;
                if (ite.UserAuditRole == (int)AuditRoleEnum.工程评审)
                {
                    var finishId    = Guid.NewGuid();
                    var finishModel = new ProjectPersentFinish()
                    {
                        Id = finishId, ProjectId = input.ProjectId
                    };
                    var finishAllotModel = new ProjectPersentFinishAllot()
                    {
                        Id = Guid.NewGuid(), FinishId = finishId, AuditMembeId = ite.Id.Value, ProjectId = input.ProjectId, IsMain = true
                    };
                    _projectPersentFinishRepository.Insert(finishModel);
                    _projectPersentFinishAllotRepository.Insert(finishAllotModel);
                }
                else if (ite.UserAuditRole == (int)AuditRoleEnum.财务初审)   ///财务初审 通过orgid 找到部门的分管领导的userid; orgidxieru flowid
                {
                    var orgmodel = _workFlowOrganizationUnitsRepository.Get(ite.UserId);
                    if (orgmodel.ChargeLeader.IsNullOrWhiteSpace())
                    {
                        throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "财务初审部门未指定分管领导");
                    }
                    var chargeleader = MemberPerfix.RemovePrefix(orgmodel.ChargeLeader).ToLong();
                    ite.UserId       = chargeleader;
                    ite.FlowId       = orgmodel.Id.ToString();
                }
                _projectAuditMemberRepository.Insert(ite.MapTo <ProjectAuditMember>());
            });

            if (input.ProjectAuditMembersInput.Any(r => r.UserAuditRole == (int)AuditRoleEnum.财务评审))
            {
                baseinfo.HasFinancialReview = true;
                //await _projectBaseRepository.UpdateAsync(baseinfo);
            }
            //baseinfo.ProjectStatus = ProjectStatus.在审;
        }