pda库存查询
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user