pda库存查询

This commit is contained in:
18942506660
2024-10-09 14:48:19 +08:00
parent 10a3330f80
commit f47a54d707
13 changed files with 679 additions and 1 deletions

View File

@@ -10,11 +10,13 @@ using System.Threading.Tasks;
using WMS.Web.Core.Dto.Erp;
using WMS.Web.Core.Dto.Erp.Org;
using WMS.Web.Core.Dto.Inventory;
using WMS.Web.Core.Dto.Login;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys;
using WMS.Web.Domain.Infrastructure;
using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Mappers;
using WMS.Web.Domain.Values;
using WMS.Web.Domain.Values.Single;
using WMS.Web.Repositories.Configuration;
@@ -33,7 +35,7 @@ namespace WMS.Web.Repositories
private readonly IErpService _erpService;
private ILogger<BoxInventoryRepositories> _logger;
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
private readonly IBasicsRepositories _basicsRepositories;
public BoxInventoryRepositories(RepositoryDbContext context,
IMapper mapper,
@@ -42,6 +44,7 @@ namespace WMS.Web.Repositories
ILoginRepositories loginRepositories,
IServiceProvider serviceProvider,
ISingleDataService singleDataService,
IBasicsRepositories basicsRepositories,
IErpBasicDataExtendService erpBasicDataExtendService)
{
_context = context;
@@ -52,6 +55,7 @@ namespace WMS.Web.Repositories
_serviceProvider = serviceProvider;
_loginRepositories = loginRepositories;
_singleDataService = singleDataService;
_basicsRepositories = basicsRepositories;
}
/// <summary>
@@ -321,5 +325,147 @@ namespace WMS.Web.Repositories
{
return await GetPagedList(dto, companyId);
}
/// <summary>
/// PDA库存查询-物料
/// </summary>
/// <param name="dto"></param>
/// <param name="companyId"></param>
/// <returns></returns>
public async Task<GetPagedListBoxByMaterialResponse> GetPagedListBoxByMaterial(GetPagedListBoxByMaterialRequest dto, int companyId)
{
//1.获取物料集合和组织集合
var materials = new List<ErpMaterialDto>();
var materials_result = await _erpService.BillQueryForMaterial();
if (materials_result.IsSuccess)
materials = materials_result.Data.ToList();
ErpMaterialDto material = null;
//物料集合;模糊查询后的物料集合
if (!string.IsNullOrEmpty(dto.MaterialNumber))
{
if (materials.Count != 0)
{
material = materials.FirstOrDefault(w => w.MaterialNumber.Equals(dto.MaterialNumber)
|| w.MaterialName.Equals(dto.MaterialNumber)
|| w.Specifications.Equals(dto.MaterialNumber)
);
if (material == null) return new GetPagedListBoxByMaterialResponse();
}
}
var query = _context.BoxInventoryDetails
.GroupJoin(_context.BoxInventory, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders })
.SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order })
.GroupJoin(_context.Box, p => p.order.BoxId, t => t.Id, (p, ts) => new { p.detail, p.order, ts })
.SelectMany(x => x.ts.DefaultIfEmpty(), (p, box) => new { p.detail, p.order, box })
.Where(adv => 1 == 1 && adv.detail.MaterialNumber.Equals(material.MaterialNumber));
if (!string.IsNullOrEmpty(dto.StockCode))
{
var splitStrs = dto.StockCode.Split("_$");
query = query.Where(w => w.order.StockCode == splitStrs[0] && w.order.OrgCode == splitStrs[1]);
}
GetPagedListBoxByMaterialResponse response = new GetPagedListBoxByMaterialResponse();
response.Specifications = material.Specifications;
response.MaterialNumber = material.MaterialNumber;
response.MaterialName = material.MaterialName;
response.TotalCount = await query.CountAsync();
response.Details = await query.Select(s => new GetPagedListBoxByMaterialDetailsResponse()
{
BoxBillNo = s.box.BoxBillNo,
SubStock = _singleDataService.GetSingleData(SingleAction.SubStocksJoinOrgCode, companyId, s.order.SubStockCode + s.order.StockCode + s.order.OrgCode),
Qty = s.detail.Qty,
}).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
response.TotalQty = response.Details.Sum(s => s.Qty);
return response;
}
/// <summary>
/// PDA库存查询-箱号
/// </summary>
/// <param name="dto"></param>
/// <param name="companyId"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<GetPagedListBoxByBoxResponse> GetPagedListBoxByBox(GetPagedListBoxByBoxRequest dto, int companyId)
{
//1.获取物料集合和组织集合
var materials = new List<ErpMaterialDto>();
var materials_result = await _erpService.BillQueryForMaterial();
if (materials_result.IsSuccess)
materials = materials_result.Data.ToList();
var query = _context.BoxInventoryDetails
.GroupJoin(_context.BoxInventory, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders })
.SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order })
.GroupJoin(_context.Box, p => p.order.BoxId, t => t.Id, (p, ts) => new { p.detail, p.order, ts })
.SelectMany(x => x.ts.DefaultIfEmpty(), (p, box) => new { p.detail, p.order, box })
.Where(adv => 1 == 1 && adv.box.BoxBillNo.Equals(dto.BoxBillNo));
if (!string.IsNullOrEmpty(dto.StockCode))
{
var splitStrs = dto.StockCode.Split("_$");
query = query.Where(w => w.order.StockCode == splitStrs[0] && w.order.OrgCode == splitStrs[1]);
}
GetPagedListBoxByBoxResponse response = new GetPagedListBoxByBoxResponse();
response.BoxBillNo = dto.BoxBillNo;
response.TotalCount = await query.CountAsync();
response.Details = await query.Select(s => new GetPagedListBoxByBoxDetailsResponse()
{
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.detail.MaterialNumber),
SubStock = _singleDataService.GetSingleData(SingleAction.SubStocksJoinOrgCode, companyId, s.order.SubStockCode + s.order.StockCode + s.order.OrgCode),
Qty = s.detail.Qty,
}).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
response.TotalQty = response.Details.Sum(s => s.Qty);
if (response.Details.Count > 0) response.SubStock = response.Details.First().SubStock;
return response;
}
/// <summary>
/// PDA库存查询-仓位
/// </summary>
/// <param name="dto"></param>
/// <param name="companyId"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<GetPagedListBoxBySubStockResponse> GetPagedListBoxBySubStock(GetPagedListBoxBySubStockRequest dto, int companyId)
{
//1.获取物料集合和组织集合
var materials = new List<ErpMaterialDto>();
var materials_result = await _erpService.BillQueryForMaterial();
if (materials_result.IsSuccess)
materials = materials_result.Data.ToList();
var r = await _basicsRepositories.GetSubUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), dto.SubStock, companyId);
var subStock = r.FirstOrDefault(f => f.Name.Equals(dto.StockCode));
if (subStock == null) return new GetPagedListBoxBySubStockResponse();
var query = _context.BoxInventoryDetails
.GroupJoin(_context.BoxInventory, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders })
.SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order })
.GroupJoin(_context.Box, p => p.order.BoxId, t => t.Id, (p, ts) => new { p.detail, p.order, ts })
.SelectMany(x => x.ts.DefaultIfEmpty(), (p, box) => new { p.detail, p.order, box })
.Where(adv => 1 == 1 && adv.order.SubStockCode.Equals(subStock.Code));
if (!string.IsNullOrEmpty(dto.StockCode))
{
var splitStrs = dto.StockCode.Split("_$");
query = query.Where(w => w.order.StockCode == splitStrs[0] && w.order.OrgCode == splitStrs[1]);
}
GetPagedListBoxBySubStockResponse response = new GetPagedListBoxBySubStockResponse();
response.TotalCount = await query.CountAsync();
response.Details = await query.Select(s => new GetPagedListBoxBySubStockDetailsResponse()
{
BoxBillNo = s.box.BoxBillNo,
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.detail.MaterialNumber),
SubStock = _singleDataService.GetSingleData(SingleAction.SubStocksJoinOrgCode, companyId, s.order.SubStockCode + s.order.StockCode + s.order.OrgCode),
Qty = s.detail.Qty,
}).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
response.TotalQty = response.Details.Sum(s => s.Qty);
if (response.Details.Count > 0) response.SubStock = response.Details.First().SubStock;
return response;
}
}
}