From 2f62066c049b8bc6c88ed3a482526050aab8775f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83?= <15095123350@163.com> Date: Mon, 22 Jul 2024 08:52:06 +0800 Subject: [PATCH] 20240722 --- src/Khd.Core.Plc/StaticPlcHelper.cs | 12 +- src/Khd.Core.Wcs/MainCentralControl.cs | 56 +- src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs | 567 +++++++----------- src/Khd.Core.Wcs/Wcs/FirstFloor.cs | 14 +- src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs | 33 +- src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs | 19 +- src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs | 2 +- src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs | 3 +- src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs | 4 +- src/Khd.Core.Wcs/Wcs/SystemTimer.cs | 16 +- src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs | 3 +- .../TaskForm/SelectOutRawForm.xaml.cs | 1 + src/Khd.Core.Wpf/appsettings.json | 16 +- 13 files changed, 318 insertions(+), 428 deletions(-) diff --git a/src/Khd.Core.Plc/StaticPlcHelper.cs b/src/Khd.Core.Plc/StaticPlcHelper.cs index 1397482..98f67df 100644 --- a/src/Khd.Core.Plc/StaticPlcHelper.cs +++ b/src/Khd.Core.Plc/StaticPlcHelper.cs @@ -14,7 +14,7 @@ namespace Khd.Core.Plc /// 写入地址 /// 值 /// 长度 - public static void WriteToPoint(this Plc.S7.Plc plc, string address, string? valueString, string? len) + public static void WriteToPoint(this Plc.S7.Plc plc, string address, object? valueString, string? len) { if (len == null) { @@ -24,8 +24,7 @@ namespace Khd.Core.Plc { throw new ArgumentException("StaticPlcHelper Ex valueString is null"); } - var value = GetValue(len, valueString); - plc.Write(address, value); + plc.Write(address, GetValue(len, valueString)); } /// @@ -51,14 +50,13 @@ namespace Khd.Core.Plc { return res[res.IndexOf('J')..]; } - else if(res.Contains("C")) + else if(res.Contains('C')) { return res[res.IndexOf('C')..]; }else { return ""; } - } @@ -68,7 +66,7 @@ namespace Khd.Core.Plc /// 点位地址位长度 /// 写入数值 /// - public static object GetValue(string? len, string? value) + public static object GetValue(string? len, object value) { if (len == "2") { @@ -90,7 +88,7 @@ namespace Khd.Core.Plc { return Convert.ToBoolean(value); } - return 0; + throw new ArgumentException("StaticPlcHelper Ex len is not support"); } } } diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs index 6efadfb..3114634 100644 --- a/src/Khd.Core.Wcs/MainCentralControl.cs +++ b/src/Khd.Core.Wcs/MainCentralControl.cs @@ -1,4 +1,5 @@ -using Khd.Core.EntityFramework; +using Khd.Core.Domain.Models; +using Khd.Core.EntityFramework; using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Wcs; using Masuit.Tools.Logging; @@ -32,11 +33,11 @@ namespace Khd.Core.Wcs public void Start() { - + using var scope = _host.Services.CreateScope(); + using var dbContext = scope.ServiceProvider.GetRequiredService(); + using var dbContextTransaction = dbContext.Database.BeginTransaction(); try { - using var scope = _host.Services.CreateScope(); - using var dbContext = scope.ServiceProvider.GetRequiredService(); //加载配置项 //设置程序启动时清空点位的数据=>0为 Int16位 QingKongDianWei = StaticPlcHelper.GetValue("2", "0"); @@ -48,7 +49,7 @@ namespace Khd.Core.Wcs StaticData.basePlcs = dbContext.BasePlc.ToList(); StaticData.BaseEquip = dbContext.BaseEquip.ToList(); StaticData.BaseDictionary = dbContext.BaseDictionary.ToList(); - + foreach (var plcConfig in StaticData.PlcConfigs) { if (!StaticData.PlcDic.Any(t => t.Key == plcConfig.Code)) @@ -57,7 +58,7 @@ namespace Khd.Core.Wcs plc = new Plc.S7.Plc(plcConfig.CpuType, plcConfig.IP, plcConfig.Port, plcConfig.Rack, plcConfig.Slot); try { - //plc.Open(); + plc.Open(); Console.WriteLine(DateTime.Now + ":连接到PLC:" + plcConfig.IP); } catch @@ -69,13 +70,13 @@ namespace Khd.Core.Wcs } //SystemTimer systemTimer = new SystemTimer(_host); //systemTimer.Start(); - ////创建任务 - //CreateTaskByRecord createTaskByRecord = new(_host); - //createTaskByRecord.StartPoint(); + //创建任务 + CreateTaskByRecord createTaskByRecord = new(_host); + createTaskByRecord.StartPoint(); - ////一楼提升机以及接驳位 - //FirstFloor firstFloor = new(_host, StaticData.PlcDic[0]); - //firstFloor.StartPoint(); + //一楼提升机以及接驳位 + FirstFloor firstFloor = new(_host, StaticData.PlcDic[0]); + firstFloor.StartPoint(); ////二层接驳位 //var SecondBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 2 && t.equipType == 1).First(); @@ -92,38 +93,39 @@ namespace Khd.Core.Wcs //SecondFloorLine secondFloorLine = new(_host, StaticData.PlcDic[2], SecondFloorLineEquip.floorNo.Value); //secondFloorLine.StartPoint(); - //三层接驳位 - var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First(); - ThirdFloorPoint thirdFloorPoint = new(_host, StaticData.PlcDic[0], ThirdBaseFloorEquip.floorNo.Value); - thirdFloorPoint.StartPoint(); + ////三层接驳位 + //var ThirdBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 1).First(); + //ThirdFloorPoint thirdFloorPoint = new(_host, StaticData.PlcDic[0], ThirdBaseFloorEquip.floorNo.Value); + //thirdFloorPoint.StartPoint(); ////三层AGV //var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First(); //ThirdFloorAGV thirdFloorAGV = new(_host, StaticData.PlcDic[2], ThirdFloorAgvEquip.floorNo.Value); //thirdFloorAGV.StartPoint(); - ////五层接驳位 - //var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First(); - //FiveFloorPoint fifthFloorPoint = new(_host, StaticData.PlcDic[0], FifthBaseFloorEquip.floorNo.Value); - //fifthFloorPoint.StartPoint(); + //五层接驳位 + var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First(); + FiveFloorPoint fifthFloorPoint = new(_host, StaticData.PlcDic[0], FifthBaseFloorEquip.floorNo.Value); + fifthFloorPoint.StartPoint(); ////五层CTU //var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First(); //FiveFloorCTU fiveFloorCTU = new(_host, StaticData.PlcDic[1], FiveFloorCTUEquip.floorNo.Value); //fiveFloorCTU.StartPoint(); - ////五层AGV - //var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First(); - //FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[0], FifthFloorAgvEquip.floorNo.Value); - //fifthFloorAGV.StartPoint(); + //五层AGV + var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First(); + FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[0], FifthFloorAgvEquip.floorNo.Value); + fifthFloorAGV.StartPoint(); //背负式Agv - //var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid == 28).First(); - //FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[1], FifthFloorBearAgvEquip.floorNo.Value); - //fiveFloorBearAgv.StartPoint(); + var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid == 28).First(); + FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[0], FifthFloorBearAgvEquip.floorNo.Value); + fiveFloorBearAgv.StartPoint(); } catch (Exception ex) { + dbContextTransaction.Rollback(); Console.WriteLine(ex.Message); LogManager.Error(ex); } diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs index e0cc84d..11c7d34 100644 --- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs +++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs @@ -32,18 +32,18 @@ namespace Khd.Core.Wcs.Wcs ////背负式Agv返库任务 //var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic); //createBearAgvReturnThread.Start(); - ////五楼半成品入库任务 - //var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic); - //createFiveProductInTaskThread.Start(); - ////五楼成品出库任务 - //var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic); - //createFiveProductTaskThread.Start(); - ////五楼CTU出库任务以及原材料出库任务 - //var createRawTaskThread = new Thread(CreateRawTaskLogic); - //createRawTaskThread.Start(); - ////五楼柜体拆分返库任务 - //var createRawInThread = new Thread(CreateRawInTaskLogic); - //createRawInThread.Start(); + //五楼半成品入库任务 + var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic); + createFiveProductInTaskThread.Start(); + //五楼成品出库任务 + var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic); + createFiveProductTaskThread.Start(); + //五楼CTU出库任务以及原材料出库任务 + var createRawTaskThread = new Thread(CreateRawTaskLogic); + createRawTaskThread.Start(); + //五楼柜体拆分返库任务 + var createRawInThread = new Thread(CreateRawInTaskLogic); + createRawInThread.Start(); ////三楼去翻转机任务 //var createThirdOutTaskThread = new Thread(CreateThirdOutTaskLogic); //createThirdOutTaskThread.Start(); @@ -177,7 +177,7 @@ namespace Khd.Core.Wcs.Wcs try { dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); - bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Where(t=>t.taskStatus<5).Any(); + bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Where(t => t.taskStatus < 5).Any(); if (!canCreate) { BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35); @@ -485,8 +485,8 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.instockFlag == "0") .Where(t => t.outstockFlag == "0") .Where(t => t.warehouseId == 311) - .OrderByDescending(t=>t.locRow) - .ThenByDescending(t=>t.locColumn) + .OrderByDescending(t => t.locRow) + .ThenByDescending(t => t.locColumn) .ToList(); var bill = from a in wmsBaseLocations from b in wmsRawStocks @@ -541,55 +541,67 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.warehouseId == wmsBaseLocation.warehouseId).FirstOrDefault(); if (fromBaseLocation != null && !string.IsNullOrEmpty(fromBaseLocation.containerCode)) { - WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId) - .Where(t => t.locDeep == 1) - .Where(t => string.IsNullOrEmpty(t.containerCode)) - .Where(t=>t.locColumn>wmsBaseLocation.locColumn) - .OrderBy(t => t.locColumn) - .FirstOrDefault(); - toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId) - .Where(t => t.locDeep == 1) - .Where(t => string.IsNullOrEmpty(t.containerCode)) - .Where(t => t.locColumn < wmsBaseLocation.locColumn) - .OrderByDescending(t => t.locColumn) - .FirstOrDefault(); - toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId) - .Where(t => t.warehouseId != wmsBaseLocation.locationId) - .Where(t => string.IsNullOrEmpty(t.containerCode)) - .FirstOrDefault(); - if (toLocation != null) + WmsRawStock? wmsRawStock1 = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == fromBaseLocation.locationCode); + if (wmsRawStock1 != null) { - var RemoveTask = new WcsTask() + WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId) + .Where(t => t.locDeep == 1) + .Where(t => string.IsNullOrEmpty(t.containerCode)) + .Where(t => t.locColumn > wmsBaseLocation.locColumn) + .OrderBy(t => t.locColumn) + .FirstOrDefault(); + toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId) + .Where(t => t.locDeep == 1) + .Where(t => string.IsNullOrEmpty(t.containerCode)) + .Where(t => t.locColumn < wmsBaseLocation.locColumn) + .OrderByDescending(t => t.locColumn) + .FirstOrDefault(); + toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == wmsBaseLocation.warehouseId) + .Where(t => t.warehouseId != wmsBaseLocation.locationId) + .Where(t => string.IsNullOrEmpty(t.containerCode)) + .FirstOrDefault(); + if (toLocation != null) { - objid = StaticData.SnowId.NextId(), - taskType = 67, - containerNo = fromBaseLocation.containerCode, - createBy = "WCS", - createTime = DateTime.Now.AddSeconds(-10), - taskStatus = 0, - currPointId = fromBaseLocation.locationId, - currPointNo = fromBaseLocation.locationCode, - nextPointId = baseEquip.objid, - nextPointNo = baseEquip.equipNo, - endPointId = toLocation.locationId, - endPointNo = toLocation.locationCode, - equipmentNo = baseEquip.equipNo, - useFlag = 1, - qty = 1 - }; - toLocation.locationStatus = "4"; - toLocation.instockFlag = "1"; - toLocation.updateBy = "WCS"; - toLocation.updateTime = DateTime.Now; - fromBaseLocation.updateBy = "WCS"; - fromBaseLocation.updateTime = DateTime.Now; - fromBaseLocation.outstockFlag = "1"; - fromBaseLocation.locationStatus = "4"; - dbContext.Update(toLocation); - dbContext.Update(fromBaseLocation); - dbContext.Add(RemoveTask); - WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask); - dbContext.Add(wcsTaskLog); + var RemoveTask = new WcsTask() + { + objid = StaticData.SnowId.NextId(), + taskType = 67, + containerNo = wmsRawStock1.palletInfoCode, + createBy = "WCS", + createTime = DateTime.Now.AddSeconds(-10), + taskStatus = 0, + currPointId = fromBaseLocation.locationId, + currPointNo = fromBaseLocation.locationCode, + nextPointId = baseEquip.objid, + nextPointNo = baseEquip.equipNo, + endPointId = toLocation.locationId, + endPointNo = toLocation.locationCode, + equipmentNo = baseEquip.equipNo, + useFlag = 1, + qty = 1 + }; + toLocation.locationStatus = "4"; + toLocation.instockFlag = "1"; + toLocation.updateBy = "WCS"; + toLocation.updateTime = DateTime.Now; + fromBaseLocation.updateBy = "WCS"; + fromBaseLocation.updateTime = DateTime.Now; + fromBaseLocation.outstockFlag = "1"; + fromBaseLocation.locationStatus = "4"; + dbContext.Update(toLocation); + dbContext.Update(fromBaseLocation); + dbContext.Add(RemoveTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask); + dbContext.Add(wcsTaskLog); + } + else + { + continue; + } + } + else + { + continue; } } } @@ -823,7 +835,7 @@ namespace Khd.Core.Wcs.Wcs MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == stock.palletInfoCode); if (mesBasePalletInfo != null) { - + if (location.locDeep == 1) { int? row = 0; @@ -848,48 +860,56 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.warehouseId == location.warehouseId).FirstOrDefault(); if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode)) { - WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) - .Where(t => t.locDeep == 1) - .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(); - toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) - .Where(t => t.warehouseId != location.locationId) - .Where(t => string.IsNullOrEmpty(t.containerCode)) - .FirstOrDefault(); - if (toLocation != null) + WmsProductStock? wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.containerCode); + if (wmsProductStock != null) { - var RemoveTask = new WcsTask() + WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) + .Where(t => t.locDeep == 1) + .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(); + toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) + .Where(t => t.warehouseId != location.locationId) + .Where(t => string.IsNullOrEmpty(t.containerCode)) + .FirstOrDefault(); + if (toLocation != null) { - objid = StaticData.SnowId.NextId(), - orderId = item.productOutstockId, - taskType = 38, - containerNo = wmsBaseLocation.containerCode, - createBy = "WCS", - createTime = DateTime.Now.AddSeconds(-10), - taskStatus = 0, - materialId = item.productId, - currPointId = wmsBaseLocation.locationId, - currPointNo = wmsBaseLocation.locationCode, - nextPointId = agvEquip.objid, - nextPointNo = agvEquip.equipNo, - endPointId = toLocation.locationId, - endPointNo = toLocation.locationCode, - equipmentNo = agvEquip.equipNo, - useFlag = 1, - qty = 1 - }; - toLocation.locationStatus = "4"; - toLocation.instockFlag = "1"; - toLocation.updateBy = "WCS"; - toLocation.updateTime = DateTime.Now; - wmsBaseLocation.updateBy = "WCS"; - wmsBaseLocation.updateTime = DateTime.Now; - wmsBaseLocation.outstockFlag = "1"; - wmsBaseLocation.locationStatus = "4"; - dbContext.Update(toLocation); - dbContext.Update(wmsBaseLocation); - dbContext.Add(RemoveTask); - WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask); - dbContext.Add(wcsTaskLog); + var RemoveTask = new WcsTask() + { + objid = StaticData.SnowId.NextId(), + orderId = item.productOutstockId, + taskType = 38, + containerNo = wmsProductStock.palletInfoCode, + createBy = "WCS", + createTime = DateTime.Now.AddSeconds(-10), + taskStatus = 0, + materialId = item.productId, + currPointId = wmsBaseLocation.locationId, + currPointNo = wmsBaseLocation.locationCode, + nextPointId = agvEquip.objid, + nextPointNo = agvEquip.equipNo, + endPointId = toLocation.locationId, + endPointNo = toLocation.locationCode, + equipmentNo = agvEquip.equipNo, + useFlag = 1, + qty = 1 + }; + toLocation.locationStatus = "4"; + toLocation.instockFlag = "1"; + toLocation.updateBy = "WCS"; + toLocation.updateTime = DateTime.Now; + wmsBaseLocation.updateBy = "WCS"; + wmsBaseLocation.updateTime = DateTime.Now; + wmsBaseLocation.outstockFlag = "1"; + wmsBaseLocation.locationStatus = "4"; + dbContext.Update(toLocation); + dbContext.Update(wmsBaseLocation); + dbContext.Add(RemoveTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask); + dbContext.Add(wcsTaskLog); + } + else + { + continue; + } } else { @@ -897,7 +917,7 @@ namespace Khd.Core.Wcs.Wcs } } } - + } WmsProductOutstockDetail detail = new() { @@ -920,7 +940,7 @@ namespace Khd.Core.Wcs.Wcs objid = StaticData.SnowId.NextId(), orderId = item.productOutstockId, taskType = 38, - containerNo = location.containerCode, + containerNo = stock.palletInfoCode, createBy = "WCS", createTime = DateTime.Now, taskStatus = 0, @@ -1039,19 +1059,7 @@ namespace Khd.Core.Wcs.Wcs location = b.a; stock = b.b; WcsTask wcsTask; - int qty = 0; - if (stock.totalAmount - stock.frozenAmount <= needNumber) - { - item.outstockQty += stock.totalAmount - stock.frozenAmount; - qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount); - stock.updateDate = DateTime.Now; - } - else - { - item.outstockQty += needNumber; - qty = Convert.ToInt32(needNumber); - stock.updateDate = DateTime.Now; - } + stock.updateDate = DateTime.Now; MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode); if (mesBasePalletInfo != null) { @@ -1095,7 +1103,10 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.warehouseId == location.warehouseId).FirstOrDefault(); if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode)) { - WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) + WmsProductStock? wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.containerCode); + if (wmsProductStock != null) + { + WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) .Where(t => t.locDeep == 1) .Where(t => t.activeFlag == "1") .Where(t => t.delFlag == "0") @@ -1104,45 +1115,50 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.locationStatus == "1") .Where(t => t.outstockFlag == "0") .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(); - toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) - .Where(t => t.warehouseId != location.locationId) - .Where(t => string.IsNullOrEmpty(t.containerCode)) - .FirstOrDefault(); - if (toLocation != null) - { - var RemoveTask = new WcsTask() + toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) + .Where(t => t.warehouseId != location.locationId) + .Where(t => string.IsNullOrEmpty(t.containerCode)) + .FirstOrDefault(); + if (toLocation != null) { - objid = StaticData.SnowId.NextId(), - orderId = item.productOutstockId, - taskType = 55, - containerNo = wmsBaseLocation.containerCode, - createBy = "WCS", - createTime = DateTime.Now.AddSeconds(-10), - taskStatus = 0, - materialId = item.productId, - currPointId = wmsBaseLocation.locationId, - currPointNo = wmsBaseLocation.locationCode, - nextPointId = agvEquip.objid, - nextPointNo = agvEquip.equipNo, - endPointId = toLocation.locationId, - endPointNo = toLocation.locationCode, - equipmentNo = agvEquip.equipNo, - useFlag = 1, - qty = qty - }; - toLocation.locationStatus = "4"; - toLocation.instockFlag = "1"; - toLocation.updateBy = "WCS"; - toLocation.updateTime = DateTime.Now; - wmsBaseLocation.updateBy = "WCS"; - wmsBaseLocation.updateTime = DateTime.Now; - wmsBaseLocation.outstockFlag = "1"; - wmsBaseLocation.locationStatus = "4"; - dbContext.Update(toLocation); - dbContext.Update(wmsBaseLocation); - dbContext.Add(RemoveTask); - WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask); - dbContext.Add(wcsTaskLog); + var RemoveTask = new WcsTask() + { + objid = StaticData.SnowId.NextId(), + orderId = item.productOutstockId, + taskType = 55, + containerNo = wmsBaseLocation.containerCode, + createBy = "WCS", + createTime = DateTime.Now.AddSeconds(-10), + taskStatus = 0, + materialId = item.productId, + currPointId = wmsBaseLocation.locationId, + currPointNo = wmsBaseLocation.locationCode, + nextPointId = agvEquip.objid, + nextPointNo = agvEquip.equipNo, + endPointId = toLocation.locationId, + endPointNo = toLocation.locationCode, + equipmentNo = agvEquip.equipNo, + useFlag = 1, + qty = 1 + }; + toLocation.locationStatus = "4"; + toLocation.instockFlag = "1"; + toLocation.updateBy = "WCS"; + toLocation.updateTime = DateTime.Now; + wmsBaseLocation.updateBy = "WCS"; + wmsBaseLocation.updateTime = DateTime.Now; + wmsBaseLocation.outstockFlag = "1"; + wmsBaseLocation.locationStatus = "4"; + dbContext.Update(toLocation); + dbContext.Update(wmsBaseLocation); + dbContext.Add(RemoveTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask); + dbContext.Add(wcsTaskLog); + } + else + { + continue; + } } else { @@ -1169,7 +1185,7 @@ namespace Khd.Core.Wcs.Wcs endPointNo = endEquip.equipNo, equipmentNo = agvEquip.equipNo, useFlag = 1, - qty = qty + qty = 1 }; location.outstockFlag = "1"; location.locationStatus = "6"; @@ -1182,10 +1198,6 @@ namespace Khd.Core.Wcs.Wcs WcsTaskLog wcsTaskLog1 = CoreMapper.Map(wcsTask); dbContext.Add(wcsTaskLog1); dbContext.SaveChanges(); - if (qty >= needNumber) - { - break; - } break; } } @@ -1254,7 +1266,7 @@ namespace Khd.Core.Wcs.Wcs foreach (var item in rawOutStock) { decimal? RealOutNumber = item.realOutstockAmount; - var endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == item.endStationCode); + var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == item.endStationCode); if (endEquip != null && endEquip.floorNo == 5) { lock (SystemData.outStockLock) @@ -1456,6 +1468,10 @@ namespace Khd.Core.Wcs.Wcs BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20); foreach (var b in bill) { + if (needNumber <= 0) + { + break; + } if (tasks.Where(t => t.containerNo == b.a.containerCode).Any() || tasks.Count >= 6) { continue; @@ -1465,12 +1481,14 @@ namespace Khd.Core.Wcs.Wcs int qty = 0; if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出 { + needNumber-= stock.totalAmount - stock.frozenAmount; RealOutNumber += stock.totalAmount - stock.frozenAmount; qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount); stock.updateDate = DateTime.Now; } else { + needNumber = 0; RealOutNumber += needNumber; qty = Convert.ToInt32(needNumber); stock.updateDate = DateTime.Now; @@ -1516,141 +1534,6 @@ namespace Khd.Core.Wcs.Wcs } } } - - #region 原逻辑 - //foreach (var order in orderList) - //{ - // if(tasks.Count >= 6) - // { - // break; - // } - // WcsTask? task = dbContext.WcsTask.FirstOrDefault(t => t.taskType == 32); - // if (task == null) - // { - // var wmsRawStocks = rawStock - // .Where(t => t.materialId == order.materialId && t.warehouseId == order.warehouseId) - // .Select(t => t.palletInfoCode) - // .ToList(); - - // var wmsBaseLocations = dbContext.WmsBaseLocation - // .Where(t => t.activeFlag == "1") - // .Where(t => t.delFlag == "0") - // .Where(t => t.locationScrapType == "1") - // .Where(t => t.instockFlag == "0") - // .Where(t => t.outstockFlag == "0") - // .Where(t => t.warehouseId == order.warehouseId) - // .Where(t => wmsRawStocks.Contains(t.containerCode)) - // .ToList(); - - // decimal? needNumber = order.outstockAmount - RealOutNumber; - - // var bill = from a in wmsBaseLocations - // from b in rawStock - // where a.containerCode == b.palletInfoCode - // select new { a, b }; - // //如果第一列满足需求,则按第一列排序,否则按最后一列排序 - // if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber) - // { - // bill = bill.OrderBy(t => t.a.locColumn).ToList(); - // } - // else - // { - // bill = bill.OrderByDescending(t => t.a.locColumn).ToList(); - // } - // //做数量限制 - // bill = bill.Take(5 - dbContext.WcsCmd.Where(t => t.cmdStatus < 3 && t.nextPointId == 20).Count()); - // BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11); - // BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20); - // foreach (var b in bill) - // { - // if (tasks.Where(t => t.containerNo == b.a.containerCode).Any()) - // { - // continue; - // } - // item.executeStatus = "1"; - // WmsBaseLocation location = b.a; - // WmsRawStock stock = b.b; - // int qty = 0; - // if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出 - // { - // RealOutNumber += stock.totalAmount - stock.frozenAmount; - // qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount); - // stock.updateDate = DateTime.Now; - // } - // else - // { - // RealOutNumber += needNumber; - // qty = Convert.ToInt32(needNumber); - // stock.updateDate = DateTime.Now; - // } - // WcsTask wcsTask = new WcsTask() - // { - // objid = StaticData.SnowId.NextId(), - // orderId = item.rawOutstockId, - // taskType = 30, - // containerNo = location.containerCode, - // createBy = "WCS", - // createTime = DateTime.Now, - // taskStatus = 0, - // materialId = item.materialId, - // currPointId = location.locationId, - // currPointNo = location.locationCode, - // nextPointId = ctuEquip.objid, - // nextPointNo = ctuEquip.equipNo, - // endPointId = lineEquip.objid, - // endPointNo = lineEquip.equipNo, - // equipmentNo = ctuEquip.equipNo, - // ud1 = location.locColumn, - // useFlag = 0, - // qty = qty - // }; - // tasks.Add(wcsTask); - // MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault(); - // if (mesBaseBarcodeInfo != null) - // { - // 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 - // }; - // details.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); - // CreateSuccess = true; - // if (tasks.Count >= 6) - // { - // break; - // } - // } - // } - // } - //} - #endregion - } if (CreateSuccess) { @@ -1804,48 +1687,56 @@ namespace Khd.Core.Wcs.Wcs .Where(t => t.warehouseId == location.warehouseId).FirstOrDefault(); if (wmsBaseLocation != null && !string.IsNullOrEmpty(wmsBaseLocation.containerCode)) { - WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) - .Where(t => t.locDeep == 1) - .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(); - toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) - .Where(t => t.warehouseId != location.locationId) - .Where(t => string.IsNullOrEmpty(t.containerCode)) - .FirstOrDefault(); - if (toLocation != null) + WmsRawStock? wmsRawStock = dbContext.WmsRawStock.FirstOrDefault(t => t.locationCode == wmsBaseLocation.locationCode); + if (wmsRawStock != null) { - var RemoveTask = new WcsTask() + WmsBaseLocation? toLocation = AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) + .Where(t => t.locDeep == 1) + .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault(); + toLocation ??= AllWmsBaseLocations.Where(t => t.warehouseId == location.warehouseId) + .Where(t => t.warehouseId != location.locationId) + .Where(t => string.IsNullOrEmpty(t.containerCode)) + .FirstOrDefault(); + if (toLocation != null) { - objid = StaticData.SnowId.NextId(), - orderId = item.rawOutstockId, - taskType = 38, - containerNo = wmsBaseLocation.containerCode, - createBy = "WCS", - createTime = DateTime.Now.AddSeconds(-10), - taskStatus = 0, - materialId = item.materialId, - currPointId = wmsBaseLocation.locationId, - currPointNo = wmsBaseLocation.locationCode, - nextPointId = agvEquip.objid, - nextPointNo = agvEquip.equipNo, - endPointId = toLocation.locationId, - endPointNo = toLocation.locationCode, - equipmentNo = agvEquip.equipNo, - useFlag = 1, - qty = qty - }; - toLocation.locationStatus = "4"; - toLocation.instockFlag = "1"; - toLocation.updateBy = "WCS"; - toLocation.updateTime = DateTime.Now; - wmsBaseLocation.updateBy = "WCS"; - wmsBaseLocation.updateTime = DateTime.Now; - wmsBaseLocation.outstockFlag = "1"; - wmsBaseLocation.locationStatus = "4"; - dbContext.Update(toLocation); - dbContext.Update(wmsBaseLocation); - dbContext.Add(RemoveTask); - WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask); - dbContext.Add(wcsTaskLog); + var RemoveTask = new WcsTask() + { + objid = StaticData.SnowId.NextId(), + orderId = item.rawOutstockId, + taskType = 38, + containerNo = wmsRawStock.palletInfoCode, + createBy = "WCS", + createTime = DateTime.Now.AddSeconds(-10), + taskStatus = 0, + materialId = item.materialId, + currPointId = wmsBaseLocation.locationId, + currPointNo = wmsBaseLocation.locationCode, + nextPointId = agvEquip.objid, + nextPointNo = agvEquip.equipNo, + endPointId = toLocation.locationId, + endPointNo = toLocation.locationCode, + equipmentNo = agvEquip.equipNo, + useFlag = 1, + qty = qty + }; + toLocation.locationStatus = "4"; + toLocation.instockFlag = "1"; + toLocation.updateBy = "WCS"; + toLocation.updateTime = DateTime.Now; + wmsBaseLocation.updateBy = "WCS"; + wmsBaseLocation.updateTime = DateTime.Now; + wmsBaseLocation.outstockFlag = "1"; + wmsBaseLocation.locationStatus = "4"; + dbContext.Update(toLocation); + dbContext.Update(wmsBaseLocation); + dbContext.Add(RemoveTask); + WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask); + dbContext.Add(wcsTaskLog); + } + else + { + continue; + } } else { diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs index 1fcbd6d..8deecdf 100644 --- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs +++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs @@ -158,12 +158,14 @@ namespace Khd.Core.Wcs.Wcs bool hasTask = dbContext.WcsTask.Where(t => (t.currPointId == i || t.endPointId == i) && t.taskStatus >= 1 && t.nextPointId == 6).Any(); if (!hasCmd || !hasTask) { + baseEquip.containerNo = null; baseEquip.equipStatus = 0; dbContext.Update(baseEquip); dbContext.SaveChanges(); } else { + baseEquip.containerNo = null; baseEquip.equipStatus = 1; dbContext.Update(baseEquip); dbContext.SaveChanges(); @@ -594,13 +596,13 @@ namespace Khd.Core.Wcs.Wcs var linesignal = StaticData.PlcDic[0].Read(StaticData.BasePlcpointList.First(t => t.plcpointNo == $"linesignal0{wcsTask.floorNo}").plcpointAddress); if (linesignal != null && Convert.ToInt32(linesignal) == 0) { - BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.equipmentNo == $"clear0{wcsTask.floorNo}"); + BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"clear0{wcsTask.floorNo}"); var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress); - if (clearPoint != null && Convert.ToInt32(clearPoint.plcpointAddress) == 1) + if (clearPoint != null && Convert.ToBoolean(clearValue) == true) { Console.WriteLine(DateTime.Now + ":提升机下发报警消除指令"); LogManager.Info("提升机下发报警消除指令"); - StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, "0", clearPoint.plcpointLength.ToString()); + StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, false, clearPoint.plcpointLength.ToString()); } wcsTask.taskStatus = 4; wcsTask.updateBy = "提升机线程"; @@ -616,11 +618,11 @@ namespace Khd.Core.Wcs.Wcs } else { - BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.equipmentNo == $"clear0{wcsTask.floorNo}"); + BasePlcpoint clearPoint = StaticData.BasePlcpointList.First(t => t.plcpointNo == $"clear0{wcsTask.floorNo}"); var clearValue = StaticData.PlcDic[0].Read(clearPoint.plcpointAddress); - if (clearPoint != null && Convert.ToInt32(clearPoint.plcpointAddress) == 0) + if (clearPoint != null && Convert.ToBoolean(clearValue)==false) { - StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, "1", clearPoint.plcpointLength.ToString()); + StaticData.PlcDic[0].WriteToPoint(clearPoint.plcpointAddress, true, clearPoint.plcpointLength.ToString()); } } } diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs index 767ca68..ed25ad7 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs @@ -9,6 +9,7 @@ using Masuit.Tools.Logging; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Newtonsoft.Json; +using System.Transactions; using Z.EntityFramework.Plus; namespace Khd.Core.Wcs.Wcs @@ -101,21 +102,22 @@ namespace Khd.Core.Wcs.Wcs { reqCode = wcsCmd.objid.ToString(), positionCodePath = new List - { - new () { - positionCode=wcsCmd.currPointNo, - type="00" + new () + { + positionCode=wcsCmd.currPointNo, + type="00" + }, + new () + { + positionCode=wcsCmd.nextPointNo, + type="00" + } }, - new () - { - positionCode=wcsCmd.nextPointNo, - type="00" - } - }, taskTyp = baseDictionary.dicValue, ctnrTyp = "2" }; + string message = JsonConvert.SerializeObject(agvTask); string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message); var reponseMessage = JsonConvert.DeserializeObject(result); @@ -139,6 +141,7 @@ namespace Khd.Core.Wcs.Wcs { LogManager.Info("五楼Agv下发任务失败" + item.taskType + message); } + } } else if (item.taskType == 33)//原材料到背板安装 @@ -543,8 +546,9 @@ namespace Khd.Core.Wcs.Wcs LogManager.Info("五楼Agv下发继续任务成功:" + message); Console.WriteLine(DateTime.Now + ":五楼Agv继续任务:" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); wcsCmd.cmdStatus = 4; - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); + item.taskStatus = 4; dbContext.Update(wcsCmd); + dbContext.Update(item); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 }); dbContext.SaveChanges(); @@ -552,11 +556,10 @@ namespace Khd.Core.Wcs.Wcs } else if (wcsCmd.cmdStatus == 5) { - Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); + Console.WriteLine(DateTime.Now + ":五楼AGV线程完成任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo); LogManager.Info("五楼Agv完成任务成功:" + wcsCmd.ToJsonString()); if (item.taskType == 66)//移库 { - using var transaction = dbContext.Database.BeginTransaction(); try { var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.endPointNo).FirstOrDefault(); @@ -592,12 +595,10 @@ namespace Khd.Core.Wcs.Wcs dbContext.Remove(item); 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 }); - transaction.Commit(); dbContext.SaveChanges(); } catch (Exception ex) { - transaction.Rollback(); LogManager.Error(ex); } } @@ -877,7 +878,7 @@ namespace Khd.Core.Wcs.Wcs warehouseFloor = 5, stockType = "1", totalAmount = 1, - saleOrderId = mesBaseBarcodeInfo.saleOrderId==null?0:mesBaseBarcodeInfo.saleOrderId, + saleOrderId = mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId, safeFlag = mesBaseBarcodeInfo.safeFlag, supplierId = mesBaseBarcodeInfo.manufacturerId, materialId = mesBasePalletInfo.materialId, diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs index 35170f7..f4c2db5 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs @@ -140,11 +140,13 @@ namespace Khd.Core.Wcs.Wcs { LogManager.Info("五楼背负式AGV线程完成任务" + wcsCmd.objid); Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.objid); - dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 5 }); - dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 5 }); - dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 5 }); - dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 5 }); + item.taskStatus = 5; + wcsCmd.cmdStatus = 5; + dbContext.Update(item); + dbContext.Update(wcsCmd); dbContext.SaveChanges(); + dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 5 }); + dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 5 }); } } else if (wcsCmd.cmdStatus == 7) @@ -170,15 +172,6 @@ namespace Khd.Core.Wcs.Wcs dbContext.Update(wmsRawReturn); } } - else if (item.taskType == 32) - { - WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock.Where(t => t.rawOutstockId == item.orderId).FirstOrDefault(); - if (wmsRawOutstock != null) - { - wmsRawOutstock.executeStatus = "2"; - dbContext.Update(wmsRawOutstock); - } - } dbContext.Remove(wcsCmd); dbContext.Remove(item); dbContext.SaveChanges(); diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs index d89002e..b3182bd 100644 --- a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs @@ -157,7 +157,7 @@ namespace Khd.Core.Wcs.Wcs } else if (wcsTask.taskStatus == 6) //出库任务,小车任务是完成状态 { - int? floor = 0; + int? floor = 1; var wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == wcsTask.orderId); if (wmsProductOutstock != null) { diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs index e7a7c16..0d4a0c4 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs @@ -185,7 +185,7 @@ namespace Khd.Core.Wcs.Wcs else if (item.taskType == 49)//小包出口-库位 { WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId); - BaseEquip startEquip = dbContext.BaseEquip.First(t=>t.objid==item.currPointId); + BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId); WcsCmd wcsCmd = new WcsCmd() { objid = StaticData.SnowId.NextId(), @@ -873,6 +873,7 @@ namespace Khd.Core.Wcs.Wcs { var wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First(); WmsProductStock wmsProductStock = dbContext.WmsProductStock.First(t => t.locationCode == wmsBaseLocation.locationCode); + wmsProductOutstock.outstockQty ++; if (wmsProductOutstock.applyQty <= wmsProductOutstock.outstockQty) { wmsProductOutstock.endTime = DateTime.Now; diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs index 311b3d5..64faf36 100644 --- a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs +++ b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs @@ -72,7 +72,7 @@ namespace Khd.Core.Wcs.Wcs { if (wcsTask.taskType != 99) { - if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1)//小包入口要料 + if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0)//小包入口要料 { dbContext.WcsTask.Remove(wcsTask); WcsTask newTask = CoreMapper.Map(wcsTask); @@ -96,7 +96,7 @@ namespace Khd.Core.Wcs.Wcs LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + rfid); Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + rfid); } - else if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 0) + else if (agvPutValue != null && Convert.ToInt32(agvPutValue) == 1) { BaseEquip? endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 20 && t.equipStatus == 0 && t.emptyCount == 0); if (endEquip != null) diff --git a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs index c08e152..7dad077 100644 --- a/src/Khd.Core.Wcs/Wcs/SystemTimer.cs +++ b/src/Khd.Core.Wcs/Wcs/SystemTimer.cs @@ -43,11 +43,11 @@ namespace Khd.Core.Wcs.Wcs //}; //PlcHeartBeat30Thread.Start(); - //var PlcHeartBeat31Thread = new Thread(PlcHeartBeat31Logic) - //{ - // IsBackground = true - //}; - //PlcHeartBeat31Thread.Start(); + var PlcHeartBeat31Thread = new Thread(PlcHeartBeat31Logic) + { + IsBackground = true + }; + PlcHeartBeat31Thread.Start(); Console.WriteLine($"{DateTime.Now}: SystemTimer started"); } @@ -106,7 +106,7 @@ namespace Khd.Core.Wcs.Wcs /// private void PlcHeartBeat31Logic(object? obj) { - BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "HeartBeat31"); + BasePlcpoint HeartBeat31 = StaticData.BasePlcpointList.First(t => t.plcpointNo == "CTUHeart"); int heartBeatCount = 0; while (true) { @@ -194,13 +194,13 @@ namespace Khd.Core.Wcs.Wcs { HositerLogic(); - //CtuLineLogic(); + CtuLineLogic(); ThirdAgvLogic(); FiveAgvLogic(); FiveBearAgvLogic(); CtuCmdLogic(); SecondAgvLogic(); - //SendTrayMessage(); + SendTrayMessage(); UpdatePlcPointValue(); } catch (Exception ex) diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs index 4e521cf..b927399 100644 --- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs +++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs @@ -2902,7 +2902,8 @@ namespace Khd.Core.Wpf.Form private void SelectOutBtn_Click(object sender, RoutedEventArgs e) { - + SelectOutRawForm selectOutRawForm=new SelectOutRawForm(this._host); + selectOutRawForm.ShowDialog(); } } } diff --git a/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml.cs b/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml.cs index da0599d..8cfce5c 100644 --- a/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml.cs +++ b/src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml.cs @@ -39,6 +39,7 @@ namespace Khd.Core.Wpf.TaskForm dbContext.BaseEquip.Update(baseEquip); dbContext.SaveChanges(); MessageBox.Show("保存成功!"); + this.Close(); } } diff --git a/src/Khd.Core.Wpf/appsettings.json b/src/Khd.Core.Wpf/appsettings.json index b545c56..b77c2e9 100644 --- a/src/Khd.Core.Wpf/appsettings.json +++ b/src/Khd.Core.Wpf/appsettings.json @@ -16,14 +16,14 @@ "Slot": 1, "Code": 0 }, - { - "IP": "192.168.2.31", - "Port": 102, //102是默认端口 - "CpuType": 40, - "Rack": 0, - "Slot": 1, - "Code": 1 - }, + //{ + // "IP": "192.168.2.31", + // "Port": 102, //102是默认端口 + // "CpuType": 40, + // "Rack": 0, + // "Slot": 1, + // "Code": 1 + //}, { "IP": "192.168.2.220", "Port": 102, //102是默认端口