|
|
|
@ -177,13 +177,13 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Any();
|
|
|
|
bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Where(t=>t.taskStatus<5).Any();
|
|
|
|
if (!canCreate)
|
|
|
|
if (!canCreate)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35);
|
|
|
|
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35);
|
|
|
|
if (baseEquip.emptyCount == (SystemData.maxTray / 2))
|
|
|
|
if (baseEquip.emptyCount == (SystemData.maxTray / 2))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 1 && t.emptyCount == 5);
|
|
|
|
var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 1 && t.emptyCount == (SystemData.maxTray / 2));
|
|
|
|
if (endEquip != null)
|
|
|
|
if (endEquip != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var wcsTask = new WcsTask()
|
|
|
|
var wcsTask = new WcsTask()
|
|
|
|
@ -476,7 +476,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
.Where(t => t.saleOrderId == wmsRawOutstock.saleOrderId)
|
|
|
|
.Where(t => t.saleOrderId == wmsRawOutstock.saleOrderId)
|
|
|
|
.Where(t => t.warehouseId == 311)
|
|
|
|
.Where(t => t.warehouseId == 311)
|
|
|
|
.ToList();
|
|
|
|
.ToList();
|
|
|
|
var wmsBaseLocations = dbContext.WmsBaseLocation
|
|
|
|
var AllWmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseId == 311).ToList();
|
|
|
|
|
|
|
|
var wmsBaseLocations = AllWmsBaseLocations
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
@ -502,6 +503,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
{
|
|
|
|
{
|
|
|
|
locRow = fistbill.a.locRow - 1;
|
|
|
|
locRow = fistbill.a.locRow - 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var lastbill = bill.Where(t => t.a.locRow == locRow)
|
|
|
|
var lastbill = bill.Where(t => t.a.locRow == locRow)
|
|
|
|
.Where(t => t.a.locColumn == fistbill.a.locColumn)
|
|
|
|
.Where(t => t.a.locColumn == fistbill.a.locColumn)
|
|
|
|
.Where(t => t.a.locDeep == 2)
|
|
|
|
.Where(t => t.a.locDeep == 2)
|
|
|
|
@ -523,16 +525,31 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
{
|
|
|
|
{
|
|
|
|
row = wmsBaseLocation.locRow - 1;
|
|
|
|
row = wmsBaseLocation.locRow - 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
WmsBaseLocation? fromBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locRow == row)
|
|
|
|
var lowLocationBill = bill.Where(t => t.a.locRow == locRow).Where(t => t.a.locColumn == wmsBaseLocation.locColumn).Where(t => t.a.warehouseId == wmsBaseLocation.warehouseId).FirstOrDefault();
|
|
|
|
|
|
|
|
if (lowLocationBill != null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
wmsBaseLocation = lowLocationBill.a;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
WmsBaseLocation? fromBaseLocation = AllWmsBaseLocations.Where(t => t.locRow == row)
|
|
|
|
.Where(t => t.locColumn == wmsBaseLocation.locColumn)
|
|
|
|
.Where(t => t.locColumn == wmsBaseLocation.locColumn)
|
|
|
|
.Where(t => t.warehouseId == wmsBaseLocation.warehouseId).FirstOrDefault();
|
|
|
|
.Where(t => t.warehouseId == wmsBaseLocation.warehouseId).FirstOrDefault();
|
|
|
|
if (fromBaseLocation != null && !string.IsNullOrEmpty(fromBaseLocation.containerCode))
|
|
|
|
if (fromBaseLocation != null && !string.IsNullOrEmpty(fromBaseLocation.containerCode))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
WmsBaseLocation? toLocation = dbContext.WmsBaseLocation.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
|
|
|
|
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
|
|
|
|
.Where(t=>t.locColumn>wmsBaseLocation.locColumn)
|
|
|
|
toLocation ??= dbContext.WmsBaseLocation.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
|
|
|
|
.OrderBy(t => t.locColumn)
|
|
|
|
|
|
|
|
.FirstOrDefault();
|
|
|
|
|
|
|
|
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
|
|
|
|
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
|
|
|
|
.Where(t => t.locColumn < wmsBaseLocation.locColumn)
|
|
|
|
|
|
|
|
.OrderByDescending(t => t.locColumn)
|
|
|
|
|
|
|
|
.FirstOrDefault();
|
|
|
|
|
|
|
|
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
|
|
|
|
.Where(t => t.warehouseId != wmsBaseLocation.locationId)
|
|
|
|
.Where(t => t.warehouseId != wmsBaseLocation.locationId)
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
.FirstOrDefault();
|
|
|
|
.FirstOrDefault();
|
|
|
|
@ -574,6 +591,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (wmsBaseLocation != null)
|
|
|
|
if (wmsBaseLocation != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
wmsRawStock = wmsRawStocks.Where(t => t.locationCode == wmsBaseLocation.locationCode).First();
|
|
|
|
wmsRawStock = wmsRawStocks.Where(t => t.locationCode == wmsBaseLocation.locationCode).First();
|
|
|
|
@ -736,6 +754,9 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
|
|
|
|
BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 5);
|
|
|
|
|
|
|
|
if (lineEquip.equipStatus == 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
bool task = dbContext.WcsTask.Where(t => t.nextPointId == 28 && t.taskStatus <= 5).Any();
|
|
|
|
bool task = dbContext.WcsTask.Where(t => t.nextPointId == 28 && t.taskStatus <= 5).Any();
|
|
|
|
if (!task)
|
|
|
|
if (!task)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -758,10 +779,11 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
|
|
|
|
|
|
|
var wmsproStocks = proStock
|
|
|
|
var wmsproStocks = proStock
|
|
|
|
.Where(t => t.productId == item.productId && t.warehouseId == item.warehouseId)
|
|
|
|
.Where(t => t.productId == item.productId && t.warehouseId == item.warehouseId)
|
|
|
|
|
|
|
|
.Where(t => t.totalAmount > t.frozenAmount)
|
|
|
|
.Select(t => t.locationCode)
|
|
|
|
.Select(t => t.locationCode)
|
|
|
|
.ToList();
|
|
|
|
.ToList();
|
|
|
|
|
|
|
|
List<WmsBaseLocation> AllWmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseId == item.warehouseId).ToList();
|
|
|
|
var wmsBaseLocations = dbContext.WmsBaseLocation
|
|
|
|
var wmsBaseLocations = AllWmsBaseLocations
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
@ -785,57 +807,19 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
from b in proStock
|
|
|
|
from b in proStock
|
|
|
|
where a.locationCode == b.locationCode
|
|
|
|
where a.locationCode == b.locationCode
|
|
|
|
select new { a, b };
|
|
|
|
select new { a, b };
|
|
|
|
//如果第一列满足需求,则按第一列排序,否则按最后一列排序
|
|
|
|
|
|
|
|
if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
bill = bill.OrderBy(t => t.a.locColumn).ToList();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
bill = bill.OrderByDescending(t => t.a.locColumn).ToList();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//做数量限制
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 28);
|
|
|
|
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 28);
|
|
|
|
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 5);
|
|
|
|
|
|
|
|
foreach (var b in bill)
|
|
|
|
foreach (var b in bill)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
item.executeStatus = "1";
|
|
|
|
item.executeStatus = "1";
|
|
|
|
WmsBaseLocation location = b.a;
|
|
|
|
WmsBaseLocation location = b.a;
|
|
|
|
WmsProductStock stock = b.b;
|
|
|
|
WmsProductStock stock = b.b;
|
|
|
|
WcsTask wcsTask;
|
|
|
|
WcsTask wcsTask;
|
|
|
|
int qty = 0;
|
|
|
|
|
|
|
|
if (stock.totalAmount - stock.frozenAmount <= needNumber)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
item.outstockQty += stock.totalAmount - stock.frozenAmount;
|
|
|
|
|
|
|
|
qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
|
|
|
|
|
|
|
|
stock.updateDate = DateTime.Now;
|
|
|
|
stock.updateDate = DateTime.Now;
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
item.outstockQty += needNumber;
|
|
|
|
|
|
|
|
qty = Convert.ToInt32(needNumber);
|
|
|
|
|
|
|
|
stock.updateDate = DateTime.Now;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == stock.palletInfoCode);
|
|
|
|
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == stock.palletInfoCode);
|
|
|
|
if (mesBasePalletInfo != null)
|
|
|
|
if (mesBasePalletInfo != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
WmsProductOutstockDetail detail = new()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
productId = item.productId,
|
|
|
|
|
|
|
|
productOutstockId = item.productOutstockId,
|
|
|
|
|
|
|
|
locationCode = location.locationCode,
|
|
|
|
|
|
|
|
executeStatus = "1",
|
|
|
|
|
|
|
|
beginTime = DateTime.Now,
|
|
|
|
|
|
|
|
warehouseId = item.warehouseId,
|
|
|
|
|
|
|
|
erpAmount = 0,
|
|
|
|
|
|
|
|
confirmAmount = 0,
|
|
|
|
|
|
|
|
outstockAmount = 1,
|
|
|
|
|
|
|
|
planAmount = 1,
|
|
|
|
|
|
|
|
productBatch = item.productBatch,
|
|
|
|
|
|
|
|
productOutstockDetailId = StaticData.SnowId.NextId(),
|
|
|
|
|
|
|
|
productBarcode = mesBasePalletInfo.materialBarcode
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
if (location.locDeep == 1)
|
|
|
|
if (location.locDeep == 1)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int? row = 0;
|
|
|
|
int? row = 0;
|
|
|
|
@ -847,15 +831,23 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
{
|
|
|
|
{
|
|
|
|
row = location.locRow - 1;
|
|
|
|
row = location.locRow - 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
WmsBaseLocation? wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locRow == row)
|
|
|
|
var lowLocationBill = bill.Where(t => t.a.locRow == row).Where(t => t.a.locColumn == location.locColumn).Where(t => t.a.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
|
|
|
|
if (lowLocationBill != null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
location = lowLocationBill.a;
|
|
|
|
|
|
|
|
stock = lowLocationBill.b;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
WmsBaseLocation? wmsBaseLocation = AllWmsBaseLocations.Where(t => t.locRow == row)
|
|
|
|
.Where(t => t.locColumn == location.locColumn)
|
|
|
|
.Where(t => t.locColumn == location.locColumn)
|
|
|
|
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
|
|
|
|
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
WmsBaseLocation? toLocation = dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
|
|
|
|
toLocation ??= dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
.FirstOrDefault();
|
|
|
|
.FirstOrDefault();
|
|
|
|
@ -879,7 +871,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
endPointNo = toLocation.locationCode,
|
|
|
|
endPointNo = toLocation.locationCode,
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
useFlag = 1,
|
|
|
|
useFlag = 1,
|
|
|
|
qty = qty
|
|
|
|
qty = 1
|
|
|
|
};
|
|
|
|
};
|
|
|
|
toLocation.locationStatus = "4";
|
|
|
|
toLocation.locationStatus = "4";
|
|
|
|
toLocation.instockFlag = "1";
|
|
|
|
toLocation.instockFlag = "1";
|
|
|
|
@ -901,6 +893,24 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
WmsProductOutstockDetail detail = new()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
productId = item.productId,
|
|
|
|
|
|
|
|
productOutstockId = item.productOutstockId,
|
|
|
|
|
|
|
|
locationCode = location.locationCode,
|
|
|
|
|
|
|
|
executeStatus = "1",
|
|
|
|
|
|
|
|
beginTime = DateTime.Now,
|
|
|
|
|
|
|
|
warehouseId = item.warehouseId,
|
|
|
|
|
|
|
|
erpAmount = 0,
|
|
|
|
|
|
|
|
confirmAmount = 0,
|
|
|
|
|
|
|
|
outstockAmount = 1,
|
|
|
|
|
|
|
|
planAmount = 1,
|
|
|
|
|
|
|
|
productBatch = item.productBatch,
|
|
|
|
|
|
|
|
productOutstockDetailId = StaticData.SnowId.NextId(),
|
|
|
|
|
|
|
|
productBarcode = mesBasePalletInfo.materialBarcode
|
|
|
|
|
|
|
|
};
|
|
|
|
wcsTask = new WcsTask()
|
|
|
|
wcsTask = new WcsTask()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
@ -919,7 +929,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
endPointNo = lineEquip.equipNo,
|
|
|
|
endPointNo = lineEquip.equipNo,
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
useFlag = 1,
|
|
|
|
useFlag = 1,
|
|
|
|
qty = qty
|
|
|
|
qty = 1
|
|
|
|
};
|
|
|
|
};
|
|
|
|
location.outstockFlag = "1";
|
|
|
|
location.outstockFlag = "1";
|
|
|
|
location.locationStatus = "6";
|
|
|
|
location.locationStatus = "6";
|
|
|
|
@ -943,6 +953,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Console.WriteLine(ex.Message + ex.StackTrace);
|
|
|
|
Console.WriteLine(ex.Message + ex.StackTrace);
|
|
|
|
@ -964,6 +975,9 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
|
|
|
|
BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 2);
|
|
|
|
|
|
|
|
if (lineEquip.equipStatus == 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
bool task = dbContext.WcsTask.Where(t => t.nextPointId == 8 && t.taskStatus <= 7).Any();
|
|
|
|
bool task = dbContext.WcsTask.Where(t => t.nextPointId == 8 && t.taskStatus <= 7).Any();
|
|
|
|
if (!task)
|
|
|
|
if (!task)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -982,13 +996,12 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
foreach (var item in proOutStock)
|
|
|
|
foreach (var item in proOutStock)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
BaseEquip endEquip = dbContext.BaseEquip.First(t => t.floorNo == 2 && t.equipType == 1);
|
|
|
|
|
|
|
|
var wmsproStocks = proStock
|
|
|
|
var wmsproStocks = proStock
|
|
|
|
.Where(t => t.productId == item.productId && t.saleOrderId == item.saleOrderId && t.warehouseId == item.warehouseId)
|
|
|
|
.Where(t => t.productId == item.productId && t.saleOrderId == item.saleOrderId && t.warehouseId == item.warehouseId)
|
|
|
|
.Select(t => t.palletInfoCode)
|
|
|
|
.Select(t => t.palletInfoCode)
|
|
|
|
.ToList();
|
|
|
|
.ToList();
|
|
|
|
|
|
|
|
List<WmsBaseLocation> AllWmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseId == item.warehouseId).ToList();
|
|
|
|
var wmsBaseLocations = dbContext.WmsBaseLocation
|
|
|
|
var wmsBaseLocations = AllWmsBaseLocations
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
@ -1012,14 +1025,15 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
from b in proStock
|
|
|
|
from b in proStock
|
|
|
|
where a.containerCode == b.palletInfoCode
|
|
|
|
where a.containerCode == b.palletInfoCode
|
|
|
|
select new { a, b };
|
|
|
|
select new { a, b };
|
|
|
|
|
|
|
|
WmsBaseLocation? location = null;
|
|
|
|
|
|
|
|
WmsProductStock? stock = null;
|
|
|
|
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 8);
|
|
|
|
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 8);
|
|
|
|
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 1);
|
|
|
|
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 1);
|
|
|
|
foreach (var b in bill)
|
|
|
|
foreach (var b in bill)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
item.executeStatus = "1";
|
|
|
|
item.executeStatus = "1";
|
|
|
|
WmsBaseLocation location = b.a;
|
|
|
|
location = b.a;
|
|
|
|
WmsProductStock stock = b.b;
|
|
|
|
stock = b.b;
|
|
|
|
WcsTask wcsTask;
|
|
|
|
WcsTask wcsTask;
|
|
|
|
int qty = 0;
|
|
|
|
int qty = 0;
|
|
|
|
if (stock.totalAmount - stock.frozenAmount <= needNumber)
|
|
|
|
if (stock.totalAmount - stock.frozenAmount <= needNumber)
|
|
|
|
@ -1064,12 +1078,20 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
{
|
|
|
|
{
|
|
|
|
row = location.locRow - 1;
|
|
|
|
row = location.locRow - 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
WmsBaseLocation? wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locRow == row)
|
|
|
|
var lowLocationBill = bill.Where(t => t.a.locRow == row).Where(t => t.a.locColumn == location.locColumn).Where(t => t.a.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
|
|
|
|
if (lowLocationBill != null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
location = lowLocationBill.a;
|
|
|
|
|
|
|
|
stock = lowLocationBill.b;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
WmsBaseLocation? wmsBaseLocation = AllWmsBaseLocations.Where(t => t.locRow == row)
|
|
|
|
.Where(t => t.locColumn == location.locColumn)
|
|
|
|
.Where(t => t.locColumn == location.locColumn)
|
|
|
|
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
|
|
|
|
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
WmsBaseLocation? toLocation = dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
@ -1078,7 +1100,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
.Where(t => t.locationStatus == "1")
|
|
|
|
.Where(t => t.locationStatus == "1")
|
|
|
|
.Where(t => t.outstockFlag == "0")
|
|
|
|
.Where(t => t.outstockFlag == "0")
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
|
|
|
|
toLocation ??= dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
.FirstOrDefault();
|
|
|
|
.FirstOrDefault();
|
|
|
|
@ -1124,6 +1146,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
wcsTask = new WcsTask()
|
|
|
|
wcsTask = new WcsTask()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
@ -1138,8 +1161,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
currPointNo = location.locationCode,
|
|
|
|
currPointNo = location.locationCode,
|
|
|
|
nextPointId = agvEquip.objid,
|
|
|
|
nextPointId = agvEquip.objid,
|
|
|
|
nextPointNo = agvEquip.equipNo,
|
|
|
|
nextPointNo = agvEquip.equipNo,
|
|
|
|
endPointId = lineEquip.objid,
|
|
|
|
endPointId = endEquip.objid,
|
|
|
|
endPointNo = lineEquip.equipNo,
|
|
|
|
endPointNo = endEquip.equipNo,
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
useFlag = 1,
|
|
|
|
useFlag = 1,
|
|
|
|
qty = qty
|
|
|
|
qty = qty
|
|
|
|
@ -1169,6 +1192,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Console.WriteLine(ex.Message + ex.StackTrace);
|
|
|
|
Console.WriteLine(ex.Message + ex.StackTrace);
|
|
|
|
@ -1396,8 +1420,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
.Where(t => t.materialId == order.MaterialId && t.warehouseId == 512)
|
|
|
|
.Where(t => t.materialId == order.MaterialId && t.warehouseId == 512)
|
|
|
|
.Select(t => t.palletInfoCode)
|
|
|
|
.Select(t => t.palletInfoCode)
|
|
|
|
.ToList();
|
|
|
|
.ToList();
|
|
|
|
|
|
|
|
var AllWmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseId == 512).ToList();
|
|
|
|
var wmsBaseLocations = dbContext.WmsBaseLocation
|
|
|
|
var wmsBaseLocations = AllWmsBaseLocations
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
@ -1699,7 +1723,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
.Where(t => t.totalAmount > t.frozenAmount)
|
|
|
|
.Where(t => t.totalAmount > t.frozenAmount)
|
|
|
|
.Select(t => t.palletInfoCode)
|
|
|
|
.Select(t => t.palletInfoCode)
|
|
|
|
.ToList();
|
|
|
|
.ToList();
|
|
|
|
var wmsBaseLocations = dbContext.WmsBaseLocation
|
|
|
|
List<WmsBaseLocation> AllWmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseId == item.warehouseId).ToList();
|
|
|
|
|
|
|
|
var wmsBaseLocations = AllWmsBaseLocations
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
@ -1723,15 +1748,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
from b in rawStock
|
|
|
|
from b in rawStock
|
|
|
|
where a.containerCode == b.palletInfoCode
|
|
|
|
where a.containerCode == b.palletInfoCode
|
|
|
|
select new { a, b };
|
|
|
|
select new { a, b };
|
|
|
|
//如果第一列满足需求,则按第一列排序,否则按最后一列排序
|
|
|
|
|
|
|
|
if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
bill = bill.OrderBy(t => t.a.locColumn).Take(1).ToList();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
bill = bill.OrderByDescending(t => t.a.locColumn).Take(1).ToList();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 28);
|
|
|
|
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 28);
|
|
|
|
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.equipNo == item.endStationCode);
|
|
|
|
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.equipNo == item.endStationCode);
|
|
|
|
@ -1768,15 +1785,23 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
{
|
|
|
|
{
|
|
|
|
row = location.locRow - 1;
|
|
|
|
row = location.locRow - 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
WmsBaseLocation? wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locRow == row)
|
|
|
|
var lowLocationBill = bill.Where(t => t.a.locRow == row).Where(t => t.a.locColumn == location.locColumn).Where(t => t.a.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
|
|
|
|
if (lowLocationBill != null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
location = lowLocationBill.a;
|
|
|
|
|
|
|
|
stock = lowLocationBill.b;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
WmsBaseLocation? wmsBaseLocation = AllWmsBaseLocations.Where(t => t.locRow == row)
|
|
|
|
.Where(t => t.locColumn == location.locColumn)
|
|
|
|
.Where(t => t.locColumn == location.locColumn)
|
|
|
|
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
|
|
|
|
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
WmsBaseLocation? toLocation = dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
|
|
|
|
toLocation ??= dbContext.WmsBaseLocation.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
.FirstOrDefault();
|
|
|
|
.FirstOrDefault();
|
|
|
|
@ -1822,6 +1847,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
wcsTask = new WcsTask()
|
|
|
|
wcsTask = new WcsTask()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|