diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs index 4e99946..ca0fe82 100644 --- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs +++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs @@ -1324,8 +1324,12 @@ namespace Khd.Core.Wcs.Wcs if (wcsTaskManual != null) { - var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == wcsTaskManual.orderId); + var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == wcsTaskManual.orderId); + if (!string.IsNullOrEmpty(wcsTaskManual.startPointNo)) //手动投料没有申请单 + { + wmsRawOutstock = null; + } var wmsRawStocks = dbContext.WmsRawStock .WhereIf(wmsRawOutstock != null, t => t.saleOrderId == (wmsRawOutstock.saleOrderId == null ? 0 : wmsRawOutstock.saleOrderId)) .WhereIf(wmsRawOutstock != null, t => t.materialId == wmsRawOutstock.materialId) @@ -1345,8 +1349,12 @@ namespace Khd.Core.Wcs.Wcs .Where(t => wmsRawStockLocations.Contains(t.locationCode)) .WhereIf(!string.IsNullOrEmpty(wcsTaskManual.startPointNo), t => t.locationCode == wcsTaskManual.startPointNo) .ToList(); + + //手动模式 if (!string.IsNullOrEmpty(wcsTaskManual.startPointNo)) { + wmsBaseLocations = dbContext.WmsBaseLocation.Where(x => x.locationCode == wcsTaskManual.startPointNo).ToList(); + var wmsRawPreferredOut = dbContext.WmsRawPreferredOut.Where(t => t.LocationCode == wcsTaskManual.startPointNo).FirstOrDefault(); if (wmsRawPreferredOut != null) { @@ -1371,13 +1379,7 @@ namespace Khd.Core.Wcs.Wcs } } bill = bill.OrderBy(t => list.Contains(t.a.locationCode) ? 0 : 1).OrderBy(t => t.b.instockDate.Value.Date);//按某个时间段 - //#region 如果有需要优先投料的库位,则该库位优先投料 - //List PreferredOutsLocation = dbContext.WmsRawPreferredOut.Where(x => x.WarehouseId == 311).ToList().Select(x => x.LocationCode).ToList(); - //if (PreferredOutsLocation != null && PreferredOutsLocation.Count > 0) - //{ - // bill.OrderBy(t => PreferredOutsLocation.Contains(t.a.locationCode) ? 0 : 1); - //} - //#endregion + //#endregion foreach (var item in bill) { @@ -1527,6 +1529,29 @@ namespace Khd.Core.Wcs.Wcs MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == mesBasePalletInfo.materialBarcode); if (mesBaseBarcodeInfo != null) { + + if (wmsRawOutstock == null) + { + wmsRawOutstock = new WmsRawOutstock(); + + wmsRawOutstock.rawOutstockId = StaticData.SnowId.NextId(); + wmsRawOutstock.taskCode = StaticData.SnowId.NextId().ToString(); + wmsRawOutstock.warehouseId = 311; + wmsRawOutstock.locationCode = wmsBaseLocation.locationCode; + wmsRawOutstock.materialId = mesBaseBarcodeInfo.materialId; + wmsRawOutstock.materialBatch = mesBaseBarcodeInfo.barcodeInfo; + wmsRawOutstock.palletInfoCode = wmsBaseLocation.containerCode; + wmsRawOutstock.outstockAmount = 1; + wmsRawOutstock.realOutstockAmount = 0; + wmsRawOutstock.operationType = "1"; + wmsRawOutstock.taskType = "1"; + wmsRawOutstock.auditStatus = "1"; + wmsRawOutstock.executeStatus = "0"; + wmsRawOutstock.applyBy = "WCS"; + wmsRawOutstock.auditDate = DateTime.Now; + wmsRawOutstock.saleOrderId = mesBaseBarcodeInfo != null ? mesBaseBarcodeInfo.saleOrderId : 0; + dbContext.Add(wmsRawOutstock); + } //if (wmsRawOutstock != null) //{ // WmsRawOutstockDetail wmsRawOutstockDetail = new WmsRawOutstockDetail() @@ -1574,6 +1599,7 @@ namespace Khd.Core.Wcs.Wcs useFlag = 1, qty = 1 }; + SystemData.LockOutLocation(wmsBaseLocation, dbContext); wmsBaseLocation.locationStatus = "6"; dbContext.Update(wmsBaseLocation); diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs index 420cab8..55d75e8 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs @@ -72,10 +72,7 @@ namespace Khd.Core.Wcs.Wcs .FirstOrDefault(t => t.containerNo == rfid && t.nextPointId == baseEquip.objid); if (wcsTask != null) { - if (wcsTask.taskType == 99) - { - continue; - } + if (StaticData.BigContainerCodes.Contains(rfid)) { if (rfid == lastRFID) diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs index 9e6ca83..5d46a93 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs @@ -645,7 +645,7 @@ namespace Khd.Core.Wcs.Wcs { var agvGetPoint = StaticData.BasePlcpointList.First(t => t.id == 53); var agvGetValue = StaticData.PlcDic[2].Read(agvGetPoint.plcpointAddress);//小包出口的到位 - if (agvGetValue != null && agvGetValue.ToString() == "1") + if (agvGetValue != null && (bool)agvGetValue==true) { var agvTask = new RequestAGVTaskDto { diff --git a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs index 6fcc7c3..d816dde 100644 --- a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs +++ b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs @@ -343,6 +343,16 @@ namespace Khd.Core.Wcs.Wcs try { dbContext.ChangeTracker.Clear(); + + #region 人工任务完成自动删除 + WcsTask? wcsTask = dbContext.WcsTask.FirstOrDefault(t => t.taskType == 99 && t.taskStatus == 5); + if (wcsTask!=null) + { //人工任务已经完成,自动删除 + dbContext.Remove(wcsTask); + dbContext.SaveChanges(); + } + #endregion + List wcsTasks = dbContext.WcsTask.Where(t => t.IsDelete == 1).ToList(); foreach (var item in wcsTasks) { @@ -424,6 +434,7 @@ namespace Khd.Core.Wcs.Wcs } } + /// /// 定时发送心跳包 /// diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs index 654eeb2..84edf7b 100644 --- a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs @@ -250,11 +250,11 @@ namespace Khd.Core.Wcs.Wcs var callMaterial = StaticData.PlcDic[2].Read(basePlcpoint.plcpointAddress); if (callMaterial != null && Convert.ToBoolean(callMaterial)) { - WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.rawOutstockId == item.orderId && t.executeStatus == "0"); - if (wmsRawOutstockDetail != null) + WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == item.orderId && t.executeStatus == "0"); + if (wmsRawOutstock != null) { - wmsRawOutstockDetail.executeStatus = "1"; - wmsRawOutstockDetail.outstockTime = DateTime.Now; + wmsRawOutstock.executeStatus = "1"; + wmsRawOutstock.updateDate = DateTime.Now; BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 31); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); @@ -286,7 +286,7 @@ namespace Khd.Core.Wcs.Wcs Console.WriteLine(DateTime.Now + ":三楼AGV线程下发任务" + item.currPointNo + "," + item.endPointNo); item.taskCode = reponseMessage.data; item.taskStatus = 1; - dbContext.Update(wmsRawOutstockDetail); + dbContext.Update(wmsRawOutstock); dbContext.Update(item); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 }); dbContext.SaveChanges(); @@ -841,23 +841,23 @@ namespace Khd.Core.Wcs.Wcs } } - else - { - wmsRawOutstock = new WmsRawOutstock() - { - rawOutstockId = StaticData.SnowId.NextId(), - warehouseId = 311, - taskCode = "", - outstockAmount = 1, - realOutstockAmount = 1, - operationType = "3", - taskType = "1", - auditStatus = "0", - executeStatus = "2", - saleOrderId = mesBaseBarcodeInfo != null ? mesBaseBarcodeInfo.saleOrderId : 0, - }; + //else + //{ + // wmsRawOutstock = new WmsRawOutstock() + // { + // rawOutstockId = StaticData.SnowId.NextId(), + // warehouseId = 311, + // taskCode = "", + // outstockAmount = 1, + // realOutstockAmount = 1, + // operationType = "3", + // taskType = "1", + // auditStatus = "0", + // executeStatus = "2", + // saleOrderId = mesBaseBarcodeInfo != null ? mesBaseBarcodeInfo.saleOrderId : 0, + // }; - } + //} newWmsRawOutstockDetail.rawOutstockId = wmsRawOutstock.rawOutstockId; newWmsRawOutstockDetail.taskCode = wmsRawOutstock.taskCode; newWmsRawOutstockDetail.warehouseId = wmsRawOutstock.warehouseId; diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs index 013a924..5f63d03 100644 --- a/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorPoint.cs @@ -71,6 +71,7 @@ namespace Khd.Core.Wcs.Wcs var AgvEquip = StaticData.BaseEquip.First(t => t.floorNo == 3 && t.equipType == 4);//背负Agv if (wcsTask != null)//如果不是null { + if (wcsTask.taskStatus == 5)//提升机任务是完成状态 { lock (SystemData.ThirdTaskLock)