master
2 years ago
parent 66bbced58f
commit 07285c2746

@ -20,13 +20,13 @@ namespace Khd.Core.Domain.Models
[Key] [Key]
[Column("product_instock_detail_id")] [Column("product_instock_detail_id")]
public long productInstockDetailId { get; set; } public long? productInstockDetailId { get; set; }
/// <summary> /// <summary>
/// 成品入库记录ID /// 成品入库记录ID
/// </summary> /// </summary>
[Column("product_instock_id")] [Column("product_instock_id")]
public long productInstockId { get; set; } public long? productInstockId { get; set; }
/// <summary> /// <summary>
/// 库位编码 /// 库位编码
@ -38,7 +38,7 @@ namespace Khd.Core.Domain.Models
/// 成品ID /// 成品ID
/// </summary> /// </summary>
[Column("product_id")] [Column("product_id")]
public long productId { get; set; } public long? productId { get; set; }
/// <summary> /// <summary>
/// 成品条码 /// 成品条码

@ -0,0 +1,8 @@
{
"profiles": {
"WSL": {
"commandName": "WSL2",
"distributionName": ""
}
}
}

@ -68,8 +68,11 @@ namespace Khd.Core.Wcs.Wcs
//var createRawInWareTaskThread = new Thread(CreateRawInWareTaskLogic); //var createRawInWareTaskThread = new Thread(CreateRawInWareTaskLogic);
//createRawInWareTaskThread.Start(); //createRawInWareTaskThread.Start();
//var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic); var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic);
//createFiveProductTaskThread.Start(); createFiveProductInTaskThread.Start();
var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic);
createFiveProductTaskThread.Start();
var createRawTaskThread = new Thread(CreateRawTaskLogic); var createRawTaskThread = new Thread(CreateRawTaskLogic);
createRawTaskThread.Start(); createRawTaskThread.Start();
@ -81,6 +84,97 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("出库任务监听启动成功"); LogManager.Info("出库任务监听启动成功");
} }
private void CreateFiveProductInTaskLogic(object? obj)
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 28);
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 30);
while (true)
{
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var wmsProductInstock = dbContext.WmsProductInstock
.Where(t => t.productType == "2")
.Where(t => t.auditStatus == "1")
.Where(t => t.warehouseId == 521)
.FirstOrDefault();
if (wmsProductInstock != null && wmsProductInstock.executeStatus == "0")
{
var wmsBaseLocation = dbContext.WmsBaseLocation
.Where(t => t.warehouseId == 521)
.Where(t => t.activeFlag == "1")
.Where(t => t.instockFlag == "0")
.Where(t => t.outstockFlag == "0")
.Where(t => t.locationStatus == "1")
.Where(t => t.containerCode == null || t.containerCode == "").FirstOrDefault();
if (wmsBaseLocation != null)
{
var wcsTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
serialNo = SystemData.GetSerialNo(dbContext),
taskType = 34,
startPointId = wmsBaseLocation.locationId,
startPointNo = wmsBaseLocation.locationCode,
endPointId = endEquip.objid,
endPointNo = endEquip.equipNo,
currPointId = wmsBaseLocation.locationId,
currPointNo = wmsBaseLocation.locationCode,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = 1,
containerNo = wmsProductInstock.palletInfoCode,
taskStatus = 0,
createBy = "WCS",
createTime = DateTime.Now,
floorNo = 5,
fromFloorNo = 5,
isEmpty = "0",
masterId = wmsProductInstock.productId,
orderId = wmsProductInstock.productInstockId,
materialId = wmsProductInstock.productId,
nextPointId = agvEquip.objid,
nextPointNo = agvEquip.equipNo,
};
WmsProductInstockDetail wmsProductInstockDetail = new WmsProductInstockDetail()
{
erpAmount = 0,
productId = wmsProductInstock.productId,
executeStatus = "1",
productInstockDetailId = StaticData.SnowId.NextId(),
instockAmount = 1,
instockBy = "WCS",
instockDate = DateTime.Now,
instockWay = "2",
locationCode = wmsBaseLocation.locationCode,
planAmount = 1,
productBarcode = wmsProductInstock.productBatch,
productBatch = wmsProductInstock.productBatch,
productInstockId = wmsProductInstock.productInstockId,
};
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
wmsProductInstock.executeStatus = "1";
wmsBaseLocation.instockFlag = "1";
wmsBaseLocation.locationStatus = "4";
dbContext.Add(wmsProductInstock);
dbContext.Update(wmsProductInstock);
dbContext.Update(wmsBaseLocation);
dbContext.Add(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
}
}
}
catch (Exception ex)
{
LogManager.Error(ex);
}
Thread.Sleep(1000);
}
}
/// <summary> /// <summary>
/// 创建去翻转机的任务 /// 创建去翻转机的任务
/// </summary> /// </summary>
@ -420,51 +514,52 @@ namespace Khd.Core.Wcs.Wcs
qty = Convert.ToInt32(needNumber); qty = Convert.ToInt32(needNumber);
stock.updateDate = DateTime.Now; stock.updateDate = DateTime.Now;
} }
wcsTask = new WcsTask() MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode);
if (mesBasePalletInfo != null)
{ {
objid = StaticData.SnowId.NextId(), WmsProductOutstockDetail detail = new()
orderId = item.saleOrderId,
taskType = 38,
containerNo = location.containerCode,
createBy = "WCS",
createTime = DateTime.Now,
taskStatus = 0,
materialId = item.productId,
currPointId = location.locationId,
currPointNo = location.locationCode,
startPointId = location.locationId,
startPointNo = location.locationCode,
nextPointId = ctuEquip.objid,
nextPointNo = ctuEquip.equipNo,
endPointId = lineEquip.objid,
endPointNo = lineEquip.equipNo,
equipmentNo = ctuEquip.equipNo,
useFlag = 1,
qty = qty
};
location.outstockFlag = "1";
location.locationStatus = "6";
location.updateBy = "WCS";
location.updateTime = DateTime.Now;
MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.productBatch).FirstOrDefault();
if (mesBaseBarcodeInfo != null)
{
WmsProductOutstockDetail wmsProductOutstockDetail = new WmsProductOutstockDetail()
{ {
productOutstockDetailId = StaticData.SnowId.NextId(),
productOutstockId = item.productOutstockId,
productId = item.productId, productId = item.productId,
beginTime = DateTime.Now, productOutstockId = item.productOutstockId,
confirmAmount = 0,
executeStatus = "1",
locationCode = location.locationCode, locationCode = location.locationCode,
outstockAmount = qty, executeStatus = "1",
planAmount = item.applyQty, beginTime = DateTime.Now,
warehouseId = item.warehouseId, warehouseId = item.warehouseId,
productBatch = mesBaseBarcodeInfo.batchCode, erpAmount = 0,
productBarcode = mesBaseBarcodeInfo.barcodeInfo confirmAmount = 0,
outstockAmount = 1,
planAmount = 1,
productBatch = item.productBatch,
productOutstockDetailId = StaticData.SnowId.NextId(),
productBarcode = mesBasePalletInfo.materialBarcode
}; };
dbContext.Add(wmsProductOutstockDetail); wcsTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
orderId = item.productOutstockId,
taskType = 38,
containerNo = location.containerCode,
createBy = "WCS",
createTime = DateTime.Now,
taskStatus = 0,
materialId = item.productId,
currPointId = location.locationId,
currPointNo = location.locationCode,
startPointId = location.locationId,
startPointNo = location.locationCode,
nextPointId = ctuEquip.objid,
nextPointNo = ctuEquip.equipNo,
endPointId = lineEquip.objid,
endPointNo = lineEquip.equipNo,
equipmentNo = ctuEquip.equipNo,
useFlag = 1,
qty = qty
};
location.outstockFlag = "1";
location.locationStatus = "6";
location.updateBy = "WCS";
location.updateTime = DateTime.Now;
dbContext.Add(detail);
dbContext.Update(location); dbContext.Update(location);
dbContext.Add(wcsTask); dbContext.Add(wcsTask);
dbContext.Update(stock); dbContext.Update(stock);
@ -475,7 +570,6 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
} }
if (item.beginTime == null) if (item.beginTime == null)
{ {
item.beginTime = DateTime.Now; item.beginTime = DateTime.Now;
@ -648,7 +742,12 @@ namespace Khd.Core.Wcs.Wcs
planAmount = item.outstockAmount, planAmount = item.outstockAmount,
warehouseId = item.warehouseId, warehouseId = item.warehouseId,
materialBarcode = mesBaseBarcodeInfo.barcodeInfo, materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
instockBatch = mesBaseBarcodeInfo.batchCode instockBatch = mesBaseBarcodeInfo.batchCode,
stackAmount = qty,
outstockPerson = "WCS",
outstockTime = DateTime.Now,
outstockWay = "2",
materialProductionDate = mesBaseBarcodeInfo.productionDate
}; };
dbContext.Add(wmsProductOutstockDetail); dbContext.Add(wmsProductOutstockDetail);
location.outstockFlag = "1"; location.outstockFlag = "1";
@ -769,21 +868,47 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 0, useFlag = 0,
qty = qty qty = qty
}; };
location.outstockFlag = "1"; MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
location.locationStatus = "6"; if (mesBaseBarcodeInfo != null)
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);
dbContext.SaveChanges();
CreateSuccess = true;
if (qty >= needNumber)
{ {
break; 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
};
dbContext.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);
dbContext.SaveChanges();
CreateSuccess = true;
if (qty >= needNumber)
{
break;
}
} }
} }
} }
@ -900,49 +1025,75 @@ namespace Khd.Core.Wcs.Wcs
qty = Convert.ToInt32(needNumber); qty = Convert.ToInt32(needNumber);
stock.updateDate = DateTime.Now; stock.updateDate = DateTime.Now;
} }
wcsTask = new WcsTask() MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
if (mesBaseBarcodeInfo != null)
{ {
objid = StaticData.SnowId.NextId(), wcsTask = new WcsTask()
orderId = item.rawOutstockId, {
taskType = endEquip.equipType == 12 ? 46 : 33,//如果是12那么就是原材料到柜体验收区,如果是13那么就是原材料到背板安装区 objid = StaticData.SnowId.NextId(),
containerNo = location.containerCode, orderId = item.rawOutstockId,
createBy = "WCS", taskType = endEquip.equipType == 12 ? 46 : 33,//如果是12那么就是原材料到柜体验收区,如果是13那么就是原材料到背板安装区
createTime = DateTime.Now, containerNo = location.containerCode,
taskStatus = 0, createBy = "WCS",
materialId = item.materialId, createTime = DateTime.Now,
currPointId = location.locationId, taskStatus = 0,
currPointNo = location.locationCode, materialId = item.materialId,
startPointId = location.locationId, currPointId = location.locationId,
startPointNo = location.locationCode, currPointNo = location.locationCode,
nextPointId = bearAgvEquip.objid, startPointId = location.locationId,
nextPointNo = bearAgvEquip.equipNo, startPointNo = location.locationCode,
endPointId = lineEquip.objid, nextPointId = bearAgvEquip.objid,
endPointNo = lineEquip.equipNo, nextPointNo = bearAgvEquip.equipNo,
equipmentNo = bearAgvEquip.equipNo, endPointId = lineEquip.objid,
useFlag = 1, endPointNo = lineEquip.equipNo,
qty = qty equipmentNo = bearAgvEquip.equipNo,
}; useFlag = 1,
location.outstockFlag = "1"; qty = qty
location.locationStatus = "6"; };
location.updateBy = "WCS"; WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
location.updateTime = DateTime.Now; {
endEquip.emptyCount = 1; rawOutstockDetailId = StaticData.SnowId.NextId(),
dbContext.Update(endEquip); rawOutstockId = item.rawOutstockId,
dbContext.Update(location); materialId = item.materialId,
dbContext.Add(wcsTask); createDate = DateTime.Now,
dbContext.Update(stock); createBy = "WCS",
dbContext.SaveChanges(); taskCode = wcsTask.objid.ToString(),
if (qty >= needNumber) executeStatus = "1",
{ locationCode = location.locationCode,
break; 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
};
dbContext.Add(wmsProductOutstockDetail);
location.outstockFlag = "1";
location.locationStatus = "6";
location.updateBy = "WCS";
location.updateTime = DateTime.Now;
endEquip.emptyCount = 1;
dbContext.Update(endEquip);
dbContext.Update(location);
dbContext.Add(wcsTask);
dbContext.Update(stock);
dbContext.SaveChanges();
if (qty >= needNumber)
{
break;
}
} }
if (item.beginTime == null)
{
item.beginTime = DateTime.Now;
}
dbContext.Update(item);
dbContext.SaveChanges();
} }
if (item.beginTime == null)
{
item.beginTime = DateTime.Now;
}
dbContext.Update(item);
dbContext.SaveChanges();
} }
} }
} }

