using AutoMapper; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WMS.Web.Core.Dto; using WMS.Web.Core.Help; using WMS.Web.Domain.Entitys; using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.IService.Public; using WMS.Web.Domain.Mappers; using WMS.Web.Repositories.Configuration; namespace WMS.Web.Repositories { /// /// 序列号 /// public class SerialNumbersRepositories : ISerialNumbersRepositories { private readonly IMapper _mapper; private readonly IServiceProvider _serviceProvider; private readonly RepositoryDbContext _context; private readonly IErpService _erpService; private readonly IErpBasicDataExtendService _erpBasicDataExtendService; public SerialNumbersRepositories(RepositoryDbContext context, IMapper mapper, IServiceProvider serviceProvider, IErpService erpService, IErpBasicDataExtendService erpBasicDataExtendService) { _context = context; _mapper = mapper; _serviceProvider = serviceProvider; _erpService = erpService; _erpBasicDataExtendService = erpBasicDataExtendService; } public async Task AddRange(List entitys, bool isTransaction = true) { IDbContextTransaction _transaction = null; if (isTransaction) _transaction = _context.Database.BeginTransaction(); try { if (entitys != null && entitys.Count != 0) { await _context.SerialNumbers.AddRangeAsync(entitys); await _context.SaveChangesAsync(); } if (_transaction != null) _transaction.Commit(); return true; } catch (Exception ex) { if (_transaction != null) _transaction.Rollback(); return false; } } /// /// 批量修改 /// /// /// /// public async Task EditEntityList(List entitys, bool isTransaction = true) { IDbContextTransaction _transaction = null; if (isTransaction) _transaction = _context.Database.BeginTransaction(); try { List list = entitys.Select(s => s.Id).ToList(); var res = await _context.SerialNumbers .Where(f => list.Contains(f.Id)).ToListAsync(); _mapper.ToMapList(entitys, res); await _context.SaveChangesAsync(); if (_transaction != null) _transaction.Commit(); } catch (Exception ex) { if (_transaction != null) _transaction.Rollback(); return false; } return true; } /// /// 根据序列号查询 /// /// /// public async Task> GetEntityList(List serialNumbers) { var res = await _context.SerialNumbers .Where(f => serialNumbers.Contains(f.SerialNumber)) .ToListAsync(); return res.Clone(); } public async Task> GetEntityListByBoxId(int boxId) { var res = await _context.SerialNumbers .Where(f => f.BoxId == boxId) .ToListAsync(); return res.Clone(); } /// /// 根据序列号 /// /// /// public async Task GetSerialNumber(string serialNumber) { MaterialResponse response = new MaterialResponse(); var materials_result = await _erpService.BillQueryForMaterial(); if (!materials_result.IsSuccess) return response; var materials = materials_result.Data.ToList(); var material = materials.FirstOrDefault(f => f.Specifications.Equals(serialNumber)); if (material != null) { response.MaterialId = material.MaterialId; response.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, material.MaterialId); response.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, material.MaterialId); response.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, material.MaterialId); return response; } var entity = await _context.SerialNumbers.FirstOrDefaultAsync(w => serialNumber.Equals(w.SerialNumber)); if (entity == null) return null; response.SerialNumber = entity.SerialNumber; response.MaterialId = entity.MaterialId; response.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity.MaterialId); response.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, entity.MaterialId); response.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, entity.MaterialId); return response; } } }