|
|
|
|
@ -32,18 +32,18 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
////背负式Agv返库任务
|
|
|
|
|
//var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic);
|
|
|
|
|
//createBearAgvReturnThread.Start();
|
|
|
|
|
////五楼半成品入库任务
|
|
|
|
|
//var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic);
|
|
|
|
|
//createFiveProductInTaskThread.Start();
|
|
|
|
|
////五楼成品出库任务
|
|
|
|
|
//var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic);
|
|
|
|
|
//createFiveProductTaskThread.Start();
|
|
|
|
|
////五楼CTU出库任务以及原材料出库任务
|
|
|
|
|
//var createRawTaskThread = new Thread(CreateRawTaskLogic);
|
|
|
|
|
//createRawTaskThread.Start();
|
|
|
|
|
////五楼柜体拆分返库任务
|
|
|
|
|
//var createRawInThread = new Thread(CreateRawInTaskLogic);
|
|
|
|
|
//createRawInThread.Start();
|
|
|
|
|
//五楼半成品入库任务
|
|
|
|
|
var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic);
|
|
|
|
|
createFiveProductInTaskThread.Start();
|
|
|
|
|
//五楼成品出库任务
|
|
|
|
|
var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic);
|
|
|
|
|
createFiveProductTaskThread.Start();
|
|
|
|
|
//五楼CTU出库任务以及原材料出库任务
|
|
|
|
|
var createRawTaskThread = new Thread(CreateRawTaskLogic);
|
|
|
|
|
createRawTaskThread.Start();
|
|
|
|
|
//五楼柜体拆分返库任务
|
|
|
|
|
var createRawInThread = new Thread(CreateRawInTaskLogic);
|
|
|
|
|
createRawInThread.Start();
|
|
|
|
|
////三楼去翻转机任务
|
|
|
|
|
//var createThirdOutTaskThread = new Thread(CreateThirdOutTaskLogic);
|
|
|
|
|
//createThirdOutTaskThread.Start();
|
|
|
|
|
@ -177,7 +177,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
|
bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Where(t=>t.taskStatus<5).Any();
|
|
|
|
|
bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Where(t => t.taskStatus < 5).Any();
|
|
|
|
|
if (!canCreate)
|
|
|
|
|
{
|
|
|
|
|
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35);
|
|
|
|
|
@ -485,8 +485,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
.Where(t => t.instockFlag == "0")
|
|
|
|
|
.Where(t => t.outstockFlag == "0")
|
|
|
|
|
.Where(t => t.warehouseId == 311)
|
|
|
|
|
.OrderByDescending(t=>t.locRow)
|
|
|
|
|
.ThenByDescending(t=>t.locColumn)
|
|
|
|
|
.OrderByDescending(t => t.locRow)
|
|
|
|
|
.ThenByDescending(t => t.locColumn)
|
|
|
|
|
.ToList();
|
|
|
|
|
var bill = from a in wmsBaseLocations
|
|
|
|
|
from b in wmsRawStocks
|
|
|
|
|
@ -541,55 +541,67 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
.Where(t => t.warehouseId == wmsBaseLocation.warehouseId).FirstOrDefault();
|
|
|
|
|
if (fromBaseLocation != null && !string.IsNullOrEmpty(fromBaseLocation.containerCode))
|
|
|
|
|
{
|
|
|
|
|
WmsBaseLocation? 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)
|
|
|
|
|
.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 => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
|
.FirstOrDefault();
|
|
|
|
|
if (toLocation != null)
|
|
|
|
|
WmsRawStock? wmsRawStock1 = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == fromBaseLocation.locationCode);
|
|
|
|
|
if (wmsRawStock1 != null)
|
|
|
|
|
{
|
|
|
|
|
var RemoveTask = new WcsTask()
|
|
|
|
|
WmsBaseLocation? 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)
|
|
|
|
|
.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 => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
|
.FirstOrDefault();
|
|
|
|
|
if (toLocation != null)
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
taskType = 67,
|
|
|
|
|
containerNo = fromBaseLocation.containerCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now.AddSeconds(-10),
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
currPointId = fromBaseLocation.locationId,
|
|
|
|
|
currPointNo = fromBaseLocation.locationCode,
|
|
|
|
|
nextPointId = baseEquip.objid,
|
|
|
|
|
nextPointNo = baseEquip.equipNo,
|
|
|
|
|
endPointId = toLocation.locationId,
|
|
|
|
|
endPointNo = toLocation.locationCode,
|
|
|
|
|
equipmentNo = baseEquip.equipNo,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
qty = 1
|
|
|
|
|
};
|
|
|
|
|
toLocation.locationStatus = "4";
|
|
|
|
|
toLocation.instockFlag = "1";
|
|
|
|
|
toLocation.updateBy = "WCS";
|
|
|
|
|
toLocation.updateTime = DateTime.Now;
|
|
|
|
|
fromBaseLocation.updateBy = "WCS";
|
|
|
|
|
fromBaseLocation.updateTime = DateTime.Now;
|
|
|
|
|
fromBaseLocation.outstockFlag = "1";
|
|
|
|
|
fromBaseLocation.locationStatus = "4";
|
|
|
|
|
dbContext.Update(toLocation);
|
|
|
|
|
dbContext.Update(fromBaseLocation);
|
|
|
|
|
dbContext.Add(RemoveTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
var RemoveTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
taskType = 67,
|
|
|
|
|
containerNo = wmsRawStock1.palletInfoCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now.AddSeconds(-10),
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
currPointId = fromBaseLocation.locationId,
|
|
|
|
|
currPointNo = fromBaseLocation.locationCode,
|
|
|
|
|
nextPointId = baseEquip.objid,
|
|
|
|
|
nextPointNo = baseEquip.equipNo,
|
|
|
|
|
endPointId = toLocation.locationId,
|
|
|
|
|
endPointNo = toLocation.locationCode,
|
|
|
|
|
equipmentNo = baseEquip.equipNo,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
qty = 1
|
|
|
|
|
};
|
|
|
|
|
toLocation.locationStatus = "4";
|
|
|
|
|
toLocation.instockFlag = "1";
|
|
|
|
|
toLocation.updateBy = "WCS";
|
|
|
|
|
toLocation.updateTime = DateTime.Now;
|
|
|
|
|
fromBaseLocation.updateBy = "WCS";
|
|
|
|
|
fromBaseLocation.updateTime = DateTime.Now;
|
|
|
|
|
fromBaseLocation.outstockFlag = "1";
|
|
|
|
|
fromBaseLocation.locationStatus = "4";
|
|
|
|
|
dbContext.Update(toLocation);
|
|
|
|
|
dbContext.Update(fromBaseLocation);
|
|
|
|
|
dbContext.Add(RemoveTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -823,7 +835,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == stock.palletInfoCode);
|
|
|
|
|
if (mesBasePalletInfo != null)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (location.locDeep == 1)
|
|
|
|
|
{
|
|
|
|
|
int? row = 0;
|
|
|
|
|
@ -848,48 +860,56 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
|
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
|
|
|
|
|
{
|
|
|
|
|
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
|
|
|
|
|
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
|
.FirstOrDefault();
|
|
|
|
|
if (toLocation != null)
|
|
|
|
|
WmsProductStock? wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.containerCode);
|
|
|
|
|
if (wmsProductStock != null)
|
|
|
|
|
{
|
|
|
|
|
var RemoveTask = new WcsTask()
|
|
|
|
|
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
|
|
|
|
|
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
|
.FirstOrDefault();
|
|
|
|
|
if (toLocation != null)
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.productOutstockId,
|
|
|
|
|
taskType = 38,
|
|
|
|
|
containerNo = wmsBaseLocation.containerCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now.AddSeconds(-10),
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
materialId = item.productId,
|
|
|
|
|
currPointId = wmsBaseLocation.locationId,
|
|
|
|
|
currPointNo = wmsBaseLocation.locationCode,
|
|
|
|
|
nextPointId = agvEquip.objid,
|
|
|
|
|
nextPointNo = agvEquip.equipNo,
|
|
|
|
|
endPointId = toLocation.locationId,
|
|
|
|
|
endPointNo = toLocation.locationCode,
|
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
qty = 1
|
|
|
|
|
};
|
|
|
|
|
toLocation.locationStatus = "4";
|
|
|
|
|
toLocation.instockFlag = "1";
|
|
|
|
|
toLocation.updateBy = "WCS";
|
|
|
|
|
toLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.updateBy = "WCS";
|
|
|
|
|
wmsBaseLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.outstockFlag = "1";
|
|
|
|
|
wmsBaseLocation.locationStatus = "4";
|
|
|
|
|
dbContext.Update(toLocation);
|
|
|
|
|
dbContext.Update(wmsBaseLocation);
|
|
|
|
|
dbContext.Add(RemoveTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
var RemoveTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.productOutstockId,
|
|
|
|
|
taskType = 38,
|
|
|
|
|
containerNo = wmsProductStock.palletInfoCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now.AddSeconds(-10),
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
materialId = item.productId,
|
|
|
|
|
currPointId = wmsBaseLocation.locationId,
|
|
|
|
|
currPointNo = wmsBaseLocation.locationCode,
|
|
|
|
|
nextPointId = agvEquip.objid,
|
|
|
|
|
nextPointNo = agvEquip.equipNo,
|
|
|
|
|
endPointId = toLocation.locationId,
|
|
|
|
|
endPointNo = toLocation.locationCode,
|
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
qty = 1
|
|
|
|
|
};
|
|
|
|
|
toLocation.locationStatus = "4";
|
|
|
|
|
toLocation.instockFlag = "1";
|
|
|
|
|
toLocation.updateBy = "WCS";
|
|
|
|
|
toLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.updateBy = "WCS";
|
|
|
|
|
wmsBaseLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.outstockFlag = "1";
|
|
|
|
|
wmsBaseLocation.locationStatus = "4";
|
|
|
|
|
dbContext.Update(toLocation);
|
|
|
|
|
dbContext.Update(wmsBaseLocation);
|
|
|
|
|
dbContext.Add(RemoveTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
@ -897,7 +917,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
WmsProductOutstockDetail detail = new()
|
|
|
|
|
{
|
|
|
|
|
@ -920,7 +940,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.productOutstockId,
|
|
|
|
|
taskType = 38,
|
|
|
|
|
containerNo = location.containerCode,
|
|
|
|
|
containerNo = stock.palletInfoCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now,
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
@ -1039,19 +1059,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
location = b.a;
|
|
|
|
|
stock = b.b;
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
item.outstockQty += needNumber;
|
|
|
|
|
qty = Convert.ToInt32(needNumber);
|
|
|
|
|
stock.updateDate = DateTime.Now;
|
|
|
|
|
}
|
|
|
|
|
stock.updateDate = DateTime.Now;
|
|
|
|
|
MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode);
|
|
|
|
|
if (mesBasePalletInfo != null)
|
|
|
|
|
{
|
|
|
|
|
@ -1095,7 +1103,10 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
|
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
|
|
|
|
|
{
|
|
|
|
|
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
WmsProductStock? wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.containerCode);
|
|
|
|
|
if (wmsProductStock != null)
|
|
|
|
|
{
|
|
|
|
|
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
|
@ -1104,45 +1115,50 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
.Where(t => t.locationStatus == "1")
|
|
|
|
|
.Where(t => t.outstockFlag == "0")
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
|
|
|
|
|
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
|
.FirstOrDefault();
|
|
|
|
|
if (toLocation != null)
|
|
|
|
|
{
|
|
|
|
|
var RemoveTask = new WcsTask()
|
|
|
|
|
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
|
.FirstOrDefault();
|
|
|
|
|
if (toLocation != null)
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.productOutstockId,
|
|
|
|
|
taskType = 55,
|
|
|
|
|
containerNo = wmsBaseLocation.containerCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now.AddSeconds(-10),
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
materialId = item.productId,
|
|
|
|
|
currPointId = wmsBaseLocation.locationId,
|
|
|
|
|
currPointNo = wmsBaseLocation.locationCode,
|
|
|
|
|
nextPointId = agvEquip.objid,
|
|
|
|
|
nextPointNo = agvEquip.equipNo,
|
|
|
|
|
endPointId = toLocation.locationId,
|
|
|
|
|
endPointNo = toLocation.locationCode,
|
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
qty = qty
|
|
|
|
|
};
|
|
|
|
|
toLocation.locationStatus = "4";
|
|
|
|
|
toLocation.instockFlag = "1";
|
|
|
|
|
toLocation.updateBy = "WCS";
|
|
|
|
|
toLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.updateBy = "WCS";
|
|
|
|
|
wmsBaseLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.outstockFlag = "1";
|
|
|
|
|
wmsBaseLocation.locationStatus = "4";
|
|
|
|
|
dbContext.Update(toLocation);
|
|
|
|
|
dbContext.Update(wmsBaseLocation);
|
|
|
|
|
dbContext.Add(RemoveTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
var RemoveTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.productOutstockId,
|
|
|
|
|
taskType = 55,
|
|
|
|
|
containerNo = wmsBaseLocation.containerCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now.AddSeconds(-10),
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
materialId = item.productId,
|
|
|
|
|
currPointId = wmsBaseLocation.locationId,
|
|
|
|
|
currPointNo = wmsBaseLocation.locationCode,
|
|
|
|
|
nextPointId = agvEquip.objid,
|
|
|
|
|
nextPointNo = agvEquip.equipNo,
|
|
|
|
|
endPointId = toLocation.locationId,
|
|
|
|
|
endPointNo = toLocation.locationCode,
|
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
qty = 1
|
|
|
|
|
};
|
|
|
|
|
toLocation.locationStatus = "4";
|
|
|
|
|
toLocation.instockFlag = "1";
|
|
|
|
|
toLocation.updateBy = "WCS";
|
|
|
|
|
toLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.updateBy = "WCS";
|
|
|
|
|
wmsBaseLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.outstockFlag = "1";
|
|
|
|
|
wmsBaseLocation.locationStatus = "4";
|
|
|
|
|
dbContext.Update(toLocation);
|
|
|
|
|
dbContext.Update(wmsBaseLocation);
|
|
|
|
|
dbContext.Add(RemoveTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
@ -1169,7 +1185,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
endPointNo = endEquip.equipNo,
|
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
qty = qty
|
|
|
|
|
qty = 1
|
|
|
|
|
};
|
|
|
|
|
location.outstockFlag = "1";
|
|
|
|
|
location.locationStatus = "6";
|
|
|
|
|
@ -1182,10 +1198,6 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
WcsTaskLog wcsTaskLog1 = CoreMapper.Map<WcsTaskLog>(wcsTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog1);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
if (qty >= needNumber)
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -1254,7 +1266,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
foreach (var item in rawOutStock)
|
|
|
|
|
{
|
|
|
|
|
decimal? RealOutNumber = item.realOutstockAmount;
|
|
|
|
|
var endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == item.endStationCode);
|
|
|
|
|
var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == item.endStationCode);
|
|
|
|
|
if (endEquip != null && endEquip.floorNo == 5)
|
|
|
|
|
{
|
|
|
|
|
lock (SystemData.outStockLock)
|
|
|
|
|
@ -1456,6 +1468,10 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20);
|
|
|
|
|
foreach (var b in bill)
|
|
|
|
|
{
|
|
|
|
|
if (needNumber <= 0)
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (tasks.Where(t => t.containerNo == b.a.containerCode).Any() || tasks.Count >= 6)
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
@ -1465,12 +1481,14 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
int qty = 0;
|
|
|
|
|
if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
|
|
|
|
|
{
|
|
|
|
|
needNumber-= stock.totalAmount - stock.frozenAmount;
|
|
|
|
|
RealOutNumber += stock.totalAmount - stock.frozenAmount;
|
|
|
|
|
qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
|
|
|
|
|
stock.updateDate = DateTime.Now;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
needNumber = 0;
|
|
|
|
|
RealOutNumber += needNumber;
|
|
|
|
|
qty = Convert.ToInt32(needNumber);
|
|
|
|
|
stock.updateDate = DateTime.Now;
|
|
|
|
|
@ -1516,141 +1534,6 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 原逻辑
|
|
|
|
|
//foreach (var order in orderList)
|
|
|
|
|
//{
|
|
|
|
|
// if(tasks.Count >= 6)
|
|
|
|
|
// {
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
// WcsTask? task = dbContext.WcsTask.FirstOrDefault(t => t.taskType == 32);
|
|
|
|
|
// if (task == null)
|
|
|
|
|
// {
|
|
|
|
|
// var wmsRawStocks = rawStock
|
|
|
|
|
// .Where(t => t.materialId == order.materialId && t.warehouseId == order.warehouseId)
|
|
|
|
|
// .Select(t => t.palletInfoCode)
|
|
|
|
|
// .ToList();
|
|
|
|
|
|
|
|
|
|
// var wmsBaseLocations = dbContext.WmsBaseLocation
|
|
|
|
|
// .Where(t => t.activeFlag == "1")
|
|
|
|
|
// .Where(t => t.delFlag == "0")
|
|
|
|
|
// .Where(t => t.locationScrapType == "1")
|
|
|
|
|
// .Where(t => t.instockFlag == "0")
|
|
|
|
|
// .Where(t => t.outstockFlag == "0")
|
|
|
|
|
// .Where(t => t.warehouseId == order.warehouseId)
|
|
|
|
|
// .Where(t => wmsRawStocks.Contains(t.containerCode))
|
|
|
|
|
// .ToList();
|
|
|
|
|
|
|
|
|
|
// decimal? needNumber = order.outstockAmount - RealOutNumber;
|
|
|
|
|
|
|
|
|
|
// var bill = from a in wmsBaseLocations
|
|
|
|
|
// from b in rawStock
|
|
|
|
|
// where a.containerCode == b.palletInfoCode
|
|
|
|
|
// 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();
|
|
|
|
|
// }
|
|
|
|
|
// //做数量限制
|
|
|
|
|
// bill = bill.Take(5 - dbContext.WcsCmd.Where(t => t.cmdStatus < 3 && t.nextPointId == 20).Count());
|
|
|
|
|
// BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11);
|
|
|
|
|
// BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20);
|
|
|
|
|
// foreach (var b in bill)
|
|
|
|
|
// {
|
|
|
|
|
// if (tasks.Where(t => t.containerNo == b.a.containerCode).Any())
|
|
|
|
|
// {
|
|
|
|
|
// continue;
|
|
|
|
|
// }
|
|
|
|
|
// item.executeStatus = "1";
|
|
|
|
|
// WmsBaseLocation location = b.a;
|
|
|
|
|
// WmsRawStock stock = b.b;
|
|
|
|
|
// int qty = 0;
|
|
|
|
|
// if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
|
|
|
|
|
// {
|
|
|
|
|
// RealOutNumber += stock.totalAmount - stock.frozenAmount;
|
|
|
|
|
// qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
|
|
|
|
|
// stock.updateDate = DateTime.Now;
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// RealOutNumber += needNumber;
|
|
|
|
|
// qty = Convert.ToInt32(needNumber);
|
|
|
|
|
// stock.updateDate = DateTime.Now;
|
|
|
|
|
// }
|
|
|
|
|
// WcsTask wcsTask = new WcsTask()
|
|
|
|
|
// {
|
|
|
|
|
// objid = StaticData.SnowId.NextId(),
|
|
|
|
|
// orderId = item.rawOutstockId,
|
|
|
|
|
// taskType = 30,
|
|
|
|
|
// containerNo = location.containerCode,
|
|
|
|
|
// createBy = "WCS",
|
|
|
|
|
// createTime = DateTime.Now,
|
|
|
|
|
// taskStatus = 0,
|
|
|
|
|
// materialId = item.materialId,
|
|
|
|
|
// currPointId = location.locationId,
|
|
|
|
|
// currPointNo = location.locationCode,
|
|
|
|
|
// nextPointId = ctuEquip.objid,
|
|
|
|
|
// nextPointNo = ctuEquip.equipNo,
|
|
|
|
|
// endPointId = lineEquip.objid,
|
|
|
|
|
// endPointNo = lineEquip.equipNo,
|
|
|
|
|
// equipmentNo = ctuEquip.equipNo,
|
|
|
|
|
// ud1 = location.locColumn,
|
|
|
|
|
// useFlag = 0,
|
|
|
|
|
// qty = qty
|
|
|
|
|
// };
|
|
|
|
|
// tasks.Add(wcsTask);
|
|
|
|
|
// MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
|
|
|
|
|
// if (mesBaseBarcodeInfo != null)
|
|
|
|
|
// {
|
|
|
|
|
// WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
|
|
|
|
|
// {
|
|
|
|
|
// rawOutstockDetailId = StaticData.SnowId.NextId(),
|
|
|
|
|
// rawOutstockId = item.rawOutstockId,
|
|
|
|
|
// materialId = item.materialId,
|
|
|
|
|
// createDate = DateTime.Now,
|
|
|
|
|
// createBy = "WCS",
|
|
|
|
|
// taskCode = wcsTask.objid.ToString(),
|
|
|
|
|
// executeStatus = "1",
|
|
|
|
|
// locationCode = location.locationCode,
|
|
|
|
|
// outstockAmount = qty,
|
|
|
|
|
// planAmount = item.outstockAmount,
|
|
|
|
|
// warehouseId = item.warehouseId,
|
|
|
|
|
// materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
|
|
|
|
|
// instockBatch = mesBaseBarcodeInfo.batchCode,
|
|
|
|
|
// stackAmount = qty,
|
|
|
|
|
// outstockPerson = "WCS",
|
|
|
|
|
// outstockTime = DateTime.Now,
|
|
|
|
|
// outstockWay = "2",
|
|
|
|
|
// materialProductionDate = mesBaseBarcodeInfo.productionDate
|
|
|
|
|
// };
|
|
|
|
|
// details.Add(wmsProductOutstockDetail);
|
|
|
|
|
// location.outstockFlag = "1";
|
|
|
|
|
// location.locationStatus = "6";
|
|
|
|
|
// location.updateBy = "WCS";
|
|
|
|
|
// location.updateTime = DateTime.Now;
|
|
|
|
|
// wcsOutstockLock.qty += 1;
|
|
|
|
|
// wcsOutstockLock.boxStatus = 1;
|
|
|
|
|
// dbContext.Update(wcsOutstockLock);
|
|
|
|
|
// dbContext.Update(location);
|
|
|
|
|
// dbContext.Add(wcsTask);
|
|
|
|
|
// dbContext.Update(stock);
|
|
|
|
|
// CreateSuccess = true;
|
|
|
|
|
// if (tasks.Count >= 6)
|
|
|
|
|
// {
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if (CreateSuccess)
|
|
|
|
|
{
|
|
|
|
|
@ -1804,48 +1687,56 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
|
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode))
|
|
|
|
|
{
|
|
|
|
|
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
|
|
|
|
|
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
|
.FirstOrDefault();
|
|
|
|
|
if (toLocation != null)
|
|
|
|
|
WmsRawStock? wmsRawStock = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode);
|
|
|
|
|
if (wmsRawStock != null)
|
|
|
|
|
{
|
|
|
|
|
var RemoveTask = new WcsTask()
|
|
|
|
|
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
|
|
|
|
|
toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode))
|
|
|
|
|
.FirstOrDefault();
|
|
|
|
|
if (toLocation != null)
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.rawOutstockId,
|
|
|
|
|
taskType = 38,
|
|
|
|
|
containerNo = wmsBaseLocation.containerCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now.AddSeconds(-10),
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
materialId = item.materialId,
|
|
|
|
|
currPointId = wmsBaseLocation.locationId,
|
|
|
|
|
currPointNo = wmsBaseLocation.locationCode,
|
|
|
|
|
nextPointId = agvEquip.objid,
|
|
|
|
|
nextPointNo = agvEquip.equipNo,
|
|
|
|
|
endPointId = toLocation.locationId,
|
|
|
|
|
endPointNo = toLocation.locationCode,
|
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
qty = qty
|
|
|
|
|
};
|
|
|
|
|
toLocation.locationStatus = "4";
|
|
|
|
|
toLocation.instockFlag = "1";
|
|
|
|
|
toLocation.updateBy = "WCS";
|
|
|
|
|
toLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.updateBy = "WCS";
|
|
|
|
|
wmsBaseLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.outstockFlag = "1";
|
|
|
|
|
wmsBaseLocation.locationStatus = "4";
|
|
|
|
|
dbContext.Update(toLocation);
|
|
|
|
|
dbContext.Update(wmsBaseLocation);
|
|
|
|
|
dbContext.Add(RemoveTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
var RemoveTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.rawOutstockId,
|
|
|
|
|
taskType = 38,
|
|
|
|
|
containerNo = wmsRawStock.palletInfoCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now.AddSeconds(-10),
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
materialId = item.materialId,
|
|
|
|
|
currPointId = wmsBaseLocation.locationId,
|
|
|
|
|
currPointNo = wmsBaseLocation.locationCode,
|
|
|
|
|
nextPointId = agvEquip.objid,
|
|
|
|
|
nextPointNo = agvEquip.equipNo,
|
|
|
|
|
endPointId = toLocation.locationId,
|
|
|
|
|
endPointNo = toLocation.locationCode,
|
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
qty = qty
|
|
|
|
|
};
|
|
|
|
|
toLocation.locationStatus = "4";
|
|
|
|
|
toLocation.instockFlag = "1";
|
|
|
|
|
toLocation.updateBy = "WCS";
|
|
|
|
|
toLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.updateBy = "WCS";
|
|
|
|
|
wmsBaseLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.outstockFlag = "1";
|
|
|
|
|
wmsBaseLocation.locationStatus = "4";
|
|
|
|
|
dbContext.Update(toLocation);
|
|
|
|
|
dbContext.Update(wmsBaseLocation);
|
|
|
|
|
dbContext.Add(RemoveTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
|