change-三楼入库优先相同销售订单放在一块改为相同采购订单和相同批次号的放在一块

master
liuwf 1 year ago
parent 682b2cab50
commit baefabe6f4

@ -9,6 +9,7 @@ using Khd.Core.Wcs.Global;
using Masuit.Tools; using Masuit.Tools;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using System.Security.Cryptography;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs namespace Khd.Core.Wcs.Wcs
@ -30,6 +31,8 @@ namespace Khd.Core.Wcs.Wcs
this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID003"); this.LineRFID = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID003");
this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal03"); this.LineSignal = StaticData.BasePlcpointList.First(t => t.plcpointNo == "linesignal03");
} }
/// <summary> /// <summary>
/// 启动上件扫描监听 /// 启动上件扫描监听
/// </summary> /// </summary>
@ -60,6 +63,7 @@ namespace Khd.Core.Wcs.Wcs
var isSignal = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress); var isSignal = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
if (rfid != null && isSignal != null) if (rfid != null && isSignal != null)
{ {
if (Convert.ToInt32(isSignal) == 1)//托盘到位 if (Convert.ToInt32(isSignal) == 1)//托盘到位
{ {
BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.floorNo == 3 && t.equipType == 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)) .Where(t => !string.IsNullOrEmpty(t.containerCode))
.Select(t => t.containerCode).ToList(); .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)) //#region 弃用:改为优先把相同采购订单及批次号的放一块 优先找同销售订单的有库存的深库位对应的浅库位
.Where(t => t.warehouseId == 311).ToList(); ////找相同型号及销售订单的深库位库存
if (wmsRawStocks.Count > 0) //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) foreach (var wmsRawStock in wmsRawStocks)
@ -117,22 +154,12 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
} }
//if (wmsBaseLocation == null) #endregion
//{
// // 找深库位有库存的库位对应的浅库位
// 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;
// }
// }
//}
if (wmsBaseLocation == null) if (wmsBaseLocation == null)
{ // 在所有符合条件的库位里,找一个库位,优先深库位,但是如果是深库位,需要判断浅库位状态是否正常 { // 在所有符合条件的库位里,找一个库位,优先深库位,但是如果是深库位,需要判断浅库位状态是否正常
var searchLocations = wmsBaseLocations.Where(x => string.IsNullOrEmpty(x.containerCode) && x.locationStatus == "1").OrderBy(x => x.locDeep).ToList(); var searchLocations = wmsBaseLocations.Where(x => string.IsNullOrEmpty(x.containerCode) && x.locationStatus == "1").OrderBy(x => x.locDeep).ToList();

Loading…
Cancel
Save