using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA_Common.StockEnum;
|
using WIDESEA_Core;
|
using WIDESEA_Core.BaseServices;
|
using WIDESEA_Core.Enums;
|
using WIDESEA_Core.Helper;
|
using WIDESEA_IOutboundRepository;
|
using WIDESEA_IRecordService;
|
using WIDESEA_IStockService;
|
using WIDESEA_Model.Models;
|
|
namespace WIDESEA_IOutboundService
|
{
|
public partial class OutStockLockInfoService : ServiceBase<Dt_OutStockLockInfo, IOutStockLockInfoRepository>, IOutStockLockInfoService
|
{
|
|
private readonly IStockService _stockService;
|
private readonly IRecordService _recordService;
|
|
public IOutStockLockInfoRepository Repository => BaseDal;
|
|
|
public OutStockLockInfoService(IOutStockLockInfoRepository BaseDal, IStockService stockService, IRecordService recordService) : base(BaseDal)
|
{
|
_recordService = recordService;
|
_stockService = stockService;
|
}
|
|
public List<Dt_OutStockLockInfo> GetOutStockLockInfos(Dt_OutboundOrder outboundOrder, Dt_OutboundOrderDetail outboundOrderDetail, List<Dt_StockInfo> outStocks, int? taskNum = null)
|
{
|
List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
|
|
foreach (var item in outStocks)
|
{
|
Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
|
{
|
PalletCode = item.PalletCode,
|
AssignQuantity = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.OutboundQuantity),
|
MaterielCode = outboundOrderDetail.MaterielCode,
|
BatchNo = outboundOrderDetail.BatchNo,
|
LocationCode = item.LocationCode,
|
MaterielName = outboundOrderDetail.MaterielName,
|
OrderDetailId = outboundOrderDetail.Id,
|
OrderNo = outboundOrder.OrderNo,
|
OrderType = outboundOrder.OrderType,
|
OriginalQuantity = item.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity),
|
Status = taskNum == null ? OutLockStockStatusEnum.已分配.ObjToInt() : OutLockStockStatusEnum.出库中.ObjToInt(),
|
StockId = item.Id,
|
TaskNum = taskNum
|
};
|
outStockLockInfos.Add(outStockLockInfo);
|
}
|
|
return outStockLockInfos;
|
}
|
|
public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_OutboundOrder outboundOrder, Dt_OutboundOrderDetail outboundOrderDetail, Dt_StockInfo outStock, float assignQuantity, int? taskNum = null)
|
{
|
|
Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
|
{
|
PalletCode = outStock.PalletCode,
|
AssignQuantity = assignQuantity,
|
MaterielCode = outboundOrderDetail.MaterielCode,
|
BatchNo = outboundOrderDetail.BatchNo ?? outStock.Details.FirstOrDefault()?.BatchNo,
|
LocationCode = outStock.LocationCode,
|
MaterielName = outboundOrderDetail.MaterielName,
|
OrderDetailId = outboundOrderDetail.Id,
|
OrderNo = outboundOrder.OrderNo,
|
OrderType = outboundOrder.OrderType,
|
OriginalQuantity = outStock.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity),
|
Status = taskNum == null ? OutLockStockStatusEnum.已分配.ObjToInt() : OutLockStockStatusEnum.出库中.ObjToInt(),
|
StockId = outStock.Id,
|
TaskNum = taskNum,
|
OrderQuantity = outboundOrderDetail.OrderQuantity,
|
Unit=outboundOrderDetail.Unit,
|
};
|
|
return outStockLockInfo;
|
}
|
|
public List<Dt_OutStockLockInfo> GetByOrderDetailId(int orderDetailId, OutLockStockStatusEnum outStockStatus)
|
{
|
return BaseDal.QueryData(x => x.OrderDetailId == orderDetailId && x.Status == outStockStatus.ObjToInt());
|
}
|
|
public List<Dt_OutStockLockInfo> GetStockOutboundOrder(SaveModel saveModel)
|
{
|
try
|
{
|
var palletCode = saveModel.MainData["barcode"].ToString();
|
var warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
|
Dt_StockInfo stockInfo = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode && x.WarehouseId == warehouseId).Includes(x => x.Details).First();
|
if (stockInfo == null)
|
{
|
throw new Exception($"未找到库存信息");
|
}
|
Dt_StockInfoDetail stockInfoDetail = stockInfo.Details.FirstOrDefault();
|
if (stockInfoDetail == null)
|
{
|
throw new Exception($"未找到库存详情");
|
}
|
List<Dt_OutStockLockInfo> stockLockInfos = BaseDal.QueryData(x => x.StockId == stockInfo.Id&&x.Status< OutLockStockStatusEnum.出库完成.ObjToInt());
|
return stockLockInfos;
|
}
|
catch (Exception ex)
|
{
|
return null;
|
}
|
}
|
}
|
}
|