You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
4.3 KiB
C#

using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
namespace Khd.Core.Wcs
{
public class SystemData
{
public readonly static int maxTray = 5;
private static long _serialNo { get; set; } = 1;
private static object serialLock = new object();
public static long GetSerialNo(DefaultDbContext dbContext)
{
lock (serialLock)
{
List<long?> list = dbContext.WcsTask.Select(t => t.serialNo).ToList();
while (list.Contains(_serialNo))
{
_serialNo++;
if (_serialNo > 9999)
{
_serialNo = 1;
}
}
return _serialNo;
}
}
public static object outStockLock = new object();
/// <summary>
/// 出入库锁定浅库位
/// </summary>
/// <param name="wmsBaseLocation"></param>
/// <param name="dbContext"></param>
public static void LockOutLocation(WmsBaseLocation wmsBaseLocation, DefaultDbContext dbContext)
{
if (wmsBaseLocation.locDeep == 1)
{
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 2 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
if (wmsLocation != null && wmsLocation.locationStatus == "1")
{
wmsLocation.locationStatus = "2";
dbContext.Update(wmsLocation);
}
}
}
/// <summary>
/// 出入库解锁浅库位
/// </summary>
/// <param name="wmsBaseLocation"></param>
/// <param name="dbContext"></param>
public static void UnLockOutLocation(WmsBaseLocation wmsBaseLocation, DefaultDbContext dbContext)
{
if (wmsBaseLocation.locDeep == 1)
{
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 2 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
if (wmsLocation != null && wmsLocation.locationStatus != "3" && wmsLocation.locationStatus != "9")
{
wmsLocation.locationStatus = "1";
dbContext.Update(wmsLocation);
}
}
}
/// <summary>
/// 报警库位
/// </summary>
public static void AlarmLocation(WmsBaseLocation wmsBaseLocation, DefaultDbContext dbContext)
{
if (wmsBaseLocation.locDeep == 2)
{
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 1 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
if (wmsLocation != null && wmsLocation.locationStatus != "3")
{
wmsLocation.locationStatus = "8";
wmsLocation.ExceptionDesc = "外侧库位异常导致内测库位异常";
dbContext.Update(wmsLocation);
}
}
}
/// <summary>
/// 解除报警库位
/// </summary>
public static void UnAlarmLocation(WmsBaseLocation wmsBaseLocation, DefaultDbContext dbContext)
{
if (wmsBaseLocation.locDeep == 2)
{
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 1 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
if (wmsLocation != null && wmsLocation.locationStatus == "8")
{
wmsLocation.locationStatus = "1";
dbContext.Update(wmsLocation);
}
}
}
public readonly static object SecondTaskLock = new();
public readonly static object ThirdTaskLock = new();
public readonly static object FiveTaskLock = new();
}
}