using AutoMapper; using Microsoft.EntityFrameworkCore.Storage; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using BarCode.Web.Core.Dto.SingleData; using BarCode.Web.Core.Internal.Results; using BarCode.Web.Domain.Infrastructure; using BarCode.Web.Domain.IService.Public; using BarCode.Web.Domain.Values; using BarCode.Web.Domain.Values.Single; using BarCode.Web.Repositories.Configuration; using System.ComponentModel.Design; using Microsoft.Extensions.Caching.Memory; namespace BarCode.Web.Repositories { /// /// 基础数据 /// public class BasicsRepositories : IBasicsRepositories { private readonly IMapper _mapper; private readonly IServiceProvider _serviceProvider; private RepositoryDbContext _context; private readonly ILoginRepositories _loginService; private readonly ISingleDataService _singleDataService; private readonly IMemoryCache _memoryCache; public BasicsRepositories(RepositoryDbContext context, IMapper mapper, IServiceProvider serviceProvider, ILoginRepositories loginService, ISingleDataService singleDataService, IMemoryCache memoryCache) { _context = context; _mapper = mapper; _serviceProvider = serviceProvider; _loginService = loginService; _singleDataService = singleDataService; _memoryCache = memoryCache; } /// /// 获取所有人员 /// /// /// public async Task> GetStaffListAsync(int CompanyId) { var result = await _singleDataService.GetSysConfigData, SingleDataRequest> (new SingleDataRequest(CompanyId), SysConfigAction.GetStaffByCompany); if (!result.Success) return null; return result.Data.ToList(); } public async Task> GetSubUcStockAsync(int stockId) { var result = await _singleDataService.GetSysConfigData, SubStockRequest> (new SubStockRequest(stockId), SysConfigAction.GetChildWarehouseByPid); if (!result.Success) return null; return result.Data.ToList(); } public async Task> GetSubUcStockAsync(string systemCode, string name, int companyId) { var result = await _singleDataService.GetSysConfigData, SystemCodeRequest> (new SystemCodeRequest(systemCode, name, companyId), SysConfigAction.GetWmsSubWarehouseBySystemCodeAndNameAndCompany); if (!result.Success) return null; return result.Data.ToList(); } /// /// 获取仓位详情:根据仓位ID和公司ID /// /// /// /// public async Task GetSubUcStockAsync(int id, int companyId) { var result = await _singleDataService.GetSysConfigData, IdRequest> (new IdRequest(id, companyId), SysConfigAction.GetWmsSubWarehouseByIdAndCompany); if (!result.Success) return null; return result.Data; } /// /// 获取仓位集合:根据仓位ID集合和公司ID /// /// /// /// public async Task> GetSubUcStockAsync(List ids, int companyId) { var result = await _singleDataService.GetSysConfigData, IdsRequest> (new IdsRequest(ids, companyId), SysConfigAction.GetWmsSubWarehouseByIdsAndCompany); if (!result.Success) return null; return result.Data.ToList(); } /// /// 获取仓位详情:根据仓位编码和公司ID /// /// /// /// public async Task GetSubUcStockAsync(string code, int companyId) { var result = await _singleDataService.GetSysConfigData, CodeRequest> (new CodeRequest(code, companyId), SysConfigAction.GetWmsSubWarehouseByCodeAndCompany); if (!result.Success) return null; return result.Data; } /// /// 获取仓位集合:根据仓位编码集合和公司ID /// /// /// /// public async Task> GetSubUcStockAsync(List codes, int companyId) { var result = await _singleDataService.GetSysConfigData, CodesRequest> (new CodesRequest(codes, companyId), SysConfigAction.GetWmsSubWarehouseByCodesAndCompany); if (!result.Success) return null; return result.Data.ToList(); } public async Task> GetUcStockAsync(string systemCode, string name, int companyId) { var result = await _singleDataService.GetSysConfigData, SystemCodeRequest> (new SystemCodeRequest(systemCode, name, companyId), SysConfigAction.GetWmsWarehouseBySystemCodeAndNameAndCompany); if (!result.Success) return null; return result.Data.ToList(); } public IDbContextTransaction GetTransaction() { return _context.Database.BeginTransaction(); } public bool CommitTransaction(bool isRollback, IDbContextTransaction transaction) { try { if (transaction == null) return true; if (isRollback) { transaction.Rollback(); return false; } transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); return false; } return true; } /// /// 根据用户名精确匹配用户 /// /// /// /// public Task> GetUserIdsAsync(string name, int companyId) { var cache_key = SingleAction.Users + "_" + companyId + "_IdGetName"; var dic = _memoryCache.Get>(cache_key); if (dic == null) { var str = _singleDataService.GetSingleData(SingleAction.Users, companyId, 0); dic = _memoryCache.Get>(cache_key); if (dic == null) return Task.FromResult(new List()); } var v = from d in dic where d.Value.Equals(name) select d; return Task.FromResult(v.Select(s => s.Key).ToList()); } } }