public async Task <string> Create(CreatePositionInput input) { input.CheckDataAnnotations().CheckValidResult(); await _positionDomainService.CreatePosition(input); return("新增职位信息成功"); }
public async Task CreateDepartment(CreateDepartmentInput input) { var parentOrg = await _organizationRepository.SingleOrDefaultAsync(p => p.Id == input.ParentId); if (parentOrg == null) { throw new BusinessException($"不存在Id为{input.ParentId}的上级信息"); } 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不正确,请选择正确的部门类型"); } var department = input.MapTo <Department>(); var orgInfo = input.MapTo <Organization>(); var orgCode = string.Empty; var maxLevelOrg = (await _organizationRepository.GetAllAsync(p => p.ParentId == parentOrg.Id)).OrderByDescending(p => p.Id).FirstOrDefault(); if (maxLevelOrg == null) { orgCode = "1".PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); } else { orgCode = (Convert.ToInt32(maxLevelOrg.Code.Split(HeroConstants.CodeRuleRestrain.CodeCoverSymbol).Last().TrimStart('0')) + 1).ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); } orgInfo.Level = parentOrg.Level + 1; orgInfo.Code = parentOrg.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + orgCode; await UnitOfWorkAsync(async (conn, trans) => { var orgId = await _organizationRepository.InsertAndGetIdAsync(orgInfo, conn, trans); department.OrgId = orgId; var deptId = await _departmentRepository.InsertAndGetIdAsync(department, conn, trans); if (input.Postions != null && input.Postions.Any()) { if (input.Postions.Count(p => p.IsLeadingOfficial) > 1) { throw new BusinessException($"部门只允许设置一个负责人岗位"); } var sort = 1; foreach (var position in input.Postions) { position.DeptId = deptId; 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); }