@ -133,7 +133,8 @@ namespace Khd.Core.Wcs.Wcs
//正常托盘到位 //正常托盘到位
if (Convert.ToInt32(linesignal01Value) == 1) if (Convert.ToInt32(linesignal01Value) == 1)
{ {
//判断task表里没有该rfid的未完成的入库信息未下发去向 //判断task表里没有该rfid的未完成的入库
//信息,未下发去向
var task = dbContext.WcsTask.Where(t => t.containerNo == RFID001Value && t.taskStatus < 1).FirstOrDefault(); var task = dbContext.WcsTask.Where(t => t.containerNo == RFID001Value && t.taskStatus < 1).FirstOrDefault();
if (task == null) if (task == null)
{ {
@ -143,6 +144,7 @@ namespace Khd.Core.Wcs.Wcs
{ {
var lastTask = dbContext.WcsTaskLog.Where(t => t.containerNo == RFID001Value).OrderByDescending(t => t.createTime).FirstOrDefault(); var lastTask = dbContext.WcsTaskLog.Where(t => t.containerNo == RFID001Value).OrderByDescending(t => t.createTime).FirstOrDefault();
if (lastTask != null) if (lastTask != null)
{ {
if (lastTask.materialId == material.materialId && lastTask.ud3 != "10") if (lastTask.materialId == material.materialId && lastTask.ud3 != "10")
{ {
@ -290,151 +292,151 @@ namespace Khd.Core.Wcs.Wcs
{ {
try try
{ {
var automatic06Value = this._plc.Read(this.automatic.plcpointAddress);//提升机自动状态 //var automatic06Value = this._plc.Read(this.automatic.plcpointAddress);//提升机自动状态
if (automatic06Value != null && Convert.ToInt32(automatic06Value) == 1) //if (automatic06Value != null && Convert.ToInt32(automatic06Value) == 1)
{ //{
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var serialno06Value = this._plc.Read(this.serialno06.plcpointAddress); //提升机流水号 读 var serialno06Value = this._plc.Read(this.serialno06.plcpointAddress); //提升机流水号 读
var equipstate06Value = this._plc.Read(this.equipstate06.plcpointAddress); //提升机状态 读 var equipstate06Value = this._plc.Read(this.equipstate06.plcpointAddress); //提升机状态 读
var hoisterTrayIn06Value = this._plc.Read(this.hoistertrayin06.plcpointAddress); //提升机货物到位状态 读 var hoisterTrayIn06Value = this._plc.Read(this.hoistertrayin06.plcpointAddress); //提升机货物到位状态 读
var currentfloor06Value = this._plc.Read(this.currentfloor06.plcpointAddress); //提升机当前楼层 读 var currentfloor06Value = this._plc.Read(this.currentfloor06.plcpointAddress); //提升机当前楼层 读
var targetfloor06Value = this._plc.Read(this.targetfloor06.plcpointAddress); //提升机目的楼层 写 var targetfloor06Value = this._plc.Read(this.targetfloor06.plcpointAddress); //提升机目的楼层 写
var reserialno06 = this._plc.Read(this.reserialno06.plcpointAddress); //反馈流水号 var reserialno06 = this._plc.Read(this.reserialno06.plcpointAddress); //反馈流水号
var canwritewcsrun06value = this._plc.Read(this.canwritewcsrun06.plcpointAddress); var canwritewcsrun06value = this._plc.Read(this.canwritewcsrun06.plcpointAddress);
//正常读到plc值 //正常读到plc值
if (targetfloor06Value != null && canwritewcsrun06value != null && serialno06Value != null && equipstate06Value != null && currentfloor06Value != null && reserialno06 != null && hoisterTrayIn06Value != null) if (targetfloor06Value != null && canwritewcsrun06value != null && serialno06Value != null && equipstate06Value != null && currentfloor06Value != null && reserialno06 != null && hoisterTrayIn06Value != null)
{
//提升机空闲
if (Convert.ToInt32(equipstate06Value) == 0)
{ {
//提升机空闲 var wcsTasks = dbContext.WcsTask.Where(t => t.nextPointId == T01).OrderBy(t => t.createTime).ToList();
if (Convert.ToInt32(equipstate06Value) == 0) foreach (var wcsTask in wcsTasks)
{ {
var wcsTasks = dbContext.WcsTask.Where(t => t.nextPointId == T01).OrderBy(t => t.createTime).ToList(); if (wcsTasks.Where(t => t.taskStatus > 0).Where(t => t.objid != wcsTask.objid).Any())
foreach (var wcsTask in wcsTasks)
{ {
if (wcsTasks.Where(t => t.taskStatus > 0).Where(t => t.objid != wcsTask.objid).Any()) LogManager.Info("提升机线程:有其他任务正在执行,跳过当前任务");
continue;
}
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo);
if (wcsTask.taskStatus == 0 && Convert.ToInt32(hoisterTrayIn06Value) == 0)//创建状态,并且里面没有货物
{
if (lineEquip.equipStatus == 1)
{ {
LogManager.Info("提升机线程:有其他任务正在执行,跳过当前任务"); LogManager.Info("提升机线程:" + wcsTask.floorNo + "楼接驳位有AGV任务,跳过当前任务");
continue; continue;
} }
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo); BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
if (wcsTask.taskStatus == 0 && Convert.ToInt32(hoisterTrayIn06Value) == 0)//创建状态,并且里面没有货物 if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress))
{ {
if (lineEquip.equipStatus == 1) if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)
{ {
LogManager.Info("提升机线程:" + wcsTask.floorNo + "楼接驳位有AGV任务跳过当前任务"); //if (Convert.ToInt32(canwritewcsrun06value) == 0)
continue;
}
BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress))
{
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)
{ {
if (Convert.ToInt32(canwritewcsrun06value) == 0) wcsTask.taskStatus = 2;
{
wcsTask.taskStatus = 2;
wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行中";
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
this._plc.WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
dbContext.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
lineEquip.equipStatus = 1;
dbContext.Update(lineEquip);
dbContext.SaveChanges();
}
}
else
{
wcsTask.taskStatus = 1;
wcsTask.updateBy = "提升机线程"; wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now; wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行中"; wcsTask.remark = "提升机任务执行中";
this._plc.WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.fromFloorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层 BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
this._plc.WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString()); this._plc.WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
dbContext.Update(wcsTask); dbContext.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 1, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" }); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
lineEquip.equipStatus = 1; lineEquip.equipStatus = 1;
dbContext.Update(lineEquip); dbContext.Update(lineEquip);
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
} }
} else
if (wcsTask.taskStatus == 1 && Convert.ToInt32(reserialno06) == wcsTask.serialNo)
{
BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress))
{ {
if (Convert.ToInt32(canwritewcsrun06value) == 0) wcsTask.taskStatus = 1;
wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行中";
this._plc.WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.fromFloorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层
this._plc.WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
dbContext.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 1, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
lineEquip.equipStatus = 1;
dbContext.Update(lineEquip);
dbContext.SaveChanges();
}
}
}
if (wcsTask.taskStatus == 1 && Convert.ToInt32(reserialno06) == wcsTask.serialNo)
{
BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress))
{
//if (Convert.ToInt32(canwritewcsrun06value) == 0)
{
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)//提升机当前楼层为初始地楼层
{ {
if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)//提升机当前楼层为初始地楼层 wcsTask.taskStatus = 2;
{ wcsTask.updateBy = "提升机线程";
wcsTask.taskStatus = 2; wcsTask.updateTime = DateTime.Now;
wcsTask.updateBy = "提升机线程"; wcsTask.remark = "提升机任务执行中";
wcsTask.updateTime = DateTime.Now; BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
wcsTask.remark = "提升机任务执行中"; this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString());
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun")); this._plc.WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString());
this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "1", basePlcpoint.plcpointLength.ToString()); dbContext.Update(wcsTask);
this._plc.WriteToPoint(this.serialno06.plcpointAddress, wcsTask.serialNo.ToString(), this.serialno06.plcpointLength.ToString()); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
dbContext.Update(wcsTask); dbContext.SaveChanges();
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行中" });
dbContext.SaveChanges();
}
} }
} }
} }
if (wcsTask.taskStatus == 2 && Convert.ToInt32(reserialno06) == wcsTask.serialNo) }
if (wcsTask.taskStatus == 2 && Convert.ToInt32(reserialno06) == wcsTask.serialNo)
{
if (Convert.ToInt32(hoisterTrayIn06Value) == 1)//托盘已经进提升机
{ {
if (Convert.ToInt32(hoisterTrayIn06Value) == 1)//托盘已经进提升机 wcsTask.taskStatus = 3;
{
wcsTask.taskStatus = 3;
wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行完成";
this._plc.WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.floorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层
dbContext.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
dbContext.SaveChanges();
}
}
if (wcsTask.taskStatus == 3 && Convert.ToInt32(currentfloor06Value) == wcsTask.floorNo && Convert.ToInt32(reserialno06) == wcsTask.serialNo)//任务状态为3且当前楼层为任务的目的楼层
{
if (Convert.ToInt32(canwritewcsrun06value) == 0)
{
wcsTask.taskStatus = 4;
wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行完成";
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2表示提升机已到达目的地让货出去
dbContext.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
dbContext.SaveChanges();
}
}
else if (wcsTask.taskStatus == 4)
{
BaseEquip floorEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo);
wcsTask.nextPointId = floorEquip.objid;
wcsTask.nextPointNo = floorEquip.equipNo;
wcsTask.taskStatus = 5;
wcsTask.updateBy = "提升机线程"; wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now; wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行完成"; wcsTask.remark = "提升机任务执行完成";
lineEquip.equipStatus = 0; this._plc.WriteToPoint(this.targetfloor06.plcpointAddress, wcsTask.floorNo.ToString(), this.targetfloor06.plcpointLength.ToString());//目的地楼层
dbContext.Update(lineEquip);
dbContext.SaveChanges();
dbContext.Update(wcsTask); dbContext.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5, nextPointId = floorEquip.objid, nextPointNo = floorEquip.equipNo, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" }); dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
break;
} }
if (wcsTask.taskStatus == 3 && Convert.ToInt32(currentfloor06Value) == wcsTask.floorNo && Convert.ToInt32(reserialno06) == wcsTask.serialNo)//任务状态为3且当前楼层为任务的目的楼层
{
//if (Convert.ToInt32(canwritewcsrun06value) == 0)
{
wcsTask.taskStatus = 4;
wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行完成";
BasePlcpoint basePlcpoint = StaticData.BasePlcpointList.First(t => t.floorNo == wcsTask.fromFloorNo && t.plcpointNo.Contains("wcsrun"));
this._plc.WriteToPoint(basePlcpoint.plcpointAddress, "2", basePlcpoint.plcpointLength.ToString());//去向为2表示提升机已到达目的地让货出去
dbContext.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
dbContext.SaveChanges();
}
}
else if (wcsTask.taskStatus == 4)
{
BaseEquip floorEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo);
wcsTask.nextPointId = floorEquip.objid;
wcsTask.nextPointNo = floorEquip.equipNo;
wcsTask.taskStatus = 5;
wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行完成";
lineEquip.equipStatus = 0;
dbContext.Update(lineEquip);
dbContext.SaveChanges();
dbContext.Update(wcsTask);
dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5, nextPointId = floorEquip.objid, nextPointNo = floorEquip.equipNo, updateBy = "提升机线程", updateTime = DateTime.Now, remark = "提升机任务执行完成" });
dbContext.SaveChanges();
}
break;
} }
} }
} }
//}
} }
catch (Exception ex) catch (Exception ex)
{ {

@ -74,7 +74,7 @@ namespace Khd.Core.Wcs.Wcs
var taskList = dbContext.WcsTask var taskList = dbContext.WcsTask
.Where(t => t.useFlag == 1) .Where(t => t.useFlag == 1)
.Where(t => t.nextPointId == agvID).OrderBy(t => t.createTime).ToList(); .Where(t => t.nextPointId == agvID).OrderBy(t => t.createTime).ToList();
dbContext.ChangeTracker.Entries().ToList().ForEach (e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
if (taskList.Count == 0) if (taskList.Count == 0)
{ {
LogManager.Info(FloorNo + "楼AGV无任务"); LogManager.Info(FloorNo + "楼AGV无任务");
@ -124,7 +124,7 @@ namespace Khd.Core.Wcs.Wcs
type="00" type="00"
} }
}, },
taskTyp= baseDictionary.dicValue, taskTyp = baseDictionary.dicValue,
ctnrTyp = "2", ctnrTyp = "2",
}; };
string message = JsonConvert.SerializeObject(agvTask); string message = JsonConvert.SerializeObject(agvTask);
@ -312,7 +312,7 @@ namespace Khd.Core.Wcs.Wcs
type="00" type="00"
} }
}, },
taskTyp= baseDictionary.dicValue, taskTyp = baseDictionary.dicValue,
ctnrTyp = "2", ctnrTyp = "2",
}; };
string message = JsonConvert.SerializeObject(agvTask); string message = JsonConvert.SerializeObject(agvTask);
@ -428,8 +428,8 @@ namespace Khd.Core.Wcs.Wcs
type = "00" type = "00"
} }
}, },
taskTyp= baseDictionary.dicValue, taskTyp = baseDictionary.dicValue,
ctnrTyp="2" ctnrTyp = "2"
}; };
string message = JsonConvert.SerializeObject(agvTask); string message = JsonConvert.SerializeObject(agvTask);
@ -487,7 +487,7 @@ namespace Khd.Core.Wcs.Wcs
type="00" type="00"
} }
}, },
taskTyp= baseDictionary.dicValue, taskTyp = baseDictionary.dicValue,
ctnrTyp = "2", ctnrTyp = "2",
}; };
string message = JsonConvert.SerializeObject(agvTask); string message = JsonConvert.SerializeObject(agvTask);
@ -664,35 +664,43 @@ namespace Khd.Core.Wcs.Wcs
} }
else if (item.taskType == 38)//出库 else if (item.taskType == 38)//出库
{ {
var wmsProductOutstockDetail = dbContext.WmsProductOutstockDetail.FirstOrDefault(t => t.productOutstockId == item.orderId); var wmsProductOutstockDetails = dbContext.WmsProductOutstockDetail.Where(t => t.productOutstockId == item.orderId );
if(wmsProductOutstockDetail != null) var wmsProductOutstockDetail = wmsProductOutstockDetails.FirstOrDefault(t=> t.executeStatus == "1" && t.locationCode == item.currPointNo);
var wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == item.orderId);
if (wmsProductOutstockDetail != null && wmsProductOutstock != null)
{ {
wmsProductOutstockDetail.executeStatus = "2"; wmsProductOutstockDetail.executeStatus = "2";
dbContext.Update(wmsProductOutstockDetail); dbContext.Update(wmsProductOutstockDetail);
if (!wmsProductOutstockDetails.Any(t => t.executeStatus != "2"))
{
wmsProductOutstock.executeStatus = "2";
dbContext.Update(wmsProductOutstock);
}
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 5);
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation
.First(t => t.locationId == item.endPointId && t.warehouseFloor == 5);
wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.containerCode = "";
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS";
dbContext.Update(wmsBaseLocation);
dbContext.WmsProductStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete();
BaseEquip floorLineEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == 5);
item.nextPointId = floorLineEquip.objid;
item.nextPointNo = floorLineEquip.equipNo;
item.fromFloorNo = 5;
item.floorNo = 1;
item.taskStatus = 6;
lineEquip.equipStatus = 0;
dbContext.Update(lineEquip);
dbContext.Update(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6, nextPointId = floorLineEquip.objid, nextPointNo = floorLineEquip.equipNo, fromFloorNo = 5, floorNo = 1 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.SaveChanges();
} }
BaseEquip lineEquip = StaticData.BaseEquip.First(t=>t.objid==5);
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation
.First(t => t.locationId == item.endPointId && t.warehouseFloor == 5);
wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.containerCode = "";
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS";
dbContext.Update(wmsBaseLocation);
dbContext.WmsProductStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete();
BaseEquip floorLineEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == 5);
item.nextPointId = floorLineEquip.objid;
item.nextPointNo = floorLineEquip.equipNo;
item.fromFloorNo = 5;
item.floorNo = 1;
item.taskStatus = 6;
lineEquip.equipStatus = 0;
dbContext.Update(lineEquip);
dbContext.Update(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6, nextPointId = floorLineEquip.objid, nextPointNo = floorLineEquip.equipNo, fromFloorNo = 5, floorNo = 1 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.SaveChanges();
} }
else if (item.taskType == 33)//原材料到背板安装 else if (item.taskType == 33)//原材料到背板安装
{ {
@ -721,45 +729,52 @@ namespace Khd.Core.Wcs.Wcs
var mesBasePalletInfo = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == item.containerNo).FirstOrDefault(); var mesBasePalletInfo = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == item.containerNo).FirstOrDefault();
var wmsProductInstock = dbContext.WmsProductInstock var wmsProductInstock = dbContext.WmsProductInstock
.Where(t => t.palletInfoCode == item.containerNo) .Where(t => t.palletInfoCode == item.containerNo)
.Where(t => t.instockType == "2" && t.executeStatus == "1" && t.productType == "2" && t.warehouseFloor == 5) .Where(t => t.executeStatus == "1" && t.productType == "2" && t.warehouseFloor == 5)
.FirstOrDefault(); .FirstOrDefault();
if (mesBasePalletInfo != null && wmsProductInstock != null) if (mesBasePalletInfo != null && wmsProductInstock != null)
{ {
WmsProductStock wmsProductStock = new WmsProductStock() WmsProductInstockDetail? wmsProductInstockDetail = dbContext.WmsProductInstockDetail.Where(t => t.productInstockId == wmsProductInstock.productInstockId).FirstOrDefault();
if (wmsProductInstockDetail != null)
{ {
productId = wmsProductInstock.productId, WmsProductStock wmsProductStock = new WmsProductStock()
activeFlag = "1", {
updateBy = "WCS", productId = wmsProductInstock.productId,
updateDate = DateTime.Now, activeFlag = "1",
saleorderCode = wmsProductInstock.saleorderCode, updateBy = "WCS",
saleOrderId = wmsProductInstock.SaleOrderId, updateDate = DateTime.Now,
stockType = "2", saleorderCode = wmsProductInstock.saleorderCode,
productStockId = wmsProductInstock.productInstockId, saleOrderId = wmsProductInstock.SaleOrderId,
qualityStatus = "0", stockType = "2",
createBy = "WCS", productStockId = wmsProductInstock.productInstockId,
createDate = DateTime.Now, qualityStatus = "0",
locationCode = wmsBaseLocation.locationCode, createBy = "WCS",
warehouseFloor = 5, createDate = DateTime.Now,
totalAmount = 1, locationCode = wmsBaseLocation.locationCode,
instockDate = DateTime.Now, warehouseFloor = 5,
productBatch = mesBasePalletInfo.materialBarcode, totalAmount = 1,
palletInfoCode = mesBasePalletInfo.palletInfoCode, instockDate = DateTime.Now,
frozenAmount = 0, productBatch = mesBasePalletInfo.materialBarcode,
occupyAmount = 0, palletInfoCode = mesBasePalletInfo.palletInfoCode,
planCode = wmsProductInstock.planCode, frozenAmount = 0,
planDetailCode = wmsProductInstock.planDetailCode, occupyAmount = 0,
warehouseId = 512 planCode = wmsProductInstock.planCode,
}; planDetailCode = wmsProductInstock.planDetailCode,
BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.startPointId); warehouseId = 512
startEquip.emptyCount = 0; };
dbContext.Update(startEquip); BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.startPointId);
dbContext.Add(wmsProductStock); wmsProductInstockDetail.executeStatus = "2";
dbContext.Update(wmsBaseLocation); startEquip.emptyCount = 0;
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); dbContext.Update(wmsProductInstockDetail);
dbContext.WcsTask.Where(t => t.objid == item.objid).Delete(); dbContext.Update(startEquip);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); dbContext.Add(wmsProductStock);
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); dbContext.Update(wmsBaseLocation);
dbContext.SaveChanges(); dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.WcsTask.Where(t => t.objid == item.objid).Delete();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
dbContext.SaveChanges();
}
} }
} }
else if (item.taskType == 46)//该任务结束后立刻生成一个新的返库任务但是是否使用标志未0等待mes通知 else if (item.taskType == 46)//该任务结束后立刻生成一个新的返库任务但是是否使用标志未0等待mes通知
@ -773,7 +788,7 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation.updateTime = DateTime.Now; wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS"; wmsBaseLocation.updateBy = "WCS";
WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).FirstOrDefault(); WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).FirstOrDefault();
if(wmsRawStock != null) if (wmsRawStock != null)
{ {
wmsRawStock.completeFlag = "0"; wmsRawStock.completeFlag = "0";
wmsRawStock.updateDate = DateTime.Now; wmsRawStock.updateDate = DateTime.Now;

@ -572,22 +572,29 @@ namespace Khd.Core.Wcs.Wcs
{ {
if (item.taskType == 30)//出库任务 if (item.taskType == 30)//出库任务
{ {
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.taskCode == item.objid.ToString());
.First(t => t.locationId == item.startPointId && t.warehouseFloor == 5); if (wmsRawOutstockDetail != null)
wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.locationStatus = "2";
dbContext.Update(wmsBaseLocation);
dbContext.WmsRawOutstockDetail.Where(t => t.locationCode == wmsBaseLocation.locationCode).Update(t => new WmsRawOutstockDetail { executeStatus = "2" });
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 });
dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
dbContext.SaveChanges();
int wcsTaskCount = dbContext.WcsTask.Where(t => t.taskType == 30 && t.taskStatus != 6).Count();
if (wcsTaskCount == 0)
{ {
this._plc.WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString()); wmsRawOutstockDetail.executeStatus = "2";
wmsRawOutstockDetail.updateDate = DateTime.Now;
dbContext.Update(wmsRawOutstockDetail);
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation
.First(t => t.locationId == item.startPointId && t.warehouseFloor == 5);
wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.locationStatus = "2";
dbContext.Update(wmsBaseLocation);
dbContext.WmsRawOutstockDetail.Where(t => t.locationCode == wmsBaseLocation.locationCode).Update(t => new WmsRawOutstockDetail { executeStatus = "2" });
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 });
dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
dbContext.SaveChanges();
int wcsTaskCount = dbContext.WcsTask.Where(t => t.taskType == 30 && t.taskStatus != 6).Count();
if (wcsTaskCount == 0)
{
this._plc.WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString());
}
} }
} }
else if (item.taskType == 29)//入库任务 else if (item.taskType == 29)//入库任务

