From 07285c2746c90fe6d512cc23652d838801fb10ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83?= <15095123350@163.com> Date: Sat, 6 Jul 2024 14:12:49 +0800 Subject: [PATCH] 20240706 --- .../Models/WmsProductInstockDetail.cs | 6 +- .../Properties/launchSettings.json | 8 + src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs | 345 +++++++++++++----- src/Khd.Core.Wcs/Wcs/FirstFloor.cs | 222 +++++------ src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs | 151 ++++---- src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs | 37 +- src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs | 6 +- src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs | 2 - src/Khd.Core.Wcs/appsettings.json | 32 +- 9 files changed, 495 insertions(+), 314 deletions(-) create mode 100644 src/Khd.Core.Thrift.Client/Properties/launchSettings.json 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",