|
|
|
|
@ -19,7 +19,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class CreateTaskByRecord
|
|
|
|
|
{
|
|
|
|
|
private readonly LoggerUtils _logger=new LoggerUtils();
|
|
|
|
|
private readonly LoggerUtils _logger = new LoggerUtils();
|
|
|
|
|
private readonly IHost _host;
|
|
|
|
|
public CreateTaskByRecord(IHost host)
|
|
|
|
|
{
|
|
|
|
|
@ -31,6 +31,11 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void StartPoint()
|
|
|
|
|
{
|
|
|
|
|
var createRemoveThread = new Thread(CreateRemoveLogic);
|
|
|
|
|
createRemoveThread.IsBackground = true;
|
|
|
|
|
createRemoveThread.Name = "CreateRemoveLogic";
|
|
|
|
|
createRemoveThread.Start();
|
|
|
|
|
|
|
|
|
|
//背负式Agv返库任务
|
|
|
|
|
var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic);
|
|
|
|
|
createBearAgvReturnThread.IsBackground = true;
|
|
|
|
|
@ -77,7 +82,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
createThirdWasterTaskThread.Name = "CreateThirdWasterTaskLogic";
|
|
|
|
|
createThirdWasterTaskThread.Start();
|
|
|
|
|
//背负式退库
|
|
|
|
|
var BackReturnTaskThread= new Thread(BackReturnTaskLogic);
|
|
|
|
|
var BackReturnTaskThread = new Thread(BackReturnTaskLogic);
|
|
|
|
|
BackReturnTaskThread.IsBackground = true;
|
|
|
|
|
BackReturnTaskThread.Name = "BackReturnTaskLogic";
|
|
|
|
|
BackReturnTaskThread.Start();
|
|
|
|
|
@ -85,6 +90,221 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
_logger.Info("出库任务监听启动成功");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 主动移库
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
private void CreateRemoveLogic(object? obj)
|
|
|
|
|
{
|
|
|
|
|
using var scope = _host.Services.CreateScope();
|
|
|
|
|
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
|
|
|
|
|
while (true)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
|
|
|
|
|
var CanRemoveWmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.locationStatus == "7").ToList();
|
|
|
|
|
List<string> locationCodes = CanRemoveWmsBaseLocations.Select(t => t.locationCode).ToList();
|
|
|
|
|
List<WmsProductStock> CanRemoveWmsProductStocks = dbContext.WmsProductStock.Where(t => locationCodes.Contains(t.locationCode)).ToList();
|
|
|
|
|
foreach (var wmsProductStock in CanRemoveWmsProductStocks)
|
|
|
|
|
{
|
|
|
|
|
BaseEquip? agvEquip = null;
|
|
|
|
|
if (wmsProductStock.warehouseId == 531)
|
|
|
|
|
{
|
|
|
|
|
agvEquip = StaticData.BaseEquip.First(t => t.objid == 28);
|
|
|
|
|
}
|
|
|
|
|
else if (wmsProductStock.warehouseId == 231)
|
|
|
|
|
{
|
|
|
|
|
agvEquip = StaticData.BaseEquip.First(t => t.objid == 8);
|
|
|
|
|
}
|
|
|
|
|
if (agvEquip != null)
|
|
|
|
|
{
|
|
|
|
|
bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == agvEquip.objid).Any();
|
|
|
|
|
if (!hasTask)
|
|
|
|
|
{
|
|
|
|
|
WmsBaseLocation fromLocationCode = CanRemoveWmsBaseLocations.First(t => t.locationCode == wmsProductStock.locationCode);
|
|
|
|
|
if (wmsProductStock.warehouseId == 531 || wmsProductStock.warehouseId == 231)//成品移库
|
|
|
|
|
{
|
|
|
|
|
var wmsBaseLocations = dbContext.WmsBaseLocation
|
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
|
.Where(t => t.locationStatus == "1")
|
|
|
|
|
.Where(t => t.warehouseId == wmsProductStock.warehouseId)
|
|
|
|
|
.ToList();//所有可用库位
|
|
|
|
|
var wmsProductStocks = dbContext.WmsProductStock
|
|
|
|
|
.Where(t => t.warehouseId == wmsProductStock.warehouseId)
|
|
|
|
|
.ToList();//仓库的库存
|
|
|
|
|
WmsBaseLocation? wmsBaseLocation = null;
|
|
|
|
|
if (wmsBaseLocations.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
List<string> containerCodes = wmsBaseLocations
|
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
|
.Select(t => t.containerCode).ToList();//深库位的有托盘
|
|
|
|
|
|
|
|
|
|
List<MesBaseBarcodeInfo> mesBasePalletInfos = dbContext.MesBaseBarcodeInfo
|
|
|
|
|
.Where(t => t.saleOrderId == (wmsProductStock.saleOrderId == null ? 0 : wmsProductStock.saleOrderId))//销售订单
|
|
|
|
|
.Where(t => t.materialId == wmsProductStock.productId)//物料Id
|
|
|
|
|
.Where(t => containerCodes.Contains(t.palletInfoCode)).ToList();//深库位的托盘的物料等于当前任务的物料
|
|
|
|
|
|
|
|
|
|
var bill = from a in mesBasePalletInfos
|
|
|
|
|
join b in wmsBaseLocations.Where(t => t.locDeep == 1) on a.palletInfoCode equals b.containerCode
|
|
|
|
|
select new { b };//等于当前任务的物料的托盘的库位信息
|
|
|
|
|
|
|
|
|
|
var outBill = from a in bill//深库位托盘和当前任务绑定物料一致的托盘库位
|
|
|
|
|
from b in wmsBaseLocations//所有库位
|
|
|
|
|
where a.b.layerNum == b.layerNum//层数相同
|
|
|
|
|
&& b.locDeep == 2//浅库位
|
|
|
|
|
&& b.locRow == (a.b.locRow % 2 == 0 ? a.b.locRow - 1 : a.b.locRow + 1)
|
|
|
|
|
//如果是4则找3,如果是1则找2
|
|
|
|
|
&& a.b.locColumn == b.locColumn//列数相同
|
|
|
|
|
&& string.IsNullOrEmpty(b.containerCode)
|
|
|
|
|
select new { a.b };//在上面的基础上获取对应托盘的外侧库位的空库位信息
|
|
|
|
|
|
|
|
|
|
wmsBaseLocation ??= outBill.FirstOrDefault()?.b;//先找相同物料的外侧库位
|
|
|
|
|
wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(t => t.locDeep == 2);//找不到再找深库位
|
|
|
|
|
wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位
|
|
|
|
|
if (wmsBaseLocation != null)//如果找到库位,生成入库任务
|
|
|
|
|
{
|
|
|
|
|
var wcsTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
currPointId = fromLocationCode.locationId,
|
|
|
|
|
currPointNo = fromLocationCode.locationCode,
|
|
|
|
|
nextPointId = agvEquip.objid,
|
|
|
|
|
nextPointNo = agvEquip.equipNo,
|
|
|
|
|
endPointId = wmsBaseLocation.locationId,
|
|
|
|
|
endPointNo = wmsBaseLocation.locationCode,
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
containerNo = wmsProductStock.palletInfoCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now,
|
|
|
|
|
isEmpty = "0",
|
|
|
|
|
taskType = agvEquip.objid == 28 ? 66 : 55,
|
|
|
|
|
qty = 1,
|
|
|
|
|
};
|
|
|
|
|
dbContext.Add(wcsTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":二楼码垛输送线生成入库托盘任务成功:" + wcsTask.objid);
|
|
|
|
|
_logger.Info("二楼码垛输送线生成入库托盘任务成功:" + wcsTask.objid);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//报警
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<WmsRawStock> wmsRawStocks = dbContext.WmsRawStock.Where(t => locationCodes.Contains(t.locationCode)).ToList();
|
|
|
|
|
foreach (var wmsRawStock in wmsRawStocks)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
WmsBaseLocation fromLocationCode = CanRemoveWmsBaseLocations.First(t => t.locationCode == wmsRawStock.locationCode);
|
|
|
|
|
if (wmsRawStock.warehouseId == 511 || wmsRawStock.warehouseId == 311)
|
|
|
|
|
{
|
|
|
|
|
BaseEquip? agvEquip = null;
|
|
|
|
|
if (wmsRawStock.warehouseId == 511)
|
|
|
|
|
{
|
|
|
|
|
agvEquip = StaticData.BaseEquip.First(t => t.objid == 28);
|
|
|
|
|
}
|
|
|
|
|
else if (wmsRawStock.warehouseId == 311)
|
|
|
|
|
{
|
|
|
|
|
agvEquip = StaticData.BaseEquip.First(t => t.objid == 9);
|
|
|
|
|
}
|
|
|
|
|
if (agvEquip != null)
|
|
|
|
|
{
|
|
|
|
|
bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == agvEquip.objid).Any();
|
|
|
|
|
if (!hasTask)
|
|
|
|
|
{
|
|
|
|
|
var wmsBaseLocations = dbContext.WmsBaseLocation
|
|
|
|
|
.Where(t => t.activeFlag == "1")
|
|
|
|
|
.Where(t => t.delFlag == "0")
|
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
|
.Where(t => t.locationStatus == "1")
|
|
|
|
|
.Where(t => t.warehouseId == wmsRawStock.warehouseId)
|
|
|
|
|
.ToList();//所有可用库位
|
|
|
|
|
var wmsProductStocks = dbContext.WmsRawStock
|
|
|
|
|
.Where(t => t.warehouseId == wmsRawStock.warehouseId)
|
|
|
|
|
.ToList();//仓库的库存
|
|
|
|
|
WmsBaseLocation? wmsBaseLocation = null;
|
|
|
|
|
if (wmsBaseLocations.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
List<string> containerCodes = wmsBaseLocations
|
|
|
|
|
.Where(t => t.locDeep == 1)
|
|
|
|
|
.Select(t => t.containerCode).ToList();//深库位的有托盘
|
|
|
|
|
|
|
|
|
|
List<MesBaseBarcodeInfo> mesBasePalletInfos = dbContext.MesBaseBarcodeInfo
|
|
|
|
|
.Where(t => t.saleOrderId == (wmsRawStock.saleOrderId == null ? 0 : wmsRawStock.saleOrderId))//销售订单
|
|
|
|
|
.Where(t => t.materialId == wmsRawStock.materialId)//物料Id
|
|
|
|
|
.Where(t => containerCodes.Contains(t.palletInfoCode)).ToList();//深库位的托盘的物料等于当前任务的物料
|
|
|
|
|
|
|
|
|
|
var bill = from a in mesBasePalletInfos
|
|
|
|
|
join b in wmsBaseLocations.Where(t => t.locDeep == 1) on a.palletInfoCode equals b.containerCode
|
|
|
|
|
select new { b };//等于当前任务的物料的托盘的库位信息
|
|
|
|
|
|
|
|
|
|
var outBill = from a in bill//深库位托盘和当前任务绑定物料一致的托盘库位
|
|
|
|
|
from b in wmsBaseLocations//所有库位
|
|
|
|
|
where a.b.layerNum == b.layerNum//层数相同
|
|
|
|
|
&& b.locDeep == 2//浅库位
|
|
|
|
|
&& b.locRow == (a.b.locRow % 2 == 0 ? a.b.locRow - 1 : a.b.locRow + 1)
|
|
|
|
|
//如果是4则找3,如果是1则找2
|
|
|
|
|
&& a.b.locColumn == b.locColumn//列数相同
|
|
|
|
|
&& string.IsNullOrEmpty(b.containerCode)
|
|
|
|
|
select new { a.b };//在上面的基础上获取对应托盘的外侧库位的空库位信息
|
|
|
|
|
|
|
|
|
|
wmsBaseLocation ??= outBill.FirstOrDefault()?.b;//先找相同物料的外侧库位
|
|
|
|
|
wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(t => t.locDeep == 2);//找不到再找深库位
|
|
|
|
|
wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位
|
|
|
|
|
if (wmsBaseLocation != null)//如果找到库位,生成入库任务
|
|
|
|
|
{
|
|
|
|
|
var wcsTask = new WcsTask()
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
currPointId = fromLocationCode.locationId,
|
|
|
|
|
currPointNo = fromLocationCode.locationCode,
|
|
|
|
|
nextPointId = agvEquip.objid,
|
|
|
|
|
nextPointNo = agvEquip.equipNo,
|
|
|
|
|
endPointId = wmsBaseLocation.locationId,
|
|
|
|
|
endPointNo = wmsBaseLocation.locationCode,
|
|
|
|
|
taskStatus = 0,
|
|
|
|
|
useFlag = 1,
|
|
|
|
|
containerNo = wmsRawStock.palletInfoCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now,
|
|
|
|
|
isEmpty = "0",
|
|
|
|
|
taskType = agvEquip.objid == 28 ? 66 : 67,
|
|
|
|
|
qty = 1,
|
|
|
|
|
};
|
|
|
|
|
dbContext.Add(wcsTask);
|
|
|
|
|
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
|
|
|
|
|
dbContext.Add(wcsTaskLog);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
Console.WriteLine(DateTime.Now + ":二楼码垛输送线生成入库托盘任务成功:" + wcsTask.objid);
|
|
|
|
|
_logger.Info("二楼码垛输送线生成入库托盘任务成功:" + wcsTask.objid);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//报警
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 五楼柜体拆分返库任务
|
|
|
|
|
/// </summary>
|
|
|
|
|
@ -365,7 +585,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch(Exception ex)
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.Error(ex.Message + "\n" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
@ -506,7 +726,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
if (wmsRawOutstock != null)
|
|
|
|
|
{
|
|
|
|
|
var wmsRawStocks = dbContext.WmsRawStock
|
|
|
|
|
.Where(t => t.saleOrderId == wmsRawOutstock.saleOrderId)
|
|
|
|
|
.Where(t => t.saleOrderId == (wmsRawOutstock.saleOrderId == null ? 0 : wmsRawOutstock.saleOrderId))
|
|
|
|
|
.Where(t => t.warehouseId == 311)
|
|
|
|
|
.ToList();
|
|
|
|
|
var AllWmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseId == 311).ToList();
|
|
|
|
|
@ -900,7 +1120,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.productOutstockId,
|
|
|
|
|
taskType = 38,
|
|
|
|
|
taskType = 66,
|
|
|
|
|
containerNo = wmsProductStock.palletInfoCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now.AddSeconds(-10),
|
|
|
|
|
@ -1042,7 +1262,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
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 == null ? 0 : item.saleOrderId) && t.warehouseId == item.warehouseId)
|
|
|
|
|
.Select(t => t.palletInfoCode)
|
|
|
|
|
.ToList();
|
|
|
|
|
List<WmsBaseLocation> AllWmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseId == item.warehouseId).ToList();
|
|
|
|
|
@ -1453,7 +1673,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
var wmsRawStocks = rawStock
|
|
|
|
|
.Where(t => t.materialId == order.MaterialId && t.saleOrderId == order.SaleOrderId && t.warehouseId == 512)
|
|
|
|
|
.Where(t => t.materialId == order.MaterialId && t.saleOrderId == (order.SaleOrderId == null ? 0 : order.SaleOrderId) && t.warehouseId == 512)
|
|
|
|
|
.Select(t => t.palletInfoCode)
|
|
|
|
|
.ToList();
|
|
|
|
|
var AllWmsBaseLocations = dbContext.WmsBaseLocation.Where(t => t.warehouseId == 512).ToList();
|
|
|
|
|
@ -1644,7 +1864,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
if (endEquip.equipType == 12 || endEquip.equipType == 13)//原材料到柜体验收区,背板安装
|
|
|
|
|
{
|
|
|
|
|
bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 28 && t.useFlag == 1 && t.taskStatus <= 5).Any();
|
|
|
|
|
bool hasTask = dbContext.WcsTask.Where(t => t.currPointId == endEquip.objid || t.endPointId == endEquip.objid).Any();
|
|
|
|
|
if (!hasTask)
|
|
|
|
|
{
|
|
|
|
|
if (endEquip.emptyCount == 0)
|
|
|
|
|
@ -1653,7 +1873,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
.Where(t => t.materialId == item.materialId && t.warehouseId == item.warehouseId)
|
|
|
|
|
.WhereIf(endEquip.equipType == 13, t => t.completeFlag == "0")
|
|
|
|
|
.WhereIf(endEquip.equipType == 12, t => t.completeFlag == "1")
|
|
|
|
|
.Where(t => t.saleOrderId == item.saleOrderId)
|
|
|
|
|
.Where(t => t.saleOrderId == (item.saleOrderId == null ? 0 : item.saleOrderId))
|
|
|
|
|
.Where(t => t.totalAmount > t.frozenAmount)
|
|
|
|
|
.Select(t => t.palletInfoCode)
|
|
|
|
|
.ToList();
|
|
|
|
|
@ -1664,6 +1884,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
.Where(t => t.locationScrapType == "1")
|
|
|
|
|
.Where(t => t.locationStatus == "1")
|
|
|
|
|
.Where(t => t.warehouseId == item.warehouseId)
|
|
|
|
|
.OrderByDescending(t => t.locDeep)
|
|
|
|
|
.Where(t => wmsRawStocks.Contains(t.containerCode))
|
|
|
|
|
.ToList();
|
|
|
|
|
|
|
|
|
|
@ -1674,7 +1895,6 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
where a.locationCode == b.locationCode
|
|
|
|
|
select new { a, b };
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 28);
|
|
|
|
|
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.equipNo == item.endStationCode);
|
|
|
|
|
foreach (var b in bill)
|
|
|
|
|
@ -1686,13 +1906,11 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
int qty = 0;
|
|
|
|
|
if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
|
|
|
|
|
{
|
|
|
|
|
item.realOutstockAmount += stock.totalAmount - stock.frozenAmount;
|
|
|
|
|
qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
|
|
|
|
|
stock.updateDate = DateTime.Now;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
item.realOutstockAmount += needNumber;
|
|
|
|
|
qty = Convert.ToInt32(needNumber);
|
|
|
|
|
stock.updateDate = DateTime.Now;
|
|
|
|
|
}
|
|
|
|
|
@ -1704,11 +1922,11 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
int? row = 0;
|
|
|
|
|
if (location.locRow % 2 == 1)//五楼原材料与其他的深浅库位相反
|
|
|
|
|
{
|
|
|
|
|
row = location.locRow - 1;
|
|
|
|
|
row = location.locRow + 1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
row = location.locRow + 1;
|
|
|
|
|
row = location.locRow - 1;//5
|
|
|
|
|
}
|
|
|
|
|
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)
|
|
|
|
|
@ -1718,9 +1936,10 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
WmsBaseLocation? wmsBaseLocation = AllWmsBaseLocations.Where(t => t.locRow == row)
|
|
|
|
|
.Where(t => t.locColumn == location.locColumn)
|
|
|
|
|
.Where(t => t.warehouseId == location.warehouseId).FirstOrDefault();
|
|
|
|
|
WmsBaseLocation? wmsBaseLocation = AllWmsBaseLocations
|
|
|
|
|
.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))
|
|
|
|
|
{
|
|
|
|
|
WmsRawStock? wmsRawStock = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode);
|
|
|
|
|
@ -1739,7 +1958,7 @@ namespace Khd.Core.Wcs.Wcs
|
|
|
|
|
{
|
|
|
|
|
objid = StaticData.SnowId.NextId(),
|
|
|
|
|
orderId = item.rawOutstockId,
|
|
|
|
|
taskType = 38,
|
|
|
|
|
taskType = 66,
|
|
|
|
|
containerNo = wmsRawStock.palletInfoCode,
|
|
|
|
|
createBy = "WCS",
|
|
|
|
|
createTime = DateTime.Now.AddSeconds(-10),
|
|
|
|
|
|