@ -130,7 +130,7 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位 wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位
//深浅库位问题?库位入库优先级等 //深浅库位问题?库位入库优先级等
var AgvEquip = StaticData.BaseEquip.First(t => t.floorNo == 5 && t.equipType == 5);//背负Agv var AgvEquip = StaticData.BaseEquip.First(t => t.floorNo == 5 && t.equipType == 5);//
if (wmsBaseLocations.Count > 0 && wmsBaseLocation != null) if (wmsBaseLocations.Count > 0 && wmsBaseLocation != null)
{ {
wcsTask.taskStatus = 0;//创建状态 wcsTask.taskStatus = 0;//创建状态
@ -145,12 +145,12 @@ namespace Khd.Core.Wcs.Wcs
if(wcsTask.fromFloorNo != 1) if(wcsTask.fromFloorNo != 1)
{ {
wcsTask.taskType = 47; wcsTask.taskType = 47;
wcsTask.useFlag = 1; wcsTask.useFlag = 0;
} }
else else
{ {
wcsTask.taskType = 47;//?28? wcsTask.taskType = 47;//?28?
wcsTask.useFlag = 0; wcsTask.useFlag = 1;
} }
wmsBaseLocation.instockFlag = "1"; wmsBaseLocation.instockFlag = "1";

@ -144,8 +144,6 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation ??= outBill.FirstOrDefault()?.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(t => t.locDeep == 2);//找不到再找深库位
wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位 wmsBaseLocation ??= wmsBaseLocations.Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();//找不到再找任意库位
//深浅库位问题?库位入库优先级等
if (wmsBaseLocations.Count > 0 && wmsBaseLocation != null) if (wmsBaseLocations.Count > 0 && wmsBaseLocation != null)
{ {

@ -6,14 +6,14 @@
//"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" //"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
}, },
"PlcConfigs": [ "PlcConfigs": [
//{ {
// "IP": "192.168.2.30", "IP": "192.168.2.30",
// "Port": 102, //102 "Port": 102, //102
// "CpuType": 40, "CpuType": 40,
// "Rack": 0, "Rack": 0,
// "Slot": 1, "Slot": 1,
// "Code": 0 "Code": 0
//}, },
{ {
"IP": "192.168.2.31", "IP": "192.168.2.31",
"Port": 102, //102 "Port": 102, //102
@ -22,14 +22,14 @@
"Slot": 1, "Slot": 1,
"Code": 1 "Code": 1
}, },
//{ {
// "IP": "192.168.2.220", "IP": "192.168.2.220",
// "Port": 102, //102 "Port": 102, //102
// "CpuType": 40, "CpuType": 40,
// "Rack": 0, "Rack": 0,
// "Slot": 1, "Slot": 1,
// "Code": 2 "Code": 2
//} }
], ],
"PLCSetting": { "PLCSetting": {
"Mode": "0", "Mode": "0",

Loading…
Cancel
Save