示例#1
0
        /// <summary>
        /// Inserting BulkAccount
        /// </summary>
        /// <param name="listAccountUnitDtos"></param>
        /// <returns></returns>

        public async Task <List <AccountUnitDto> > BulkAccountInsert(CreateAccountListInput listAccountUnitDtos)
        {
            List <AccountUnit> accountList = new List <AccountUnit>();
            var createAccountList          = listAccountUnitDtos.AccountList.Select((item, index) => { item.ExcelRowNumber = index; return(item); }).ToList();

            //ErrorAccountList
            var erroredAccountList = await ValidateDuplicateRecords(createAccountList);

            //ValidAccountList
            var accounts    = listAccountUnitDtos.AccountList.Where(p => erroredAccountList.All(p2 => p2.AccountNumber != p.AccountNumber)).ToList();
            int accountCode = Convert.ToInt32(await _accountUnitManager.GetNextChildCodeAsync(parentId: null, coaId: listAccountUnitDtos.AccountList[0].ChartOfAccountId));

            foreach (var accountUnit in accounts)
            {
                accountUnit.ParentId = accountUnit.ParentId != 0 ? accountUnit.ParentId : null;
                var account = accountUnit.MapTo <AccountUnit>();
                account.TenantId      = AbpSession.GetTenantId();
                account.CreatorUserId = AbpSession.GetUserId();
                account.Code          = AccountUnit.CreateCode(accountCode);
                accountList.Add(account);
                accountCode++;
            }
            if (accountList.Count > 0)
            {
                await _customAccountRepository.BulkInsertAccountUnits(accountList : accountList);

                _cacheManager.GetCacheItem(CacheStoreName: CacheKeyStores.CacheAccountStore).Remove(CacheKeyStores.CalculateCacheKey(CacheKeyStores.AccountKey, Convert.ToInt32(AbpSession.GetTenantId())));
            }
            return(erroredAccountList);
        }