public async Task UpdateDepartment(UpdateDepartmentInput input) { var department = await _departmentRepository.SingleOrDefaultAsync(p => p.Id == input.Id); if (department == null) { throw new BusinessException($"系统中不存在Id为{input.Id}的部门信息"); } var orgInfo = await _organizationRepository.SingleOrDefaultAsync(p => p.Id == department.OrgId); if (orgInfo == null) { throw new BusinessException($"系统中不存在Id为{department.Id}的部门信息"); } if (input.DeptTypeId == 0) { throw new BusinessException($"请选择部门类型"); } var workbookAppServiceProxy = GetService <IWordbookAppService>(); var checkDeptTypeResult = await workbookAppServiceProxy.Check(new CheckWordbookInput() { WordbookCode = SystemPresetWordbookCode.Organization.DeptType, WordbookItemId = input.DeptTypeId }); if (!checkDeptTypeResult) { throw new BusinessException($"部门类型Id不正确,请选择正确的部门类型"); } department = input.MapTo(department); orgInfo = input.MapTo(orgInfo); await UnitOfWorkAsync(async (conn, trans) => { await _organizationRepository.UpdateAsync(orgInfo, conn, trans); await _departmentRepository.UpdateAsync(department, conn, trans); }, Connection); }
public async Task <UpdateDepartmentOutput> UpdateDepartment(UpdateDepartmentInput input) { var department = await _departmentRepository.SingleOrDefaultAsync(p => p.Id == input.Id); if (department == null) { throw new BusinessException($"系统中不存在Id为{input.Id}的部门信息"); } var orgInfo = await _organizationRepository.SingleOrDefaultAsync(p => p.Id == department.OrgId); if (orgInfo == null) { throw new BusinessException($"系统中不存在Id为{department.Id}的部门信息"); } if (!input.Identification.Equals(orgInfo.Identification)) { var exsitOrg = await _organizationRepository.FirstOrDefaultAsync(p => p.Identification == input.Identification); if (exsitOrg != null) { throw new BusinessException($"系统中已经存在标识为{input.Identification}的组织机构"); } } if (input.DeptTypeKey.IsNullOrEmpty()) { throw new BusinessException("请选择部门类型"); } var workbookAppServiceProxy = GetService <IWordbookAppService>(); var checkDeptTypeResult = await workbookAppServiceProxy.Check(new CheckWordbookInput { WordbookCode = SystemPresetWordbookCode.Organization.DeptType, WordbookItemKey = input.DeptTypeKey }); if (!checkDeptTypeResult) { throw new BusinessException("部门类型Id不正确,请选择正确的部门类型"); } department = input.MapTo(department); orgInfo = input.MapTo(orgInfo); Debug.Assert(_session.UserId.HasValue, "登录用户的UserId不会为空"); await UnitOfWorkAsync(async (conn, trans) => { await _organizationRepository.UpdateAsync(orgInfo, conn, trans); await _departmentRepository.UpdateAsync(department, conn, trans); if (input.Positions != null && input.Positions.Any()) { if (input.Positions.Count(p => p.IsLeadingOfficial) > 1) { throw new BusinessException("部门只允许设置一个负责人岗位"); } var positionIds = input.Positions.Where(p => p.Id != 0 && p.Id.HasValue).Select(p => p.Id); var deletePositionSql = "UPDATE `Position` SET IsDeleted=@IsDeleted,DeleteBy=@DeleteBy,DeleteTime=@DeleteTime WHERE DeptId=@DeptId AND Id NOT in @Id AND TenantId=@TenantId"; await conn.ExecuteAsync(deletePositionSql, new { IsDeleted = HeroConstants.DeletedFlag, DeleteBy = _session.UserId.Value, DeleteTime = DateTime.Now, DeptId = department.Id, Id = positionIds, TenantId = _session.TenantId }, trans); var sort = 1; foreach (var positionInput in input.Positions) { var positionCode = orgInfo.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + sort.ToString() .PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); if (positionInput.Id.HasValue && positionInput.Id != 0) { var position = await _positionRepository.GetAsync(positionInput.Id.Value); position.CheckDataAnnotations().CheckValidResult(); position = positionInput.MapTo(position); position.Code = positionCode; await _positionRepository.UpdateAsync(position, conn, trans); } else { var position = positionInput.MapTo <Position>(); position.DeptId = department.Id; position.CheckDataAnnotations().CheckValidResult(); position.Code = positionCode; await _positionRepository.InsertAsync(position, conn, trans); } sort++; } } }, Connection); return(new UpdateDepartmentOutput { OrgId = orgInfo.Id, DeptId = department.Id, Tips = "更新部门信息成功" }); }
public async Task <UpdateDepartmentOutput> UpdateDepartment(UpdateDepartmentInput input) { var department = await _departmentRepository.SingleOrDefaultAsync(p => p.Id == input.Id); if (department == null) { throw new BusinessException($"系统中不存在Id为{input.Id}的部门信息"); } var orgInfo = await _organizationRepository.SingleOrDefaultAsync(p => p.Id == department.OrgId); if (orgInfo == null) { throw new BusinessException($"系统中不存在Id为{department.Id}的部门信息"); } if (input.DeptTypeId == 0) { throw new BusinessException($"请选择部门类型"); } var workbookAppServiceProxy = GetService <IWordbookAppService>(); var checkDeptTypeResult = await workbookAppServiceProxy.Check(new CheckWordbookInput() { WordbookCode = SystemPresetWordbookCode.Organization.DeptType, WordbookItemId = input.DeptTypeId }); if (!checkDeptTypeResult) { throw new BusinessException($"部门类型Id不正确,请选择正确的部门类型"); } department = input.MapTo(department); orgInfo = input.MapTo(orgInfo); await UnitOfWorkAsync(async (conn, trans) => { await _organizationRepository.UpdateAsync(orgInfo, conn, trans); await _departmentRepository.UpdateAsync(department, conn, trans); await _positionRepository.DeleteAsync(p => p.DeptId == department.Id, conn, trans); if (input.Positions != null && input.Positions.Any()) { if (input.Positions.Count(p => p.IsLeadingOfficial) > 1) { throw new BusinessException($"部门只允许设置一个负责人岗位"); } var sort = 1; foreach (var positionInput in input.Positions) { var position = positionInput.MapTo <Position>(); position.DeptId = department.Id; position.CheckDataAnnotations().CheckValidResult(); var positionCode = orgInfo.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + sort.ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); await _positionDomainService.CreatePosition(position, positionCode, conn, trans); sort++; } } }, Connection); return(new UpdateDepartmentOutput() { OrgId = orgInfo.Id, DeptId = department.Id, Tips = "更新部门信息成功" }); }