liuwf 1 year ago
parent c894be01a6
commit fe02b92246

@ -992,7 +992,7 @@ namespace Khd.Core.Wcs.Wcs
{
row = wmsBaseLocation.locRow - 1;
}
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)
{
@ -1005,7 +1005,7 @@ namespace Khd.Core.Wcs.Wcs
WmsBaseLocation? fromBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locRow == row)
.Where(t => t.locColumn == wmsBaseLocation.locColumn)
.Where(t => t.warehouseId == wmsBaseLocation.warehouseId).FirstOrDefault();
if (fromBaseLocation != null && !string.IsNullOrEmpty(fromBaseLocation.containerCode)&& fromBaseLocation.locationStatus=="1")
if (fromBaseLocation != null && !string.IsNullOrEmpty(fromBaseLocation.containerCode) && fromBaseLocation.locationStatus == "1")
{
// 浅库位有库存
WmsRawStock? wmsRawStock1 = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == fromBaseLocation.locationCode);
@ -1090,7 +1090,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Add(wcsTaskLog);
#endregion
}
}
@ -1363,14 +1363,14 @@ namespace Khd.Core.Wcs.Wcs
WmsBaseLocation? wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locRow == row)
.Where(t => t.locColumn == location.locColumn)
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
if ( !string.IsNullOrEmpty(wmsBaseLocation.containerCode) && wmsBaseLocation.locationStatus == "1")
if (!string.IsNullOrEmpty(wmsBaseLocation.containerCode) && wmsBaseLocation.locationStatus == "1")
{
WmsProductStock? wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode);
if (wmsProductStock != null)
{
#region 找寻移库目标库位
WmsBaseLocation? toLocation = null;
@ -1629,7 +1629,7 @@ namespace Khd.Core.Wcs.Wcs
{
task = dbContext.WcsTask.Where(t => t.nextPointId == 8 && t.taskStatus <= 7).Any();
if (task) break;
var wmsproStocks = proStock
.Where(t => t.productId == item.productId && t.saleOrderId == (item.saleOrderId == null ? 0 : item.saleOrderId) && t.warehouseId == item.warehouseId)
.Select(t => t.locationCode)
@ -1654,7 +1654,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.SaveChanges();
continue;
}
var bill = from a in wmsBaseLocations
from b in proStock
where a.locationCode == b.locationCode
@ -1692,7 +1692,7 @@ namespace Khd.Core.Wcs.Wcs
}
else
{
// 目标出库库位对应的浅库位
WmsBaseLocation? wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locRow == row)
.Where(t => t.locColumn == location.locColumn)
@ -2365,25 +2365,29 @@ 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 = 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)
#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))
.FirstOrDefault();
if (toLocation != null)
.Where(t => string.IsNullOrEmpty(t.containerCode) && t.locationStatus == "1").OrderBy(t => t.locDeep).ToList();
foreach (WmsBaseLocation itemLocation in moveLocationList)
{
if (toLocation.locDeep == 1)
if (itemLocation.locDeep == 1)
{
bool hasLocation = AllWmsBaseLocations
.Where(t => t.locRow == (toLocation.locRow % 2 == 1 ? (toLocation.locRow + 1) : (toLocation.locRow - 1)))
.Where(t => t.locColumn == toLocation.locColumn)
.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)
{
@ -2391,43 +2395,61 @@ namespace Khd.Core.Wcs.Wcs
_logger.Info($"目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
continue;
}
else
{
// 找到可以移库的目标库位
toLocation = itemLocation;
break;
}
}
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
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);
#endregion
}
else
{

Loading…
Cancel
Save