|
|
|
|
@ -9,6 +9,7 @@ using Khd.Core.Wcs.Global;
|
|
|
|
|
using Masuit.Tools;
|
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
|
using System.Security.Cryptography;
|
|
|
|
|
using Z.EntityFramework.Plus;
|
|
|
|
|
|
|
|
|
|
namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
@ -30,6 +31,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID003");
|
|
|
|
|
this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal03");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 启动上件扫描监听
|
|
|
|
|
/// </summary>
|
|
|
|
|
@ -60,6 +63,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
var isSignal = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
|
|
|
|
|
if (rfid != null && isSignal != null)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (Convert.ToInt32(isSignal) == 1)//托盘到位
|
|
|
|
|
{
|
|
|
|
|
BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.floorNo == 3 && t.equipType == 1);
|
|
|
|
|
@ -94,13 +98,46 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
.Where(t => !string.IsNullOrEmpty(t.containerCode))
|
|
|
|
|
.Select(t => t.containerCode).ToList();
|
|
|
|
|
|
|
|
|
|
//相同型号及销售订单的深库位库存
|
|
|
|
|
|
|
|
|
|
List<WmsRawStock> wmsRawStocks = dbContext.WmsRawStock.Where(t => t.materialId == mesBaseBarcodeInfo.materialId)
|
|
|
|
|
.Where(t => t.saleOrderId == mesBaseBarcodeInfo.saleOrderId)
|
|
|
|
|
.Where(t => DeepContainerCodes.Contains(t.palletInfoCode))
|
|
|
|
|
.Where(t => t.warehouseId == 311).ToList();
|
|
|
|
|
if (wmsRawStocks.Count > 0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//#region 弃用:改为优先把相同采购订单及批次号的放一块 优先找同销售订单的有库存的深库位对应的浅库位
|
|
|
|
|
////找相同型号及销售订单的深库位库存
|
|
|
|
|
//List<WmsRawStock> wmsRawStocks = dbContext.WmsRawStock.Where(t => t.materialId == mesBaseBarcodeInfo.materialId)
|
|
|
|
|
// .Where(t => t.saleOrderId == mesBaseBarcodeInfo.saleOrderId)
|
|
|
|
|
// .Where(t => DeepContainerCodes.Contains(t.palletInfoCode))
|
|
|
|
|
// .Where(t => t.warehouseId == 311).ToList();
|
|
|
|
|
//if (wmsRawStocks.Count > 0)
|
|
|
|
|
//{
|
|
|
|
|
// //优先找同销售订单的有库存的深库位对应的浅库位
|
|
|
|
|
// foreach (var wmsRawStock in wmsRawStocks)
|
|
|
|
|
// {
|
|
|
|
|
// // 深库位库存对用的Location信息
|
|
|
|
|
// var deepStockLocation = wmsBaseLocations.Where(t => t.containerCode == wmsRawStock.palletInfoCode).First();
|
|
|
|
|
// wmsBaseLocation = wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1")
|
|
|
|
|
// .Where(t => t.locDeep == 2 && t.locColumn == deepStockLocation.locColumn)
|
|
|
|
|
// .Where(t => t.locRow == (deepStockLocation.locRow % 2 == 0 ? (deepStockLocation.locRow - 1) : (deepStockLocation.locRow + 1)))
|
|
|
|
|
// .FirstOrDefault();
|
|
|
|
|
// if (wmsBaseLocation != null)
|
|
|
|
|
// {
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 优先找同采购订单及批次号的有库存的深库位对应的浅库位
|
|
|
|
|
//找相同型号及采购订单及批次号的深库位库存
|
|
|
|
|
List<WmsRawStock> wmsRawStocks = (from stock in dbContext.WmsRawStock
|
|
|
|
|
join codeInfo in dbContext.MesBaseBarcodeInfo
|
|
|
|
|
on stock.instockBatch equals codeInfo.barcodeInfo
|
|
|
|
|
where codeInfo.batchCode == mesBaseBarcodeInfo.batchCode
|
|
|
|
|
&& codeInfo.poNo== mesBaseBarcodeInfo.poNo && stock.materialId == mesBaseBarcodeInfo.materialId && stock.warehouseId == 311
|
|
|
|
|
select stock).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (wmsRawStocks!=null && wmsRawStocks.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
//优先找同销售订单的有库存的深库位对应的浅库位
|
|
|
|
|
foreach (var wmsRawStock in wmsRawStocks)
|
|
|
|
|
@ -117,22 +154,12 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//if (wmsBaseLocation == null)
|
|
|
|
|
//{
|
|
|
|
|
// // 找深库位有库存的库位对应的浅库位
|
|
|
|
|
// var stockLocations = wmsBaseLocations.Where(x => !string.IsNullOrEmpty(x.containerCode) && x.locDeep == 1).ToList();
|
|
|
|
|
// foreach (var item in stockLocations)
|
|
|
|
|
// {
|
|
|
|
|
// wmsBaseLocation = wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1")
|
|
|
|
|
// .Where(t => t.locDeep == 2 && t.locColumn == item.locColumn)
|
|
|
|
|
// .Where(t => t.locRow == (item.locRow % 2 == 0 ? (item.locRow - 1) : (item.locRow + 1)))
|
|
|
|
|
// .FirstOrDefault();
|
|
|
|
|
// if (wmsBaseLocation != null)
|
|
|
|
|
// {
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (wmsBaseLocation == null)
|
|
|
|
|
{ // 在所有符合条件的库位里,找一个库位,优先深库位,但是如果是深库位,需要判断浅库位状态是否正常
|
|
|
|
|
var searchLocations = wmsBaseLocations.Where(x => string.IsNullOrEmpty(x.containerCode) && x.locationStatus == "1").OrderBy(x => x.locDeep).ToList();
|
|
|
|
|
|