private async Task CreateTopCorporation(CreateCorporationInput input) { if (input.Mold != Shared.CorporationMold.Group && input.Mold != Shared.CorporationMold.Monomer) { throw new BusinessException("公司类型不正确,顶层公司只能指定为:集团公司或单体公司"); } var orgCode = string.Empty; var maxTopOrg = (await _organizationRepository.GetAllAsync(p => p.Level == 1 && p.OrgType == Shared.Organizations.OrganizationType.Corporation)).OrderByDescending(p => p.Id).FirstOrDefault(); if (maxTopOrg == null) { orgCode = "1".PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); } else { orgCode = (Convert.ToInt32(maxTopOrg.Code.TrimStart('0')) + 1).ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); } var topCorporation = input.MapTo <Corporation>(); var topOrgInfo = input.MapTo <Organization>(); topOrgInfo.Code = orgCode; topOrgInfo.Level = 1; await UnitOfWorkAsync(async (conn, trans) => { var orgId = await _organizationRepository.InsertAndGetIdAsync(topOrgInfo, conn, trans); topCorporation.OrgId = orgId; await _corporationRepository.InsertAsync(topCorporation, conn, trans); }, Connection); }
private async Task CreateSubCorporation(CreateCorporationInput input) { var parentCorporation = await _corporationRepository.SingleAsync(p => p.OrgId == input.ParentId.Value); if (parentCorporation.Mold == Shared.CorporationMold.Monomer) { throw new BusinessException("单体公司不允许增加子公司"); } var parentOrg = await _organizationRepository.GetAsync(input.ParentId.Value); var corporation = input.MapTo <Corporation>(); 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.CodeSeparator).Last().TrimStart('0')) + 1).ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol); } orgInfo.Code = parentOrg.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + orgCode; orgInfo.Level = parentOrg.Level + 1; await UnitOfWorkAsync(async (conn, trans) => { var orgId = await _organizationRepository.InsertAndGetIdAsync(orgInfo, conn, trans); corporation.OrgId = orgId; await _corporationRepository.InsertAsync(corporation, conn, trans); }, Connection); }