|
|
|
|
@ -10,6 +10,7 @@ using Microsoft.Extensions.DependencyInjection;
|
|
|
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
|
using SixLabors.ImageSharp;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Drawing.Text;
|
|
|
|
|
using Z.EntityFramework.Plus;
|
|
|
|
|
|
|
|
|
|
namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
@ -1584,98 +1585,111 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
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 = dbContext.WmsBaseLocation.Where(t => t.locRow == row)
|
|
|
|
|
.Where(t => t.locColumn == location.locColumn)
|
|
|
|
|
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode) && wmsBaseLocation.locationStatus == "1")
|
|
|
|
|
{
|
|
|
|
|
{//浅库位有库存
|
|
|
|
|
WmsProductStock? wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode);
|
|
|
|
|
if (wmsProductStock != null)
|
|
|
|
|
|
|
|
|
|
#region 找寻移库目标库位
|
|
|
|
|
// 寻找移库目的库位
|
|
|
|
|
WmsBaseLocation? toLocation = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var moveLocationList = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1").OrderBy(t => t.locDeep).ToList();
|
|
|
|
|
|
|
|
|
|
foreach (WmsBaseLocation itemLocation in moveLocationList)
|
|
|
|
|
{
|
|
|
|
|
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
|
.Where(t => t.locationStatus == "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)
|
|
|
|
|
|
|
|
|
|
if (itemLocation.locDeep == 1)
|
|
|
|
|
{
|
|
|
|
|
if (toLocation.locDeep == 1)
|
|
|
|
|
bool hasLocation = AllWmsBaseLocations
|
|
|
|
|
.Where(t => t.locRow == (itemLocation.locRow % 2 == 1 ? (itemLocation.locRow + 1) : (itemLocation.locRow - 1)))
|
|
|
|
|
.Where(t => t.locColumn == itemLocation.locColumn)
|
|
|
|
|
.Where(t => t.locationStatus == "1" && string.IsNullOrEmpty(t.containerCode))
|
|
|
|
|
.Any();
|
|
|
|
|
if (!hasLocation)
|
|
|
|
|
{
|
|
|
|
|
bool hasLocation = AllWmsBaseLocations
|
|
|
|
|
.Where(t => t.locRow == (toLocation.locRow % 2 == 1 ? (toLocation.locRow + 1) : (toLocation.locRow - 1)))
|
|
|
|
|
.Where(t => t.locColumn == toLocation.locColumn)
|
|
|
|
|
.Any();
|
|
|
|
|
if (!hasLocation)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(DateTime.Now + $":目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
|
|
|
|
|
_logger.Info($"目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
Console.WriteLine(DateTime.Now + $":目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
|
|
|
|
|
_logger.Info($"目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
var RemoveTask = new WcsTask()
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.productOutstockId,
|
|
|
|
|
taskType = StaticTaskType.SecondRemove,
|
|
|
|
|
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
|
|
|
|
|
};
|
|
|
|
|
SystemData.LockOutLocation(toLocation, dbContext);
|
|
|
|
|
SystemData.LockOutLocation(wmsBaseLocation, dbContext);
|
|
|
|
|
toLocation.locationStatus = "4";
|
|
|
|
|
toLocation.updateBy = "WCS";
|
|
|
|
|
toLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.updateBy = "WCS";
|
|
|
|
|
wmsBaseLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.locationStatus = "4";
|
|
|
|
|
dbContext.Update(toLocation);
|
|
|
|
|
dbContext.Update(wmsBaseLocation);
|
|
|
|
|
dbContext.Add(RemoveTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
// 找到可以移库的目标库位
|
|
|
|
|
toLocation = itemLocation;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
// 找到可以移库的目标库位
|
|
|
|
|
toLocation = itemLocation;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if (toLocation == null)
|
|
|
|
|
{
|
|
|
|
|
// 找寻下一个可出库库存
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
var RemoveTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.productOutstockId,
|
|
|
|
|
taskType = StaticTaskType.SecondRemove,
|
|
|
|
|
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
|
|
|
|
|
};
|
|
|
|
|
SystemData.LockOutLocation(toLocation, dbContext);
|
|
|
|
|
SystemData.LockOutLocation(wmsBaseLocation, dbContext);
|
|
|
|
|
toLocation.locationStatus = "4";
|
|
|
|
|
toLocation.updateBy = "WCS";
|
|
|
|
|
toLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.updateBy = "WCS";
|
|
|
|
|
wmsBaseLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.locationStatus = "4";
|
|
|
|
|
dbContext.Update(toLocation);
|
|
|
|
|
dbContext.Update(wmsBaseLocation);
|
|
|
|
|
dbContext.Add(RemoveTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
else if (wmsBaseLocation != null && wmsBaseLocation.locationStatus != "1")
|
|
|
|
|
else if (wmsBaseLocation.locationStatus != "1")
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(DateTime.Now + $":{wmsBaseLocation.locationCode}库位状态异常,无法移库");
|
|
|
|
|
_logger.Info($"{wmsBaseLocation.locationCode}库位状态异常,无法移库");
|
|
|
|
|
// 浅库位状态异常,找寻下一个可出库库存
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
wcsTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
@ -2423,6 +2437,12 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
|
|
|
|
|
if (mesBaseBarcodeInfo != null)
|
|
|
|
|
{
|
|
|
|
|
if (location.locationStatus != "1")
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(DateTime.Now + $":{location.locationCode}库位状态异常,无法出库");
|
|
|
|
|
_logger.Info($"{location.locationCode}库位状态异常,无法出库");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (location.locDeep == 1)
|
|
|
|
|
{
|
|
|
|
|
int? row = 0;
|
|
|
|
|
@ -2439,151 +2459,166 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
.Where(t => t.locRow == row)
|
|
|
|
|
.Where(t => t.locColumn == location.locColumn)
|
|
|
|
|
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
|
if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode) && wmsBaseLocation.locationStatus == "1")
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(wmsBaseLocation.containerCode) && wmsBaseLocation.locationStatus == "1")
|
|
|
|
|
{
|
|
|
|
|
// 浅库位有托盘
|
|
|
|
|
// 浅库位有库存
|
|
|
|
|
WmsRawStock? wmsRawStock = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode);
|
|
|
|
|
if (wmsRawStock != null)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 寻找移库目的库位
|
|
|
|
|
WmsBaseLocation? toLocation = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var moveLocationList = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.warehouseId != location.locationId)
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1").OrderBy(t => t.locDeep).ToList();
|
|
|
|
|
|
|
|
|
|
foreach (WmsBaseLocation itemLocation in moveLocationList)
|
|
|
|
|
{
|
|
|
|
|
// 寻找目的库位
|
|
|
|
|
WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId)
|
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
|
.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1").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)
|
|
|
|
|
|
|
|
|
|
if (itemLocation.locDeep == 1)
|
|
|
|
|
{
|
|
|
|
|
if (toLocation.locDeep == 1)
|
|
|
|
|
bool hasLocation = AllWmsBaseLocations
|
|
|
|
|
.Where(t => t.locRow == (itemLocation.locRow % 2 == 1 ? (itemLocation.locRow + 1) : (itemLocation.locRow - 1)))
|
|
|
|
|
.Where(t => t.locColumn == itemLocation.locColumn)
|
|
|
|
|
.Where(t => t.locationStatus == "1" && string.IsNullOrEmpty(t.containerCode))
|
|
|
|
|
.Any();
|
|
|
|
|
if (!hasLocation)
|
|
|
|
|
{
|
|
|
|
|
bool hasLocation = AllWmsBaseLocations
|
|
|
|
|
.Where(t => t.locRow == (toLocation.locRow % 2 == 1 ? (toLocation.locRow + 1) : (toLocation.locRow - 1)))
|
|
|
|
|
.Where(t => t.locColumn == toLocation.locColumn)
|
|
|
|
|
.Any();
|
|
|
|
|
if (!hasLocation)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(DateTime.Now + $":目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
|
|
|
|
|
_logger.Info($"目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
Console.WriteLine(DateTime.Now + $":目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
|
|
|
|
|
_logger.Info($"目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
var RemoveTask = new WcsTask()
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.rawOutstockId,
|
|
|
|
|
taskType = StaticTaskType.FiveRemove,
|
|
|
|
|
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.updateBy = "WCS";
|
|
|
|
|
toLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.updateBy = "WCS";
|
|
|
|
|
wmsBaseLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.locationStatus = "4";
|
|
|
|
|
dbContext.Update(toLocation);
|
|
|
|
|
dbContext.Update(wmsBaseLocation);
|
|
|
|
|
dbContext.Add(RemoveTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
// 找到可以移库的目标库位
|
|
|
|
|
toLocation = itemLocation;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
// 找到可以移库的目标库位
|
|
|
|
|
toLocation = itemLocation;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if (toLocation == null)
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
// TODO : 没有找到可以移库的目标库位,添加报警
|
|
|
|
|
Console.WriteLine("5F原材料前往背板安装需要先移库,没有找到可以移库的目标库位,添加报警");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var RemoveTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.rawOutstockId,
|
|
|
|
|
taskType = StaticTaskType.FiveRemove,
|
|
|
|
|
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.updateBy = "WCS";
|
|
|
|
|
toLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.updateBy = "WCS";
|
|
|
|
|
wmsBaseLocation.updateTime = DateTime.Now;
|
|
|
|
|
wmsBaseLocation.locationStatus = "4";
|
|
|
|
|
dbContext.Update(toLocation);
|
|
|
|
|
dbContext.Update(wmsBaseLocation);
|
|
|
|
|
dbContext.Add(RemoveTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else if (wmsBaseLocation != null && wmsBaseLocation.locationStatus != "1")
|
|
|
|
|
else if (wmsBaseLocation.locationStatus != "1")
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(DateTime.Now + $":{wmsBaseLocation.locationCode}库位状态异常,无法移库");
|
|
|
|
|
_logger.Info($"{wmsBaseLocation.locationCode}库位状态异常,无法移库");
|
|
|
|
|
continue;
|
|
|
|
|
Console.WriteLine("浅库位状态异常,禁止出库,请检查浅库位状态");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
// Console.WriteLine(DateTime.Now + $":{location.locationCode}浅库位状态异常,无法移库");
|
|
|
|
|
// _logger.Info($"{location.locationCode}浅库位状态异常,无法移库");
|
|
|
|
|
// continue;
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
wcsTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.rawOutstockId,
|
|
|
|
|
taskType = StaticTaskType.FiveRawToBack,//如果是12那么就是原材料到柜体验收区,如果是13那么就是原材料到背板安装区
|
|
|
|
|
containerNo = location.containerCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now,
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
materialId = item.materialId,
|
|
|
|
|
currPointId = location.locationId,
|
|
|
|
|
currPointNo = location.locationCode,
|
|
|
|
|
nextPointId = agvEquip.objid,
|
|
|
|
|
nextPointNo = agvEquip.equipNo,
|
|
|
|
|
endPointId = lineEquip.objid,
|
|
|
|
|
endPointNo = lineEquip.equipNo,
|
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
qty = qty
|
|
|
|
|
};
|
|
|
|
|
//location是出库的库位,mesBaseBarcodeInfo是条码信息表数据,item是出库申请单
|
|
|
|
|
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
|
|
|
|
|
};
|
|
|
|
|
if (item.beginTime == null)
|
|
|
|
|
{
|
|
|
|
|
item.beginTime = DateTime.Now;
|
|
|
|
|
}
|
|
|
|
|
SystemData.LockOutLocation(location, dbContext);
|
|
|
|
|
dbContext.Add(wmsProductOutstockDetail);
|
|
|
|
|
location.locationStatus = "6";
|
|
|
|
|
location.updateBy = "WCS";
|
|
|
|
|
location.updateTime = DateTime.Now;
|
|
|
|
|
endEquip.emptyCount = 1;
|
|
|
|
|
dbContext.Update(endEquip);
|
|
|
|
|
dbContext.Update(location);
|
|
|
|
|
dbContext.Add(wcsTask);
|
|
|
|
|
dbContext.Update(item);
|
|
|
|
|
dbContext.Update(stock);
|
|
|
|
|
WcsTaskLog wcsTaskLog1 = CoreMapper.Map<WcsTaskLog>(wcsTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog1);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
// Console.WriteLine(DateTime.Now + $":{location.locationCode}浅库位状态异常,无法移库");
|
|
|
|
|
// _logger.Info($"{location.locationCode}浅库位状态异常,无法移库");
|
|
|
|
|
// continue;
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
wcsTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.rawOutstockId,
|
|
|
|
|
taskType = StaticTaskType.FiveRawToBack,//如果是12那么就是原材料到柜体验收区,如果是13那么就是原材料到背板安装区
|
|
|
|
|
containerNo = location.containerCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now,
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
materialId = item.materialId,
|
|
|
|
|
currPointId = location.locationId,
|
|
|
|
|
currPointNo = location.locationCode,
|
|
|
|
|
nextPointId = agvEquip.objid,
|
|
|
|
|
nextPointNo = agvEquip.equipNo,
|
|
|
|
|
endPointId = lineEquip.objid,
|
|
|
|
|
endPointNo = lineEquip.equipNo,
|
|
|
|
|
equipmentNo = agvEquip.equipNo,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
qty = qty
|
|
|
|
|
};
|
|
|
|
|
//location是出库的库位,mesBaseBarcodeInfo是条码信息表数据,item是出库申请单
|
|
|
|
|
//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
|
|
|
|
|
//};
|
|
|
|
|
if (item.beginTime == null)
|
|
|
|
|
{
|
|
|
|
|
item.beginTime = DateTime.Now;
|
|
|
|
|
}
|
|
|
|
|
SystemData.LockOutLocation(location, dbContext);
|
|
|
|
|
//dbContext.Add(wmsProductOutstockDetail);
|
|
|
|
|
location.locationStatus = "6";
|
|
|
|
|
location.updateBy = "WCS";
|
|
|
|
|
location.updateTime = DateTime.Now;
|
|
|
|
|
endEquip.emptyCount = 1;
|
|
|
|
|
dbContext.Update(endEquip);
|
|
|
|
|
dbContext.Update(location);
|
|
|
|
|
dbContext.Add(wcsTask);
|
|
|
|
|
dbContext.Update(item);
|
|
|
|
|
dbContext.Update(stock);
|
|
|
|
|
WcsTaskLog wcsTaskLog1 = CoreMapper.Map<WcsTaskLog>(wcsTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog1);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -2599,7 +2634,8 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
Thread.Sleep(3000);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|