diff --git a/src/Khd.Core.Domain/Models/WmsProductInstockDetail.cs b/src/Khd.Core.Domain/Models/WmsProductInstockDetail.cs
index 298e15c..84f12c7 100644
--- a/src/Khd.Core.Domain/Models/WmsProductInstockDetail.cs
+++ b/src/Khd.Core.Domain/Models/WmsProductInstockDetail.cs
@@ -20,13 +20,13 @@ namespace Khd.Core.Domain.Models
[Key]
[Column("product_instock_detail_id")]
- public long productInstockDetailId { get; set; }
+ public long? productInstockDetailId { get; set; }
///
/// 成品入库记录ID
///
[Column("product_instock_id")]
- public long productInstockId { get; set; }
+ public long? productInstockId { get; set; }
///
/// 库位编码
@@ -38,7 +38,7 @@ namespace Khd.Core.Domain.Models
/// 成品ID
///
[Column("product_id")]
- public long productId { get; set; }
+ public long? productId { get; set; }
///
/// 成品条码
diff --git a/src/Khd.Core.Thrift.Client/Properties/launchSettings.json b/src/Khd.Core.Thrift.Client/Properties/launchSettings.json
new file mode 100644
index 0000000..33504c9
--- /dev/null
+++ b/src/Khd.Core.Thrift.Client/Properties/launchSettings.json
@@ -0,0 +1,8 @@
+{
+ "profiles": {
+ "WSL": {
+ "commandName": "WSL2",
+ "distributionName": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
index acc46fd..93875a5 100644
--- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
+++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
@@ -68,8 +68,11 @@ namespace Khd.Core.Wcs.Wcs
//var createRawInWareTaskThread = new Thread(CreateRawInWareTaskLogic);
//createRawInWareTaskThread.Start();
- //var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic);
- //createFiveProductTaskThread.Start();
+ var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic);
+ createFiveProductInTaskThread.Start();
+
+ var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic);
+ createFiveProductTaskThread.Start();
var createRawTaskThread = new Thread(CreateRawTaskLogic);
createRawTaskThread.Start();
@@ -81,6 +84,97 @@ namespace Khd.Core.Wcs.Wcs
LogManager.Info("出库任务监听启动成功");
}
+ private void CreateFiveProductInTaskLogic(object? obj)
+ {
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ 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(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);
+ }
+ }
+
///
/// 创建去翻转机的任务
///
@@ -420,51 +514,52 @@ namespace Khd.Core.Wcs.Wcs
qty = Convert.ToInt32(needNumber);
stock.updateDate = DateTime.Now;
}
- wcsTask = new WcsTask()
+ MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode);
+ if (mesBasePalletInfo != null)
{
- objid = StaticData.SnowId.NextId(),
- 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()
+ WmsProductOutstockDetail detail = new()
{
- productOutstockDetailId = StaticData.SnowId.NextId(),
- productOutstockId = item.productOutstockId,
productId = item.productId,
- beginTime = DateTime.Now,
- confirmAmount = 0,
- executeStatus = "1",
+ productOutstockId = item.productOutstockId,
locationCode = location.locationCode,
- outstockAmount = qty,
- planAmount = item.applyQty,
+ executeStatus = "1",
+ beginTime = DateTime.Now,
warehouseId = item.warehouseId,
- productBatch = mesBaseBarcodeInfo.batchCode,
- productBarcode = mesBaseBarcodeInfo.barcodeInfo
+ erpAmount = 0,
+ 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.Add(wcsTask);
dbContext.Update(stock);
@@ -475,7 +570,6 @@ namespace Khd.Core.Wcs.Wcs
}
}
}
-
if (item.beginTime == null)
{
item.beginTime = DateTime.Now;
@@ -648,7 +742,12 @@ namespace Khd.Core.Wcs.Wcs
planAmount = item.outstockAmount,
warehouseId = item.warehouseId,
materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
- instockBatch = mesBaseBarcodeInfo.batchCode
+ instockBatch = mesBaseBarcodeInfo.batchCode,
+ stackAmount = qty,
+ outstockPerson = "WCS",
+ outstockTime = DateTime.Now,
+ outstockWay = "2",
+ materialProductionDate = mesBaseBarcodeInfo.productionDate
};
dbContext.Add(wmsProductOutstockDetail);
location.outstockFlag = "1";
@@ -769,21 +868,47 @@ namespace Khd.Core.Wcs.Wcs
useFlag = 0,
qty = qty
};
- 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)
+ MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
+ if (mesBaseBarcodeInfo != null)
{
- 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);
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(),
- orderId = item.rawOutstockId,
- taskType = endEquip.equipType == 12 ? 46 : 33,//如果是12那么就是原材料到柜体验收区,如果是13那么就是原材料到背板安装区
- containerNo = location.containerCode,
- createBy = "WCS",
- createTime = DateTime.Now,
- taskStatus = 0,
- materialId = item.materialId,
- currPointId = location.locationId,
- currPointNo = location.locationCode,
- startPointId = location.locationId,
- startPointNo = location.locationCode,
- nextPointId = bearAgvEquip.objid,
- nextPointNo = bearAgvEquip.equipNo,
- endPointId = lineEquip.objid,
- endPointNo = lineEquip.equipNo,
- equipmentNo = bearAgvEquip.equipNo,
- useFlag = 1,
- qty = qty
- };
- 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;
+ wcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = item.rawOutstockId,
+ taskType = endEquip.equipType == 12 ? 46 : 33,//如果是12那么就是原材料到柜体验收区,如果是13那么就是原材料到背板安装区
+ containerNo = location.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ taskStatus = 0,
+ materialId = item.materialId,
+ currPointId = location.locationId,
+ currPointNo = location.locationCode,
+ startPointId = location.locationId,
+ startPointNo = location.locationCode,
+ nextPointId = bearAgvEquip.objid,
+ nextPointNo = bearAgvEquip.equipNo,
+ endPointId = lineEquip.objid,
+ endPointNo = lineEquip.equipNo,
+ equipmentNo = bearAgvEquip.equipNo,
+ useFlag = 1,
+ qty = qty
+ };
+ 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;
+ 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();
}
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
index eb11591..cd6a304 100644
--- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
+++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
@@ -133,7 +133,8 @@ namespace Khd.Core.Wcs.Wcs
//正常托盘到位
if (Convert.ToInt32(linesignal01Value) == 1)
{
- //判断task表里没有该rfid的未完成的入库信息,未下发去向
+ //判断task表里没有该rfid的未完成的入库
+ //信息,未下发去向
var task = dbContext.WcsTask.Where(t => t.containerNo == RFID001Value && t.taskStatus < 1).FirstOrDefault();
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();
if (lastTask != null)
+
{
if (lastTask.materialId == material.materialId && lastTask.ud3 != "10")
{
@@ -290,151 +292,151 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
- var automatic06Value = this._plc.Read(this.automatic.plcpointAddress);//提升机自动状态
- if (automatic06Value != null && Convert.ToInt32(automatic06Value) == 1)
- {
- using var scope = _host.Services.CreateScope();
- using var dbContext = scope.ServiceProvider.GetRequiredService();
- var serialno06Value = this._plc.Read(this.serialno06.plcpointAddress); //提升机流水号 读
- var equipstate06Value = this._plc.Read(this.equipstate06.plcpointAddress); //提升机状态 读
- var hoisterTrayIn06Value = this._plc.Read(this.hoistertrayin06.plcpointAddress); //提升机货物到位状态 读
- var currentfloor06Value = this._plc.Read(this.currentfloor06.plcpointAddress); //提升机当前楼层 读
- var targetfloor06Value = this._plc.Read(this.targetfloor06.plcpointAddress); //提升机目的楼层 写
- var reserialno06 = this._plc.Read(this.reserialno06.plcpointAddress); //反馈流水号
- var canwritewcsrun06value = this._plc.Read(this.canwritewcsrun06.plcpointAddress);
+ //var automatic06Value = this._plc.Read(this.automatic.plcpointAddress);//提升机自动状态
+ //if (automatic06Value != null && Convert.ToInt32(automatic06Value) == 1)
+ //{
+ using var scope = _host.Services.CreateScope();
+ using var dbContext = scope.ServiceProvider.GetRequiredService();
+ var serialno06Value = this._plc.Read(this.serialno06.plcpointAddress); //提升机流水号 读
+ var equipstate06Value = this._plc.Read(this.equipstate06.plcpointAddress); //提升机状态 读
+ var hoisterTrayIn06Value = this._plc.Read(this.hoistertrayin06.plcpointAddress); //提升机货物到位状态 读
+ var currentfloor06Value = this._plc.Read(this.currentfloor06.plcpointAddress); //提升机当前楼层 读
+ var targetfloor06Value = this._plc.Read(this.targetfloor06.plcpointAddress); //提升机目的楼层 写
+ var reserialno06 = this._plc.Read(this.reserialno06.plcpointAddress); //反馈流水号
+ var canwritewcsrun06value = this._plc.Read(this.canwritewcsrun06.plcpointAddress);
- //正常读到plc值
- if (targetfloor06Value != null && canwritewcsrun06value != null && serialno06Value != null && equipstate06Value != null && currentfloor06Value != null && reserialno06 != null && hoisterTrayIn06Value != null)
+ //正常读到plc值
+ if (targetfloor06Value != null && canwritewcsrun06value != null && serialno06Value != null && equipstate06Value != null && currentfloor06Value != null && reserialno06 != null && hoisterTrayIn06Value != null)
+ {
+ //提升机空闲
+ if (Convert.ToInt32(equipstate06Value) == 0)
{
- //提升机空闲
- if (Convert.ToInt32(equipstate06Value) == 0)
+ var wcsTasks = dbContext.WcsTask.Where(t => t.nextPointId == T01).OrderBy(t => t.createTime).ToList();
+ foreach (var wcsTask in wcsTasks)
{
- var wcsTasks = dbContext.WcsTask.Where(t => t.nextPointId == T01).OrderBy(t => t.createTime).ToList();
- foreach (var wcsTask in wcsTasks)
+ if (wcsTasks.Where(t => t.taskStatus > 0).Where(t => t.objid != wcsTask.objid).Any())
{
- 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;
}
- BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo);
- if (wcsTask.taskStatus == 0 && Convert.ToInt32(hoisterTrayIn06Value) == 0)//创建状态,并且里面没有货物
+ BasePlcpoint floorPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == "RFID00" + wcsTask.fromFloorNo);
+ if (wcsTask.containerNo == this._plc.ReadRFID(floorPoint.plcpointAddress))
{
- if (lineEquip.equipStatus == 1)
+ if (Convert.ToInt32(currentfloor06Value) == wcsTask.fromFloorNo)
{
- LogManager.Info("提升机线程:" + wcsTask.floorNo + "楼接驳位有AGV任务,跳过当前任务");
- 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)
{
- if (Convert.ToInt32(canwritewcsrun06value) == 0)
- {
- 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.taskStatus = 2;
wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now;
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());
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;
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))
+ else
{
- 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.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 = "提升机任务执行中" });
- dbContext.SaveChanges();
- }
+ 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 = "提升机任务执行中" });
+ 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.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.taskStatus = 3;
wcsTask.updateBy = "提升机线程";
wcsTask.updateTime = DateTime.Now;
wcsTask.remark = "提升机任务执行完成";
- lineEquip.equipStatus = 0;
- dbContext.Update(lineEquip);
- dbContext.SaveChanges();
+ 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 = 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();
}
- 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)
{
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
index 098de22..cefcc86 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
@@ -74,7 +74,7 @@ namespace Khd.Core.Wcs.Wcs
var taskList = dbContext.WcsTask
.Where(t => t.useFlag == 1)
.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)
{
LogManager.Info(FloorNo + "楼AGV无任务");
@@ -124,7 +124,7 @@ namespace Khd.Core.Wcs.Wcs
type="00"
}
},
- taskTyp= baseDictionary.dicValue,
+ taskTyp = baseDictionary.dicValue,
ctnrTyp = "2",
};
string message = JsonConvert.SerializeObject(agvTask);
@@ -312,7 +312,7 @@ namespace Khd.Core.Wcs.Wcs
type="00"
}
},
- taskTyp= baseDictionary.dicValue,
+ taskTyp = baseDictionary.dicValue,
ctnrTyp = "2",
};
string message = JsonConvert.SerializeObject(agvTask);
@@ -428,8 +428,8 @@ namespace Khd.Core.Wcs.Wcs
type = "00"
}
},
- taskTyp= baseDictionary.dicValue,
- ctnrTyp="2"
+ taskTyp = baseDictionary.dicValue,
+ ctnrTyp = "2"
};
string message = JsonConvert.SerializeObject(agvTask);
@@ -487,7 +487,7 @@ namespace Khd.Core.Wcs.Wcs
type="00"
}
},
- taskTyp= baseDictionary.dicValue,
+ taskTyp = baseDictionary.dicValue,
ctnrTyp = "2",
};
string message = JsonConvert.SerializeObject(agvTask);
@@ -664,35 +664,43 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 38)//出库
{
- var wmsProductOutstockDetail = dbContext.WmsProductOutstockDetail.FirstOrDefault(t => t.productOutstockId == item.orderId);
- if(wmsProductOutstockDetail != null)
+ var wmsProductOutstockDetails = dbContext.WmsProductOutstockDetail.Where(t => t.productOutstockId == item.orderId );
+ 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";
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)//原材料到背板安装
{
@@ -721,45 +729,52 @@ namespace Khd.Core.Wcs.Wcs
var mesBasePalletInfo = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == item.containerNo).FirstOrDefault();
var wmsProductInstock = dbContext.WmsProductInstock
.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();
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,
- activeFlag = "1",
- updateBy = "WCS",
- updateDate = DateTime.Now,
- saleorderCode = wmsProductInstock.saleorderCode,
- saleOrderId = wmsProductInstock.SaleOrderId,
- stockType = "2",
- productStockId = wmsProductInstock.productInstockId,
- qualityStatus = "0",
- createBy = "WCS",
- createDate = DateTime.Now,
- locationCode = wmsBaseLocation.locationCode,
- warehouseFloor = 5,
- totalAmount = 1,
- instockDate = DateTime.Now,
- productBatch = mesBasePalletInfo.materialBarcode,
- palletInfoCode = mesBasePalletInfo.palletInfoCode,
- frozenAmount = 0,
- occupyAmount = 0,
- planCode = wmsProductInstock.planCode,
- planDetailCode = wmsProductInstock.planDetailCode,
- warehouseId = 512
- };
- BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.startPointId);
- startEquip.emptyCount = 0;
- dbContext.Update(startEquip);
- dbContext.Add(wmsProductStock);
- dbContext.Update(wmsBaseLocation);
- 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();
+ WmsProductStock wmsProductStock = new WmsProductStock()
+ {
+ productId = wmsProductInstock.productId,
+ activeFlag = "1",
+ updateBy = "WCS",
+ updateDate = DateTime.Now,
+ saleorderCode = wmsProductInstock.saleorderCode,
+ saleOrderId = wmsProductInstock.SaleOrderId,
+ stockType = "2",
+ productStockId = wmsProductInstock.productInstockId,
+ qualityStatus = "0",
+ createBy = "WCS",
+ createDate = DateTime.Now,
+ locationCode = wmsBaseLocation.locationCode,
+ warehouseFloor = 5,
+ totalAmount = 1,
+ instockDate = DateTime.Now,
+ productBatch = mesBasePalletInfo.materialBarcode,
+ palletInfoCode = mesBasePalletInfo.palletInfoCode,
+ frozenAmount = 0,
+ occupyAmount = 0,
+ planCode = wmsProductInstock.planCode,
+ planDetailCode = wmsProductInstock.planDetailCode,
+ warehouseId = 512
+ };
+ BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.startPointId);
+ wmsProductInstockDetail.executeStatus = "2";
+ startEquip.emptyCount = 0;
+ dbContext.Update(wmsProductInstockDetail);
+ dbContext.Update(startEquip);
+ dbContext.Add(wmsProductStock);
+ dbContext.Update(wmsBaseLocation);
+ 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通知
@@ -773,7 +788,7 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS";
WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).FirstOrDefault();
- if(wmsRawStock != null)
+ if (wmsRawStock != null)
{
wmsRawStock.completeFlag = "0";
wmsRawStock.updateDate = DateTime.Now;
@@ -799,7 +814,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
}
-
+
}
else if (item.taskType == 28)//柜体拆分到原材料
{
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
index 07a973c..8e8d86f 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
@@ -572,22 +572,29 @@ namespace Khd.Core.Wcs.Wcs
{
if (item.taskType == 30)//出库任务
{
- 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)
+ WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.taskCode == item.objid.ToString());
+ if (wmsRawOutstockDetail != null)
{
- 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)//入库任务
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
index 9993765..5bc7dfa 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
@@ -130,7 +130,7 @@ namespace Khd.Core.Wcs.Wcs
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)
{
wcsTask.taskStatus = 0;//创建状态
@@ -145,12 +145,12 @@ namespace Khd.Core.Wcs.Wcs
if(wcsTask.fromFloorNo != 1)
{
wcsTask.taskType = 47;
- wcsTask.useFlag = 1;
+ wcsTask.useFlag = 0;
}
else
{
wcsTask.taskType = 47;//?28?
- wcsTask.useFlag = 0;
+ wcsTask.useFlag = 1;
}
wmsBaseLocation.instockFlag = "1";
diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs
index eef3a92..2b57883 100644
--- a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs
@@ -144,8 +144,6 @@ namespace Khd.Core.Wcs.Wcs
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 (wmsBaseLocations.Count > 0 && wmsBaseLocation != null)
{
diff --git a/src/Khd.Core.Wcs/appsettings.json b/src/Khd.Core.Wcs/appsettings.json
index c273bc0..1b7381e 100644
--- a/src/Khd.Core.Wcs/appsettings.json
+++ b/src/Khd.Core.Wcs/appsettings.json
@@ -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"
},
"PlcConfigs": [
- //{
- // "IP": "192.168.2.30",
- // "Port": 102, //102是默认端口
- // "CpuType": 40,
- // "Rack": 0,
- // "Slot": 1,
- // "Code": 0
- //},
+ {
+ "IP": "192.168.2.30",
+ "Port": 102, //102是默认端口
+ "CpuType": 40,
+ "Rack": 0,
+ "Slot": 1,
+ "Code": 0
+ },
{
"IP": "192.168.2.31",
"Port": 102, //102是默认端口
@@ -22,14 +22,14 @@
"Slot": 1,
"Code": 1
},
- //{
- // "IP": "192.168.2.220",
- // "Port": 102, //102是默认端口
- // "CpuType": 40,
- // "Rack": 0,
- // "Slot": 1,
- // "Code": 2
- //}
+ {
+ "IP": "192.168.2.220",
+ "Port": 102, //102是默认端口
+ "CpuType": 40,
+ "Rack": 0,
+ "Slot": 1,
+ "Code": 2
+ }
],
"PLCSetting": {
"Mode": "0",