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); }); }
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.在审; }