客户相关导入优化

dev
嵇文龙 1 month ago
parent 123b85fbce
commit 5c5df78378

@ -123,13 +123,15 @@ public class ClientBankService : ServiceBase, IClientBankService
{
long userId = long.Parse(User.UserId);
DateTime dtNow = DateTime.Now;
TenantDb.QueryFilter.Clear<IOrgId>();
TenantDb.QueryFilter.Clear<ISharedOrgId>();
var clientNames = list.Select(x => x.CompanyName).Distinct();
var clients = await TenantDb.Queryable<InfoClient>().Where(x => clientNames.Contains(x.ShortName))
var clients = await TenantDb.Queryable<InfoClient>().Where(x => clientNames.Contains(x.ShortName) || clientNames.Contains(x.Description))
.Select(x => new
{
x.Id,
x.ShortName,
x.Description,
x.OrgId
}).ToListAsync();
@ -137,40 +139,43 @@ public class ClientBankService : ServiceBase, IClientBankService
List<InfoClientBank> banks = new List<InfoClientBank>(list.Count);
foreach (var model in list)
{
var client = clients.Find(x => x.ShortName == model.CompanyName);
if (client == null)
var clientList = clients.FindAll(x => x.ShortName == model.CompanyName || x.Description == model.CompanyName);
if (clientList.Count == 0)
{
sb.Append("," + model.CompanyName);
continue;
}
InfoClientBank bank = new()
{
ClientId = client.Id,
OrgId = client.OrgId,
BankName = model.BankName,
Account = model.BankAccount,
BankAddress = model.BankAddress,
BankAccountNo = model.BankAccount,
IsInvoiceDefault = model.IsDefault,
CreateBy = userId,
CreateUserName = User.UserName,
CreateTime = dtNow,
InvoiceHeaders = []
};
if (model.Currency == "人民币")
bank.Currency = FeeCurrency.RMB_CODE;
else if (model.Currency == "美元")
bank.Currency = FeeCurrency.USD_CODE;
bank.InvoiceHeaders.Add(new InvoiceHeader
foreach (var item in clientList)
{
Header = model.InvoiceHeader,
AddressTel = model.InvoiceAddress + " " + model.InvoiceTel
});
banks.Add(bank);
InfoClientBank bank = new()
{
ClientId = item.Id,
OrgId = item.OrgId,
BankName = model.BankName,
Account = model.BankAccount,
BankAddress = model.BankAddress,
BankAccountNo = model.BankAccount,
IsInvoiceDefault = model.IsDefault,
CreateBy = userId,
CreateUserName = User.UserName,
CreateTime = dtNow,
InvoiceHeaders = []
};
if (model.Currency == "人民币")
bank.Currency = FeeCurrency.RMB_CODE;
else if (model.Currency == "美元")
bank.Currency = FeeCurrency.USD_CODE;
bank.InvoiceHeaders.Add(new InvoiceHeader
{
Header = model.InvoiceHeader,
AddressTel = model.InvoiceAddress + " " + model.InvoiceTel
});
banks.Add(bank);
}
}
if (sb.Length > 0)

@ -100,45 +100,50 @@ public class ClientContactService : ServiceBase, IClientContactService
{
long userId = long.Parse(User.UserId);
DateTime dtNow = DateTime.Now;
TenantDb.QueryFilter.Clear<IOrgId>();
TenantDb.QueryFilter.Clear<ISharedOrgId>();
var clientNames = list.Select(x => x.CompanyName).Distinct();
var clients = await TenantDb.Queryable<InfoClient>().Where(x => clientNames.Contains(x.ShortName))
var clients = await TenantDb.Queryable<InfoClient>().Where(x => clientNames.Contains(x.ShortName) || clientNames.Contains(x.Description))
.Select(x => new
{
x.Id,
x.ShortName,
x.Description,
x.OrgId
}).ToListAsync();
StringBuilder sb = new();
List<InfoClientContact> contacts = new List<InfoClientContact>(list.Count);
List<InfoClientContact> contacts = new(list.Count * 2);
foreach (var model in list)
{
var client = clients.Find(x => x.ShortName == model.CompanyName);
if (client == null)
var clientList = clients.FindAll(x => x.ShortName == model.CompanyName || x.Description == model.CompanyName);
if (clientList.Count == 0)
{
sb.Append("," + model.CompanyName);
continue;
}
InfoClientContact contact = new()
foreach (var item in clientList)
{
ClientId = client.Id,
OrgId = client.OrgId,
CreateBy = userId,
CreateUserName = User.UserName,
CreateTime = dtNow,
Name = model.ContactName,
EnName = model.ContactEnName,
Job = model.Job,
Email = model.Email,
Mobile = model.Mobile,
Tel = model.Tel,
QQ = model.QQ,
IsDefault = model.IsDefault
};
contacts.Add(contact);
InfoClientContact contact = new()
{
ClientId = item.Id,
OrgId = item.OrgId,
CreateBy = userId,
CreateUserName = User.UserName,
CreateTime = dtNow,
Name = model.ContactName,
EnName = model.ContactEnName,
Job = model.Job,
Email = model.Email,
Mobile = model.Mobile,
Tel = model.Tel,
QQ = model.QQ,
IsDefault = model.IsDefault
};
contacts.Add(contact);
}
}
if (sb.Length > 0)

@ -318,13 +318,13 @@ public class ClientInfoService : ServiceBase, IClientInfoService
AccountDates = []
};
var dicValue = dicList.Find(x => x.Name == model.Attribute)?.Value;
if (!string.IsNullOrEmpty(dicValue))
var dicValues = dicList.FindAll(x => model.AttributeNames.Contains(x.Name));
foreach (var item in dicValues)
{
dicValue = dicValue.ToUpperCamelCase();
var dicValue = item.Value.ToUpperCamelCase();
PropertyExtensions.SetPropertyValue(client.ClientTag, dicValue, true);
}
client.AccountDates.Add(new InfoClientAccountDate
{
AccountType = model.StlType,

@ -357,7 +357,7 @@ public class ClientInfoController : ApiController
{
var model = new InfoClientBankModel
{
CompanyName = item["A"]?.ToString(),
CompanyName = item["A"]?.ToString()?.Trim(),
Currency = item["B"]?.ToString(),
BankName = item["C"]?.ToString(),
BankAccount = item["E"]?.ToString(),
@ -415,7 +415,7 @@ public class ClientInfoController : ApiController
{
var model = new InfoClientContactModel
{
CompanyName = item["A"]?.ToString(),
CompanyName = item["A"]?.ToString()?.Trim(),
ContactName = item["B"]?.ToString(),
ContactEnName = item["C"]?.ToString(),
Tel = item["D"]?.ToString(),

Loading…
Cancel
Save