change-完善5F出库逻辑

master
liuwf 1 year ago
parent 54810825f3
commit 0756b2664b

@ -2475,7 +2475,7 @@ namespace Khd.Core.Wcs.Wcs
.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 ( wmsBaseLocation.locationStatus == "1")
{
WmsRawStock? wmsRawStock = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode);
if (wmsRawStock != null)
@ -2565,7 +2565,8 @@ namespace Khd.Core.Wcs.Wcs
}
else
{
continue;
// 可以出库
// continue;
}
}
else if (wmsBaseLocation != null && wmsBaseLocation.locationStatus != "1")
@ -2697,35 +2698,43 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.locColumn == location.locColumn)
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
if (!string.IsNullOrEmpty(wmsBaseLocation.containerCode) && wmsBaseLocation.locationStatus == "1")
if (wmsBaseLocation.locationStatus == "1")
{
// 浅库位有库存
WmsRawStock? wmsRawStock = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode);
// 寻找移库目的库位
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)
if (wmsRawStock != null)
{
// 寻找移库目的库位
WmsBaseLocation? toLocation = null;
if (itemLocation.locDeep == 1)
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)
{
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)
if (itemLocation.locDeep == 1)
{
Console.WriteLine(DateTime.Now + $":目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
_logger.Info($"目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
continue;
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)
{
Console.WriteLine(DateTime.Now + $":目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
_logger.Info($"目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
continue;
}
else
{
// 找到可以移库的目标库位
toLocation = itemLocation;
break;
}
}
else
{
@ -2735,52 +2744,51 @@ namespace Khd.Core.Wcs.Wcs
}
}
else
if (toLocation == null)
{
// 找到可以移库的目标库位
toLocation = itemLocation;
break;
// TODO : 没有找到可以移库的目标库位,添加报警
SystemData.InsertWaringLog(dbContext, WaringType.);
Console.WriteLine("5F原材料前往背板安装需要先移库没有找到可以移库的目标库位添加报警");
continue;
}
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);
}
if (toLocation == null)
else
{
// TODO : 没有找到可以移库的目标库位,添加报警
SystemData.InsertWaringLog(dbContext, WaringType.);
Console.WriteLine("5F原材料前往背板安装需要先移库没有找到可以移库的目标库位添加报警");
continue;
//直接出
}
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.locationStatus != "1")

Loading…
Cancel
Save